Browse Source

上传新版本的管理后台

main
liwei1dao 2 months ago
parent
commit
97ecbf9df5
  1. 19
      CLAUDE.md
  2. 2
      apps/admin/.output/nitro.json
  3. 2
      apps/admin/.output/public/_nuxt/B3qpHAjq.js
  4. 2
      apps/admin/.output/public/_nuxt/B8Fu162H.js
  5. 2
      apps/admin/.output/public/_nuxt/BFWR6QZ6.js
  6. 2
      apps/admin/.output/public/_nuxt/BOUWbQhH.js
  7. 2
      apps/admin/.output/public/_nuxt/BPYtLuIu.js
  8. 2
      apps/admin/.output/public/_nuxt/BQIhlerM.js
  9. 2
      apps/admin/.output/public/_nuxt/BgemqguF.js
  10. 2
      apps/admin/.output/public/_nuxt/BtOu2QXF.js
  11. 2
      apps/admin/.output/public/_nuxt/C1u1NIe5.js
  12. 2
      apps/admin/.output/public/_nuxt/C37X9GaT.js
  13. 2
      apps/admin/.output/public/_nuxt/C3hsc2UX.js
  14. 2
      apps/admin/.output/public/_nuxt/CAgv4ClK.js
  15. 2
      apps/admin/.output/public/_nuxt/CCYeqIml.js
  16. 2
      apps/admin/.output/public/_nuxt/CFdmUKvC.js
  17. 2
      apps/admin/.output/public/_nuxt/CGLKuRNo.js
  18. 2
      apps/admin/.output/public/_nuxt/CH2ZVAK2.js
  19. 2
      apps/admin/.output/public/_nuxt/CO60jE1q.js
  20. 4
      apps/admin/.output/public/_nuxt/Ccu6Xgpt.js
  21. 2
      apps/admin/.output/public/_nuxt/D-7b2ops.js
  22. 1
      apps/admin/.output/public/_nuxt/D1efUY0c.js
  23. 2
      apps/admin/.output/public/_nuxt/DNpGoo60.js
  24. 1
      apps/admin/.output/public/_nuxt/DSpyBzHW.js
  25. 2
      apps/admin/.output/public/_nuxt/DazkwkSm.js
  26. 2
      apps/admin/.output/public/_nuxt/DdRUm5PD.js
  27. 2
      apps/admin/.output/public/_nuxt/DiXjRAbV.js
  28. 2
      apps/admin/.output/public/_nuxt/Dtlyyukj.js
  29. 2
      apps/admin/.output/public/_nuxt/DvwKXRUn.js
  30. 2
      apps/admin/.output/public/_nuxt/Sgx9LvLK.js
  31. 2
      apps/admin/.output/public/_nuxt/Um-KoueI.js
  32. 2
      apps/admin/.output/public/_nuxt/aWlcN8xt.js
  33. 2
      apps/admin/.output/public/_nuxt/builds/latest.json
  34. 1
      apps/admin/.output/public/_nuxt/builds/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json
  35. 1
      apps/admin/.output/public/_nuxt/builds/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json
  36. 2
      apps/admin/.output/public/_nuxt/entry.Nq-dPCOq.css
  37. 2
      apps/admin/.output/public/_nuxt/k7DeUBTv.js
  38. 2
      apps/admin/.output/public/_nuxt/oiJG5Pzc.js
  39. 2
      apps/admin/.output/public/_nuxt/szhsDUYv.js
  40. 2
      apps/admin/.output/public/_nuxt/vijQW-l0.js
  41. 2
      apps/admin/.output/public/_nuxt/zsrSRWp_.js
  42. 1
      apps/admin/.output/server/chunks/build/appconfig-BTmHA76P.mjs.map
  43. 34
      apps/admin/.output/server/chunks/build/appconfig-C6Zn9BWM.mjs
  44. 1
      apps/admin/.output/server/chunks/build/appconfig-C6Zn9BWM.mjs.map
  45. 2
      apps/admin/.output/server/chunks/build/client.precomputed.mjs
  46. 2
      apps/admin/.output/server/chunks/build/server.mjs
  47. 10
      apps/admin/.output/server/chunks/build/styles.mjs
  48. 418
      apps/admin/.output/server/chunks/nitro/nitro.mjs
  49. 83
      apps/admin/app/pages/appconfig.vue
  50. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/B3qpHAjq.js
  51. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/B8Fu162H.js
  52. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BFWR6QZ6.js
  53. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BOUWbQhH.js
  54. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BPYtLuIu.js
  55. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BQIhlerM.js
  56. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BgemqguF.js
  57. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BtOu2QXF.js
  58. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C1u1NIe5.js
  59. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C37X9GaT.js
  60. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C3hsc2UX.js
  61. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CAgv4ClK.js
  62. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCYeqIml.js
  63. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CFdmUKvC.js
  64. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CGLKuRNo.js
  65. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CH2ZVAK2.js
  66. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CO60jE1q.js
  67. 4
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Ccu6Xgpt.js
  68. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-7b2ops.js
  69. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D1efUY0c.js
  70. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DNpGoo60.js
  71. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DSpyBzHW.js
  72. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DazkwkSm.js
  73. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DdRUm5PD.js
  74. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DiXjRAbV.js
  75. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dtlyyukj.js
  76. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DvwKXRUn.js
  77. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Sgx9LvLK.js
  78. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Um-KoueI.js
  79. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/aWlcN8xt.js
  80. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/entry.Nq-dPCOq.css
  81. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/k7DeUBTv.js
  82. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/oiJG5Pzc.js
  83. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/szhsDUYv.js
  84. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/vijQW-l0.js
  85. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/zsrSRWp_.js
  86. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map
  87. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map.json
  88. 34
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js
  89. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js.map
  90. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js.map.json
  91. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/client.manifest.mjs
  92. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/client.precomputed.mjs
  93. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/server.mjs
  94. 10
      apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/styles.mjs
  95. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/latest.json
  96. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json
  97. 1
      apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json
  98. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/nuxt.d.ts
  99. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/nuxt.node.d.ts
  100. 2
      apps/admin/node_modules/.cache/nuxt/.nuxt/tailwind/postcss.mjs

19
CLAUDE.md

@ -55,14 +55,23 @@ pnpm build # 产出 .output/(SSR)
### 构建镜像与部署
```bash
./build.sh console # 构建 docker-registry.../yunyan-console:latest(PUSH=0 只构建不推)
./build.sh console # 构建 registry.voitrans.net/starpivot-console:latest(PUSH=0 只构建不推)
./build.sh admin
cd deploy/console && ./deploy.sh prod # 一键发布:构建推送 + 同步配置 + 远程 pull + up
cd deploy/console && ./deploy.sh local up # 本机起容器
cd deploy/console && ./deploy.sh prod logs # 看日志
# 测试环境发布(在 deploy/<服务>/ 下,服务 = app | console | admin)
cd deploy/console && ./dev-deploy.sh yunyan # 云雁测试环境(广州阿里云 8.138.86.223)
cd deploy/console && ./dev-deploy.sh # 不带参数 → 交互选环境:lingpu | yunyan
# 生产:先构建带版本号的镜像,再部署
cd deploy/console && ./prod-build.sh 0.2.1 yunyan # 第 2 个参数选公司(yunyan|lingpu),省略则交互选
cd deploy/console && ./prod-deploy.sh 0.2.1 # 用 COMPANY=lingpu 前缀可换仓库,须与构建时一致
```
`deploy.sh <env> [action]`:`env` = `local|dev|prod`;`action` dev/prod 默认 `deploy`,local 默认 `up`,另有 `up/build/pull/down/restart/logs/ps`。服务名取自所在目录名。
**镜像仓库按公司区分**,地址/账号统一在 [deploy/registry-profiles.sh](deploy/registry-profiles.sh)(换仓库只改这一处,各脚本 source 它):
- `yunyan` → `registry.voitrans.net`(仓库实体在广州机 8.138.86.223)
- `lingpu` → `registry.lingpu.net`(灵谱香港机)
`dev-deploy.sh <环境>` 只做镜像部署:构建推送 → 远端 pull 重启,**不上传** 服务器上的真实 `.env` / `confs/*.yaml`(只下发 `*.example` 模板)。
## 后端架构(lego 框架)

2
apps/admin/.output/nitro.json

@ -1,5 +1,5 @@
{
"date": "2026-07-29T14:48:33.461Z",
"date": "2026-07-31T11:02:02.337Z",
"preset": "node-server",
"framework": {
"name": "nuxt",

2
apps/admin/.output/public/_nuxt/0WNSFMX1.js → apps/admin/.output/public/_nuxt/B3qpHAjq.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/YYaFY5m9.js → apps/admin/.output/public/_nuxt/B8Fu162H.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/HFcFZ41D.js → apps/admin/.output/public/_nuxt/BFWR6QZ6.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BWhTtyw-.js → apps/admin/.output/public/_nuxt/BOUWbQhH.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/RjO_r9CD.js → apps/admin/.output/public/_nuxt/BPYtLuIu.js

@ -1 +1 @@
import{_ as o,o as s,c as a,a as t,t as r}from"./Dv-LAQo6.js";import{u as i}from"./xRPLHwov.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};
import{_ as o,o as s,c as a,a as t,t as r}from"./Ccu6Xgpt.js";import{u as i}from"./oiJG5Pzc.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};

2
apps/admin/.output/public/_nuxt/N6ePFfck.js → apps/admin/.output/public/_nuxt/BQIhlerM.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BOVc_R-F.js → apps/admin/.output/public/_nuxt/BgemqguF.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BPgWG32Q.js → apps/admin/.output/public/_nuxt/BtOu2QXF.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CTIvguo-.js → apps/admin/.output/public/_nuxt/C1u1NIe5.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CEsBRmS9.js → apps/admin/.output/public/_nuxt/C37X9GaT.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BfiStvNk.js → apps/admin/.output/public/_nuxt/C3hsc2UX.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BSpPV7NB.js → apps/admin/.output/public/_nuxt/CAgv4ClK.js

@ -1,4 +1,4 @@
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./Dv-LAQo6.js";import{u as J}from"./mz7Huk5H.js";import{u as W}from"./D7SVvy69.js";import"./D0vUT4uH.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./Ccu6Xgpt.js";import{u as J}from"./Um-KoueI.js";import{u as W}from"./DvwKXRUn.js";import"./CH2ZVAK2.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
只清除本核对面板的记录,不影响已落库的统计数据。
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function q(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,U(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[M,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[M,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Q,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:q},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:j},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},U(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",B(t.level).cls])},n(B(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),H(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DiInGhGc.js → apps/admin/.output/public/_nuxt/CCYeqIml.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CSir_6Sc.js → apps/admin/.output/public/_nuxt/CFdmUKvC.js

@ -1 +1 @@
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./Dv-LAQo6.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./Ccu6Xgpt.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};

2
apps/admin/.output/public/_nuxt/CyIH3Sn4.js → apps/admin/.output/public/_nuxt/CGLKuRNo.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/D0vUT4uH.js → apps/admin/.output/public/_nuxt/CH2ZVAK2.js

@ -1 +1 @@
import{e as f,a9 as p,aa as c,z as r}from"./Dv-LAQo6.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};
import{e as f,a9 as p,aa as c,z as r}from"./Ccu6Xgpt.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};

2
apps/admin/.output/public/_nuxt/CmHlPuQb.js → apps/admin/.output/public/_nuxt/CO60jE1q.js

File diff suppressed because one or more lines are too long

4
apps/admin/.output/public/_nuxt/Dv-LAQo6.js → apps/admin/.output/public/_nuxt/Ccu6Xgpt.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CFXePYDs.js → apps/admin/.output/public/_nuxt/D-7b2ops.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/D1efUY0c.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CSQN7OHo.js → apps/admin/.output/public/_nuxt/DNpGoo60.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DSpyBzHW.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/D0tNFWGx.js → apps/admin/.output/public/_nuxt/DazkwkSm.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CzRv6c7P.js → apps/admin/.output/public/_nuxt/DdRUm5PD.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/OcSe_OeH.js → apps/admin/.output/public/_nuxt/DiXjRAbV.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BSFY2Kep.js → apps/admin/.output/public/_nuxt/Dtlyyukj.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/D7SVvy69.js → apps/admin/.output/public/_nuxt/DvwKXRUn.js

@ -1 +1 @@
import{a as u}from"./D0vUT4uH.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};
import{a as u}from"./CH2ZVAK2.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Ge7z-opa.js → apps/admin/.output/public/_nuxt/Sgx9LvLK.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/mz7Huk5H.js → apps/admin/.output/public/_nuxt/Um-KoueI.js

@ -1 +1 @@
import{j as w,k as d}from"./Dv-LAQo6.js";import{u as h}from"./D0vUT4uH.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};
import{j as w,k as d}from"./Ccu6Xgpt.js";import{u as h}from"./CH2ZVAK2.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};

2
apps/admin/.output/public/_nuxt/uis8hfUF.js → apps/admin/.output/public/_nuxt/aWlcN8xt.js

@ -1 +1 @@
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./Dv-LAQo6.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./Ccu6Xgpt.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};

2
apps/admin/.output/public/_nuxt/builds/latest.json

@ -1 +1 @@
{"id":"671440d9-9ac2-4158-bbf2-60c5639d616e","timestamp":1785336504226}
{"id":"1c187759-8384-4449-899e-e6f5237cf6d9","timestamp":1785495714123}

1
apps/admin/.output/public/_nuxt/builds/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json

@ -0,0 +1 @@
{"id":"1c187759-8384-4449-899e-e6f5237cf6d9","timestamp":1785495714123,"prerendered":[]}

1
apps/admin/.output/public/_nuxt/builds/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json

@ -1 +0,0 @@
{"id":"671440d9-9ac2-4158-bbf2-60c5639d616e","timestamp":1785336504226,"prerendered":[]}

2
apps/admin/.output/public/_nuxt/entry.B8AmFJkM.css → apps/admin/.output/public/_nuxt/entry.Nq-dPCOq.css

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/DCtqoj8h.js → apps/admin/.output/public/_nuxt/k7DeUBTv.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/xRPLHwov.js → apps/admin/.output/public/_nuxt/oiJG5Pzc.js

@ -1 +1 @@
import{u as a,e as s,h as u,i as r,f as h}from"./Dv-LAQo6.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};
import{u as a,e as s,h as u,i as r,f as h}from"./Ccu6Xgpt.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};

2
apps/admin/.output/public/_nuxt/CZJGstC3.js → apps/admin/.output/public/_nuxt/szhsDUYv.js

@ -1 +1 @@
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./Dv-LAQo6.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./Ccu6Xgpt.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};

2
apps/admin/.output/public/_nuxt/BtEuBlBw.js → apps/admin/.output/public/_nuxt/vijQW-l0.js

@ -1 +1 @@
import{_ as s}from"./OcSe_OeH.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./Dv-LAQo6.js";import{u as f}from"./xRPLHwov.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};
import{_ as s}from"./DiXjRAbV.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./Ccu6Xgpt.js";import{u as f}from"./oiJG5Pzc.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/B28BcwCz.js → apps/admin/.output/public/_nuxt/zsrSRWp_.js

@ -1 +1 @@
import{_ as t,o,c as s,R as c}from"./Dv-LAQo6.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};
import{_ as t,o,c as s,R as c}from"./Ccu6Xgpt.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};

1
apps/admin/.output/server/chunks/build/appconfig-BTmHA76P.mjs.map

@ -1 +0,0 @@
{"version":3,"file":"appconfig-BTmHA76P.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

34
apps/admin/.output/server/chunks/build/appconfig-BTmHA76P.mjs → apps/admin/.output/server/chunks/build/appconfig-C6Zn9BWM.mjs

@ -1,5 +1,5 @@
import { defineComponent, ref, reactive, computed, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderStyle, ssrIncludeBooleanAttr, ssrRenderAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate } from 'vue/server-renderer';
import { ssrRenderAttrs, ssrRenderStyle, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrRenderAttr, ssrInterpolate } from 'vue/server-renderer';
import { u as useApi } from './useApi-B-E5eLsI.mjs';
import { u as useToast } from './useToast-CS21XT61.mjs';
import './server.mjs';
@ -29,6 +29,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
useToast();
const view = ref("list");
const apps = ref([]);
const envs = ref([]);
const curAppName = ref("");
const curApp = ref(0);
const items = ref([]);
const loading = ref(false);
@ -36,9 +38,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
const isEditing = ref(false);
const keyword = ref("");
const form = reactive({ id: 0, group: "", key: "", value: "", description: "" });
const appNames = computed(
() => [...new Set(apps.value.map((a) => a.app_name || a.name).filter(Boolean))].sort()
);
const appDeployments = computed(
() => apps.value.filter((a) => (a.app_name || a.name) === curAppName.value)
);
function deployLabel(d) {
const e = envs.value.find((x) => x.id === d.env_id);
const envName = e ? e.name || e.code : d.env_id ? `环境#${d.env_id}` : "未关联环境";
const suffix = d.status === "pending" ? "(待部署)" : "";
return d.region ? `${envName} · ${d.region}${suffix}` : `${envName}${suffix}`;
}
const curAppLabel = computed(() => {
const a = apps.value.find((x) => x.id === curApp.value);
return a ? a.name || a.app_name : "";
return a ? `${a.app_name || a.name} · ${deployLabel(a)}` : "";
});
const filteredRows = computed(() => {
const kw = keyword.value.trim().toLowerCase();
@ -59,13 +73,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
return names.map((g) => ({ key: g, label: g || "未分组", items: groups[g] }));
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)}><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="flex items-center justify-between mb-5"><div><h2 class="text-lg font-semibold text-slate-800">应用环境配置</h2><p class="text-xs text-slate-400 mt-1">应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。</p></div><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!curApp.value) ? " disabled" : ""}>+ 新增配置</button></div><div class="flex items-center gap-3 mb-4"><span class="text-sm text-slate-500">应用</span><select class="select select-bordered select-sm min-w-48"><option${ssrRenderAttr("value", 0)} disabled${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, 0) : ssrLooseEqual(curApp.value, 0)) ? " selected" : ""}>请选择应用</option><!--[-->`);
ssrRenderList(apps.value, (a) => {
_push(`<option${ssrRenderAttr("value", a.id)}${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, a.id) : ssrLooseEqual(curApp.value, a.id)) ? " selected" : ""}>${ssrInterpolate(a.name || a.app_name)}</option>`);
_push(`<div${ssrRenderAttrs(_attrs)}><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="flex items-center justify-between mb-5"><div><h2 class="text-lg font-semibold text-slate-800">应用环境配置</h2><p class="text-xs text-slate-400 mt-1">应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。</p></div><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!curApp.value) ? " disabled" : ""}>+ 新增配置</button></div><div class="flex items-center gap-3 mb-4 flex-wrap"><span class="text-sm text-slate-500">应用</span><select class="select select-bordered select-sm min-w-40"><option value="" disabled${ssrIncludeBooleanAttr(Array.isArray(curAppName.value) ? ssrLooseContain(curAppName.value, "") : ssrLooseEqual(curAppName.value, "")) ? " selected" : ""}>请选择应用</option><!--[-->`);
ssrRenderList(appNames.value, (n) => {
_push(`<option${ssrRenderAttr("value", n)}${ssrIncludeBooleanAttr(Array.isArray(curAppName.value) ? ssrLooseContain(curAppName.value, n) : ssrLooseEqual(curAppName.value, n)) ? " selected" : ""}>${ssrInterpolate(n)}</option>`);
});
_push(`<!--]--></select><span class="text-sm text-slate-500">部署环境</span><select class="select select-bordered select-sm min-w-48"${ssrIncludeBooleanAttr(!curAppName.value) ? " disabled" : ""}><option${ssrRenderAttr("value", 0)} disabled${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, 0) : ssrLooseEqual(curApp.value, 0)) ? " selected" : ""}>请选择环境</option><!--[-->`);
ssrRenderList(appDeployments.value, (d) => {
_push(`<option${ssrRenderAttr("value", d.id)}${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, d.id) : ssrLooseEqual(curApp.value, d.id)) ? " selected" : ""}>${ssrInterpolate(deployLabel(d))}</option>`);
});
_push(`<!--]--></select><input${ssrRenderAttr("value", keyword.value)} class="input input-bordered input-sm w-48" placeholder="按分组/键搜索"></div>`);
if (!curApp.value) {
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"><div class="text-4xl mb-2">🗂️</div><p class="text-sm">请先在上方选择一个应用</p></div>`);
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"><div class="text-4xl mb-2">🗂️</div><p class="text-sm">${ssrInterpolate(curAppName.value ? "该应用还没有部署环境,请先在「应用中心」为它部署一个环境" : "请先在上方选择应用和部署环境")}</p></div>`);
} else {
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100"><div class="overflow-x-auto"><table class="table"><thead><tr><th>键</th><th>值</th><th>描述</th><th class="text-right">操作</th></tr></thead><tbody>`);
if (loading.value) {
@ -85,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
});
_push(`<!--]--></tbody></table></div></div>`);
}
_push(`</div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? "编辑配置" : "新增配置")}</h2><span class="text-xs text-slate-400">应用:${ssrInterpolate(curAppLabel.value)}</span></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">分组 (group)</span></label><input${ssrRenderAttr("value", form.group)} type="text" class="input input-bordered w-full" placeholder="如 music / oss / other"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">键 (key) *</span></label><input${ssrRenderAttr("value", form.key)} type="text" class="input input-bordered w-full" required placeholder="如 oss_access_key"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">值 (value)</span></label><textarea class="textarea textarea-bordered w-full font-mono text-sm" rows="3">${ssrInterpolate(form.value)}</textarea></div><div class="form-control mb-6"><label class="label"><span class="label-text font-medium">描述</span></label><input${ssrRenderAttr("value", form.description)} type="text" class="input input-bordered w-full"></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""}>保存</button></div></form></div></div></div>`);
_push(`</div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? "编辑配置" : "新增配置")}</h2><span class="text-xs text-slate-400">配置目标:${ssrInterpolate(curAppLabel.value)}</span></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">分组 (group)</span></label><input${ssrRenderAttr("value", form.group)} type="text" class="input input-bordered w-full" placeholder="如 music / oss / other"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">键 (key) *</span></label><input${ssrRenderAttr("value", form.key)} type="text" class="input input-bordered w-full" required placeholder="如 oss_access_key"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">值 (value)</span></label><textarea class="textarea textarea-bordered w-full font-mono text-sm" rows="3">${ssrInterpolate(form.value)}</textarea></div><div class="form-control mb-6"><label class="label"><span class="label-text font-medium">描述</span></label><input${ssrRenderAttr("value", form.description)} type="text" class="input input-bordered w-full"></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""}>保存</button></div></form></div></div></div>`);
};
}
});
@ -97,4 +115,4 @@ _sfc_main.setup = (props, ctx) => {
};
export { _sfc_main as default };
//# sourceMappingURL=appconfig-BTmHA76P.mjs.map
//# sourceMappingURL=appconfig-C6Zn9BWM.mjs.map

1
apps/admin/.output/server/chunks/build/appconfig-C6Zn9BWM.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"appconfig-C6Zn9BWM.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

2
apps/admin/.output/server/chunks/build/client.precomputed.mjs

File diff suppressed because one or more lines are too long

2
apps/admin/.output/server/chunks/build/server.mjs

@ -1965,7 +1965,7 @@ const _routes = [
name: "appconfig",
path: "/appconfig",
meta: __nuxt_page_meta$j || {},
component: () => import('./appconfig-BTmHA76P.mjs')
component: () => import('./appconfig-C6Zn9BWM.mjs')
},
{
name: "apps",

10
apps/admin/.output/server/chunks/build/styles.mjs

@ -3,19 +3,19 @@ const styles = {
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-404.vue": () => import('./error-404-styles.Dw8OeZuk.mjs').then(interopDefault),
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-500.vue": () => import('./error-500-styles.CsxdYB__.mjs').then(interopDefault),
"pages/apps/[name].vue": () => import('./_name_-styles.Dz82uZcJ.mjs').then(interopDefault),
"pages/agents.vue": () => import('./agents-styles.DrcBfQcb.mjs').then(interopDefault),
"components/AppDeployTab.vue": () => import('./AppDeployTab-styles.CUK7XFMF.mjs').then(interopDefault),
"components/AppModuleTab.vue": () => import('./AppModuleTab-styles._m-oVrlE.mjs').then(interopDefault),
"pages/accounts.vue": () => import('./accounts-styles.E9MHodaB.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./dashboard-styles.CGuiyPm5.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/apps/index.vue": () => import('./index-styles.pMqqe5sq.mjs').then(interopDefault),
"pages/agents.vue": () => import('./agents-styles.DrcBfQcb.mjs').then(interopDefault),
"pages/channels.vue": () => import('./channels-styles.BsiooF6f.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./dashboard-styles.CGuiyPm5.mjs').then(interopDefault),
"pages/meetingsvc.vue": () => import('./meetingsvc-styles.CM1HF5Dg.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"pages/index.vue": () => import('./index-styles.DNbAzSQY.mjs').then(interopDefault),
"pages/statlog.vue": () => import('./statlog-styles.CjrRv6cK.mjs').then(interopDefault),
"pages/serviceconfig.vue": () => import('./serviceconfig-styles.pHiXruL3.mjs').then(interopDefault),
"pages/statlog.vue": () => import('./statlog-styles.CjrRv6cK.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"layouts/default.vue": () => import('./default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/AppLoading.vue": () => import('./default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/LangSelect.vue": () => import('./LangSelect-styles.Bi81RebM.mjs').then(interopDefault)

418
apps/admin/.output/server/chunks/nitro/nitro.mjs

@ -4028,7 +4028,7 @@ function _expandFromEnv(value) {
const _inlineRuntimeConfig = {
"app": {
"baseURL": "/",
"buildId": "671440d9-9ac2-4158-bbf2-60c5639d616e",
"buildId": "1c187759-8384-4449-899e-e6f5237cf6d9",
"buildAssetsDir": "/_nuxt/",
"cdnURL": ""
},
@ -4507,383 +4507,383 @@ const plugins = [
];
const assets = {
"/_nuxt/0WNSFMX1.js": {
"/_nuxt/B3qpHAjq.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3a84-sxPlsTI4EyMbMaJWNyQV6qA/CTk\"",
"mtime": "2026-07-29T14:48:31.131Z",
"etag": "\"3a84-EdHfaOmepsLOAvNIZGKmhIvjduI\"",
"mtime": "2026-07-31T11:02:00.273Z",
"size": 14980,
"path": "../public/_nuxt/0WNSFMX1.js"
"path": "../public/_nuxt/B3qpHAjq.js"
},
"/_nuxt/B28BcwCz.js": {
"/_nuxt/BFWR6QZ6.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"df-YRRoS8tUAOj/jmhvPq98Cd4S9pk\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 223,
"path": "../public/_nuxt/B28BcwCz.js"
"etag": "\"1a10-VVZ+E7bT7V0LBaGyHY6syOxbmk4\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 6672,
"path": "../public/_nuxt/BFWR6QZ6.js"
},
"/_nuxt/BOVc_R-F.js": {
"/_nuxt/B8Fu162H.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4efb-70DpHVNH7IBkXqIj9ac0j/rft74\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 20219,
"path": "../public/_nuxt/BOVc_R-F.js"
"etag": "\"ab56-GJILUtVhrIrmAQ5hgXGtot56Ngc\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 43862,
"path": "../public/_nuxt/B8Fu162H.js"
},
"/_nuxt/BPgWG32Q.js": {
"/_nuxt/BPYtLuIu.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"9dfe-/6tEbvpahdyVFZVvBDnVewoKdG8\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 40446,
"path": "../public/_nuxt/BPgWG32Q.js"
"etag": "\"d96-EuNzL01mjiHF04gJT9Y//hOtKIQ\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 3478,
"path": "../public/_nuxt/BPYtLuIu.js"
},
"/_nuxt/BSFY2Kep.js": {
"/_nuxt/BOUWbQhH.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"256c-vcGU7jR5Cunp2FvLRW99tAr6XIA\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 9580,
"path": "../public/_nuxt/BSFY2Kep.js"
"etag": "\"4592-uz+NSsvhUUQFGtz1hcKEbQ9WaS8\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 17810,
"path": "../public/_nuxt/BOUWbQhH.js"
},
"/_nuxt/BSpPV7NB.js": {
"/_nuxt/BQIhlerM.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bbe-zavY9bO9AApCZb+P6eBY4RX7/Hs\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 7102,
"path": "../public/_nuxt/BSpPV7NB.js"
"etag": "\"4d8a-DePckmpFF2g2oXxtgjAOIwMpo2g\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 19850,
"path": "../public/_nuxt/BQIhlerM.js"
},
"/_nuxt/BfiStvNk.js": {
"/_nuxt/C37X9GaT.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bda-2KNkBR86fKVR4OXxeLtvgXBwelM\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 7130,
"path": "../public/_nuxt/BfiStvNk.js"
"etag": "\"337c-J2oFG1UJzt7LPcTKuHDrzLSbrAk\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 13180,
"path": "../public/_nuxt/C37X9GaT.js"
},
"/_nuxt/BWhTtyw-.js": {
"/_nuxt/BgemqguF.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4592-9DvuftPFubCdyp4uq+c0ITxi//w\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 17810,
"path": "../public/_nuxt/BWhTtyw-.js"
"etag": "\"4efb-iM/kvjJuTsHTX5t342xH43pQzig\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 20219,
"path": "../public/_nuxt/BgemqguF.js"
},
"/_nuxt/BtEuBlBw.js": {
"/_nuxt/BtOu2QXF.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"ecf-PJb6VOdCS6n64wD12oJuqy8Pjzs\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 3791,
"path": "../public/_nuxt/BtEuBlBw.js"
"etag": "\"9dfe-SPXSiVovEEaRft/564FEsio4C9M\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 40446,
"path": "../public/_nuxt/BtOu2QXF.js"
},
"/_nuxt/CEsBRmS9.js": {
"/_nuxt/C1u1NIe5.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"337c-4kTw9dXCfcUX2lde6u/JRMNxxjg\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 13180,
"path": "../public/_nuxt/CEsBRmS9.js"
"etag": "\"1874-jrbgW56tkZu1xev6uZNup/vzYFQ\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 6260,
"path": "../public/_nuxt/C1u1NIe5.js"
},
"/_nuxt/CFXePYDs.js": {
"/_nuxt/C3hsc2UX.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"22ee-5iib/9Pzh49zbOEpzdcQXhHSWpA\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 8942,
"path": "../public/_nuxt/CFXePYDs.js"
"etag": "\"1bda-CjpyAwOIS6Rd4U+eb+Kh+Atgwzk\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 7130,
"path": "../public/_nuxt/C3hsc2UX.js"
},
"/_nuxt/CSQN7OHo.js": {
"/_nuxt/CAgv4ClK.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a81-viCvVhn/QdnCqcXfmY13CrtAk1Y\"",
"mtime": "2026-07-29T14:48:31.131Z",
"size": 6785,
"path": "../public/_nuxt/CSQN7OHo.js"
"etag": "\"1bbe-KC15eURvD0Z2VuNMXYC7gXnZ8p0\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 7102,
"path": "../public/_nuxt/CAgv4ClK.js"
},
"/_nuxt/CSir_6Sc.js": {
"/_nuxt/CFdmUKvC.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"b1f-0XgVCoaHMBSH/D0Add7zN2qp/sE\"",
"mtime": "2026-07-29T14:48:31.131Z",
"etag": "\"b1f-9Nyf4VrjCKqf9Ug6CYUEKE6v/mw\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 2847,
"path": "../public/_nuxt/CSir_6Sc.js"
"path": "../public/_nuxt/CFdmUKvC.js"
},
"/_nuxt/CTIvguo-.js": {
"/_nuxt/CCYeqIml.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1874-QoJOzOfX/9n9IgH5tEyvQHMnOS4\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 6260,
"path": "../public/_nuxt/CTIvguo-.js"
"etag": "\"2f8d-xbTYnf+PUCDbqHr+7RLWYxZWKP4\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 12173,
"path": "../public/_nuxt/CCYeqIml.js"
},
"/_nuxt/CZJGstC3.js": {
"/_nuxt/CGLKuRNo.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"868-zYVHaIihHM/uJnvotOR3GhKmYI0\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 2152,
"path": "../public/_nuxt/CZJGstC3.js"
"etag": "\"925d-Moe7UGFtSjRrXgDAHVk/a2YNeDc\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 37469,
"path": "../public/_nuxt/CGLKuRNo.js"
},
"/_nuxt/CmHlPuQb.js": {
"/_nuxt/CH2ZVAK2.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2221-G09HiKbsHIAc4VEd/Fqoi3cxKYg\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 8737,
"path": "../public/_nuxt/CmHlPuQb.js"
"etag": "\"2e5-LU07q0qs3YGjedzayaThX5PZ0uQ\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 741,
"path": "../public/_nuxt/CH2ZVAK2.js"
},
"/_nuxt/CyIH3Sn4.js": {
"/_nuxt/CO60jE1q.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"925d-IkVmcYY3VGQmimy2zBUz2ScmM2c\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 37469,
"path": "../public/_nuxt/CyIH3Sn4.js"
"etag": "\"2221-6N6hI79TwkI9sq6CfofGKTTm8tM\"",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 8737,
"path": "../public/_nuxt/CO60jE1q.js"
},
"/_nuxt/ChQPCk92.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3d7-bVlkH5HnpdHdWIG2sqCldjh0OqM\"",
"mtime": "2026-07-29T14:48:31.132Z",
"mtime": "2026-07-31T11:02:00.274Z",
"size": 983,
"path": "../public/_nuxt/ChQPCk92.js"
},
"/_nuxt/CzRv6c7P.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"3a38-EHTZjRQO1IPYuyyJPi/fpzOxcOo\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 14904,
"path": "../public/_nuxt/CzRv6c7P.js"
},
"/_nuxt/D0vUT4uH.js": {
"/_nuxt/D-7b2ops.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2e5-PIcV/uX7phDOi+6D3qSWtslQcUQ\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 741,
"path": "../public/_nuxt/D0vUT4uH.js"
},
"/_nuxt/D0tNFWGx.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"39a6-DEYYDAzvMn6ye/+79c4T4Xb6WiY\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 14758,
"path": "../public/_nuxt/D0tNFWGx.js"
"etag": "\"22ee-WhZvnpQ7K6qthkJ1jX8BEzmDTkA\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 8942,
"path": "../public/_nuxt/D-7b2ops.js"
},
"/_nuxt/D1efUY0c.js": {
"/_nuxt/DNpGoo60.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1bd9-VlVXYf+cubuVqjFb8FQlmbOJaSk\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 7129,
"path": "../public/_nuxt/D1efUY0c.js"
"etag": "\"1a81-o6OLc2mVNRaTlMMDdoP9NJTl0pM\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 6785,
"path": "../public/_nuxt/DNpGoo60.js"
},
"/_nuxt/D7SVvy69.js": {
"/_nuxt/Ccu6Xgpt.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"17a-DUC28pFkm9b4YquTcgmn+83ckTQ\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 378,
"path": "../public/_nuxt/D7SVvy69.js"
"etag": "\"31f04-LwNFWdzC+1Y0LEzA1lyW2oW6Eag\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 204548,
"path": "../public/_nuxt/Ccu6Xgpt.js"
},
"/_nuxt/DCtqoj8h.js": {
"/_nuxt/DSpyBzHW.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"36c1-MBndy+eCGnOT9XjuDCbU85z8K0w\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 14017,
"path": "../public/_nuxt/DCtqoj8h.js"
"etag": "\"2037-vpVFtr6Ja7/AeZk7pkjRTjY8D+4\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 8247,
"path": "../public/_nuxt/DSpyBzHW.js"
},
"/_nuxt/DiInGhGc.js": {
"/_nuxt/DazkwkSm.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"2f8d-3IjazxyAz7TbQz16LVQoxZGJNVo\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 12173,
"path": "../public/_nuxt/DiInGhGc.js"
"etag": "\"39a6-TTXpbMWzMH9L+Ozg2vm/dt/4XnU\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 14758,
"path": "../public/_nuxt/DazkwkSm.js"
},
"/_nuxt/Dv-LAQo6.js": {
"/_nuxt/DdRUm5PD.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"31f04-IrLtUNKlLugqQX5v3FkRRiCvVjM\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 204548,
"path": "../public/_nuxt/Dv-LAQo6.js"
"etag": "\"3a38-S60NryMqSS8SbXWBN6qqsEqdgak\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 14904,
"path": "../public/_nuxt/DdRUm5PD.js"
},
"/_nuxt/Ge7z-opa.js": {
"/_nuxt/DiXjRAbV.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"324a-r68AvJ1FcAe05DCcFTKxvpRS3K4\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 12874,
"path": "../public/_nuxt/Ge7z-opa.js"
"etag": "\"161c-gm57dKywj1DwK5KlKjowZIePWik\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 5660,
"path": "../public/_nuxt/DiXjRAbV.js"
},
"/_nuxt/HFcFZ41D.js": {
"/_nuxt/Dtlyyukj.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a10-6RuXcYxSthP/0LVD1DtVMLs2QEQ\"",
"mtime": "2026-07-29T14:48:31.132Z",
"size": 6672,
"path": "../public/_nuxt/HFcFZ41D.js"
"etag": "\"256c-F5yGMJrbVxk9GHL5kfu/Cskzx4c\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 9580,
"path": "../public/_nuxt/Dtlyyukj.js"
},
"/_nuxt/LangSelect.Dkm6e8RK.css": {
"type": "text/css; charset=utf-8",
"etag": "\"5c3-C4SkCgblTC2eBbJlNpFMUPfZZW8\"",
"mtime": "2026-07-29T14:48:31.132Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 1475,
"path": "../public/_nuxt/LangSelect.Dkm6e8RK.css"
},
"/_nuxt/N6ePFfck.js": {
"/_nuxt/DvwKXRUn.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"4d8a-2Hqg7E4d8iP7A5lBNaqv9luVl44\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 19850,
"path": "../public/_nuxt/N6ePFfck.js"
},
"/_nuxt/OcSe_OeH.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"161c-5ecn5PmO9PU9whO+vfc8TTrWKgM\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 5660,
"path": "../public/_nuxt/OcSe_OeH.js"
"etag": "\"17a-7imcoHjWVnUn641HZ3NBnBhDVJU\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 378,
"path": "../public/_nuxt/DvwKXRUn.js"
},
"/_nuxt/RjO_r9CD.js": {
"/_nuxt/Sgx9LvLK.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"d96-wcJx3mILecgT48QVg1lsQf1DylQ\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 3478,
"path": "../public/_nuxt/RjO_r9CD.js"
"etag": "\"324a-3i72Em616aJUbjNlIIbnqFc2I4Q\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 12874,
"path": "../public/_nuxt/Sgx9LvLK.js"
},
"/_nuxt/YYaFY5m9.js": {
"/_nuxt/Um-KoueI.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"ab56-CSevtg3PogJ0mgETcJIb6EsNHW0\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 43862,
"path": "../public/_nuxt/YYaFY5m9.js"
"etag": "\"58b-byCXqJZUEAGT4orU3KT2iBPaJMU\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 1419,
"path": "../public/_nuxt/Um-KoueI.js"
},
"/_nuxt/_name_.B5yFMG3g.css": {
"type": "text/css; charset=utf-8",
"etag": "\"1a66-PDbmlnPJP0bTaSWoPPpQSN3ew/k\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 6758,
"path": "../public/_nuxt/_name_.B5yFMG3g.css"
},
"/_nuxt/aWlcN8xt.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a5-jogOkxFgWG2PidDGF1zEs+XNiPk\"",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 421,
"path": "../public/_nuxt/aWlcN8xt.js"
},
"/_nuxt/accounts.vxGnCxY1.css": {
"type": "text/css; charset=utf-8",
"etag": "\"13a-18ifK9iGrWdARqUkEGJ49mKNMlI\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 314,
"path": "../public/_nuxt/accounts.vxGnCxY1.css"
},
"/_nuxt/agents.-kjpROzC.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c07-DtTrCb/0z2FTH0M/xGNfaiUA464\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 3079,
"path": "../public/_nuxt/agents.-kjpROzC.css"
},
"/_nuxt/calltranslate.CJXjjd14.css": {
"type": "text/css; charset=utf-8",
"etag": "\"12bf-GWJtFmiGpAneLOM6lhOF8Yczqoc\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 4799,
"path": "../public/_nuxt/calltranslate.CJXjjd14.css"
},
"/_nuxt/channels.4kXMd4_X.css": {
"type": "text/css; charset=utf-8",
"etag": "\"fab-xNgT+6RhPcM6WuuTH+FQBwmlYkk\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.275Z",
"size": 4011,
"path": "../public/_nuxt/channels.4kXMd4_X.css"
},
"/_nuxt/dashboard.bI0rfjl_.css": {
"type": "text/css; charset=utf-8",
"etag": "\"ec6-xLzfcTmKGF6JNWdYkGROjwovQsY\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 3782,
"path": "../public/_nuxt/dashboard.bI0rfjl_.css"
},
"/_nuxt/entry.B8AmFJkM.css": {
"type": "text/css; charset=utf-8",
"etag": "\"183a6-oPNU0L5vGakipbeqmwk8SvPfDYc\"",
"mtime": "2026-07-29T14:48:31.133Z",
"size": 99238,
"path": "../public/_nuxt/entry.B8AmFJkM.css"
},
"/_nuxt/default.miyQHb0v.css": {
"type": "text/css; charset=utf-8",
"etag": "\"b2-O1zVvoAVcFlJDT9d+8Mq5HKgSwA\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 178,
"path": "../public/_nuxt/default.miyQHb0v.css"
},
"/_nuxt/error-500.DM8oqBl3.css": {
"/_nuxt/entry.Nq-dPCOq.css": {
"type": "text/css; charset=utf-8",
"etag": "\"773-fnDg7l3rvJ5f8Hx4TwZqMlSCEdI\"",
"mtime": "2026-07-29T14:48:31.134Z",
"size": 1907,
"path": "../public/_nuxt/error-500.DM8oqBl3.css"
"etag": "\"183c0-FB6S40o6yR8CHsdGpoo6hM88IW8\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 99264,
"path": "../public/_nuxt/entry.Nq-dPCOq.css"
},
"/_nuxt/error-404.Dm-MYrAh.css": {
"type": "text/css; charset=utf-8",
"etag": "\"97e-/v6mv+rmcBtKGiHr88cRdQNod1s\"",
"mtime": "2026-07-29T14:48:31.133Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 2430,
"path": "../public/_nuxt/error-404.Dm-MYrAh.css"
},
"/_nuxt/error-500.DM8oqBl3.css": {
"type": "text/css; charset=utf-8",
"etag": "\"773-fnDg7l3rvJ5f8Hx4TwZqMlSCEdI\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 1907,
"path": "../public/_nuxt/error-500.DM8oqBl3.css"
},
"/_nuxt/index.4nAkFRy2.css": {
"type": "text/css; charset=utf-8",
"etag": "\"9bb-oLx1eNvSlE3Mf6e/ODXe5npQc6w\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 2491,
"path": "../public/_nuxt/index.4nAkFRy2.css"
},
"/_nuxt/index.BXNugdH5.css": {
"type": "text/css; charset=utf-8",
"etag": "\"c9d-iEqnsYCjM8QWRpOi0SjOz5c/OsY\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 3229,
"path": "../public/_nuxt/index.BXNugdH5.css"
},
"/_nuxt/k7DeUBTv.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"36c1-I82IY73n8BhrCHZ1IHozQtxVJEo\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 14017,
"path": "../public/_nuxt/k7DeUBTv.js"
},
"/_nuxt/meetingsvc.Cnu-3MbB.css": {
"type": "text/css; charset=utf-8",
"etag": "\"1181-i/bAxNjFIbxMsmYOCjcYf5QXrXY\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 4481,
"path": "../public/_nuxt/meetingsvc.Cnu-3MbB.css"
},
"/_nuxt/mz7Huk5H.js": {
"/_nuxt/oiJG5Pzc.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"58b-lqVJC2IrMoSZYZi3m3y0Bid8oho\"",
"mtime": "2026-07-29T14:48:31.134Z",
"size": 1419,
"path": "../public/_nuxt/mz7Huk5H.js"
"etag": "\"146-LnEg35qytvxkZbhhPe6TM+2U4Wo\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 326,
"path": "../public/_nuxt/oiJG5Pzc.js"
},
"/_nuxt/serviceconfig.D1-cnJwZ.css": {
"type": "text/css; charset=utf-8",
"etag": "\"11f9-1SPPT0dmRmZGXJYCHUYqKbT0mYs\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 4601,
"path": "../public/_nuxt/serviceconfig.D1-cnJwZ.css"
},
"/_nuxt/statlog.C1q_3yEh.css": {
"type": "text/css; charset=utf-8",
"etag": "\"4f1-raISk2zkJ3RyYjmALXSajiW6ngA\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 1265,
"path": "../public/_nuxt/statlog.C1q_3yEh.css"
},
"/_nuxt/systemconfig.MaL8_AEr.css": {
"type": "text/css; charset=utf-8",
"etag": "\"5f6-qMlVehTadQhvspNSgWfTP18KCiE\"",
"mtime": "2026-07-29T14:48:31.134Z",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 1526,
"path": "../public/_nuxt/systemconfig.MaL8_AEr.css"
},
"/_nuxt/uis8hfUF.js": {
"/_nuxt/szhsDUYv.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"1a5-JQdYpOVnwBD/pdDoA6YO4o+19TE\"",
"mtime": "2026-07-29T14:48:31.134Z",
"size": 421,
"path": "../public/_nuxt/uis8hfUF.js"
"etag": "\"868-HpZaPWp2c9wVoF1u4qTo6F5jG5U\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 2152,
"path": "../public/_nuxt/szhsDUYv.js"
},
"/_nuxt/xRPLHwov.js": {
"/_nuxt/vijQW-l0.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"146-5nyE71pyUdaw38G9SwG8p/9boSA\"",
"mtime": "2026-07-29T14:48:31.134Z",
"size": 326,
"path": "../public/_nuxt/xRPLHwov.js"
"etag": "\"ecf-SAR098nDz3tWYI2xJVKlkBI4gDk\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 3791,
"path": "../public/_nuxt/vijQW-l0.js"
},
"/_nuxt/zsrSRWp_.js": {
"type": "text/javascript; charset=utf-8",
"etag": "\"df-uMhmcvoZ1REHZAIcmCs2OrX5uQo\"",
"mtime": "2026-07-31T11:02:00.276Z",
"size": 223,
"path": "../public/_nuxt/zsrSRWp_.js"
},
"/_nuxt/builds/latest.json": {
"type": "application/json",
"etag": "\"47-8tCjPju4a2VdyR1FbSKsOZsmIVo\"",
"mtime": "2026-07-29T14:48:31.124Z",
"etag": "\"47-cpx0eg58tm1rjPX5MDZ/nYnmd2w\"",
"mtime": "2026-07-31T11:02:00.265Z",
"size": 71,
"path": "../public/_nuxt/builds/latest.json"
},
"/_nuxt/builds/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json": {
"/_nuxt/builds/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json": {
"type": "application/json",
"etag": "\"58-0Wzhl1u4Dibplxz01+Ya33W9jVc\"",
"mtime": "2026-07-29T14:48:31.122Z",
"etag": "\"58-MprsAzGqBN2PWYVg5euxlkrocPs\"",
"mtime": "2026-07-31T11:02:00.262Z",
"size": 88,
"path": "../public/_nuxt/builds/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json"
"path": "../public/_nuxt/builds/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json"
}
};

83
apps/admin/app/pages/appconfig.vue

@ -9,17 +9,27 @@
</div>
<button class="btn btn-primary btn-sm text-white" :disabled="!curApp" @click="showForm()">+ 新增配置</button>
</div>
<div class="flex items-center gap-3 mb-4">
<div class="flex items-center gap-3 mb-4 flex-wrap">
<span class="text-sm text-slate-500">应用</span>
<select v-model.number="curApp" class="select select-bordered select-sm min-w-48" @change="onAppChange">
<option :value="0" disabled>请选择应用</option>
<option v-for="a in apps" :key="a.id" :value="a.id">{{ a.name || a.app_name }}</option>
<select v-model="curAppName" class="select select-bordered select-sm min-w-40" @change="onAppNameChange">
<option value="" disabled>请选择应用</option>
<option v-for="n in appNames" :key="n" :value="n">{{ n }}</option>
</select>
<span class="text-sm text-slate-500">部署环境</span>
<select
v-model.number="curApp"
class="select select-bordered select-sm min-w-48"
:disabled="!curAppName"
@change="onAppChange"
>
<option :value="0" disabled>请选择环境</option>
<option v-for="d in appDeployments" :key="d.id" :value="d.id">{{ deployLabel(d) }}</option>
</select>
<input v-model="keyword" class="input input-bordered input-sm w-48" placeholder="按分组/键搜索" />
</div>
<div v-if="!curApp" class="bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16">
<div class="text-4xl mb-2">🗂️</div>
<p class="text-sm">请先在上方选择一个应用</p>
<p class="text-sm">{{ curAppName ? '该应用还没有部署环境,请先在「应用中心」为它部署一个环境' : '请先在上方选择应用和部署环境' }}</p>
</div>
<div v-else class="bg-white rounded-xl shadow-sm border border-slate-100">
<div class="overflow-x-auto">
@ -66,7 +76,7 @@
<div class="flex items-center gap-3 mb-5">
<button class="btn btn-ghost btn-sm" @click="showList()">&larr; 返回列表</button>
<h2 class="text-lg font-semibold text-slate-800">{{ isEditing ? '编辑配置' : '新增配置' }}</h2>
<span class="text-xs text-slate-400">应用:{{ curAppLabel }}</span>
<span class="text-xs text-slate-400">配置目标:{{ curAppLabel }}</span>
</div>
<div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl">
<form @submit.prevent="saveCfg">
@ -104,7 +114,11 @@ import { useToast } from '~/composables/useToast'
definePageMeta({ title: '应用环境配置' })
// 部署应用(与应用中心 apps/list 同源;id 为部署注册 id,用于连接该应用业务库)
interface Deployment { id: number; app_name: string; status: string; name: string; region: string }
// 同一个应用会在多个环境各有一条部署记录,靠 env_id 区分——配置按「应用 × 环境」独立。
interface Deployment { id: number; app_name: string; status: string; name: string; region: string; env_id: number }
// 部署环境(envs/list 同源,这里只用来给部署显示环境名)
interface EnvOption { id: number; name: string; code: string; enabled: boolean }
// 应用 config 项(结构同 DBGlobalConfigItem 去掉 region)
interface AppConfig {
@ -119,8 +133,10 @@ const { consoleApi } = useApi()
const { success, error } = useToast()
const view = ref<'list' | 'form'>('list')
const apps = ref<Deployment[]>([])
const curApp = ref(0) // 选中的部署 app_id
const apps = ref<Deployment[]>([]) // 全部部署(跨应用、跨环境)
const envs = ref<EnvOption[]>([]) // 全部环境
const curAppName = ref('') // 一级:选中的应用
const curApp = ref(0) // 二级:选中的部署 app_id(= 应用 × 环境)
const items = ref<AppConfig[]>([])
const loading = ref(false)
const submitting = ref(false)
@ -129,9 +145,27 @@ const keyword = ref('')
const form = reactive({ id: 0, group: '', key: '', value: '', description: '' })
// 应用名列表(一级选项):部署记录按 app_name 去重
const appNames = computed(() =>
[...new Set(apps.value.map((a) => a.app_name || a.name).filter(Boolean))].sort()
)
// 当前应用下的各环境部署(二级选项)
const appDeployments = computed(() =>
apps.value.filter((a) => (a.app_name || a.name) === curAppName.value)
)
// 部署对应的环境名;区域不同也一并标出,避免同环境多区域时分不清
function deployLabel(d: Deployment) {
const e = envs.value.find((x) => x.id === d.env_id)
const envName = e ? (e.name || e.code) : d.env_id ? `环境#${d.env_id}` : '未关联环境'
const suffix = d.status === 'pending' ? '(待部署)' : ''
return d.region ? `${envName} · ${d.region}${suffix}` : `${envName}${suffix}`
}
const curAppLabel = computed(() => {
const a = apps.value.find((x) => x.id === curApp.value)
return a ? (a.name || a.app_name) : ''
return a ? `${a.app_name || a.name} · ${deployLabel(a)}` : ''
})
// 关键字过滤(按 group + key)
@ -158,19 +192,38 @@ const groupedRows = computed(() => {
async function loadApps() {
try {
const list = await consoleApi<Deployment[]>('apps/list', {})
const [list, es] = await Promise.all([
consoleApi<Deployment[]>('apps/list', {}),
consoleApi<EnvOption[]>('envs/list', {}),
])
apps.value = list ?? []
// 默认选中第一个应用,直接带出其配置
if (!curApp.value && apps.value.length) {
curApp.value = apps.value[0]!.id
envs.value = es ?? []
// 默认选中第一个应用及其第一个部署;优先已接入的(待部署的业务库通常还连不上)
if (!curAppName.value && appNames.value.length) {
curAppName.value = appNames.value[0]!
pickDefaultDeployment()
await loadData()
}
} catch (e: any) {
error(e?.message ?? '获取应用列表失败')
apps.value = []
envs.value = []
}
}
// 在当前应用下挑一个默认部署环境
function pickDefaultDeployment() {
const list = appDeployments.value
const first = list.find((d) => d.status !== 'pending') ?? list[0]
curApp.value = first?.id ?? 0
}
// 换应用:重挑环境并加载该环境的配置
function onAppNameChange() {
pickDefaultDeployment()
loadData()
}
async function loadData() {
if (!curApp.value) {
items.value = []
@ -218,7 +271,7 @@ function showForm(cfg?: AppConfig) {
async function saveCfg() {
if (!curApp.value) {
error('请先选择应用')
error("请先选择应用和部署环境")
return
}
submitting.value = true

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/0WNSFMX1.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/B3qpHAjq.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/YYaFY5m9.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/B8Fu162H.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/HFcFZ41D.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BFWR6QZ6.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BWhTtyw-.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BOUWbQhH.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/RjO_r9CD.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BPYtLuIu.js

@ -1 +1 @@
import{_ as o,o as s,c as a,a as t,t as r}from"./Dv-LAQo6.js";import{u as i}from"./xRPLHwov.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};
import{_ as o,o as s,c as a,a as t,t as r}from"./Ccu6Xgpt.js";import{u as i}from"./oiJG5Pzc.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/N6ePFfck.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BQIhlerM.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BOVc_R-F.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BgemqguF.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BPgWG32Q.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BtOu2QXF.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CTIvguo-.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C1u1NIe5.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CEsBRmS9.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C37X9GaT.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/BfiStvNk.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C3hsc2UX.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BSpPV7NB.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CAgv4ClK.js

@ -1,4 +1,4 @@
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./Dv-LAQo6.js";import{u as J}from"./mz7Huk5H.js";import{u as W}from"./D7SVvy69.js";import"./D0vUT4uH.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./Ccu6Xgpt.js";import{u as J}from"./Um-KoueI.js";import{u as W}from"./DvwKXRUn.js";import"./CH2ZVAK2.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
只清除本核对面板的记录,不影响已落库的统计数据。
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function q(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,U(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[M,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[M,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Q,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:q},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:j},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},U(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",B(t.level).cls])},n(B(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),H(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default};

2
apps/admin/.output/public/_nuxt/DiInGhGc.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCYeqIml.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CSir_6Sc.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CFdmUKvC.js

@ -1 +1 @@
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./Dv-LAQo6.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};
import{g as h,j as x,k as w,B as y,c as r,a as e,t as d,l as b,m as _,p as v,v as g,n as k,y as B,x as u,o as p,_ as M}from"./Ccu6Xgpt.js";const A={class:"login-bg flex items-center justify-center px-4"},z={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=B({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",A,[e("div",z,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CyIH3Sn4.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CGLKuRNo.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D0vUT4uH.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CH2ZVAK2.js

@ -1 +1 @@
import{e as f,a9 as p,aa as c,z as r}from"./Dv-LAQo6.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};
import{e as f,a9 as p,aa as c,z as r}from"./Ccu6Xgpt.js";const l="$s";function y(...t){const a=typeof t[t.length-1]=="string"?t.pop():void 0;typeof t[0]!="string"&&t.unshift(a);const[n,e]=t;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(e!==void 0&&typeof e!="function")throw new Error("[nuxt] [useState] init must be a function: "+e);const i=l+n,u=f(),s=p(u.payload.state,i);if(e&&(u._state[i]??={_default:e}),s.value===void 0&&e){const o=e();if(c(o))return u.payload.state[i]=o,o;s.value=o}return s}function v(){const t=y("app:loading",()=>0),a=r(()=>t.value>0);function n(){t.value++}function e(){t.value=Math.max(0,t.value-1)}return{count:t,loading:a,begin:n,end:e}}export{y as a,v as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CmHlPuQb.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CO60jE1q.js

File diff suppressed because one or more lines are too long

4
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dv-LAQo6.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Ccu6Xgpt.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CFXePYDs.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-7b2ops.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D1efUY0c.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CSQN7OHo.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DNpGoo60.js

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DSpyBzHW.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D0tNFWGx.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DazkwkSm.js

File diff suppressed because one or more lines are too long

2
apps/admin/.output/public/_nuxt/CzRv6c7P.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DdRUm5PD.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/OcSe_OeH.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DiXjRAbV.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BSFY2Kep.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dtlyyukj.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D7SVvy69.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DvwKXRUn.js

@ -1 +1 @@
import{a as u}from"./D0vUT4uH.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};
import{a as u}from"./CH2ZVAK2.js";let i=0;function f(){const o=u("app:toasts",()=>[]);function e(s,t="info",r=3e3){const a=++i;o.value.push({id:a,type:t,msg:s}),r>0&&setTimeout(()=>{o.value=o.value.filter(n=>n.id!==a)},r)}return{toasts:o,toast:e,success:(s,t)=>e(s,"success",t),error:(s,t)=>e(s,"error",t),info:(s,t)=>e(s,"info",t),warn:(s,t)=>e(s,"warning",t)}}export{f as u};

2
apps/admin/.output/public/_nuxt/Ge7z-opa.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Sgx9LvLK.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/mz7Huk5H.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Um-KoueI.js

@ -1 +1 @@
import{j as w,k as d}from"./Dv-LAQo6.js";import{u as h}from"./D0vUT4uH.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};
import{j as w,k as d}from"./Ccu6Xgpt.js";import{u as h}from"./CH2ZVAK2.js";async function f(o,i,a){const e=w(),u=d(),s={"Content-Type":"application/json"};e.token&&(s.Authorization=e.token),a&&Object.assign(s,a);const t=await fetch(o,{method:"POST",headers:s,body:JSON.stringify(i)});if(!t.ok)throw new Error(`HTTP error: ${t.status}`);const n=await t.json();if(n.code===18)throw e.logout(),u.push("/"),new Error(n.msg||"Unauthorized");if(n.code!==0)throw new Error(n.msg||"Unknown error");return n.data}const y=/^(get|list|load|query|fetch|search|count|stat|export|check)/i;function g(o){return!y.test(o)}function A(){const o=w(),{begin:i,end:a}=h();async function e(t,n){const r={};if(o.currentAppId&&(r["X-App-Id"]=String(o.currentAppId)),!g(t))return f(`/web/api/api_${t}`,n??{},r);i();try{return await f(`/web/api/api_${t}`,n??{},r)}finally{a()}}async function u(t,n){return f(`/console/api/${t}`,n??{})}async function s(t,n){const r=t.type||"application/octet-stream",c=await e("getcostoken",{path:n,filename:t.name,content_type:r}),p=c.upload_url||c.url||"";if(!p)throw new Error("未获取到上传地址:请确认已在【第三方服务配置→存储】配置并启用「阿里云 OSS」");const l=await fetch(p,{method:"PUT",headers:{"Content-Type":r},body:t});if(!l.ok)throw new Error(`Upload failed: ${l.status}`);return c.url||p.split("?")[0]}return{webApi:e,consoleApi:u,uploadFile:s}}export{A as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/uis8hfUF.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/aWlcN8xt.js

@ -1 +1 @@
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./Dv-LAQo6.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};
import{g as t,B as n,P as a,c as o,a as s,o as c}from"./Ccu6Xgpt.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/entry.B8AmFJkM.css → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/entry.Nq-dPCOq.css

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DCtqoj8h.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/k7DeUBTv.js

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/xRPLHwov.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/oiJG5Pzc.js

@ -1 +1 @@
import{u as a,e as s,h as u,i as r,f as h}from"./Dv-LAQo6.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};
import{u as a,e as s,h as u,i as r,f as h}from"./Ccu6Xgpt.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CZJGstC3.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/szhsDUYv.js

@ -1 +1 @@
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./Dv-LAQo6.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};
import{L as y,l as x}from"./ChQPCk92.js";import{g as V,c as t,F as u,a as l,n as C,r,l as g,t as o,z as h,o as s,d as B,_ as N}from"./Ccu6Xgpt.js";const L={class:"lang-select"},O={class:"lang-chip-name"},S=["onClick"],j={key:0,class:"lang-empty"},z={key:0,class:"lang-dd"},F={class:"lang-dd-sum"},I={class:"lang-dd-panel"},T=["checked","onChange"],$={class:"lang-opt-code"},w={class:"lang-opt-name"},A=["value","disabled"],D=["value"],E=V({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(c,{emit:f}){const d=c,m=f,p=h(()=>d.options&&d.options.length?d.options:y),i=h(()=>(d.modelValue||"").split(",").map(a=>a.trim()).filter(Boolean));function v(a){return x(a)}function _(a){if(d.disabled)return;const n=i.value.slice(),e=n.indexOf(a);e>=0?n.splice(e,1):n.push(a),m("update:modelValue",n.join(","))}function b(a){m("update:modelValue",a.target.value)}return(a,n)=>(s(),t("div",L,[c.multiple?(s(),t(u,{key:0},[l("div",{class:C(["lang-chips",{"lang-disabled":c.disabled}])},[(s(!0),t(u,null,r(i.value,e=>(s(),t("span",{key:e,class:"lang-chip"},[B(o(e),1),l("span",O,o(v(e)),1),l("button",{type:"button",class:"lang-x",onClick:k=>_(e)},"×",8,S)]))),128)),i.value.length?g("",!0):(s(),t("span",j,"未选择语言"))],2),c.disabled?g("",!0):(s(),t("details",z,[l("summary",F,"+ 选择语言(已选 "+o(i.value.length)+")",1),l("div",I,[(s(!0),t(u,null,r(p.value,e=>(s(),t("label",{key:e.code,class:"lang-opt"},[l("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:i.value.includes(e.code),onChange:k=>_(e.code)},null,40,T),l("span",$,o(e.code),1),l("span",w,o(e.name),1)]))),128))])]))],64)):(s(),t("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:c.modelValue,disabled:c.disabled,onChange:b},[n[0]||(n[0]=l("option",{value:""},"(未设置)",-1)),(s(!0),t(u,null,r(p.value,e=>(s(),t("option",{key:e.code,value:e.code},o(e.code)+" · "+o(e.name),9,D))),128))],40,A))]))}}),q=Object.assign(N(E,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"});export{q as _};

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BtEuBlBw.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/vijQW-l0.js

@ -1 +1 @@
import{_ as s}from"./OcSe_OeH.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./Dv-LAQo6.js";import{u as f}from"./xRPLHwov.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};
import{_ as s}from"./DiXjRAbV.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./Ccu6Xgpt.js";import{u as f}from"./oiJG5Pzc.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};

2
apps/admin/.output/public/_nuxt/B28BcwCz.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/zsrSRWp_.js

@ -1 +1 @@
import{_ as t,o,c as s,R as c}from"./Dv-LAQo6.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};
import{_ as t,o,c as s,R as c}from"./Ccu6Xgpt.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map.json

File diff suppressed because one or more lines are too long

34
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js → apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js

@ -1,5 +1,5 @@
import { defineComponent, ref, reactive, computed, useSSRContext } from "vue";
import { ssrRenderAttrs, ssrRenderStyle, ssrIncludeBooleanAttr, ssrRenderAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate } from "vue/server-renderer";
import { ssrRenderAttrs, ssrRenderStyle, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrRenderAttr, ssrInterpolate } from "vue/server-renderer";
import { u as useApi } from "./useApi-B-E5eLsI.js";
import { u as useToast } from "./useToast-CS21XT61.js";
import "../server.mjs";
@ -23,6 +23,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
useToast();
const view = ref("list");
const apps = ref([]);
const envs = ref([]);
const curAppName = ref("");
const curApp = ref(0);
const items = ref([]);
const loading = ref(false);
@ -30,9 +32,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
const isEditing = ref(false);
const keyword = ref("");
const form = reactive({ id: 0, group: "", key: "", value: "", description: "" });
const appNames = computed(
() => [...new Set(apps.value.map((a) => a.app_name || a.name).filter(Boolean))].sort()
);
const appDeployments = computed(
() => apps.value.filter((a) => (a.app_name || a.name) === curAppName.value)
);
function deployLabel(d) {
const e = envs.value.find((x) => x.id === d.env_id);
const envName = e ? e.name || e.code : d.env_id ? `环境#${d.env_id}` : "未关联环境";
const suffix = d.status === "pending" ? "(待部署)" : "";
return d.region ? `${envName} · ${d.region}${suffix}` : `${envName}${suffix}`;
}
const curAppLabel = computed(() => {
const a = apps.value.find((x) => x.id === curApp.value);
return a ? a.name || a.app_name : "";
return a ? `${a.app_name || a.name} · ${deployLabel(a)}` : "";
});
const filteredRows = computed(() => {
const kw = keyword.value.trim().toLowerCase();
@ -53,13 +67,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
return names.map((g) => ({ key: g, label: g || "未分组", items: groups[g] }));
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)}><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="flex items-center justify-between mb-5"><div><h2 class="text-lg font-semibold text-slate-800">应用环境配置</h2><p class="text-xs text-slate-400 mt-1">应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。</p></div><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!curApp.value) ? " disabled" : ""}>+ 新增配置</button></div><div class="flex items-center gap-3 mb-4"><span class="text-sm text-slate-500">应用</span><select class="select select-bordered select-sm min-w-48"><option${ssrRenderAttr("value", 0)} disabled${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, 0) : ssrLooseEqual(curApp.value, 0)) ? " selected" : ""}>请选择应用</option><!--[-->`);
ssrRenderList(apps.value, (a) => {
_push(`<option${ssrRenderAttr("value", a.id)}${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, a.id) : ssrLooseEqual(curApp.value, a.id)) ? " selected" : ""}>${ssrInterpolate(a.name || a.app_name)}</option>`);
_push(`<div${ssrRenderAttrs(_attrs)}><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="flex items-center justify-between mb-5"><div><h2 class="text-lg font-semibold text-slate-800">应用环境配置</h2><p class="text-xs text-slate-400 mt-1">应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。</p></div><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(!curApp.value) ? " disabled" : ""}>+ 新增配置</button></div><div class="flex items-center gap-3 mb-4 flex-wrap"><span class="text-sm text-slate-500">应用</span><select class="select select-bordered select-sm min-w-40"><option value="" disabled${ssrIncludeBooleanAttr(Array.isArray(curAppName.value) ? ssrLooseContain(curAppName.value, "") : ssrLooseEqual(curAppName.value, "")) ? " selected" : ""}>请选择应用</option><!--[-->`);
ssrRenderList(appNames.value, (n) => {
_push(`<option${ssrRenderAttr("value", n)}${ssrIncludeBooleanAttr(Array.isArray(curAppName.value) ? ssrLooseContain(curAppName.value, n) : ssrLooseEqual(curAppName.value, n)) ? " selected" : ""}>${ssrInterpolate(n)}</option>`);
});
_push(`<!--]--></select><span class="text-sm text-slate-500">部署环境</span><select class="select select-bordered select-sm min-w-48"${ssrIncludeBooleanAttr(!curAppName.value) ? " disabled" : ""}><option${ssrRenderAttr("value", 0)} disabled${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, 0) : ssrLooseEqual(curApp.value, 0)) ? " selected" : ""}>请选择环境</option><!--[-->`);
ssrRenderList(appDeployments.value, (d) => {
_push(`<option${ssrRenderAttr("value", d.id)}${ssrIncludeBooleanAttr(Array.isArray(curApp.value) ? ssrLooseContain(curApp.value, d.id) : ssrLooseEqual(curApp.value, d.id)) ? " selected" : ""}>${ssrInterpolate(deployLabel(d))}</option>`);
});
_push(`<!--]--></select><input${ssrRenderAttr("value", keyword.value)} class="input input-bordered input-sm w-48" placeholder="按分组/键搜索"></div>`);
if (!curApp.value) {
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"><div class="text-4xl mb-2">🗂️</div><p class="text-sm">请先在上方选择一个应用</p></div>`);
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"><div class="text-4xl mb-2">🗂️</div><p class="text-sm">${ssrInterpolate(curAppName.value ? "该应用还没有部署环境,请先在「应用中心」为它部署一个环境" : "请先在上方选择应用和部署环境")}</p></div>`);
} else {
_push(`<div class="bg-white rounded-xl shadow-sm border border-slate-100"><div class="overflow-x-auto"><table class="table"><thead><tr><th>键</th><th>值</th><th>描述</th><th class="text-right">操作</th></tr></thead><tbody>`);
if (loading.value) {
@ -79,7 +97,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
});
_push(`<!--]--></tbody></table></div></div>`);
}
_push(`</div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? "编辑配置" : "新增配置")}</h2><span class="text-xs text-slate-400">应用:${ssrInterpolate(curAppLabel.value)}</span></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">分组 (group)</span></label><input${ssrRenderAttr("value", form.group)} type="text" class="input input-bordered w-full" placeholder="如 music / oss / other"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">键 (key) *</span></label><input${ssrRenderAttr("value", form.key)} type="text" class="input input-bordered w-full" required placeholder="如 oss_access_key"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">值 (value)</span></label><textarea class="textarea textarea-bordered w-full font-mono text-sm" rows="3">${ssrInterpolate(form.value)}</textarea></div><div class="form-control mb-6"><label class="label"><span class="label-text font-medium">描述</span></label><input${ssrRenderAttr("value", form.description)} type="text" class="input input-bordered w-full"></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""}>保存</button></div></form></div></div></div>`);
_push(`</div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? "编辑配置" : "新增配置")}</h2><span class="text-xs text-slate-400">配置目标:${ssrInterpolate(curAppLabel.value)}</span></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">分组 (group)</span></label><input${ssrRenderAttr("value", form.group)} type="text" class="input input-bordered w-full" placeholder="如 music / oss / other"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">键 (key) *</span></label><input${ssrRenderAttr("value", form.key)} type="text" class="input input-bordered w-full" required placeholder="如 oss_access_key"></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">值 (value)</span></label><textarea class="textarea textarea-bordered w-full font-mono text-sm" rows="3">${ssrInterpolate(form.value)}</textarea></div><div class="form-control mb-6"><label class="label"><span class="label-text font-medium">描述</span></label><input${ssrRenderAttr("value", form.description)} type="text" class="input input-bordered w-full"></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""}>保存</button></div></form></div></div></div>`);
};
}
});
@ -92,4 +110,4 @@ _sfc_main.setup = (props, ctx) => {
export {
_sfc_main as default
};
//# sourceMappingURL=appconfig-BTmHA76P.js.map
//# sourceMappingURL=appconfig-C6Zn9BWM.js.map

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js.map

File diff suppressed because one or more lines are too long

1
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-C6Zn9BWM.js.map.json

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/client.manifest.mjs

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/client.precomputed.mjs

File diff suppressed because one or more lines are too long

2
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/server.mjs

@ -1985,7 +1985,7 @@ const _routes = [
name: "appconfig",
path: "/appconfig",
meta: __nuxt_page_meta$j || {},
component: () => import("./_nuxt/appconfig-BTmHA76P.js")
component: () => import("./_nuxt/appconfig-C6Zn9BWM.js")
},
{
name: "apps",

10
apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/styles.mjs

@ -3,19 +3,19 @@ export default {
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-404.vue": () => import('./_nuxt/error-404-styles.Dw8OeZuk.mjs').then(interopDefault),
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/error-500.vue": () => import('./_nuxt/error-500-styles.CsxdYB__.mjs').then(interopDefault),
"pages/apps/[name].vue": () => import('./_nuxt/_name_-styles.Dz82uZcJ.mjs').then(interopDefault),
"pages/agents.vue": () => import('./_nuxt/agents-styles.DrcBfQcb.mjs').then(interopDefault),
"components/AppDeployTab.vue": () => import('./_nuxt/AppDeployTab-styles.CUK7XFMF.mjs').then(interopDefault),
"components/AppModuleTab.vue": () => import('./_nuxt/AppModuleTab-styles._m-oVrlE.mjs').then(interopDefault),
"pages/accounts.vue": () => import('./_nuxt/accounts-styles.E9MHodaB.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./_nuxt/dashboard-styles.CGuiyPm5.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./_nuxt/calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/apps/index.vue": () => import('./_nuxt/index-styles.pMqqe5sq.mjs').then(interopDefault),
"pages/agents.vue": () => import('./_nuxt/agents-styles.DrcBfQcb.mjs').then(interopDefault),
"pages/channels.vue": () => import('./_nuxt/channels-styles.BsiooF6f.mjs').then(interopDefault),
"pages/calltranslate.vue": () => import('./_nuxt/calltranslate-styles.T5wE0P9E.mjs').then(interopDefault),
"pages/dashboard.vue": () => import('./_nuxt/dashboard-styles.CGuiyPm5.mjs').then(interopDefault),
"pages/meetingsvc.vue": () => import('./_nuxt/meetingsvc-styles.CM1HF5Dg.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./_nuxt/systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"pages/index.vue": () => import('./_nuxt/index-styles.DNbAzSQY.mjs').then(interopDefault),
"pages/statlog.vue": () => import('./_nuxt/statlog-styles.CjrRv6cK.mjs').then(interopDefault),
"pages/serviceconfig.vue": () => import('./_nuxt/serviceconfig-styles.pHiXruL3.mjs').then(interopDefault),
"pages/statlog.vue": () => import('./_nuxt/statlog-styles.CjrRv6cK.mjs').then(interopDefault),
"pages/systemconfig.vue": () => import('./_nuxt/systemconfig-styles.DqxAqW2L.mjs').then(interopDefault),
"layouts/default.vue": () => import('./_nuxt/default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/AppLoading.vue": () => import('./_nuxt/default-styles.BZwnP0YX.mjs').then(interopDefault),
"components/LangSelect.vue": () => import('./_nuxt/LangSelect-styles.Bi81RebM.mjs').then(interopDefault)

2
apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/latest.json

@ -1 +1 @@
{"id":"671440d9-9ac2-4158-bbf2-60c5639d616e","timestamp":1785336504226}
{"id":"1c187759-8384-4449-899e-e6f5237cf6d9","timestamp":1785495714123}

1
apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/1c187759-8384-4449-899e-e6f5237cf6d9.json

@ -0,0 +1 @@
{"id":"1c187759-8384-4449-899e-e6f5237cf6d9","timestamp":1785495714123,"prerendered":[]}

1
apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json

@ -1 +0,0 @@
{"id":"671440d9-9ac2-4158-bbf2-60c5639d616e","timestamp":1785336504226,"prerendered":[]}

2
apps/admin/node_modules/.cache/nuxt/.nuxt/nuxt.d.ts

@ -1,5 +1,5 @@
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxt/telemetry" />
/// <reference types="@nuxt/devtools" />
/// <reference path="types/nitro-layouts.d.ts" />

2
apps/admin/node_modules/.cache/nuxt/.nuxt/nuxt.node.d.ts

@ -1,5 +1,5 @@
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxt/telemetry" />
/// <reference types="@nuxt/devtools" />
/// <reference path="types/nitro-layouts.d.ts" />

2
apps/admin/node_modules/.cache/nuxt/.nuxt/tailwind/postcss.mjs

@ -1,4 +1,4 @@
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 7/29/2026, 10:48:24 PM
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 7/31/2026, 7:01:54 PM
import "@nuxtjs/tailwindcss/config-ctx"
import configMerger from "@nuxtjs/tailwindcss/merger";

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save