From e270cf89b64a9be052a6ab7f48df8751e7860d8b Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 30 Jul 2026 16:13:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/admin/.nuxt/imports.d.ts | 4 +- .../12d3d743-ea92-4f1a-b2b5-c47534e2a158.json | 1 + apps/admin/.nuxt/nuxt.d.ts | 4 +- apps/admin/.nuxt/nuxt.node.d.ts | 4 +- apps/admin/.nuxt/tailwind/postcss.mjs | 4 +- apps/admin/.nuxt/tsconfig.app.json | 4 +- apps/admin/.nuxt/tsconfig.json | 2 +- apps/admin/.nuxt/tsconfig.shared.json | 2 +- apps/admin/.nuxt/types/build.d.ts | 2 - apps/admin/.nuxt/types/imports.d.ts | 13 +- apps/admin/.nuxt/types/layouts.d.ts | 4 +- apps/admin/.nuxt/types/nitro-imports.d.ts | 4 +- apps/admin/.nuxt/types/plugins.d.ts | 9 +- apps/admin/.output/nitro.json | 2 +- apps/admin/.output/public/_nuxt/-jnCp83s.js | 1 - apps/admin/.output/public/_nuxt/0WNSFMX1.js | 1 + .../public/_nuxt/{VY77fqvj.js => B28BcwCz.js} | 2 +- .../public/_nuxt/{DKuebVMC.js => BOVc_R-F.js} | 2 +- apps/admin/.output/public/_nuxt/BPgWG32Q.js | 1 + .../public/_nuxt/{B7QETiRo.js => BSFY2Kep.js} | 2 +- .../public/_nuxt/BSpPV7NB.js} | 4 +- apps/admin/.output/public/_nuxt/BWhTtyw-.js | 1 + .../public/_nuxt/{BFMExc8z.js => BfiStvNk.js} | 2 +- .../public/_nuxt/{S5V4LTkJ.js => BtEuBlBw.js} | 2 +- .../public/_nuxt/CEsBRmS9.js} | 2 +- .../public/_nuxt/CFXePYDs.js} | 2 +- apps/admin/.output/public/_nuxt/CSQN7OHo.js | 1 + .../public/_nuxt/{CFPPaSCZ.js => CSir_6Sc.js} | 2 +- .../public/_nuxt/{D3KKJ_NK.js => CTIvguo-.js} | 2 +- apps/admin/.output/public/_nuxt/CZJGstC3.js | 1 + .../public/_nuxt/{-Au2A1Cv.js => CmHlPuQb.js} | 2 +- .../public/_nuxt/CyIH3Sn4.js} | 2 +- .../public/_nuxt/{C8IUv0mA.js => CzRv6c7P.js} | 2 +- apps/admin/.output/public/_nuxt/D0tNFWGx.js | 1 + .../public/_nuxt/{42htcooJ.js => D0vUT4uH.js} | 2 +- apps/admin/.output/public/_nuxt/D1efUY0c.js | 1 + .../public/_nuxt/{DTVGNZEd.js => D7SVvy69.js} | 2 +- apps/admin/.output/public/_nuxt/DA9Dlh7r.js | 1 - .../public/_nuxt/DCtqoj8h.js} | 2 +- .../public/_nuxt/DiInGhGc.js} | 2 +- apps/admin/.output/public/_nuxt/Dm8P2zvb.js | 1 - .../public/_nuxt/{CCjf5Io-.js => Dv-LAQo6.js} | 6 +- apps/admin/.output/public/_nuxt/DzMPECf6.js | 1 - .../public/_nuxt/{BhbTh2Nc.js => Ge7z-opa.js} | 2 +- .../public/_nuxt/HFcFZ41D.js} | 2 +- .../public/_nuxt/LangSelect.Dkm6e8RK.css | 1 + .../public/_nuxt/N6ePFfck.js} | 2 +- .../public/_nuxt/{CA44cC15.js => OcSe_OeH.js} | 2 +- .../public/_nuxt/{SwS86oeZ.js => RjO_r9CD.js} | 2 +- .../public/_nuxt/{vrAtns1A.js => YYaFY5m9.js} | 8 +- ...name_.DZJkgavl.css => _name_.B5yFMG3g.css} | 2 +- .../.output/public/_nuxt/agents.-kjpROzC.css | 1 + .../.output/public/_nuxt/builds/latest.json | 2 +- .../671440d9-9ac2-4158-bbf2-60c5639d616e.json | 1 + .../a9121ad7-d4b4-4265-bf91-57f220ed7baa.json | 1 - .../public/_nuxt/calltranslate.B6r4Q8-j.css | 1 - .../public/_nuxt/calltranslate.CJXjjd14.css | 1 + .../public/_nuxt/channels.4kXMd4_X.css | 1 + .../.output/public/_nuxt/entry.B8AmFJkM.css | 1 + .../.output/public/_nuxt/entry.CYb1FIZ0.css | 1 - .../public/_nuxt/{C-6Qe-lq.js => mz7Huk5H.js} | 2 +- .../public/_nuxt/serviceconfig.C7KF_6ms.css | 1 - .../public/_nuxt/serviceconfig.D1-cnJwZ.css | 1 + apps/admin/.output/public/_nuxt/uis8hfUF.js | 1 + .../public/_nuxt/{b15UHpcb.js => xRPLHwov.js} | 2 +- .../chunks/build/LangSelect-C_QPlcDf.mjs | 69 ++ .../chunks/build/LangSelect-C_QPlcDf.mjs.map | 1 + ...Ose.mjs => LangSelect-styles.Bi81RebM.mjs} | 8 +- .../build/LangSelect-styles.Bi81RebM.mjs.map | 1 + .../build/LangSelect-styles.C7_U3Izz.mjs | 8 - .../build/LangSelect-styles.C7_U3Izz.mjs.map | 1 - ...name_-QnyK8Xx9.mjs => _name_-BbBzwp8c.mjs} | 26 +- .../chunks/build/_name_-BbBzwp8c.mjs.map | 1 + .../chunks/build/_name_-QnyK8Xx9.mjs.map | 1 - .../chunks/build/_name_-styles.DbbtUQpB.mjs | 13 - .../build/_name_-styles.DbbtUQpB.mjs.map | 1 - .../chunks/build/_name_-styles.Dz82uZcJ.mjs | 13 + .../build/_name_-styles.Dz82uZcJ.mjs.map | 1 + .../server/chunks/build/agents-sIgrTlD1.mjs | 236 ++++++ .../chunks/build/agents-sIgrTlD1.mjs.map | 1 + .../chunks/build/agents-styles.DrcBfQcb.mjs | 8 + .../build/agents-styles.DrcBfQcb.mjs.map | 1 + .../chunks/build/appconfig-BTmHA76P.mjs | 100 +++ .../chunks/build/appconfig-BTmHA76P.mjs.map | 1 + .../chunks/build/calltranslate--sRmJf-u.mjs | 211 ------ .../build/calltranslate--sRmJf-u.mjs.map | 1 - .../chunks/build/calltranslate-D-FgQw8P.mjs | 267 +++++++ .../build/calltranslate-D-FgQw8P.mjs.map | 1 + .../build/calltranslate-styles.T5wE0P9E.mjs | 8 + .../calltranslate-styles.T5wE0P9E.mjs.map | 1 + .../build/calltranslate-styles.hpAJUqsK.mjs | 8 - .../calltranslate-styles.hpAJUqsK.mjs.map | 1 - .../server/chunks/build/channels-CRuax8yi.mjs | 274 +++++++ .../chunks/build/channels-CRuax8yi.mjs.map | 1 + .../chunks/build/channels-styles.BsiooF6f.mjs | 8 + .../build/channels-styles.BsiooF6f.mjs.map | 1 + .../chunks/build/client.precomputed.mjs | 2 +- .../chunks/build/mcpconfig-CcWVtnKl.mjs | 124 ---- .../chunks/build/mcpconfig-CcWVtnKl.mjs.map | 1 - .../chunks/build/mcpconfig-O3oMJUPy.mjs | 21 + .../chunks/build/mcpconfig-O3oMJUPy.mjs.map | 1 + .../.output/server/chunks/build/server.mjs | 49 +- .../chunks/build/serviceconfig-B0vWpbrp.mjs | 484 ------------ .../build/serviceconfig-B0vWpbrp.mjs.map | 1 - .../chunks/build/serviceconfig-BN6iazID.mjs | 436 +++++++++++ .../build/serviceconfig-BN6iazID.mjs.map | 1 + ...erviceconfig-styles-1.mjs-BjhBSOse.mjs.map | 1 - .../build/serviceconfig-styles.DMP2P_TQ.mjs | 11 - .../serviceconfig-styles.DMP2P_TQ.mjs.map | 1 - .../build/serviceconfig-styles.pHiXruL3.mjs | 8 + .../serviceconfig-styles.pHiXruL3.mjs.map | 1 + .../.output/server/chunks/build/styles.mjs | 22 +- .../.output/server/chunks/nitro/nitro.mjs | 431 ++++++----- apps/admin/app/pages/agents.vue | 501 +++++++++++++ apps/admin/app/pages/appconfig.vue | 256 +++++++ apps/admin/app/pages/apps/[name].vue | 3 +- apps/admin/app/pages/calltranslate.vue | 690 +++++++++++------- apps/admin/app/pages/channels.vue | 501 +++++++++++++ apps/admin/app/pages/mcpconfig.vue | 268 +------ apps/admin/app/pages/serviceconfig.vue | 26 +- apps/admin/app/utils/menus.ts | 4 +- .../nuxt/.nuxt/dist/client/_nuxt/-jnCp83s.js | 1 - .../nuxt/.nuxt/dist/client/_nuxt/0WNSFMX1.js | 1 + .../client/_nuxt/{VY77fqvj.js => B28BcwCz.js} | 2 +- .../client/_nuxt/{DKuebVMC.js => BOVc_R-F.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/BPgWG32Q.js | 1 + .../client/_nuxt/{B7QETiRo.js => BSFY2Kep.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/BSpPV7NB.js} | 4 +- .../nuxt/.nuxt/dist/client/_nuxt/BWhTtyw-.js | 1 + .../client/_nuxt/{BFMExc8z.js => BfiStvNk.js} | 2 +- .../client/_nuxt/{S5V4LTkJ.js => BtEuBlBw.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CEsBRmS9.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CFXePYDs.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CSQN7OHo.js | 1 + .../client/_nuxt/{CFPPaSCZ.js => CSir_6Sc.js} | 2 +- .../client/_nuxt/{D3KKJ_NK.js => CTIvguo-.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CZJGstC3.js | 1 + .../client/_nuxt/{-Au2A1Cv.js => CmHlPuQb.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CyIH3Sn4.js} | 2 +- .../client/_nuxt/{C8IUv0mA.js => CzRv6c7P.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/D0tNFWGx.js | 1 + .../client/_nuxt/{42htcooJ.js => D0vUT4uH.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/D1efUY0c.js | 1 + .../client/_nuxt/{DTVGNZEd.js => D7SVvy69.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/DA9Dlh7r.js | 1 - .../nuxt/.nuxt/dist/client/_nuxt/DCtqoj8h.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/DiInGhGc.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/Dm8P2zvb.js | 1 - .../client/_nuxt/{CCjf5Io-.js => Dv-LAQo6.js} | 6 +- .../nuxt/.nuxt/dist/client/_nuxt/DzMPECf6.js | 1 - .../client/_nuxt/{BhbTh2Nc.js => Ge7z-opa.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/HFcFZ41D.js} | 2 +- .../dist/client/_nuxt/LangSelect.Dkm6e8RK.css | 1 + .../nuxt/.nuxt/dist/client/_nuxt/N6ePFfck.js} | 2 +- .../client/_nuxt/{CA44cC15.js => OcSe_OeH.js} | 2 +- .../client/_nuxt/{SwS86oeZ.js => RjO_r9CD.js} | 2 +- .../client/_nuxt/{vrAtns1A.js => YYaFY5m9.js} | 8 +- ...name_.DZJkgavl.css => _name_.B5yFMG3g.css} | 2 +- .../dist/client/_nuxt/agents.-kjpROzC.css | 1 + .../client/_nuxt/calltranslate.B6r4Q8-j.css | 1 - .../client/_nuxt/calltranslate.CJXjjd14.css | 1 + .../dist/client/_nuxt/channels.4kXMd4_X.css | 1 + .../dist/client/_nuxt/entry.B8AmFJkM.css | 1 + .../dist/client/_nuxt/entry.CYb1FIZ0.css | 1 - .../client/_nuxt/{C-6Qe-lq.js => mz7Huk5H.js} | 2 +- .../client/_nuxt/serviceconfig.C7KF_6ms.css | 1 - .../client/_nuxt/serviceconfig.D1-cnJwZ.css | 1 + .../nuxt/.nuxt/dist/client/_nuxt/uis8hfUF.js | 1 + .../client/_nuxt/{b15UHpcb.js => xRPLHwov.js} | 2 +- .../dist/server/_nuxt/LangSelect-C_QPlcDf.js | 69 ++ .../server/_nuxt/LangSelect-C_QPlcDf.js.map | 1 + .../_nuxt/LangSelect-C_QPlcDf.js.map.json | 1 + ...js => LangSelect-styles-1.mjs-BjhBSOse.js} | 2 +- .../LangSelect-styles-1.mjs-BjhBSOse.js.map | 1 + ...ngSelect-styles-1.mjs-BjhBSOse.js.map.json | 1 + .../_nuxt/LangSelect-styles.Bi81RebM.mjs | 4 + .../_nuxt/LangSelect-styles.C7_U3Izz.mjs | 4 - ...{_name_-QnyK8Xx9.js => _name_-BbBzwp8c.js} | 26 +- ...QnyK8Xx9.js.map => _name_-BbBzwp8c.js.map} | 2 +- .../server/_nuxt/_name_-BbBzwp8c.js.map.json | 1 + .../server/_nuxt/_name_-QnyK8Xx9.js.map.json | 1 - .../_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js | 5 - .../_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map | 1 - .../_name_-styles-3.mjs-7yUQQ2f9.js.map.json | 1 - .../_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js | 5 + .../_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map | 1 + .../_name_-styles-3.mjs-Uy9b9kOk.js.map.json | 1 + ...bbtUQpB.mjs => _name_-styles.Dz82uZcJ.mjs} | 2 +- .../dist/server/_nuxt/agents-sIgrTlD1.js | 231 ++++++ .../dist/server/_nuxt/agents-sIgrTlD1.js.map | 1 + .../server/_nuxt/agents-sIgrTlD1.js.map.json | 1 + .../_nuxt/agents-styles-1.mjs-Dz2nKerr.js | 5 + .../_nuxt/agents-styles-1.mjs-Dz2nKerr.js.map | 1 + .../agents-styles-1.mjs-Dz2nKerr.js.map.json | 1 + .../server/_nuxt/agents-styles.DrcBfQcb.mjs | 4 + .../dist/server/_nuxt/appconfig-BTmHA76P.js | 95 +++ .../server/_nuxt/appconfig-BTmHA76P.js.map | 1 + .../_nuxt/appconfig-BTmHA76P.js.map.json | 1 + .../server/_nuxt/calltranslate--sRmJf-u.js | 206 ------ .../_nuxt/calltranslate--sRmJf-u.js.map | 1 - .../_nuxt/calltranslate--sRmJf-u.js.map.json | 1 - .../server/_nuxt/calltranslate-D-FgQw8P.js | 262 +++++++ .../_nuxt/calltranslate-D-FgQw8P.js.map | 1 + .../_nuxt/calltranslate-D-FgQw8P.js.map.json | 1 + .../calltranslate-styles-1.mjs-DA2j2DKH.js | 5 - ...calltranslate-styles-1.mjs-DA2j2DKH.js.map | 1 - ...ranslate-styles-1.mjs-DA2j2DKH.js.map.json | 1 - .../calltranslate-styles-1.mjs-DvCjyXm1.js | 5 + ...calltranslate-styles-1.mjs-DvCjyXm1.js.map | 1 + ...ranslate-styles-1.mjs-DvCjyXm1.js.map.json | 1 + .../_nuxt/calltranslate-styles.T5wE0P9E.mjs | 4 + .../_nuxt/calltranslate-styles.hpAJUqsK.mjs | 4 - .../dist/server/_nuxt/channels-CRuax8yi.js | 269 +++++++ .../server/_nuxt/channels-CRuax8yi.js.map | 1 + .../_nuxt/channels-CRuax8yi.js.map.json | 1 + .../_nuxt/channels-styles-1.mjs-Bc-0jlqg.js | 5 + .../channels-styles-1.mjs-Bc-0jlqg.js.map | 1 + ...channels-styles-1.mjs-Bc-0jlqg.js.map.json | 1 + .../server/_nuxt/channels-styles.BsiooF6f.mjs | 4 + .../dist/server/_nuxt/mcpconfig-CcWVtnKl.js | 119 --- .../server/_nuxt/mcpconfig-CcWVtnKl.js.map | 1 - .../_nuxt/mcpconfig-CcWVtnKl.js.map.json | 1 - .../dist/server/_nuxt/mcpconfig-O3oMJUPy.js | 33 + .../server/_nuxt/mcpconfig-O3oMJUPy.js.map | 1 + .../_nuxt/mcpconfig-O3oMJUPy.js.map.json | 1 + .../server/_nuxt/serviceconfig-B0vWpbrp.js | 479 ------------ .../_nuxt/serviceconfig-B0vWpbrp.js.map | 1 - .../_nuxt/serviceconfig-B0vWpbrp.js.map.json | 1 - .../server/_nuxt/serviceconfig-BN6iazID.js | 431 +++++++++++ .../_nuxt/serviceconfig-BN6iazID.js.map | 1 + .../_nuxt/serviceconfig-BN6iazID.js.map.json | 1 + ...serviceconfig-styles-1.mjs-BjhBSOse.js.map | 1 - ...ceconfig-styles-1.mjs-BjhBSOse.js.map.json | 1 - .../serviceconfig-styles-1.mjs-BzU15s4G.js | 5 + ...serviceconfig-styles-1.mjs-BzU15s4G.js.map | 1 + ...ceconfig-styles-1.mjs-BzU15s4G.js.map.json | 1 + .../serviceconfig-styles-2.mjs-DHlkQfPu.js | 5 - ...serviceconfig-styles-2.mjs-DHlkQfPu.js.map | 1 - ...ceconfig-styles-2.mjs-DHlkQfPu.js.map.json | 1 - .../_nuxt/serviceconfig-styles.DMP2P_TQ.mjs | 6 - .../_nuxt/serviceconfig-styles.pHiXruL3.mjs | 4 + .../.nuxt/dist/server/client.manifest.mjs | 2 +- .../.nuxt/dist/server/client.precomputed.mjs | 2 +- .../.cache/nuxt/.nuxt/dist/server/server.mjs | 49 +- .../nuxt/.nuxt/dist/server/server.mjs.map | 2 +- .../.nuxt/dist/server/server.mjs.map.json | 2 +- .../.cache/nuxt/.nuxt/dist/server/styles.mjs | 22 +- .../.cache/nuxt/.nuxt/manifest/latest.json | 2 +- .../671440d9-9ac2-4158-bbf2-60c5639d616e.json | 1 + .../a9121ad7-d4b4-4265-bf91-57f220ed7baa.json | 1 - .../node_modules/.cache/nuxt/.nuxt/nuxt.d.ts | 2 +- .../.cache/nuxt/.nuxt/nuxt.node.d.ts | 2 +- .../.cache/nuxt/.nuxt/tailwind/postcss.mjs | 2 +- .../.cache/nuxt/.nuxt/tsconfig.app.json | 2 +- .../.cache/nuxt/.nuxt/tsconfig.json | 2 +- .../.cache/nuxt/.nuxt/tsconfig.shared.json | 2 +- apps/proto/__pycache__/pb.cpython-310.pyc | Bin 0 -> 3039 bytes apps/proto/db.proto | 14 +- apps/proto/pb.py | 105 +++ apps/proto/user/user_msg.proto | 6 +- apps/services/comm/calltranslate.go | 165 +++++ apps/services/comm/calltranslate_test.go | 74 ++ apps/services/comm/channelapp.go | 179 +++++ apps/services/comm/channelapp_test.go | 88 +++ apps/services/comm/const.go | 6 +- apps/services/comm/log | 2 +- apps/services/comm/nats.go | 1 + apps/services/comm/svcpool.go | 64 +- apps/services/modules/api/model.go | 122 +++- .../services/modules/console/api_appconfig.go | 155 ++++ .../modules/console/api_calltranslate.go | 219 ++++-- .../modules/console/api_channelapp.go | 150 ++++ apps/services/modules/console/api_config.go | 154 ++-- .../modules/console/api_svctemplate.go | 6 + .../modules/console/model_svcconfig.go | 36 +- apps/services/modules/console/server.go | 51 +- .../services/modules/user/api_getappconfig.go | 23 +- .../modules/user/api_getchannelapp.go | 38 +- .../modules/user/api_getchannelapp_test.go | 57 ++ .../modules/user/api_getchannelapps.go | 3 +- .../modules/user/api_v2_getappconfig.go | 23 +- apps/services/modules/user/model_config.go | 45 +- apps/services/modules/user/model_user.go | 82 ++- apps/services/pb/db.pb.go | 63 +- apps/services/pb/echomeet_db.pb.go | 84 +-- apps/services/pb/echomeet_msg.pb.go | 16 +- apps/services/pb/user_msg.pb.go | 46 +- deploy/admin/README.md | 6 +- deploy/admin/dev-deploy.sh | 86 ++- deploy/app/README.md | 6 +- deploy/app/dev-deploy.sh | 88 ++- deploy/console/README.md | 6 +- deploy/console/dev-deploy.sh | 86 ++- 293 files changed, 7124 insertions(+), 3022 deletions(-) create mode 100644 apps/admin/.nuxt/manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json delete mode 100644 apps/admin/.output/public/_nuxt/-jnCp83s.js create mode 100644 apps/admin/.output/public/_nuxt/0WNSFMX1.js rename apps/admin/.output/public/_nuxt/{VY77fqvj.js => B28BcwCz.js} (71%) rename apps/admin/.output/public/_nuxt/{DKuebVMC.js => BOVc_R-F.js} (99%) create mode 100644 apps/admin/.output/public/_nuxt/BPgWG32Q.js rename apps/admin/.output/public/_nuxt/{B7QETiRo.js => BSFY2Kep.js} (91%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCes3qcB.js => .output/public/_nuxt/BSpPV7NB.js} (87%) create mode 100644 apps/admin/.output/public/_nuxt/BWhTtyw-.js rename apps/admin/.output/public/_nuxt/{BFMExc8z.js => BfiStvNk.js} (98%) rename apps/admin/.output/public/_nuxt/{S5V4LTkJ.js => BtEuBlBw.js} (94%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0cd7Vyx.js => .output/public/_nuxt/CEsBRmS9.js} (89%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/JlX4SqFM.js => .output/public/_nuxt/CFXePYDs.js} (93%) create mode 100644 apps/admin/.output/public/_nuxt/CSQN7OHo.js rename apps/admin/.output/public/_nuxt/{CFPPaSCZ.js => CSir_6Sc.js} (95%) rename apps/admin/.output/public/_nuxt/{D3KKJ_NK.js => CTIvguo-.js} (85%) create mode 100644 apps/admin/.output/public/_nuxt/CZJGstC3.js rename apps/admin/.output/public/_nuxt/{-Au2A1Cv.js => CmHlPuQb.js} (91%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/swrhJgBy.js => .output/public/_nuxt/CyIH3Sn4.js} (99%) rename apps/admin/.output/public/_nuxt/{C8IUv0mA.js => CzRv6c7P.js} (98%) create mode 100644 apps/admin/.output/public/_nuxt/D0tNFWGx.js rename apps/admin/.output/public/_nuxt/{42htcooJ.js => D0vUT4uH.js} (91%) create mode 100644 apps/admin/.output/public/_nuxt/D1efUY0c.js rename apps/admin/.output/public/_nuxt/{DTVGNZEd.js => D7SVvy69.js} (83%) delete mode 100644 apps/admin/.output/public/_nuxt/DA9Dlh7r.js rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/1800ei7D.js => .output/public/_nuxt/DCtqoj8h.js} (93%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgtG1GpI.js => .output/public/_nuxt/DiInGhGc.js} (98%) delete mode 100644 apps/admin/.output/public/_nuxt/Dm8P2zvb.js rename apps/admin/.output/public/_nuxt/{CCjf5Io-.js => Dv-LAQo6.js} (74%) delete mode 100644 apps/admin/.output/public/_nuxt/DzMPECf6.js rename apps/admin/.output/public/_nuxt/{BhbTh2Nc.js => Ge7z-opa.js} (99%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CWpRLpao.js => .output/public/_nuxt/HFcFZ41D.js} (81%) create mode 100644 apps/admin/.output/public/_nuxt/LangSelect.Dkm6e8RK.css rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/1A4O2es5.js => .output/public/_nuxt/N6ePFfck.js} (99%) rename apps/admin/.output/public/_nuxt/{CA44cC15.js => OcSe_OeH.js} (80%) rename apps/admin/.output/public/_nuxt/{SwS86oeZ.js => RjO_r9CD.js} (96%) rename apps/admin/.output/public/_nuxt/{vrAtns1A.js => YYaFY5m9.js} (76%) rename apps/admin/.output/public/_nuxt/{_name_.DZJkgavl.css => _name_.B5yFMG3g.css} (70%) create mode 100644 apps/admin/.output/public/_nuxt/agents.-kjpROzC.css create mode 100644 apps/admin/.output/public/_nuxt/builds/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json delete mode 100644 apps/admin/.output/public/_nuxt/builds/meta/a9121ad7-d4b4-4265-bf91-57f220ed7baa.json delete mode 100644 apps/admin/.output/public/_nuxt/calltranslate.B6r4Q8-j.css create mode 100644 apps/admin/.output/public/_nuxt/calltranslate.CJXjjd14.css create mode 100644 apps/admin/.output/public/_nuxt/channels.4kXMd4_X.css create mode 100644 apps/admin/.output/public/_nuxt/entry.B8AmFJkM.css delete mode 100644 apps/admin/.output/public/_nuxt/entry.CYb1FIZ0.css rename apps/admin/.output/public/_nuxt/{C-6Qe-lq.js => mz7Huk5H.js} (90%) delete mode 100644 apps/admin/.output/public/_nuxt/serviceconfig.C7KF_6ms.css create mode 100644 apps/admin/.output/public/_nuxt/serviceconfig.D1-cnJwZ.css create mode 100644 apps/admin/.output/public/_nuxt/uis8hfUF.js rename apps/admin/.output/public/_nuxt/{b15UHpcb.js => xRPLHwov.js} (80%) create mode 100644 apps/admin/.output/server/chunks/build/LangSelect-C_QPlcDf.mjs create mode 100644 apps/admin/.output/server/chunks/build/LangSelect-C_QPlcDf.mjs.map rename apps/admin/.output/server/chunks/build/{serviceconfig-styles-1.mjs-BjhBSOse.mjs => LangSelect-styles.Bi81RebM.mjs} (88%) create mode 100644 apps/admin/.output/server/chunks/build/LangSelect-styles.Bi81RebM.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/LangSelect-styles.C7_U3Izz.mjs delete mode 100644 apps/admin/.output/server/chunks/build/LangSelect-styles.C7_U3Izz.mjs.map rename apps/admin/.output/server/chunks/build/{_name_-QnyK8Xx9.mjs => _name_-BbBzwp8c.mjs} (90%) create mode 100644 apps/admin/.output/server/chunks/build/_name_-BbBzwp8c.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/_name_-QnyK8Xx9.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/_name_-styles.DbbtUQpB.mjs delete mode 100644 apps/admin/.output/server/chunks/build/_name_-styles.DbbtUQpB.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/_name_-styles.Dz82uZcJ.mjs create mode 100644 apps/admin/.output/server/chunks/build/_name_-styles.Dz82uZcJ.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs create mode 100644 apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs create mode 100644 apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/appconfig-BTmHA76P.mjs create mode 100644 apps/admin/.output/server/chunks/build/appconfig-BTmHA76P.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/calltranslate--sRmJf-u.mjs delete mode 100644 apps/admin/.output/server/chunks/build/calltranslate--sRmJf-u.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/calltranslate-D-FgQw8P.mjs create mode 100644 apps/admin/.output/server/chunks/build/calltranslate-D-FgQw8P.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/calltranslate-styles.T5wE0P9E.mjs create mode 100644 apps/admin/.output/server/chunks/build/calltranslate-styles.T5wE0P9E.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/calltranslate-styles.hpAJUqsK.mjs delete mode 100644 apps/admin/.output/server/chunks/build/calltranslate-styles.hpAJUqsK.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/channels-CRuax8yi.mjs create mode 100644 apps/admin/.output/server/chunks/build/channels-CRuax8yi.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/channels-styles.BsiooF6f.mjs create mode 100644 apps/admin/.output/server/chunks/build/channels-styles.BsiooF6f.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/mcpconfig-CcWVtnKl.mjs delete mode 100644 apps/admin/.output/server/chunks/build/mcpconfig-CcWVtnKl.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/mcpconfig-O3oMJUPy.mjs create mode 100644 apps/admin/.output/server/chunks/build/mcpconfig-O3oMJUPy.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-B0vWpbrp.mjs delete mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-B0vWpbrp.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-BN6iazID.mjs create mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-BN6iazID.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-styles-1.mjs-BjhBSOse.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-styles.DMP2P_TQ.mjs delete mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-styles.DMP2P_TQ.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-styles.pHiXruL3.mjs create mode 100644 apps/admin/.output/server/chunks/build/serviceconfig-styles.pHiXruL3.mjs.map create mode 100644 apps/admin/app/pages/agents.vue create mode 100644 apps/admin/app/pages/appconfig.vue create mode 100644 apps/admin/app/pages/channels.vue delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/-jnCp83s.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/0WNSFMX1.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{VY77fqvj.js => B28BcwCz.js} (71%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{DKuebVMC.js => BOVc_R-F.js} (99%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BPgWG32Q.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{B7QETiRo.js => BSFY2Kep.js} (91%) rename apps/admin/{.output/public/_nuxt/CCes3qcB.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BSpPV7NB.js} (87%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BWhTtyw-.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BFMExc8z.js => BfiStvNk.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{S5V4LTkJ.js => BtEuBlBw.js} (94%) rename apps/admin/{.output/public/_nuxt/C0cd7Vyx.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CEsBRmS9.js} (89%) rename apps/admin/{.output/public/_nuxt/JlX4SqFM.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CFXePYDs.js} (93%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CSQN7OHo.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CFPPaSCZ.js => CSir_6Sc.js} (95%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{D3KKJ_NK.js => CTIvguo-.js} (85%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CZJGstC3.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{-Au2A1Cv.js => CmHlPuQb.js} (91%) rename apps/admin/{.output/public/_nuxt/swrhJgBy.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CyIH3Sn4.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C8IUv0mA.js => CzRv6c7P.js} (98%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D0tNFWGx.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{42htcooJ.js => D0vUT4uH.js} (91%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D1efUY0c.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{DTVGNZEd.js => D7SVvy69.js} (83%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DA9Dlh7r.js rename apps/admin/{.output/public/_nuxt/1800ei7D.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DCtqoj8h.js} (93%) rename apps/admin/{.output/public/_nuxt/DgtG1GpI.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DiInGhGc.js} (98%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dm8P2zvb.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CCjf5Io-.js => Dv-LAQo6.js} (74%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DzMPECf6.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BhbTh2Nc.js => Ge7z-opa.js} (99%) rename apps/admin/{.output/public/_nuxt/CWpRLpao.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/HFcFZ41D.js} (81%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/LangSelect.Dkm6e8RK.css rename apps/admin/{.output/public/_nuxt/1A4O2es5.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/N6ePFfck.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CA44cC15.js => OcSe_OeH.js} (80%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{SwS86oeZ.js => RjO_r9CD.js} (96%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{vrAtns1A.js => YYaFY5m9.js} (76%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{_name_.DZJkgavl.css => _name_.B5yFMG3g.css} (70%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.-kjpROzC.css delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/calltranslate.B6r4Q8-j.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/calltranslate.CJXjjd14.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/channels.4kXMd4_X.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/entry.B8AmFJkM.css delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/entry.CYb1FIZ0.css rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C-6Qe-lq.js => mz7Huk5H.js} (90%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/serviceconfig.C7KF_6ms.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/serviceconfig.D1-cnJwZ.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/uis8hfUF.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{b15UHpcb.js => xRPLHwov.js} (80%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-C_QPlcDf.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-C_QPlcDf.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-C_QPlcDf.js.map.json rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{serviceconfig-styles-1.mjs-BjhBSOse.js => LangSelect-styles-1.mjs-BjhBSOse.js} (96%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-styles-1.mjs-BjhBSOse.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-styles-1.mjs-BjhBSOse.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-styles.Bi81RebM.mjs delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/LangSelect-styles.C7_U3Izz.mjs rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{_name_-QnyK8Xx9.js => _name_-BbBzwp8c.js} (90%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{_name_-QnyK8Xx9.js.map => _name_-BbBzwp8c.js.map} (73%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-BbBzwp8c.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-QnyK8Xx9.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map.json rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{_name_-styles.DbbtUQpB.mjs => _name_-styles.Dz82uZcJ.mjs} (73%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles.DrcBfQcb.mjs create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/appconfig-BTmHA76P.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate--sRmJf-u.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate--sRmJf-u.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate--sRmJf-u.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-D-FgQw8P.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-D-FgQw8P.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-D-FgQw8P.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DA2j2DKH.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DA2j2DKH.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DA2j2DKH.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DvCjyXm1.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DvCjyXm1.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-DvCjyXm1.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles.T5wE0P9E.mjs delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles.hpAJUqsK.mjs create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-CRuax8yi.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-CRuax8yi.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-CRuax8yi.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-styles-1.mjs-Bc-0jlqg.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-styles-1.mjs-Bc-0jlqg.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-styles-1.mjs-Bc-0jlqg.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/channels-styles.BsiooF6f.mjs delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-CcWVtnKl.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-CcWVtnKl.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-CcWVtnKl.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-O3oMJUPy.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-O3oMJUPy.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/mcpconfig-O3oMJUPy.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-B0vWpbrp.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-B0vWpbrp.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-B0vWpbrp.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-BN6iazID.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-BN6iazID.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-BN6iazID.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-BjhBSOse.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-BjhBSOse.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-BzU15s4G.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-BzU15s4G.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-1.mjs-BzU15s4G.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-2.mjs-DHlkQfPu.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-2.mjs-DHlkQfPu.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles-2.mjs-DHlkQfPu.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles.DMP2P_TQ.mjs create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/serviceconfig-styles.pHiXruL3.mjs create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/671440d9-9ac2-4158-bbf2-60c5639d616e.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/a9121ad7-d4b4-4265-bf91-57f220ed7baa.json create mode 100644 apps/proto/__pycache__/pb.cpython-310.pyc create mode 100644 apps/proto/pb.py create mode 100644 apps/services/comm/calltranslate.go create mode 100644 apps/services/comm/calltranslate_test.go create mode 100644 apps/services/comm/channelapp.go create mode 100644 apps/services/comm/channelapp_test.go create mode 100644 apps/services/modules/console/api_appconfig.go create mode 100644 apps/services/modules/console/api_channelapp.go create mode 100644 apps/services/modules/user/api_getchannelapp_test.go diff --git a/apps/admin/.nuxt/imports.d.ts b/apps/admin/.nuxt/imports.d.ts index ed966aa1..5063a283 100644 --- a/apps/admin/.nuxt/imports.d.ts +++ b/apps/admin/.nuxt/imports.d.ts @@ -35,6 +35,6 @@ export { useApi } from '../app/composables/useApi'; export { LANG_OPTIONS, langName, LangOption } from '../app/composables/useLangOptions'; export { useLoading } from '../app/composables/useLoading'; export { useToast, ToastType, Toast } from '../app/composables/useToast'; +export { MENU_GROUPS, ALL_MENU_IDS, DEFAULT_ADMIN_ACCESS, menuItemByPath, MenuItem, MenuGroup } from '../app/utils/menus'; export { IDENTITY_LABELS, useAuthStore } from '../app/stores/auth'; -export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables'; -export { useNuxtDevTools } from '../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools'; \ No newline at end of file +export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables'; \ No newline at end of file diff --git a/apps/admin/.nuxt/manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json b/apps/admin/.nuxt/manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/apps/admin/.nuxt/manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/apps/admin/.nuxt/nuxt.d.ts b/apps/admin/.nuxt/nuxt.d.ts index 60fc7d9a..56802c21 100644 --- a/apps/admin/.nuxt/nuxt.d.ts +++ b/apps/admin/.nuxt/nuxt.d.ts @@ -1,7 +1,7 @@ -/// /// -/// +/// /// +/// /// /// /// diff --git a/apps/admin/.nuxt/nuxt.node.d.ts b/apps/admin/.nuxt/nuxt.node.d.ts index e33601ff..2959d7a2 100644 --- a/apps/admin/.nuxt/nuxt.node.d.ts +++ b/apps/admin/.nuxt/nuxt.node.d.ts @@ -1,7 +1,7 @@ -/// /// -/// +/// /// +/// /// /// /// diff --git a/apps/admin/.nuxt/tailwind/postcss.mjs b/apps/admin/.nuxt/tailwind/postcss.mjs index d044100d..7ddd55b2 100644 --- a/apps/admin/.nuxt/tailwind/postcss.mjs +++ b/apps/admin/.nuxt/tailwind/postcss.mjs @@ -1,10 +1,10 @@ -// generated by the @nuxtjs/tailwindcss module at 7/11/2026, 2:53:24 PM +// generated by the @nuxtjs/tailwindcss module at 7/29/2026, 10:48:13 PM import "@nuxtjs/tailwindcss/config-ctx" import configMerger from "@nuxtjs/tailwindcss/merger"; import cfg2 from "./../../tailwind.config.ts"; const config = [ -{"content":{"files":["/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/plugins/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/composables/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/utils/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/app.config.{js,ts,mjs}"]}}, +{"content":{"files":["/Users/liwei/work/pr/starpivot/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/plugins/**/*.{js,ts,mjs}","/Users/liwei/work/pr/starpivot/apps/admin/app/composables/**/*.{js,ts,mjs}","/Users/liwei/work/pr/starpivot/apps/admin/app/utils/**/*.{js,ts,mjs}","/Users/liwei/work/pr/starpivot/apps/admin/app/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/pr/starpivot/apps/admin/app/app.config.{js,ts,mjs}"]}}, {}, cfg2 ].reduce((acc, curr) => configMerger(acc, curr), {}); diff --git a/apps/admin/.nuxt/tsconfig.app.json b/apps/admin/.nuxt/tsconfig.app.json index 05ace571..c1d9502e 100644 --- a/apps/admin/.nuxt/tsconfig.app.json +++ b/apps/admin/.nuxt/tsconfig.app.json @@ -107,7 +107,7 @@ "./imports" ], "#app-manifest": [ - "./manifest/meta/dev.json" + "./manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json" ], "#components": [ "./components" @@ -197,7 +197,7 @@ "../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime/server", "../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/*.*", "../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/*.*", - "dev", + "../.output", "../server" ], "vueCompilerOptions": { diff --git a/apps/admin/.nuxt/tsconfig.json b/apps/admin/.nuxt/tsconfig.json index 58db1c92..4ff20122 100644 --- a/apps/admin/.nuxt/tsconfig.json +++ b/apps/admin/.nuxt/tsconfig.json @@ -107,7 +107,7 @@ "./imports" ], "#app-manifest": [ - "./manifest/meta/dev.json" + "./manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json" ], "#components": [ "./components" diff --git a/apps/admin/.nuxt/tsconfig.shared.json b/apps/admin/.nuxt/tsconfig.shared.json index a6bf4890..04da0c36 100644 --- a/apps/admin/.nuxt/tsconfig.shared.json +++ b/apps/admin/.nuxt/tsconfig.shared.json @@ -107,7 +107,7 @@ "./imports" ], "#app-manifest": [ - "./manifest/meta/dev.json" + "./manifest/meta/12d3d743-ea92-4f1a-b2b5-c47534e2a158.json" ], "#build": [ "." diff --git a/apps/admin/.nuxt/types/build.d.ts b/apps/admin/.nuxt/types/build.d.ts index 86af7751..813a333a 100644 --- a/apps/admin/.nuxt/types/build.d.ts +++ b/apps/admin/.nuxt/types/build.d.ts @@ -12,8 +12,6 @@ declare module "#build/paths.mjs"; declare module "#build/root-component.mjs"; declare module "#build/plugins.server.mjs"; declare module "#build/test-component-wrapper.mjs"; -declare module "#build/devtools/settings.mjs"; -declare module "#build/runtime.vue-devtools-client.8eTWAfLgVpINiZM922q1ozAHX8JlyUM2pBnpX1z932g.js"; declare module "#build/routes.mjs"; declare module "#build/pages.mjs"; declare module "#build/router.options.mjs"; diff --git a/apps/admin/.nuxt/types/imports.d.ts b/apps/admin/.nuxt/types/imports.d.ts index 2e8e53b0..8cd68973 100644 --- a/apps/admin/.nuxt/types/imports.d.ts +++ b/apps/admin/.nuxt/types/imports.d.ts @@ -1,8 +1,11 @@ // Generated by auto imports export {} declare global { + const ALL_MENU_IDS: typeof import('../../app/utils/menus').ALL_MENU_IDS + const DEFAULT_ADMIN_ACCESS: typeof import('../../app/utils/menus').DEFAULT_ADMIN_ACCESS const IDENTITY_LABELS: typeof import('../../app/stores/auth').IDENTITY_LABELS const LANG_OPTIONS: typeof import('../../app/composables/useLangOptions').LANG_OPTIONS + const MENU_GROUPS: typeof import('../../app/utils/menus').MENU_GROUPS const abortNavigation: typeof import('../../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/composables/router').abortNavigation const acceptHMRUpdate: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').acceptHMRUpdate const addRouteMiddleware: typeof import('../../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/composables/router').addRouteMiddleware @@ -51,6 +54,7 @@ declare global { const langName: typeof import('../../app/composables/useLangOptions').langName const loadPayload: typeof import('../../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/composables/payload').loadPayload const markRaw: typeof import('vue').markRaw + const menuItemByPath: typeof import('../../app/utils/menus').menuItemByPath const navigateTo: typeof import('../../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/composables/router').navigateTo const nextTick: typeof import('vue').nextTick const onActivated: typeof import('vue').onActivated @@ -125,7 +129,6 @@ declare global { const useModel: typeof import('vue').useModel const useNuxtApp: typeof import('../../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/nuxt').useNuxtApp const useNuxtData: typeof import('../../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/composables/asyncData').useNuxtData - const useNuxtDevTools: typeof import('../../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools').useNuxtDevTools const usePinia: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').usePinia const usePreviewMode: typeof import('../../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/composables/preview').usePreviewMode const useRequestEvent: typeof import('../../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/composables/ssr').useRequestEvent @@ -217,13 +220,19 @@ declare global { // @ts-ignore export type { ToastType, Toast } from '../../app/composables/useToast' import('../../app/composables/useToast') + // @ts-ignore + export type { MenuItem, MenuGroup } from '../../app/utils/menus' + import('../../app/utils/menus') } // for vue template auto import import { UnwrapRef } from 'vue' declare module 'vue' { interface ComponentCustomProperties { + readonly ALL_MENU_IDS: UnwrapRef + readonly DEFAULT_ADMIN_ACCESS: UnwrapRef readonly IDENTITY_LABELS: UnwrapRef readonly LANG_OPTIONS: UnwrapRef + readonly MENU_GROUPS: UnwrapRef readonly abortNavigation: UnwrapRef readonly acceptHMRUpdate: UnwrapRef readonly addRouteMiddleware: UnwrapRef @@ -272,6 +281,7 @@ declare module 'vue' { readonly langName: UnwrapRef readonly loadPayload: UnwrapRef readonly markRaw: UnwrapRef + readonly menuItemByPath: UnwrapRef readonly navigateTo: UnwrapRef readonly nextTick: UnwrapRef readonly onActivated: UnwrapRef @@ -346,7 +356,6 @@ declare module 'vue' { readonly useModel: UnwrapRef readonly useNuxtApp: UnwrapRef readonly useNuxtData: UnwrapRef - readonly useNuxtDevTools: UnwrapRef readonly usePinia: UnwrapRef readonly usePreviewMode: UnwrapRef readonly useRequestEvent: UnwrapRef diff --git a/apps/admin/.nuxt/types/layouts.d.ts b/apps/admin/.nuxt/types/layouts.d.ts index ad0b1efc..fbd33159 100644 --- a/apps/admin/.nuxt/types/layouts.d.ts +++ b/apps/admin/.nuxt/types/layouts.d.ts @@ -6,8 +6,8 @@ type ComponentProps = T extends new(...args: any) => { $props: infer P } ? No declare module 'nuxt/app' { interface NuxtLayouts { - auth: ComponentProps - default: ComponentProps + auth: ComponentProps + default: ComponentProps } export type LayoutKey = keyof NuxtLayouts extends never ? string : keyof NuxtLayouts interface PageMeta { diff --git a/apps/admin/.nuxt/types/nitro-imports.d.ts b/apps/admin/.nuxt/types/nitro-imports.d.ts index f80c206a..d1474d8e 100644 --- a/apps/admin/.nuxt/types/nitro-imports.d.ts +++ b/apps/admin/.nuxt/types/nitro-imports.d.ts @@ -145,5 +145,5 @@ export { getRouteRules } from 'nitropack/runtime/internal/route-rules'; export { useEvent } from 'nitropack/runtime/internal/context'; export { defineTask, runTask } from 'nitropack/runtime/internal/task'; export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils'; -export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths'; -export { defineAppConfig } from '/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/config'; \ No newline at end of file +export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths'; +export { defineAppConfig } from '/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/config'; \ No newline at end of file diff --git a/apps/admin/.nuxt/types/plugins.d.ts b/apps/admin/.nuxt/types/plugins.d.ts index 9c3e8c30..2679918d 100644 --- a/apps/admin/.nuxt/types/plugins.d.ts +++ b/apps/admin/.nuxt/types/plugins.d.ts @@ -10,27 +10,20 @@ type NuxtAppInjections = InjectionType & InjectionType & InjectionType & - InjectionType & InjectionType & - InjectionType & InjectionType & InjectionType & InjectionType & InjectionType & InjectionType & InjectionType & - InjectionType & - InjectionType & - InjectionType & - InjectionType & - InjectionType & InjectionType declare module '#app' { interface NuxtApp extends NuxtAppInjections { } interface NuxtAppLiterals { - pluginName: 'vue-devtools-client' | 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:browser-devtools-timing' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | 'nuxt:checkIfPageUnused' | 'nuxt:checkIfLayoutUsed' + pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' } } diff --git a/apps/admin/.output/nitro.json b/apps/admin/.output/nitro.json index 3493c7c1..1cb5a5c3 100644 --- a/apps/admin/.output/nitro.json +++ b/apps/admin/.output/nitro.json @@ -1,5 +1,5 @@ { - "date": "2026-07-24T09:05:46.727Z", + "date": "2026-07-29T14:48:33.461Z", "preset": "node-server", "framework": { "name": "nuxt", diff --git a/apps/admin/.output/public/_nuxt/-jnCp83s.js b/apps/admin/.output/public/_nuxt/-jnCp83s.js deleted file mode 100644 index f1a2629c..00000000 --- a/apps/admin/.output/public/_nuxt/-jnCp83s.js +++ /dev/null @@ -1 +0,0 @@ -import{g as oe,B as ie,c as a,l as p,a as e,p as d,q as m,F as r,r as u,H as F,t as i,s as G,n as N,d as de,x as c,y as ce,z as re,o,m as $,_ as ue}from"./CCjf5Io-.js";import{u as ve}from"./C-6Qe-lq.js";import{u as be}from"./DTVGNZEd.js";import"./42htcooJ.js";const me={key:0,class:"mb-4 rounded-lg px-4 py-3 text-sm",style:{background:"#fffbeb",border:"1px solid #fde68a",color:"#92400e"}},xe={class:"flex items-center justify-between mb-5"},pe={class:"flex items-center gap-3"},fe=["value"],_e={class:"editor-panel"},ge={class:"flex items-center justify-between mb-4"},ye={class:"font-semibold text-slate-800 text-sm"},ke={class:"grid grid-cols-3 gap-4 mb-4"},he={class:"form-control"},Se=["value"],Te={class:"form-control"},Ce=["value"],we={class:"form-control"},Ae={class:"flex gap-3 mb-4"},Ve={key:0,class:"grid grid-cols-3 gap-4"},Me={class:"form-control"},je={key:0,value:""},Re=["value"],Ue={class:"form-control"},Ne={key:0,value:""},$e=["value"],ze={class:"form-control"},Be={key:0,value:""},Oe=["value"],Pe={key:1,class:"form-control max-w-xs"},De={key:0,value:""},Ee=["value"],Le={class:"flex items-center justify-between pt-4 border-t border-slate-100 mt-4"},Ie={class:"flex items-center gap-2 text-sm"},Fe={class:"grid grid-cols-1 gap-4",style:{"grid-template-columns":"repeat(auto-fill,minmax(360px,1fr))"}},Ge={key:0,class:"col-span-full text-center py-20 text-slate-300"},He=["onClick"],qe={class:"flex items-center justify-between"},Je={class:"flex items-center gap-2"},Ke={class:"lang-badge"},Qe={class:"text-slate-400 font-bold text-lg"},We={class:"lang-badge"},Xe={class:"flex items-center gap-2"},Ye={key:0,class:"mode-badge mode-pipeline"},Ze={key:1,class:"mode-badge mode-e2e"},et={key:2,class:"badge badge-success badge-xs"},tt={key:3,class:"badge badge-ghost badge-xs"},st=["onClick"],lt={key:0,class:"flex flex-wrap items-center gap-2 mt-3"},nt={class:"svc-pill",style:{background:"#1664ff"}},at={class:"svc-pill",style:{background:"#059669"}},ot={class:"svc-pill",style:{background:"#7c3aed"}},it={key:1,class:"flex items-center gap-2 mt-3"},dt={class:"svc-pill",style:{background:"#f97316"}},ct={class:"sync-overlay"},rt={class:"sync-box"},ut={class:"flex items-start gap-3 mb-4"},vt={style:{width:"42px",height:"42px",background:"linear-gradient(135deg,#4f46e5,#7c3aed)","border-radius":"13px",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},bt={style:{width:"20px",height:"20px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},mt={class:"text-xs text-slate-400 mt-1"},xt={class:"flex items-center justify-between mb-1"},pt={class:"flex gap-2"},ft={class:"sync-region-grid"},_t=["onClick"],gt=["checked","onClick"],H=1,q=2,J=3,K=4,yt=oe({__name:"calltranslate",setup(kt){const j=[{c:"zh",n:"中文"},{c:"en",n:"英文"},{c:"ja",n:"日语"},{c:"ko",n:"韩语"},{c:"fr",n:"法语"},{c:"de",n:"德语"},{c:"es",n:"西班牙语"},{c:"pt",n:"葡萄牙语"},{c:"ru",n:"俄语"},{c:"ar",n:"阿拉伯语"},{c:"th",n:"泰语"},{c:"vi",n:"越南语"},{c:"id",n:"印尼语"},{c:"ms",n:"马来语"},{c:"hi",n:"印地语"}];function h(l){const t=j.find(s=>s.c===l);return t?t.n:l||""}const f=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function Q(l){const t=f.find(s=>s.value===l);return t?t.label:"区域"+l}const{webApi:_}=ve(),{success:S,error:T}=be(),R=c(!0),C=c([]),g=c([]),y=c(f.length?f[0].value:1),w=c(!1),x=c(null),z=c(0),n=ce({src:"zh",dst:"en",bidir:!1,mode:0,asr:"",mt:"",tts:"",ast:"",enable:!0});async function W(){try{const l=await _("getsvcconfigs",{});C.value=l?.items??[]}catch{R.value=!1,C.value=[]}}async function A(){try{const l=await _("getcalltranslatepairs",{region:y.value});g.value=l?.items??[]}catch{R.value=!1,g.value=[]}}function v(l){return C.value.filter(t=>t.enable&&(t.categories||"").split(",").map(Number).indexOf(l)>=0)}function V(l){const t=C.value.find(s=>s.id===l);return t?t.name:l||"未配置"}function B(l){n.src=l?.src_lang||"zh",n.dst=l?.dst_lang||"en",n.bidir=!!l?.bidir,n.mode=l?.mode!=null?l.mode:0,n.asr=l?.asr_svc_id||"",n.mt=l?.mt_svc_id||"",n.tts=l?.tts_svc_id||"",n.ast=l?.ast_svc_id||"",n.enable=l?l.enable!==!1:!0}function X(){x.value=null,B(null),w.value=!0}function Y(l){const t=g.value.find(s=>s.id===l)||null;x.value=t,B(t),w.value=!0}function M(){w.value=!1,x.value=null}function Z(){const l=n.mode;return{id:x.value?x.value.id:0,region:y.value,src_lang:n.src,dst_lang:n.dst,bidir:n.bidir,mode:l,asr_svc_id:l===0&&n.asr||"",mt_svc_id:l===0&&n.mt||"",tts_svc_id:l===0&&n.tts||"",ast_svc_id:l===1&&n.ast||"",enable:n.enable}}async function O(){const l=Z();if(!l.src_lang||!l.dst_lang)return T("源语言和目标语言必填"),!1;try{const t=await _("savecalltranslatepair",l);return z.value=t?.id??0,await A(),!0}catch(t){return T(t?.message??"保存失败"),!1}}function ee(l){window.confirm("确定删除这条语言对配置?")&&_("delcalltranslatepair",{ids:[l]}).then(()=>{S("已删除"),A()}).catch(t=>T(t?.message??"删除失败"))}const U=c(!1),P=c(""),b=c([]),D=re(()=>f.filter(l=>l.value!==y.value));function te(){const l=n.mode===0?"三段式拼接":"端到端 AST";P.value="将「"+h(n.src)+" → "+h(n.dst)+"」("+l+(n.bidir?",双向":"")+" )的服务编排同步到其他区域。",b.value=[],U.value=!0}function E(l){const t=b.value.indexOf(l);t>=0?b.value.splice(t,1):b.value.push(l)}function L(l){b.value=l?D.value.map(t=>t.value):[]}function I(){U.value=!1}async function se(){I(),await O()&&(M(),S("保存成功"))}async function le(){const l=[...b.value];if(I(),!!await O()){if(M(),!l.length){S("保存成功");return}try{const k=(await _("synccalltranslatepairs",{pair_ids:[z.value],target_regions:l}))?.synced??0,ne=l.map(ae=>Q(ae));S("已保存并同步到:"+ne.join("、")+"("+k+" 个)")}catch(s){T(s?.message??"同步失败")}}}return ie(async()=>{await Promise.all([W(),A()])}),(l,t)=>(o(),a("div",null,[R.value?p("",!0):(o(),a("div",me," ⚠ 「通话翻译配置」的后端接口尚未迁移到当前 console 服务,功能暂不可用。 ")),e("div",xe,[t[14]||(t[14]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"通话翻译配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"按区域和语言对配置翻译服务。支持三段式(ASR→MT→TTS)和端到端 AST 两种模式。")],-1)),e("div",pe,[t[13]||(t[13]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),d(e("select",{"onUpdate:modelValue":t[0]||(t[0]=s=>y.value=s),class:"select select-bordered select-sm",onChange:A},[(o(),a(r,null,u(f,s=>e("option",{key:s.value,value:s.value},i(s.label),9,fe)),64))],544),[[m,y.value,void 0,{number:!0}]]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:X},"+ 新增语言对")])]),d(e("div",_e,[e("div",ge,[e("h3",ye,i(x.value?"编辑语言对":"新增语言对"),1),e("button",{class:"btn btn-ghost btn-xs",onClick:M},"✕ 关闭")]),e("div",ke,[e("div",he,[t[15]||(t[15]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"源语言 *")],-1)),d(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>n.src=s),class:"select select-bordered select-sm"},[(o(),a(r,null,u(j,s=>e("option",{key:s.c,value:s.c},i(s.n),9,Se)),64))],512),[[m,n.src]])]),e("div",Te,[t[16]||(t[16]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"目标语言 *")],-1)),d(e("select",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.dst=s),class:"select select-bordered select-sm"},[(o(),a(r,null,u(j,s=>e("option",{key:s.c,value:s.c},i(s.n),9,Ce)),64))],512),[[m,n.dst]])]),e("div",we,[t[17]||(t[17]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"双向")],-1)),d(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.bidir=s),type:"checkbox",class:"toggle toggle-primary mt-1"},null,512),[[G,n.bidir]])])]),e("div",Ae,[e("div",{class:N(["mtab",{on:n.mode===0}]),onClick:t[4]||(t[4]=s=>n.mode=0)},[...t[18]||(t[18]=[e("div",null,[e("div",{class:"font-bold text-sm"},"🧩 三段式拼接"),e("div",{class:"text-xs text-slate-400 mt-0.5"},"ASR → MT → TTS")],-1)])],2),e("div",{class:N(["mtab",{on:n.mode===1}]),onClick:t[5]||(t[5]=s=>n.mode=1)},[...t[19]||(t[19]=[e("div",null,[e("div",{class:"font-bold text-sm"},"⚡ 端到端 AST"),e("div",{class:"text-xs text-slate-400 mt-0.5"},"单服务直接完成语音翻译")],-1)])],2)]),e("div",null,[n.mode===0?(o(),a("div",Ve,[e("div",Me,[t[20]||(t[20]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"语音识别(ASR)")],-1)),d(e("select",{"onUpdate:modelValue":t[6]||(t[6]=s=>n.asr=s),class:"select select-bordered select-sm"},[v(H).length?p("",!0):(o(),a("option",je,"(无可用服务)")),(o(!0),a(r,null,u(v(H),s=>(o(),a("option",{key:s.id,value:s.id},i(s.name),9,Re))),128))],512),[[m,n.asr]])]),e("div",Ue,[t[21]||(t[21]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"机器翻译(MT)")],-1)),d(e("select",{"onUpdate:modelValue":t[7]||(t[7]=s=>n.mt=s),class:"select select-bordered select-sm"},[v(J).length?p("",!0):(o(),a("option",Ne,"(无可用服务)")),(o(!0),a(r,null,u(v(J),s=>(o(),a("option",{key:s.id,value:s.id},i(s.name),9,$e))),128))],512),[[m,n.mt]])]),e("div",ze,[t[22]||(t[22]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"语音合成(TTS)")],-1)),d(e("select",{"onUpdate:modelValue":t[8]||(t[8]=s=>n.tts=s),class:"select select-bordered select-sm"},[v(q).length?p("",!0):(o(),a("option",Be,"(无可用服务)")),(o(!0),a(r,null,u(v(q),s=>(o(),a("option",{key:s.id,value:s.id},i(s.name),9,Oe))),128))],512),[[m,n.tts]])])])):(o(),a("div",Pe,[t[23]||(t[23]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"端到端语音翻译服务(AST)")],-1)),d(e("select",{"onUpdate:modelValue":t[9]||(t[9]=s=>n.ast=s),class:"select select-bordered select-sm"},[v(K).length?p("",!0):(o(),a("option",De,"(无可用服务)")),(o(!0),a(r,null,u(v(K),s=>(o(),a("option",{key:s.id,value:s.id},i(s.name),9,Ee))),128))],512),[[m,n.ast]])]))]),e("div",Le,[e("label",Ie,[d(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>n.enable=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[G,n.enable]]),t[24]||(t[24]=de(" 启用 ",-1))]),e("div",{class:"flex gap-2"},[e("button",{class:"btn btn-ghost btn-sm",onClick:M},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:te},"保存")])])],512),[[F,w.value]]),e("div",Fe,[g.value.length?p("",!0):(o(),a("div",Ge,[...t[25]||(t[25]=[e("div",{class:"text-5xl mb-3"},"🌐",-1),e("p",{class:"text-sm"},"当前区域暂无语言对配置",-1)])])),(o(!0),a(r,null,u(g.value,s=>(o(),a("div",{key:s.id,class:"pair-card",onClick:k=>Y(s.id)},[e("div",qe,[e("div",Je,[e("span",Ke,i(h(s.src_lang)),1),e("span",Qe,i(s.bidir?"⇄":"→"),1),e("span",We,i(h(s.dst_lang)),1)]),e("div",Xe,[s.mode===0?(o(),a("span",Ye,"三段式拼接")):(o(),a("span",Ze,"端到端 AST")),s.enable?(o(),a("span",et,"启用")):(o(),a("span",tt,"停用")),e("button",{class:"btn btn-ghost btn-xs text-error",onClick:$(k=>ee(s.id),["stop"])},"删除",8,st)])]),s.mode===0?(o(),a("div",lt,[e("span",nt,"ASR: "+i(V(s.asr_svc_id)),1),t[26]||(t[26]=e("span",{class:"text-slate-300 text-sm"},"→",-1)),e("span",at,"MT: "+i(V(s.mt_svc_id)),1),t[27]||(t[27]=e("span",{class:"text-slate-300 text-sm"},"→",-1)),e("span",ot,"TTS: "+i(V(s.tts_svc_id)),1)])):(o(),a("div",it,[e("span",dt,"AST: "+i(V(s.ast_svc_id)),1)]))],8,He))),128))]),d(e("div",ct,[e("div",rt,[e("div",ut,[e("div",vt,[(o(),a("svg",bt,[...t[28]||(t[28]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"},null,-1)])]))]),e("div",null,[t[29]||(t[29]=e("h3",{class:"text-base font-semibold text-slate-800"},"同步到其他区域",-1)),e("p",mt,i(P.value),1)])]),t[31]||(t[31]=e("div",{class:"text-xs px-3 py-2 rounded-lg mb-3",style:{background:"#f0fdf4",border:"1px solid #bbf7d0",color:"#15803d"}}," ✦ 同步内容:服务组合(模式 + 各段服务)将被复制到目标区域。 ",-1)),e("div",xt,[t[30]||(t[30]=e("span",{class:"text-xs font-semibold text-slate-500"},"选择目标区域",-1)),e("div",pt,[e("button",{class:"btn btn-ghost btn-xs",onClick:t[11]||(t[11]=s=>L(!0))},"全选"),e("button",{class:"btn btn-ghost btn-xs",onClick:t[12]||(t[12]=s=>L(!1))},"清空")])]),e("div",ft,[(o(!0),a(r,null,u(D.value,s=>(o(),a("label",{key:s.value,class:N(["sync-region-item",{checked:b.value.includes(s.value)}]),onClick:$(k=>E(s.value),["prevent"])},[e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:b.value.includes(s.value),onClick:$(k=>E(s.value),["stop"])},null,8,gt),e("span",null,i(s.label),1)],10,_t))),128))]),t[32]||(t[32]=e("p",{class:"text-[11px] text-slate-400 mb-5"},"⚠ 目标区域相同语言对已存在则覆盖,否则新建。",-1)),e("div",{class:"flex gap-3 justify-end"},[e("button",{class:"btn btn-ghost",onClick:se},"仅保存当前区域"),e("button",{class:"btn btn-primary text-white",onClick:le},"保存并同步")])])],512),[[F,U.value]])]))}}),wt=ue(yt,[["__scopeId","data-v-51f11136"]]);export{wt as default}; diff --git a/apps/admin/.output/public/_nuxt/0WNSFMX1.js b/apps/admin/.output/public/_nuxt/0WNSFMX1.js new file mode 100644 index 00000000..2c19a5f3 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/0WNSFMX1.js @@ -0,0 +1 @@ +import{g as pe,k as ve,B as me,c as o,a as s,p as d,q as H,F as p,r as v,l as c,d as C,H as be,t as r,v as x,s as N,m as Q,x as b,y as fe,z,o as i,L as X,n as O,_ as xe}from"./Dv-LAQo6.js";import{u as ye}from"./mz7Huk5H.js";import{u as ke}from"./D7SVvy69.js";import"./D0vUT4uH.js";const ge={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},he={class:"flex items-center gap-3"},_e=["value"],we={key:0,class:"pay-warn"},Ce={class:"flex items-start gap-2"},Ve={class:"flex-1"},Ue={class:"text-xs mt-1"},Ae={key:1,class:"scope-tip"},Se={class:"flex items-center gap-2 mb-3"},Pe={class:"text-xs text-slate-400"},Ne={class:"ch-grid"},Oe=["onClick"],je={class:"flex items-start justify-between gap-2"},Le={class:"min-w-0"},Me={class:"font-semibold text-sm text-slate-800"},Be={class:"text-[11px] text-slate-400 mt-0.5"},Ee={class:"ver-row"},Ie={class:"ver-box"},Te={class:"ver-val"},$e={class:"ver-box"},He={key:0,class:"ver-box"},ze={class:"ver-val review"},Fe={class:"flex flex-wrap items-center gap-1.5 mt-2"},Ge={key:0,class:"flag flag-warn"},Re={key:1,class:"flag"},qe={key:2,class:"flag"},De={key:3,class:"flag flag-off"},We={key:0,class:"flex flex-wrap items-center gap-1.5 mt-2"},Ye=["title"],Je={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Ke=["onClick"],Qe={class:"text-sm text-slate-400"},Xe={class:"ch-box"},Ze={class:"flex items-center justify-between mb-4"},es={class:"flex items-center gap-3"},ss={class:"text-base font-semibold text-slate-800"},ts={class:"scope-chip"},ls={class:"ed-section"},ns={class:"grid grid-cols-2 gap-3"},as=["disabled"],os=["label"],is=["value"],rs=["value"],ds={class:"mt-3"},us={class:"ed-section"},cs={class:"grid grid-cols-3 gap-3"},ps={class:"flex items-center gap-2 text-sm cursor-pointer mt-3"},vs={key:0,class:"ed-warn"},ms={class:"mt-3"},bs={class:"mt-3"},fs={class:"ed-section"},xs={class:"flex flex-col gap-2"},ys={class:"flex items-center gap-2 text-sm cursor-pointer"},ks={class:"flex items-center gap-2 text-sm cursor-pointer"},gs={class:"ed-section"},hs={class:"pay-grid"},_s=["checked","onChange"],ws={key:0,class:"pay-miss"},Cs={class:"ed-tip"},Vs={key:1},Us={class:"ed-footer"},As={class:"flex items-center gap-2 text-sm cursor-pointer"},Ss={class:"flex gap-2"},Ps=["disabled"],Ns=pe({__name:"channels",setup(Os){const Z={1:"华为",2:"小米",3:"OPPO",4:"VIVO",5:"荣耀",100:"官方包",101:"App Store",102:"Google Play"};function y(l){return Z[l]??"渠道"+l}const F=[{label:"中国厂商",icon:"📱",color:"#0369a1",bg:"#dbeafe",channels:[1,2,3,4,5]},{label:"全球商店",icon:"🌍",color:"#c2410c",bg:"#fff7ed",channels:[101,102]},{label:"官方渠道",icon:"🏠",color:"#059669",bg:"#dcfce7",channels:[100]}],j=[{v:0,label:"草稿(不下发)",color:"#64748b",bg:"#f1f5f9"},{v:1,label:"已上架",color:"#059669",bg:"#dcfce7"},{v:2,label:"审核中",color:"#b45309",bg:"#fef9c3"},{v:3,label:"已下架",color:"#be123c",bg:"#ffe4e6"}];function ee(l){return j.find(e=>e.v===l)?.label??"未知"}function se(l){const e=j.find(t=>t.v===l);return e?{background:e.bg,color:e.color}:{}}const L=[{key:"wxpay",label:"微信支付",module:"wechatpay"},{key:"alipay",label:"支付宝",module:"alipay"},{key:"paypal",label:"PayPal",module:"paypal"},{key:"apple",label:"Apple 内购",module:"appleiap"},{key:"google",label:"Google 内购",module:"googleiap"}];function G(l){return L.find(e=>e.key===l)?.label??l}const{webApi:V,consoleApi:te}=ye(),{success:R,error:f}=ke(),le=ve(),u=b(""),M=b([]),k=b([]),B=b([]),U=b(!1),A=b(!1),g=b(!1),E=b(!1);function I(){return{row_id:0,app_name:"",channel:0,version:"",min_version:"",force_update:!1,changelog:"",address:"",review_version:"",status:1,description:"",tourists:!1,allowskipdevicebinding:!1,paychannels:"",enable:!0}}const n=fe(I()),ne=z(()=>F.map(l=>({...l,items:k.value.filter(e=>l.channels.includes(e.channel)).sort((e,t)=>e.channel-t.channel),missing:l.channels.filter(e=>!k.value.some(t=>t.channel===e))})));function h(l){return(l.paychannels||"").split(",").map(e=>e.trim()).filter(Boolean)}function _(l){if(!U.value)return!1;const e=L.find(t=>t.key===l)?.module;return!!e&&!B.value.includes(e)}const q=z(()=>{if(!U.value)return[];const l={};for(const e of k.value)if(e.enable)for(const t of h(e))_(t)&&(l[t]=l[t]||[]).push(y(e.channel));return Object.keys(l).map(e=>({key:e,label:G(e),channels:l[e]}))}),S=z(()=>n.force_update&&!n.min_version.trim()?"开启强制更新时必须填「最低支持版本」,否则挡不住任何人":n.min_version.trim()&&n.version.trim()&&ae(n.min_version,n.version)>0?"「最低支持版本」高于「当前线上版本」,会把所有线上用户判定为需强更却无更高版本可更":"");function ae(l,e){const t=l.trim().split("."),a=e.trim().split("."),m=Math.max(t.length,a.length);for(let P=0;Pe.name).filter(Boolean)}catch{M.value=[]}}async function T(){try{const l=await V("getchannelapps",{app_name:u.value});k.value=l?.items??[]}catch(l){f(l?.message??"加载失败"),k.value=[]}}async function ie(){try{const l=await V("getchannelpaystatus",{app_name:u.value});B.value=l?.configured??[],U.value=!!l?.checked}catch{B.value=[],U.value=!1}}async function D(){await Promise.all([T(),ie()])}function W(l){Object.assign(n,I()),typeof l=="number"&&(n.channel=l),g.value=!1,A.value=!0}function re(l){Object.assign(n,I(),l),g.value=!0,A.value=!0}function w(){A.value=!1}function $(l){return h(n).includes(l)}function de(l){const e=h(n),t=e.indexOf(l);t>=0?e.splice(t,1):e.push(l),n.paychannels=e.join(",")}async function ue(){if(!n.channel){f("请选择分发渠道");return}if(S.value){f(S.value);return}E.value=!0;try{await V("savechannelapp",{...n,app_name:u.value}),R("保存成功"),w(),await T()}catch(l){f(l?.message??"保存失败")}finally{E.value=!1}}function ce(){window.confirm(`确定删除「${y(n.channel)}」这个渠道的配置吗?`)&&V("delchannelapp",{app_name:u.value,channel:n.channel}).then(()=>{R("已删除"),w(),T()}).catch(l=>f(l?.message??"删除失败"))}function Y(){if(!u.value){f("请先在上方选择一个应用");return}le.push(`/apps/${encodeURIComponent(u.value)}?tab=modules`)}return me(async()=>{await oe(),await D()}),(l,e)=>(i(),o("div",null,[s("div",ge,[e[15]||(e[15]=s("div",null,[s("h2",{class:"text-lg font-semibold text-slate-800"},"渠道分发"),s("p",{class:"text-xs text-slate-400 mt-1"}," 管理各应用在各分发渠道上的版本、强制更新与能力开关。支付渠道在这里控制「开放哪几种支付入口」,商户凭据在应用的业务功能配置里填。 ")],-1)),s("div",he,[e[14]||(e[14]=s("span",{class:"text-sm text-slate-500"},"应用",-1)),d(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>u.value=t),class:"select select-bordered select-sm",onChange:D},[e[13]||(e[13]=s("option",{value:""},"全局默认(所有应用兜底)",-1)),(i(!0),o(p,null,v(M.value,t=>(i(),o("option",{key:t,value:t},r(t),9,_e))),128))],544),[[H,u.value]]),s("button",{class:"btn btn-primary btn-sm text-white",onClick:W},"+ 添加渠道")])]),q.value.length?(i(),o("div",we,[s("div",Ce,[e[17]||(e[17]=s("span",null,"⚠",-1)),s("div",Ve,[e[16]||(e[16]=s("div",{class:"text-sm font-semibold"},"以下支付方式已在渠道里开放,但商户凭据还没配:",-1)),s("div",Ue,[(i(!0),o(p,null,v(q.value,t=>(i(),o("span",{key:t.key,class:"warn-pill"},r(t.label)+"("+r(t.channels.join("、"))+")",1))),128))])]),s("button",{class:"btn btn-xs btn-ghost",onClick:Y},"去配置 →")])])):c("",!0),u.value?c("",!0):(i(),o("div",Ae,[...e[18]||(e[18]=[C(" 当前是",-1),s("b",null,"全局默认",-1),C("作用域:这里配的渠道对所有应用生效,应用自己配了同渠道则以应用的为准。 ",-1)])])),(i(!0),o(p,null,v(ne.value,t=>(i(),o("div",{key:t.label,class:"mb-6"},[s("div",Se,[s("span",{class:"group-tag",style:X({background:t.bg,color:t.color})},r(t.icon)+" "+r(t.label),5),s("span",Pe,r(t.items.length)+" / "+r(t.channels.length)+" 已配置",1)]),s("div",Ne,[(i(!0),o(p,null,v(t.items,a=>(i(),o("div",{key:a.channel,class:O(["ch-card",{off:!a.enable}]),onClick:m=>re(a)},[s("div",je,[s("div",Le,[s("div",Me,r(y(a.channel)),1),s("div",Be,"渠道号 "+r(a.channel),1)]),s("span",{class:"status-badge",style:X(se(a.status))},r(ee(a.status)),5)]),s("div",Ee,[s("div",Ie,[e[19]||(e[19]=s("span",{class:"ver-label"},"线上版本",-1)),s("span",Te,r(a.version||"—"),1)]),s("div",$e,[e[20]||(e[20]=s("span",{class:"ver-label"},"最低支持",-1)),s("span",{class:O(["ver-val",{warn:a.force_update}])},r(a.min_version||"—"),3)]),a.review_version?(i(),o("div",He,[e[21]||(e[21]=s("span",{class:"ver-label"},"审核中",-1)),s("span",ze,r(a.review_version),1)])):c("",!0)]),s("div",Fe,[a.force_update?(i(),o("span",Ge,"强制更新")):c("",!0),a.tourists?(i(),o("span",Re,"游客登录")):c("",!0),a.allowskipdevicebinding?(i(),o("span",qe,"可跳过绑定")):c("",!0),a.enable?c("",!0):(i(),o("span",De,"已停用"))]),h(a).length?(i(),o("div",We,[(i(!0),o(p,null,v(h(a),m=>(i(),o("span",{key:m,class:O(["pay-pill",{missing:_(m)}]),title:_(m)?"该支付方式的商户凭据尚未配置":""},r(G(m))+r(_(m)?" ⚠":""),11,Ye))),128))])):c("",!0),a.address?(i(),o("div",Je,r(a.address),1)):c("",!0)],10,Oe))),128)),(i(!0),o(p,null,v(t.missing,a=>(i(),o("div",{key:"m"+a,class:"ch-card ch-empty",onClick:m=>W(a)},[s("div",Qe,r(y(a)),1),e[22]||(e[22]=s("div",{class:"text-[11px] text-slate-300 mt-1"},"未配置 · 点击添加",-1))],8,Ke))),128))])]))),128)),d(s("div",{class:"ch-overlay",onClick:Q(w,["self"])},[s("div",Xe,[s("div",Ze,[s("div",es,[s("h3",ss,r(g.value?"编辑渠道":"添加渠道"),1),s("span",ts,r(u.value||"全局默认"),1)]),s("button",{class:"btn btn-ghost btn-xs",onClick:w},"✕ 关闭")]),s("section",ls,[e[27]||(e[27]=s("div",{class:"ed-section-title"},"渠道",-1)),s("div",ns,[s("div",null,[e[24]||(e[24]=s("span",{class:"ed-label"},[C("分发渠道 "),s("i",{class:"req"},"*")],-1)),d(s("select",{"onUpdate:modelValue":e[1]||(e[1]=t=>n.channel=t),disabled:g.value,class:"select select-bordered select-sm w-full"},[e[23]||(e[23]=s("option",{value:0,disabled:""},"请选择渠道",-1)),(i(),o(p,null,v(F,t=>s("optgroup",{key:t.label,label:t.label},[(i(!0),o(p,null,v(t.channels,a=>(i(),o("option",{key:a,value:a},r(y(a))+"("+r(a)+")",9,is))),128))],8,os)),64))],8,as),[[H,n.channel,void 0,{number:!0}]])]),s("div",null,[e[25]||(e[25]=s("span",{class:"ed-label"},"上架状态",-1)),d(s("select",{"onUpdate:modelValue":e[2]||(e[2]=t=>n.status=t),class:"select select-bordered select-sm w-full"},[(i(),o(p,null,v(j,t=>s("option",{key:t.v,value:t.v},r(t.label),9,rs)),64))],512),[[H,n.status,void 0,{number:!0}]])])]),s("div",ds,[e[26]||(e[26]=s("span",{class:"ed-label"},"描述",-1)),d(s("input",{"onUpdate:modelValue":e[3]||(e[3]=t=>n.description=t),class:"input input-bordered input-sm w-full",placeholder:"这个渠道包的说明"},null,512),[[x,n.description]])])]),s("section",us,[e[35]||(e[35]=s("div",{class:"ed-section-title"},"版本",-1)),s("div",cs,[s("div",null,[e[28]||(e[28]=s("span",{class:"ed-label"},"当前线上版本",-1)),d(s("input",{"onUpdate:modelValue":e[4]||(e[4]=t=>n.version=t),class:"input input-bordered input-sm w-full",placeholder:"如 1.4.2"},null,512),[[x,n.version]])]),s("div",null,[e[29]||(e[29]=s("span",{class:"ed-label"},"最低支持版本",-1)),d(s("input",{"onUpdate:modelValue":e[5]||(e[5]=t=>n.min_version=t),class:"input input-bordered input-sm w-full",placeholder:"低于它的客户端需更新"},null,512),[[x,n.min_version]])]),s("div",null,[e[30]||(e[30]=s("span",{class:"ed-label"},"审核中版本",-1)),d(s("input",{"onUpdate:modelValue":e[6]||(e[6]=t=>n.review_version=t),class:"input input-bordered input-sm w-full",placeholder:"过审后清空"},null,512),[[x,n.review_version]])])]),s("label",ps,[d(s("input",{"onUpdate:modelValue":e[7]||(e[7]=t=>n.force_update=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.force_update]]),e[31]||(e[31]=s("span",null,"强制更新",-1)),e[32]||(e[32]=s("span",{class:"text-xs text-slate-400"},"低于「最低支持版本」的客户端必须更新才能继续使用",-1))]),S.value?(i(),o("p",vs,"⚠ "+r(S.value),1)):c("",!0),s("div",ms,[e[33]||(e[33]=s("span",{class:"ed-label"},"下载地址",-1)),d(s("input",{"onUpdate:modelValue":e[8]||(e[8]=t=>n.address=t),class:"input input-bordered input-sm w-full",placeholder:"应用商店链接或 apk 直链"},null,512),[[x,n.address]])]),s("div",bs,[e[34]||(e[34]=s("span",{class:"ed-label"},"更新日志",-1)),d(s("textarea",{"onUpdate:modelValue":e[9]||(e[9]=t=>n.changelog=t),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"本次更新内容,会下发给客户端展示"},null,512),[[x,n.changelog]])])]),s("section",fs,[e[38]||(e[38]=s("div",{class:"ed-section-title"},"能力开关",-1)),s("div",xs,[s("label",ys,[d(s("input",{"onUpdate:modelValue":e[10]||(e[10]=t=>n.tourists=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.tourists]]),e[36]||(e[36]=s("span",null,"允许游客登录",-1))]),s("label",ks,[d(s("input",{"onUpdate:modelValue":e[11]||(e[11]=t=>n.allowskipdevicebinding=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.allowskipdevicebinding]]),e[37]||(e[37]=s("span",null,"允许跳过设备绑定",-1))])])]),s("section",gs,[e[41]||(e[41]=s("div",{class:"ed-section-title"},"支付渠道",-1)),s("div",hs,[(i(),o(p,null,v(L,t=>s("label",{key:t.key,class:O(["pay-item",{checked:$(t.key)}])},[s("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:$(t.key),onChange:a=>de(t.key)},null,40,_s),s("span",null,r(t.label),1),$(t.key)&&_(t.key)?(i(),o("span",ws,"未配凭据")):c("",!0)],2)),64))]),s("p",Cs,[e[39]||(e[39]=C(" 这里只决定「这个渠道开放哪几种支付入口」;商户号、密钥等凭据在 ",-1)),u.value?(i(),o("a",{key:0,class:"link",onClick:Q(Y,["prevent"])},"应用「"+r(u.value)+"」→ 业务功能配置 → 支付",1)):(i(),o("span",Vs,"各应用的「业务功能配置 → 支付」")),e[40]||(e[40]=C(" 里填。 ",-1))])]),s("div",Us,[s("label",As,[d(s("input",{"onUpdate:modelValue":e[12]||(e[12]=t=>n.enable=t),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[N,n.enable]]),e[42]||(e[42]=s("span",null,"启用",-1)),e[43]||(e[43]=s("span",{class:"text-xs text-slate-400"},"停用后该渠道配置不下发客户端",-1))]),s("div",Ss,[g.value?(i(),o("button",{key:0,class:"btn btn-ghost btn-sm text-error mr-auto",onClick:ce},"删除")):c("",!0),s("button",{class:"btn btn-ghost btn-sm",onClick:w},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:E.value,onClick:ue},"保存",8,Ps)])])])],512),[[be,A.value]])]))}}),Es=xe(Ns,[["__scopeId","data-v-6057a5c9"]]);export{Es as default}; diff --git a/apps/admin/.output/public/_nuxt/VY77fqvj.js b/apps/admin/.output/public/_nuxt/B28BcwCz.js similarity index 71% rename from apps/admin/.output/public/_nuxt/VY77fqvj.js rename to apps/admin/.output/public/_nuxt/B28BcwCz.js index 13b413f3..8b06608c 100644 --- a/apps/admin/.output/public/_nuxt/VY77fqvj.js +++ b/apps/admin/.output/public/_nuxt/B28BcwCz.js @@ -1 +1 @@ -import{_ as t,o,c as s,Q as c}from"./CCjf5Io-.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"./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}; diff --git a/apps/admin/.output/public/_nuxt/DKuebVMC.js b/apps/admin/.output/public/_nuxt/BOVc_R-F.js similarity index 99% rename from apps/admin/.output/public/_nuxt/DKuebVMC.js rename to apps/admin/.output/public/_nuxt/BOVc_R-F.js index 9bb924af..087abd9e 100644 --- a/apps/admin/.output/public/_nuxt/DKuebVMC.js +++ b/apps/admin/.output/public/_nuxt/BOVc_R-F.js @@ -1 +1 @@ -import{g as Ce,B as $e,c as n,a as e,d,p as N,q as K,F as c,r as V,t as i,l as f,G as Ne,v as de,s as ce,x as _,y as ue,z as E,o as a,n as y,_ as Ve}from"./CCjf5Io-.js";import{u as Ae}from"./C-6Qe-lq.js";import{u as Ue}from"./DTVGNZEd.js";import{L as re}from"./ChQPCk92.js";import"./42htcooJ.js";const Le={class:"scopebar"},Me={class:"flex items-center gap-2"},Se=["value"],De=["value"],Oe={class:"text-[11px] text-slate-400"},Be={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Ee={key:0,class:"alert alert-warning py-2 text-sm mb-4"},Te={class:"card"},je={class:"card-head"},ze={class:"flex gap-2 shrink-0"},Fe=["disabled"],Ge=["disabled"],He={class:"probe-bar"},Ie=["value"],Ke={key:0,class:"probe-out"},Pe={key:1,class:"probe-out bad"},Re={key:0,class:"py-10 text-center text-slate-400 text-sm"},We={class:"min-w-0"},Xe={class:"svc-prov"},qe={class:"flex flex-wrap gap-1"},Je={key:0,class:"lang"},Qe={key:1,class:"text-[11px] text-slate-400"},Ye={class:"svc-cost"},Ze={key:1,class:"text-slate-300"},et=["checked","disabled","onChange"],tt={class:"svc-acts"},st=["disabled","onClick"],lt=["disabled","onClick"],nt=["onClick"],at=["onClick"],it={class:"card mt-4"},ot={class:"card-head"},dt={class:"flex gap-2 shrink-0"},ct=["disabled"],ut=["disabled"],rt={key:0,class:"py-10 text-center text-slate-400 text-sm"},vt={class:"min-w-0"},bt={class:"svc-name"},_t={class:"svc-prov"},pt={class:"svc-cost"},mt={key:1,class:"text-slate-300"},gt=["checked","disabled","onChange"],ht={class:"svc-acts"},ft=["disabled","onClick"],kt=["disabled","onClick"],xt=["onClick"],yt=["onClick"],wt={class:"card mt-4"},Ct={class:"card-head"},$t=["disabled"],Nt={class:"mode-bar"},Vt={class:"flex items-center gap-2 cursor-pointer shrink-0"},At=["checked","disabled"],Ut={class:"mode-txt"},Lt={key:0,class:"py-10 text-center text-slate-400 text-sm"},Mt={class:"grid place-items-center"},St=["checked","disabled","onChange"],Dt={class:"min-w-0"},Ot={class:"svc-name"},Bt={key:0,title:"多媒体大模型,能识图"},Et={key:1,class:"chip chip-app ml-1"},Tt={class:"svc-prov"},jt={class:"svc-cost"},zt={key:1,class:"text-slate-300"},Ft=["checked","disabled","title","onChange"],Gt=["checked","disabled","onChange"],Ht={class:"svc-acts"},It=["onClick"],Kt=["onClick"],Pt={class:"modal-box max-w-md"},Rt={class:"font-bold text-lg"},Wt={class:"mt-4 space-y-3"},Xt={class:"form-control"},qt=["value"],Jt={key:0,class:"text-[11px] text-amber-600 mt-1"},Qt={class:"form-control"},Yt={class:"label py-1"},Zt={class:"label-text text-sm font-medium"},es={key:0,class:"flex gap-4"},ts={class:"flex items-center gap-2 cursor-pointer"},ss={class:"flex items-center gap-2 cursor-pointer"},ls={class:"modal-action"},ns=["disabled"],as={class:"modal-box max-w-sm"},is={class:"text-xs text-slate-400 mt-1"},os={class:"modal-action"},ds=["disabled"],cs=Ce({__name:"meetingsvc",setup(us){const{webApi:S,consoleApi:ve}=Ae(),{success:P,error:A}=Ue(),se=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function be(l){return se.find(t=>t.value===l)?.label??"区域"+l}const R=_([]),w=_(""),C=_(0),D=_([]),T=_([]),W=_({1:[8],2:[3],3:[5,9]}),U=_(!1),le=_(!1),X=_(!1),L=_(!1),r=_(!1),m=_("zh-CN"),j=_(null),z=_(null),g=_(1),v=ue({svc_id:"",cost_hint:0,is_default:!1,client_visible:!1}),k=ue({row_id:0,name:"",kind:1,cost_hint:0});function _e(l){return l===1?"识别":l===2?"翻译":"总结"}function ne(l){return l===1?"元/小时":l===2?"元/百万字符":"元/百万token"}function q(l){return re.find(t=>t.code===l)?.name??l}function ae(l,t){return(l||"").split(",").map(s=>Number(s.trim())).includes(t)}const F=E(()=>{const l=new Map;for(const t of T.value)l.set(t.id,t);return l});function x(l){return F.value.get(l)?.name??l}function J(l){return F.value.get(l)?.provider??"?"}function M(l){return F.value.get(l)?.languages??""}function pe(l){return ae(F.value.get(l)?.categories??"",9)}function b(l){return D.value.filter(t=>t.kind===l).sort((t,s)=>t.priority-s.priority)}function O(l){const t=W.value[String(l)]??[],s=new Set(D.value.filter(o=>o.kind===l).map(o=>o.svc_id));return T.value.filter(o=>!s.has(o.id)&&o.categories.split(",").some(u=>t.includes(Number(u.trim()))))}function G(l,t){const s=M(l);return s?s.split(",").map(o=>o.trim()).includes(t):!0}const h=E(()=>b(1).find(l=>l.enabled&&G(l.svc_id,m.value))??null),$=E(()=>b(2).find(l=>l.enabled)??null);function me(l){return h.value?.row_id!==l.row_id&&(!l.enabled||!G(l.svc_id,m.value))}function ge(l){return h.value?.row_id===l.row_id?"ok":!l.enabled||!G(l.svc_id,m.value)?"no":""}function he(l){return h.value?.row_id===l.row_id?M(l.svc_id)?`✓ 当前源语言(${q(m.value)})由它承接`:"✓ 未限定语言,先落到它(实际支持由引擎判断)":l.enabled?G(l.svc_id,m.value)?"备用:前面都跳过时接手":`不支持 ${q(m.value)}(${m.value}),跳过 → 顺延下一个`:"已停用,跳过"}const H=E(()=>b(3).find(l=>l.is_default)??null),Q=E(()=>b(3).filter(l=>l.enabled&&l.client_visible));async function fe(){try{const l=await ve("products/list",{});R.value=(l??[]).map(t=>t.name).filter(Boolean)}catch{R.value=[]}}async function p(){X.value=!0;try{const l=await S("getechoorch",{app_name:w.value,region:C.value});D.value=l?.items??[],T.value=l?.available??[],W.value=l?.kind_cats??W.value,U.value=!!l?.setting?.llm_client_choice,le.value=(!!w.value||C.value!==0)&&(D.value.length>0||U.value)}catch(l){A(l?.message??"加载失败")}finally{X.value=!1}}async function Y(l){await S("saveechoorch",{app_name:w.value,region:C.value,orch:l})}function Z(l){g.value=l,v.svc_id="",v.cost_hint=0,v.is_default=!1,v.client_visible=!1,j.value?.showModal()}async function ke(){if(v.svc_id){L.value=!0;try{const l=b(g.value),t=l.length?l[l.length-1].priority+10:10;await Y({kind:g.value,svc_id:v.svc_id,priority:t,cost_hint:Number(v.cost_hint)||0,is_default:g.value===3?v.is_default:!1,client_visible:g.value===3?v.client_visible:!1,enabled:!0}),P("已添加"),j.value?.close(),await p()}catch(l){A(l?.message??"添加失败")}finally{L.value=!1}}}async function B(l,t){r.value=!0;try{await Y({...l,...t}),await p()}catch(s){A(s?.message??"操作失败"),await p()}finally{r.value=!1}}async function ee(l){if(confirm(`从本段移除「${x(l.svc_id)}」?(不影响第三方服务配置里的服务本身)`))try{await S("delechoorch",{row_id:l.row_id}),P("已移除"),await p()}catch(t){A(t?.message??"移除失败")}}async function ie(l){r.value=!0;try{await S("reorderechoorch",{items:l.map((t,s)=>({row_id:t.row_id,priority:(s+1)*10}))}),await p()}catch(t){A(t?.message??"排序失败"),await p()}finally{r.value=!1}}function I(l,t,s){const o=[...b(l)],u=t+s;if(u<0||u>=o.length)return;const we=o[t];o[t]=o[u],o[u]=we,ie(o)}function oe(l){const t=[...b(l)].sort((s,o)=>s.enabled!==o.enabled?s.enabled?-1:1:(s.cost_hint||Number.MAX_VALUE)-(o.cost_hint||Number.MAX_VALUE));ie(t)}function te(l){k.row_id=l.row_id,k.name=x(l.svc_id),k.kind=l.kind,k.cost_hint=l.cost_hint,z.value?.showModal()}async function xe(){const l=D.value.find(t=>t.row_id===k.row_id);if(l){L.value=!0;try{await Y({...l,cost_hint:Number(k.cost_hint)||0}),P("已保存"),z.value?.close(),await p()}catch(t){A(t?.message??"保存失败")}finally{L.value=!1}}}async function ye(){r.value=!0;try{await S("saveechoorchsetting",{app_name:w.value,region:C.value,llm_client_choice:!U.value}),await p()}catch(l){A(l?.message??"保存失败"),await p()}finally{r.value=!1}}return $e(async()=>{await fe(),await p()}),(l,t)=>(a(),n("div",null,[t[44]||(t[44]=e("div",{class:"flex items-start justify-between mb-4 flex-wrap gap-3"},[e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"会议记录服务"),e("p",{class:"text-xs text-slate-400 mt-1 max-w-3xl"},[d(" 识别 / 翻译 / 总结三段,从"),e("b",null,"第三方服务配置"),d("里选已配好的服务来编排(不再单独填凭据)。 "),e("span",{class:"text-slate-500"},"先配「全局默认」作兜底,再按应用 / 区域覆盖"),d("——没配覆盖的应用自动继承全局默认。 ")])])],-1)),e("div",Le,[e("div",Me,[t[17]||(t[17]=e("span",{class:"text-xs text-slate-500 font-semibold"},"作用域",-1)),N(e("select",{"onUpdate:modelValue":t[0]||(t[0]=s=>w.value=s),class:"select select-bordered select-sm",onChange:p},[t[15]||(t[15]=e("option",{value:""},"全局默认(兜底)",-1)),(a(!0),n(c,null,V(R.value,s=>(a(),n("option",{key:s,value:s},"应用:"+i(s),9,Se))),128))],544),[[K,w.value]]),N(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>C.value=s),class:"select select-bordered select-sm",onChange:p},[t[16]||(t[16]=e("option",{value:0},"全区域",-1)),(a(),n(c,null,V(se,s=>e("option",{key:s.value,value:s.value},i(s.label),9,De)),64))],544),[[K,C.value,void 0,{number:!0}]])]),e("span",Oe,[d(i(w.value?`正在编辑「${w.value}」`:"正在编辑全局默认")+i(C.value?` · ${be(C.value)}`:" · 全区域")+" ",1),le.value?(a(),n(c,{key:0},[d("(覆盖全局默认)")],64)):f("",!0)])]),X.value?(a(),n("div",Be,[...t[18]||(t[18]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):(a(),n(c,{key:1},[T.value.length?f("",!0):(a(),n("div",Ee,[...t[19]||(t[19]=[e("span",null,[d(" 该作用域没有可选服务。先去"),e("b",null,"第三方服务配置"),d("添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 ")],-1)])])),e("div",Te,[e("div",je,[t[20]||(t[20]=e("div",null,[e("div",{class:"card-title"},"识别(录音文件转写)"),e("div",{class:"card-desc"},[d("按顺序找"),e("b",null,"第一个「已启用 + 支持源语言」"),d('的服务,不支持则跳到下一个。把便宜的排前面即"优先用性价比高的"。')])],-1)),e("div",ze,[e("button",{class:"btn btn-xs",disabled:b(1).length<2||r.value,onClick:t[2]||(t[2]=s=>oe(1))},"⇅ 按参考单价重排",8,Fe),e("button",{class:"btn btn-primary btn-xs text-white",disabled:!O(1).length,onClick:t[3]||(t[3]=s=>Z(1))},"+ 添加识别服务",8,Ge)])]),e("div",He,[t[21]||(t[21]=e("span",{class:"text-xs text-slate-500 font-semibold"},"选路预览",-1)),N(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>m.value=s),class:"select select-bordered select-xs w-44 text-xs"},[(a(!0),n(c,null,V(Ne(re),s=>(a(),n("option",{key:s.code,value:s.code},i(s.code)+" · "+i(s.name),9,Ie))),128))],512),[[K,m.value]]),h.value?(a(),n("span",Ke,[d("命中 "+i(x(h.value.svc_id)),1),h.value.cost_hint?(a(),n(c,{key:0},[d(" · ¥"+i(h.value.cost_hint)+"/时",1)],64)):f("",!0)])):(a(),n("span",Pe,"无可用服务 —— "+i(q(m.value))+" 会转写失败",1))]),b(1).length?f("",!0):(a(),n("div",Re,"暂无识别服务,点右上「+ 添加识别服务」")),(a(!0),n(c,null,V(b(1),(s,o)=>(a(),n("div",{key:s.row_id,class:y(["svc asr",{hit:h.value&&h.value.row_id===s.row_id,off:!s.enabled}])},[e("div",{class:y(["svc-rank",{hit:h.value&&h.value.row_id===s.row_id}])},i(o+1),3),e("div",We,[e("div",{class:y(["svc-name",{skip:me(s)}])},i(x(s.svc_id)),3),e("div",Xe,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",qe,[M(s.svc_id)?(a(),n(c,{key:0},[(a(!0),n(c,null,V(M(s.svc_id).split(",").slice(0,5),u=>(a(),n("span",{key:u,class:y(["lang",{on:u===m.value}])},i(u),3))),128)),M(s.svc_id).split(",").length>5?(a(),n("span",Je,"+"+i(M(s.svc_id).split(",").length-5),1)):f("",!0)],64)):(a(),n("span",Qe,"未限定"))]),e("div",Ye,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[22]||(t[22]=e("small",null," /时",-1))],64)):(a(),n("span",Ze,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:u=>B(s,{enabled:!s.enabled})},null,40,et)]),e("div",tt,[e("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>I(1,o,-1)},"↑",8,st),e("button",{class:"arrow",disabled:o===b(1).length-1||r.value,"aria-label":"下移",onClick:u=>I(1,o,1)},"↓",8,lt),e("button",{class:"btn btn-ghost btn-xs",onClick:u=>te(s)},"单价",8,nt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ee(s)},"移除",8,at)]),e("div",{class:y(["svc-why",ge(s)])},i(he(s)),3)],2))),128))]),e("div",it,[e("div",ot,[t[23]||(t[23]=e("div",null,[e("div",{class:"card-title"},"翻译"),e("div",{class:"card-desc"},[d("按顺序取"),e("b",null,"第一个已启用"),d("的服务;调用失败自动回退下一个。")])],-1)),e("div",dt,[e("button",{class:"btn btn-xs",disabled:b(2).length<2||r.value,onClick:t[5]||(t[5]=s=>oe(2))},"⇅ 按参考单价重排",8,ct),e("button",{class:"btn btn-primary btn-xs text-white",disabled:!O(2).length,onClick:t[6]||(t[6]=s=>Z(2))},"+ 添加翻译服务",8,ut)])]),b(2).length?f("",!0):(a(),n("div",rt,"暂无翻译服务")),(a(!0),n(c,null,V(b(2),(s,o)=>(a(),n("div",{key:s.row_id,class:y(["svc mt",{hit:$.value&&$.value.row_id===s.row_id,off:!s.enabled}])},[e("div",{class:y(["svc-rank",{hit:$.value&&$.value.row_id===s.row_id}])},i(o+1),3),e("div",vt,[e("div",bt,i(x(s.svc_id)),1),e("div",_t,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",pt,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[24]||(t[24]=e("small",null," /百万字符",-1))],64)):(a(),n("span",mt,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:u=>B(s,{enabled:!s.enabled})},null,40,gt)]),e("div",ht,[e("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>I(2,o,-1)},"↑",8,ft),e("button",{class:"arrow",disabled:o===b(2).length-1||r.value,"aria-label":"下移",onClick:u=>I(2,o,1)},"↓",8,kt),e("button",{class:"btn btn-ghost btn-xs",onClick:u=>te(s)},"单价",8,xt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ee(s)},"移除",8,yt)]),e("div",{class:y(["svc-why",s.enabled?$.value&&$.value.row_id===s.row_id?"ok":"":"no"])},[s.enabled?$.value&&$.value.row_id===s.row_id?(a(),n(c,{key:1},[d("✓ 默认由它承接,失败顺延")],64)):(a(),n(c,{key:2},[d("备用:前面失败时接手")],64)):(a(),n(c,{key:0},[d("已停用,跳过")],64))],2)],2))),128))]),e("div",wt,[e("div",Ct,[t[25]||(t[25]=e("div",null,[e("div",{class:"card-title"},"总结(大模型)"),e("div",{class:"card-desc"},[d("后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是"),e("b",null,"多媒体大模型"),d(",能识别会议里的图片。")])],-1)),e("button",{class:"btn btn-primary btn-xs text-white shrink-0",disabled:!O(3).length,onClick:t[7]||(t[7]=s=>Z(3))},"+ 添加模型",8,$t)]),e("div",Nt,[e("label",Vt,[e("input",{type:"checkbox",class:"toggle toggle-primary toggle-sm",checked:U.value,disabled:r.value,onChange:ye},null,40,At),t[26]||(t[26]=e("span",{class:"text-sm font-semibold text-slate-700"},"允许客户端指定模型",-1))]),e("p",Ut,[U.value?(a(),n(c,{key:0},[t[27]||(t[27]=d(" 前端能选 ",-1)),e("b",null,i(Q.value.length),1),t[28]||(t[28]=d(" 个模型",-1)),Q.value.length?(a(),n(c,{key:0},[d(":"+i(Q.value.map(s=>x(s.svc_id)).join("、")),1)],64)):(a(),n(c,{key:1},[d("(一个都没勾「前端可见」,等同强制默认)")],64)),t[29]||(t[29]=d("。不传则用默认 ",-1)),e("b",null,i(H.value?x(H.value.svc_id):"—"),1),t[30]||(t[30]=d("。 ",-1))],64)):(a(),n(c,{key:1},[t[31]||(t[31]=d(" 前端不下发模型列表,一律走默认模型 ",-1)),e("b",null,i(H.value?x(H.value.svc_id):"—"),1),t[32]||(t[32]=d(";客户端传了也忽略。 ",-1))],64))])]),b(3).length?f("",!0):(a(),n("div",Lt,"暂无模型")),(a(!0),n(c,null,V(b(3),s=>(a(),n("div",{key:s.row_id,class:y(["svc llm",{isdefault:s.is_default,off:!s.enabled}])},[e("div",Mt,[e("input",{type:"radio",name:"llmdef",class:"radio radio-primary radio-xs",checked:s.is_default,disabled:!s.enabled||r.value,onChange:o=>B(s,{is_default:!0})},null,40,St)]),e("div",Dt,[e("div",Ot,[d(i(x(s.svc_id))+" ",1),pe(s.svc_id)?(a(),n("span",Bt,"🖼")):f("",!0),s.is_default?(a(),n("span",Et,"默认")):f("",!0)]),e("div",Tt,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",jt,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[33]||(t[33]=e("small",null," /百万token",-1))],64)):(a(),n("span",zt,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.client_visible,disabled:!U.value||!s.enabled||r.value,title:U.value?"":"先打开「允许客户端指定模型」",onChange:o=>B(s,{client_visible:!s.client_visible})},null,40,Ft)]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:o=>B(s,{enabled:!s.enabled})},null,40,Gt)]),e("div",Ht,[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>te(s)},"单价",8,It),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>ee(s)},"移除",8,Kt)])],2))),128)),t[34]||(t[34]=e("div",{class:"col-h llm-h"},[e("div"),e("div"),e("div",null,"参考单价"),e("div",null,"前端可见"),e("div",null,"启用"),e("div")],-1))])],64)),e("dialog",{ref_key:"addDlg",ref:j,class:"modal"},[e("div",Pt,[e("h3",Rt,"添加"+i(_e(g.value))+"服务",1),t[40]||(t[40]=e("p",{class:"text-xs text-slate-400 mt-1"},"从第三方服务配置里选一个已配好的服务加入本段编排。",-1)),e("div",Wt,[e("div",Xt,[t[36]||(t[36]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"服务")],-1)),N(e("select",{"onUpdate:modelValue":t[8]||(t[8]=s=>v.svc_id=s),class:"select select-bordered select-sm"},[t[35]||(t[35]=e("option",{value:""},"请选择服务…",-1)),(a(!0),n(c,null,V(O(g.value),s=>(a(),n("option",{key:s.id,value:s.id},i(s.name)+i(g.value===3&&ae(s.categories,9)?" 🖼":"")+"("+i(s.provider||s.id)+") ",9,qt))),128))],512),[[K,v.svc_id]]),O(g.value).length?f("",!0):(a(),n("span",Jt,"没有可添加的服务了(都加过了,或服务池里没这类服务)。"))]),e("div",Qt,[e("label",Yt,[e("span",Zt,"参考单价("+i(ne(g.value))+",可空)",1)]),N(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>v.cost_hint=s),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm font-mono text-xs",placeholder:"0"},null,512),[[de,v.cost_hint,void 0,{number:!0}]]),t[37]||(t[37]=e("span",{class:"text-[11px] text-slate-400 mt-1"},"仅用于排序/展示,填你的实付价。",-1))]),g.value===3?(a(),n("div",es,[e("label",ts,[N(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>v.is_default=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[ce,v.is_default]]),t[38]||(t[38]=e("span",{class:"text-sm"},"设为默认",-1))]),e("label",ss,[N(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>v.client_visible=s),type:"checkbox",class:"toggle toggle-success toggle-sm"},null,512),[[ce,v.client_visible]]),t[39]||(t[39]=e("span",{class:"text-sm"},"前端可见",-1))])])):f("",!0)]),e("div",ls,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[12]||(t[12]=s=>j.value?.close())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:!v.svc_id||L.value,onClick:ke},i(L.value?"添加中…":"添加"),9,ns)])]),t[41]||(t[41]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512),e("dialog",{ref_key:"costDlg",ref:z,class:"modal"},[e("div",as,[t[42]||(t[42]=e("h3",{class:"font-bold text-lg"},"参考单价",-1)),e("p",is,i(k.name)+"("+i(ne(k.kind))+")",1),N(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>k.cost_hint=s),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm w-full font-mono text-xs mt-3",placeholder:"0"},null,512),[[de,k.cost_hint,void 0,{number:!0}]]),e("div",os,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[14]||(t[14]=s=>z.value?.close())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:L.value,onClick:xe},"保存",8,ds)])]),t[43]||(t[43]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),ms=Ve(cs,[["__scopeId","data-v-4edbf244"]]);export{ms as default}; +import{g as Ce,B as $e,c as n,a as e,d,p as N,q as K,F as c,r as V,t as i,l as f,G as Ne,v as de,s as ce,x as _,y as ue,z as E,o as a,n as y,_ as Ve}from"./Dv-LAQo6.js";import{u as Ae}from"./mz7Huk5H.js";import{u as Ue}from"./D7SVvy69.js";import{L as re}from"./ChQPCk92.js";import"./D0vUT4uH.js";const Le={class:"scopebar"},Me={class:"flex items-center gap-2"},Se=["value"],De=["value"],Oe={class:"text-[11px] text-slate-400"},Be={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Ee={key:0,class:"alert alert-warning py-2 text-sm mb-4"},Te={class:"card"},je={class:"card-head"},ze={class:"flex gap-2 shrink-0"},Fe=["disabled"],Ge=["disabled"],He={class:"probe-bar"},Ie=["value"],Ke={key:0,class:"probe-out"},Pe={key:1,class:"probe-out bad"},Re={key:0,class:"py-10 text-center text-slate-400 text-sm"},We={class:"min-w-0"},Xe={class:"svc-prov"},qe={class:"flex flex-wrap gap-1"},Je={key:0,class:"lang"},Qe={key:1,class:"text-[11px] text-slate-400"},Ye={class:"svc-cost"},Ze={key:1,class:"text-slate-300"},et=["checked","disabled","onChange"],tt={class:"svc-acts"},st=["disabled","onClick"],lt=["disabled","onClick"],nt=["onClick"],at=["onClick"],it={class:"card mt-4"},ot={class:"card-head"},dt={class:"flex gap-2 shrink-0"},ct=["disabled"],ut=["disabled"],rt={key:0,class:"py-10 text-center text-slate-400 text-sm"},vt={class:"min-w-0"},bt={class:"svc-name"},_t={class:"svc-prov"},pt={class:"svc-cost"},mt={key:1,class:"text-slate-300"},gt=["checked","disabled","onChange"],ht={class:"svc-acts"},ft=["disabled","onClick"],kt=["disabled","onClick"],xt=["onClick"],yt=["onClick"],wt={class:"card mt-4"},Ct={class:"card-head"},$t=["disabled"],Nt={class:"mode-bar"},Vt={class:"flex items-center gap-2 cursor-pointer shrink-0"},At=["checked","disabled"],Ut={class:"mode-txt"},Lt={key:0,class:"py-10 text-center text-slate-400 text-sm"},Mt={class:"grid place-items-center"},St=["checked","disabled","onChange"],Dt={class:"min-w-0"},Ot={class:"svc-name"},Bt={key:0,title:"多媒体大模型,能识图"},Et={key:1,class:"chip chip-app ml-1"},Tt={class:"svc-prov"},jt={class:"svc-cost"},zt={key:1,class:"text-slate-300"},Ft=["checked","disabled","title","onChange"],Gt=["checked","disabled","onChange"],Ht={class:"svc-acts"},It=["onClick"],Kt=["onClick"],Pt={class:"modal-box max-w-md"},Rt={class:"font-bold text-lg"},Wt={class:"mt-4 space-y-3"},Xt={class:"form-control"},qt=["value"],Jt={key:0,class:"text-[11px] text-amber-600 mt-1"},Qt={class:"form-control"},Yt={class:"label py-1"},Zt={class:"label-text text-sm font-medium"},es={key:0,class:"flex gap-4"},ts={class:"flex items-center gap-2 cursor-pointer"},ss={class:"flex items-center gap-2 cursor-pointer"},ls={class:"modal-action"},ns=["disabled"],as={class:"modal-box max-w-sm"},is={class:"text-xs text-slate-400 mt-1"},os={class:"modal-action"},ds=["disabled"],cs=Ce({__name:"meetingsvc",setup(us){const{webApi:S,consoleApi:ve}=Ae(),{success:P,error:A}=Ue(),se=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function be(l){return se.find(t=>t.value===l)?.label??"区域"+l}const R=_([]),w=_(""),C=_(0),D=_([]),T=_([]),W=_({1:[8],2:[3],3:[5,9]}),U=_(!1),le=_(!1),X=_(!1),L=_(!1),r=_(!1),m=_("zh-CN"),j=_(null),z=_(null),g=_(1),v=ue({svc_id:"",cost_hint:0,is_default:!1,client_visible:!1}),k=ue({row_id:0,name:"",kind:1,cost_hint:0});function _e(l){return l===1?"识别":l===2?"翻译":"总结"}function ne(l){return l===1?"元/小时":l===2?"元/百万字符":"元/百万token"}function q(l){return re.find(t=>t.code===l)?.name??l}function ae(l,t){return(l||"").split(",").map(s=>Number(s.trim())).includes(t)}const F=E(()=>{const l=new Map;for(const t of T.value)l.set(t.id,t);return l});function x(l){return F.value.get(l)?.name??l}function J(l){return F.value.get(l)?.provider??"?"}function M(l){return F.value.get(l)?.languages??""}function pe(l){return ae(F.value.get(l)?.categories??"",9)}function b(l){return D.value.filter(t=>t.kind===l).sort((t,s)=>t.priority-s.priority)}function O(l){const t=W.value[String(l)]??[],s=new Set(D.value.filter(o=>o.kind===l).map(o=>o.svc_id));return T.value.filter(o=>!s.has(o.id)&&o.categories.split(",").some(u=>t.includes(Number(u.trim()))))}function G(l,t){const s=M(l);return s?s.split(",").map(o=>o.trim()).includes(t):!0}const h=E(()=>b(1).find(l=>l.enabled&&G(l.svc_id,m.value))??null),$=E(()=>b(2).find(l=>l.enabled)??null);function me(l){return h.value?.row_id!==l.row_id&&(!l.enabled||!G(l.svc_id,m.value))}function ge(l){return h.value?.row_id===l.row_id?"ok":!l.enabled||!G(l.svc_id,m.value)?"no":""}function he(l){return h.value?.row_id===l.row_id?M(l.svc_id)?`✓ 当前源语言(${q(m.value)})由它承接`:"✓ 未限定语言,先落到它(实际支持由引擎判断)":l.enabled?G(l.svc_id,m.value)?"备用:前面都跳过时接手":`不支持 ${q(m.value)}(${m.value}),跳过 → 顺延下一个`:"已停用,跳过"}const H=E(()=>b(3).find(l=>l.is_default)??null),Q=E(()=>b(3).filter(l=>l.enabled&&l.client_visible));async function fe(){try{const l=await ve("products/list",{});R.value=(l??[]).map(t=>t.name).filter(Boolean)}catch{R.value=[]}}async function p(){X.value=!0;try{const l=await S("getechoorch",{app_name:w.value,region:C.value});D.value=l?.items??[],T.value=l?.available??[],W.value=l?.kind_cats??W.value,U.value=!!l?.setting?.llm_client_choice,le.value=(!!w.value||C.value!==0)&&(D.value.length>0||U.value)}catch(l){A(l?.message??"加载失败")}finally{X.value=!1}}async function Y(l){await S("saveechoorch",{app_name:w.value,region:C.value,orch:l})}function Z(l){g.value=l,v.svc_id="",v.cost_hint=0,v.is_default=!1,v.client_visible=!1,j.value?.showModal()}async function ke(){if(v.svc_id){L.value=!0;try{const l=b(g.value),t=l.length?l[l.length-1].priority+10:10;await Y({kind:g.value,svc_id:v.svc_id,priority:t,cost_hint:Number(v.cost_hint)||0,is_default:g.value===3?v.is_default:!1,client_visible:g.value===3?v.client_visible:!1,enabled:!0}),P("已添加"),j.value?.close(),await p()}catch(l){A(l?.message??"添加失败")}finally{L.value=!1}}}async function B(l,t){r.value=!0;try{await Y({...l,...t}),await p()}catch(s){A(s?.message??"操作失败"),await p()}finally{r.value=!1}}async function ee(l){if(confirm(`从本段移除「${x(l.svc_id)}」?(不影响第三方服务配置里的服务本身)`))try{await S("delechoorch",{row_id:l.row_id}),P("已移除"),await p()}catch(t){A(t?.message??"移除失败")}}async function ie(l){r.value=!0;try{await S("reorderechoorch",{items:l.map((t,s)=>({row_id:t.row_id,priority:(s+1)*10}))}),await p()}catch(t){A(t?.message??"排序失败"),await p()}finally{r.value=!1}}function I(l,t,s){const o=[...b(l)],u=t+s;if(u<0||u>=o.length)return;const we=o[t];o[t]=o[u],o[u]=we,ie(o)}function oe(l){const t=[...b(l)].sort((s,o)=>s.enabled!==o.enabled?s.enabled?-1:1:(s.cost_hint||Number.MAX_VALUE)-(o.cost_hint||Number.MAX_VALUE));ie(t)}function te(l){k.row_id=l.row_id,k.name=x(l.svc_id),k.kind=l.kind,k.cost_hint=l.cost_hint,z.value?.showModal()}async function xe(){const l=D.value.find(t=>t.row_id===k.row_id);if(l){L.value=!0;try{await Y({...l,cost_hint:Number(k.cost_hint)||0}),P("已保存"),z.value?.close(),await p()}catch(t){A(t?.message??"保存失败")}finally{L.value=!1}}}async function ye(){r.value=!0;try{await S("saveechoorchsetting",{app_name:w.value,region:C.value,llm_client_choice:!U.value}),await p()}catch(l){A(l?.message??"保存失败"),await p()}finally{r.value=!1}}return $e(async()=>{await fe(),await p()}),(l,t)=>(a(),n("div",null,[t[44]||(t[44]=e("div",{class:"flex items-start justify-between mb-4 flex-wrap gap-3"},[e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"会议记录服务"),e("p",{class:"text-xs text-slate-400 mt-1 max-w-3xl"},[d(" 识别 / 翻译 / 总结三段,从"),e("b",null,"第三方服务配置"),d("里选已配好的服务来编排(不再单独填凭据)。 "),e("span",{class:"text-slate-500"},"先配「全局默认」作兜底,再按应用 / 区域覆盖"),d("——没配覆盖的应用自动继承全局默认。 ")])])],-1)),e("div",Le,[e("div",Me,[t[17]||(t[17]=e("span",{class:"text-xs text-slate-500 font-semibold"},"作用域",-1)),N(e("select",{"onUpdate:modelValue":t[0]||(t[0]=s=>w.value=s),class:"select select-bordered select-sm",onChange:p},[t[15]||(t[15]=e("option",{value:""},"全局默认(兜底)",-1)),(a(!0),n(c,null,V(R.value,s=>(a(),n("option",{key:s,value:s},"应用:"+i(s),9,Se))),128))],544),[[K,w.value]]),N(e("select",{"onUpdate:modelValue":t[1]||(t[1]=s=>C.value=s),class:"select select-bordered select-sm",onChange:p},[t[16]||(t[16]=e("option",{value:0},"全区域",-1)),(a(),n(c,null,V(se,s=>e("option",{key:s.value,value:s.value},i(s.label),9,De)),64))],544),[[K,C.value,void 0,{number:!0}]])]),e("span",Oe,[d(i(w.value?`正在编辑「${w.value}」`:"正在编辑全局默认")+i(C.value?` · ${be(C.value)}`:" · 全区域")+" ",1),le.value?(a(),n(c,{key:0},[d("(覆盖全局默认)")],64)):f("",!0)])]),X.value?(a(),n("div",Be,[...t[18]||(t[18]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):(a(),n(c,{key:1},[T.value.length?f("",!0):(a(),n("div",Ee,[...t[19]||(t[19]=[e("span",null,[d(" 该作用域没有可选服务。先去"),e("b",null,"第三方服务配置"),d("添加「录音文件识别 / 机器翻译 / 文本或多媒体大模型」类的服务 (全局默认或该应用作用域),这里才能选。 ")],-1)])])),e("div",Te,[e("div",je,[t[20]||(t[20]=e("div",null,[e("div",{class:"card-title"},"识别(录音文件转写)"),e("div",{class:"card-desc"},[d("按顺序找"),e("b",null,"第一个「已启用 + 支持源语言」"),d('的服务,不支持则跳到下一个。把便宜的排前面即"优先用性价比高的"。')])],-1)),e("div",ze,[e("button",{class:"btn btn-xs",disabled:b(1).length<2||r.value,onClick:t[2]||(t[2]=s=>oe(1))},"⇅ 按参考单价重排",8,Fe),e("button",{class:"btn btn-primary btn-xs text-white",disabled:!O(1).length,onClick:t[3]||(t[3]=s=>Z(1))},"+ 添加识别服务",8,Ge)])]),e("div",He,[t[21]||(t[21]=e("span",{class:"text-xs text-slate-500 font-semibold"},"选路预览",-1)),N(e("select",{"onUpdate:modelValue":t[4]||(t[4]=s=>m.value=s),class:"select select-bordered select-xs w-44 text-xs"},[(a(!0),n(c,null,V(Ne(re),s=>(a(),n("option",{key:s.code,value:s.code},i(s.code)+" · "+i(s.name),9,Ie))),128))],512),[[K,m.value]]),h.value?(a(),n("span",Ke,[d("命中 "+i(x(h.value.svc_id)),1),h.value.cost_hint?(a(),n(c,{key:0},[d(" · ¥"+i(h.value.cost_hint)+"/时",1)],64)):f("",!0)])):(a(),n("span",Pe,"无可用服务 —— "+i(q(m.value))+" 会转写失败",1))]),b(1).length?f("",!0):(a(),n("div",Re,"暂无识别服务,点右上「+ 添加识别服务」")),(a(!0),n(c,null,V(b(1),(s,o)=>(a(),n("div",{key:s.row_id,class:y(["svc asr",{hit:h.value&&h.value.row_id===s.row_id,off:!s.enabled}])},[e("div",{class:y(["svc-rank",{hit:h.value&&h.value.row_id===s.row_id}])},i(o+1),3),e("div",We,[e("div",{class:y(["svc-name",{skip:me(s)}])},i(x(s.svc_id)),3),e("div",Xe,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",qe,[M(s.svc_id)?(a(),n(c,{key:0},[(a(!0),n(c,null,V(M(s.svc_id).split(",").slice(0,5),u=>(a(),n("span",{key:u,class:y(["lang",{on:u===m.value}])},i(u),3))),128)),M(s.svc_id).split(",").length>5?(a(),n("span",Je,"+"+i(M(s.svc_id).split(",").length-5),1)):f("",!0)],64)):(a(),n("span",Qe,"未限定"))]),e("div",Ye,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[22]||(t[22]=e("small",null," /时",-1))],64)):(a(),n("span",Ze,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:u=>B(s,{enabled:!s.enabled})},null,40,et)]),e("div",tt,[e("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>I(1,o,-1)},"↑",8,st),e("button",{class:"arrow",disabled:o===b(1).length-1||r.value,"aria-label":"下移",onClick:u=>I(1,o,1)},"↓",8,lt),e("button",{class:"btn btn-ghost btn-xs",onClick:u=>te(s)},"单价",8,nt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ee(s)},"移除",8,at)]),e("div",{class:y(["svc-why",ge(s)])},i(he(s)),3)],2))),128))]),e("div",it,[e("div",ot,[t[23]||(t[23]=e("div",null,[e("div",{class:"card-title"},"翻译"),e("div",{class:"card-desc"},[d("按顺序取"),e("b",null,"第一个已启用"),d("的服务;调用失败自动回退下一个。")])],-1)),e("div",dt,[e("button",{class:"btn btn-xs",disabled:b(2).length<2||r.value,onClick:t[5]||(t[5]=s=>oe(2))},"⇅ 按参考单价重排",8,ct),e("button",{class:"btn btn-primary btn-xs text-white",disabled:!O(2).length,onClick:t[6]||(t[6]=s=>Z(2))},"+ 添加翻译服务",8,ut)])]),b(2).length?f("",!0):(a(),n("div",rt,"暂无翻译服务")),(a(!0),n(c,null,V(b(2),(s,o)=>(a(),n("div",{key:s.row_id,class:y(["svc mt",{hit:$.value&&$.value.row_id===s.row_id,off:!s.enabled}])},[e("div",{class:y(["svc-rank",{hit:$.value&&$.value.row_id===s.row_id}])},i(o+1),3),e("div",vt,[e("div",bt,i(x(s.svc_id)),1),e("div",_t,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",pt,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[24]||(t[24]=e("small",null," /百万字符",-1))],64)):(a(),n("span",mt,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:u=>B(s,{enabled:!s.enabled})},null,40,gt)]),e("div",ht,[e("button",{class:"arrow",disabled:o===0||r.value,"aria-label":"上移",onClick:u=>I(2,o,-1)},"↑",8,ft),e("button",{class:"arrow",disabled:o===b(2).length-1||r.value,"aria-label":"下移",onClick:u=>I(2,o,1)},"↓",8,kt),e("button",{class:"btn btn-ghost btn-xs",onClick:u=>te(s)},"单价",8,xt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>ee(s)},"移除",8,yt)]),e("div",{class:y(["svc-why",s.enabled?$.value&&$.value.row_id===s.row_id?"ok":"":"no"])},[s.enabled?$.value&&$.value.row_id===s.row_id?(a(),n(c,{key:1},[d("✓ 默认由它承接,失败顺延")],64)):(a(),n(c,{key:2},[d("备用:前面失败时接手")],64)):(a(),n(c,{key:0},[d("已停用,跳过")],64))],2)],2))),128))]),e("div",wt,[e("div",Ct,[t[25]||(t[25]=e("div",null,[e("div",{class:"card-title"},"总结(大模型)"),e("div",{class:"card-desc"},[d("后台指定默认模型,客户端可在允许范围内自选。带 🖼 的是"),e("b",null,"多媒体大模型"),d(",能识别会议里的图片。")])],-1)),e("button",{class:"btn btn-primary btn-xs text-white shrink-0",disabled:!O(3).length,onClick:t[7]||(t[7]=s=>Z(3))},"+ 添加模型",8,$t)]),e("div",Nt,[e("label",Vt,[e("input",{type:"checkbox",class:"toggle toggle-primary toggle-sm",checked:U.value,disabled:r.value,onChange:ye},null,40,At),t[26]||(t[26]=e("span",{class:"text-sm font-semibold text-slate-700"},"允许客户端指定模型",-1))]),e("p",Ut,[U.value?(a(),n(c,{key:0},[t[27]||(t[27]=d(" 前端能选 ",-1)),e("b",null,i(Q.value.length),1),t[28]||(t[28]=d(" 个模型",-1)),Q.value.length?(a(),n(c,{key:0},[d(":"+i(Q.value.map(s=>x(s.svc_id)).join("、")),1)],64)):(a(),n(c,{key:1},[d("(一个都没勾「前端可见」,等同强制默认)")],64)),t[29]||(t[29]=d("。不传则用默认 ",-1)),e("b",null,i(H.value?x(H.value.svc_id):"—"),1),t[30]||(t[30]=d("。 ",-1))],64)):(a(),n(c,{key:1},[t[31]||(t[31]=d(" 前端不下发模型列表,一律走默认模型 ",-1)),e("b",null,i(H.value?x(H.value.svc_id):"—"),1),t[32]||(t[32]=d(";客户端传了也忽略。 ",-1))],64))])]),b(3).length?f("",!0):(a(),n("div",Lt,"暂无模型")),(a(!0),n(c,null,V(b(3),s=>(a(),n("div",{key:s.row_id,class:y(["svc llm",{isdefault:s.is_default,off:!s.enabled}])},[e("div",Mt,[e("input",{type:"radio",name:"llmdef",class:"radio radio-primary radio-xs",checked:s.is_default,disabled:!s.enabled||r.value,onChange:o=>B(s,{is_default:!0})},null,40,St)]),e("div",Dt,[e("div",Ot,[d(i(x(s.svc_id))+" ",1),pe(s.svc_id)?(a(),n("span",Bt,"🖼")):f("",!0),s.is_default?(a(),n("span",Et,"默认")):f("",!0)]),e("div",Tt,i(J(s.svc_id))+" · "+i(s.svc_id),1)]),e("div",jt,[s.cost_hint?(a(),n(c,{key:0},[d("¥"+i(s.cost_hint),1),t[33]||(t[33]=e("small",null," /百万token",-1))],64)):(a(),n("span",zt,"—"))]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.client_visible,disabled:!U.value||!s.enabled||r.value,title:U.value?"":"先打开「允许客户端指定模型」",onChange:o=>B(s,{client_visible:!s.client_visible})},null,40,Ft)]),e("div",null,[e("input",{type:"checkbox",class:"toggle toggle-success toggle-sm",checked:s.enabled,disabled:r.value,onChange:o=>B(s,{enabled:!s.enabled})},null,40,Gt)]),e("div",Ht,[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>te(s)},"单价",8,It),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>ee(s)},"移除",8,Kt)])],2))),128)),t[34]||(t[34]=e("div",{class:"col-h llm-h"},[e("div"),e("div"),e("div",null,"参考单价"),e("div",null,"前端可见"),e("div",null,"启用"),e("div")],-1))])],64)),e("dialog",{ref_key:"addDlg",ref:j,class:"modal"},[e("div",Pt,[e("h3",Rt,"添加"+i(_e(g.value))+"服务",1),t[40]||(t[40]=e("p",{class:"text-xs text-slate-400 mt-1"},"从第三方服务配置里选一个已配好的服务加入本段编排。",-1)),e("div",Wt,[e("div",Xt,[t[36]||(t[36]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"服务")],-1)),N(e("select",{"onUpdate:modelValue":t[8]||(t[8]=s=>v.svc_id=s),class:"select select-bordered select-sm"},[t[35]||(t[35]=e("option",{value:""},"请选择服务…",-1)),(a(!0),n(c,null,V(O(g.value),s=>(a(),n("option",{key:s.id,value:s.id},i(s.name)+i(g.value===3&&ae(s.categories,9)?" 🖼":"")+"("+i(s.provider||s.id)+") ",9,qt))),128))],512),[[K,v.svc_id]]),O(g.value).length?f("",!0):(a(),n("span",Jt,"没有可添加的服务了(都加过了,或服务池里没这类服务)。"))]),e("div",Qt,[e("label",Yt,[e("span",Zt,"参考单价("+i(ne(g.value))+",可空)",1)]),N(e("input",{"onUpdate:modelValue":t[9]||(t[9]=s=>v.cost_hint=s),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm font-mono text-xs",placeholder:"0"},null,512),[[de,v.cost_hint,void 0,{number:!0}]]),t[37]||(t[37]=e("span",{class:"text-[11px] text-slate-400 mt-1"},"仅用于排序/展示,填你的实付价。",-1))]),g.value===3?(a(),n("div",es,[e("label",ts,[N(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>v.is_default=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[ce,v.is_default]]),t[38]||(t[38]=e("span",{class:"text-sm"},"设为默认",-1))]),e("label",ss,[N(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>v.client_visible=s),type:"checkbox",class:"toggle toggle-success toggle-sm"},null,512),[[ce,v.client_visible]]),t[39]||(t[39]=e("span",{class:"text-sm"},"前端可见",-1))])])):f("",!0)]),e("div",ls,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[12]||(t[12]=s=>j.value?.close())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:!v.svc_id||L.value,onClick:ke},i(L.value?"添加中…":"添加"),9,ns)])]),t[41]||(t[41]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512),e("dialog",{ref_key:"costDlg",ref:z,class:"modal"},[e("div",as,[t[42]||(t[42]=e("h3",{class:"font-bold text-lg"},"参考单价",-1)),e("p",is,i(k.name)+"("+i(ne(k.kind))+")",1),N(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>k.cost_hint=s),type:"number",step:"0.01",min:"0",class:"input input-bordered input-sm w-full font-mono text-xs mt-3",placeholder:"0"},null,512),[[de,k.cost_hint,void 0,{number:!0}]]),e("div",os,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[14]||(t[14]=s=>z.value?.close())},"取消"),e("button",{class:"btn btn-primary btn-sm text-white",disabled:L.value,onClick:xe},"保存",8,ds)])]),t[43]||(t[43]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),ms=Ve(cs,[["__scopeId","data-v-4edbf244"]]);export{ms as default}; diff --git a/apps/admin/.output/public/_nuxt/BPgWG32Q.js b/apps/admin/.output/public/_nuxt/BPgWG32Q.js new file mode 100644 index 00000000..91140550 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/BPgWG32Q.js @@ -0,0 +1 @@ +import{_ as Xe}from"./CZJGstC3.js";import{g as Ye,B as Ze,c as a,l as h,a as e,d as M,p as c,q as I,F as b,r as k,t as d,m as Ve,L as D,v as y,s as L,n as A,H as Ue,x as m,y as Ce,z as q,o,I as z,C as Z,_ as et}from"./Dv-LAQo6.js";import{u as tt}from"./mz7Huk5H.js";import{u as lt}from"./D7SVvy69.js";import"./ChQPCk92.js";import"./D0vUT4uH.js";const st={key:0,class:"mb-4 rounded-lg px-4 py-3 text-sm",style:{background:"#fffbeb",border:"1px solid #fde68a",color:"#92400e"}},ot={class:"flex items-center justify-between mb-5"},nt={class:"flex items-center gap-3"},at=["value"],it=["value"],dt={key:1,class:"rounded-lg px-3 py-2 mb-4 text-xs",style:{background:"#fefce8",border:"1px solid #fde047",color:"#854d0e"}},ut={key:2,class:"flex flex-col gap-6"},rt={class:"flex items-center gap-2 mb-3"},ct={class:"text-sm font-semibold text-slate-700"},pt={class:"text-xs text-slate-400"},vt={class:"svc-grid"},bt=["onClick"],mt={class:"flex items-start gap-3"},xt={style:{"min-width":"0",flex:"1"}},yt={class:"flex items-center gap-2"},_t={class:"font-semibold text-slate-800 text-sm truncate"},ht=["title"],kt={class:"text-xs text-slate-500 mt-2 line-clamp-2",style:{"min-height":"32px"}},gt={class:"flex flex-wrap items-center gap-1 mt-2"},ft={key:0,class:"provider-chip"},wt={class:"field-count"},Vt={key:1,class:"lock-badge"},Ut=["onClick"],Ct={class:"text-xs text-slate-400 mt-1"},St={key:3,class:"bg-white rounded-2xl border border-slate-100 shadow-sm text-center text-slate-300 py-20"},Tt={class:"svc-box"},$t={class:"flex items-center justify-between mb-5"},Mt={class:"flex items-center gap-3"},At={class:"text-base font-semibold text-slate-800"},zt={class:"text-xs text-slate-400 mt-0.5"},Ft={key:0},Dt={class:"flex gap-2"},Lt={class:"grid grid-cols-2 gap-4 mb-4"},jt={class:"form-control"},Et={class:"form-control"},It={class:"form-control mb-4"},Nt={class:"mb-4"},Rt={class:"text-xs text-slate-500 ml-2"},Bt={key:0,class:"text-xs text-slate-400 py-4 text-center"},Ot={key:1,class:"overflow-x-auto"},Ht={class:"table text-xs"},Pt=["onUpdate:modelValue","title"],Jt=["onUpdate:modelValue"],qt={class:"text-center"},Gt=["onUpdate:modelValue"],Kt={class:"relative"},Qt=["type","onUpdate:modelValue"],Wt=["onClick"],Xt=["onUpdate:modelValue"],Yt=["onUpdate:modelValue"],Zt=["onClick"],el={class:"wizard-steps mb-5"},tl={key:0},ll={key:0},sl={class:"type-grid"},ol=["onClick"],nl={class:"text-sm text-slate-700 mt-2"},al={class:"flex items-center justify-between mb-3"},il={class:"text-sm text-slate-500"},dl={class:"type-grid"},ul=["onClick"],rl={class:"provider-chip"},cl={class:"text-sm text-slate-700 mt-2"},pl={class:"text-[11px] text-slate-400 mt-0.5"},vl={key:0,class:"text-xs text-slate-400 mt-2"},bl={class:"flex items-center justify-between mb-3"},ml={class:"flex items-center gap-2"},xl={key:0,class:"provider-chip"},yl={class:"flex gap-2"},_l={class:"grid grid-cols-2 gap-4 mb-4"},hl={class:"form-control"},kl={class:"form-control"},gl={class:"grid grid-cols-2 gap-4 mb-4"},fl={class:"form-control"},wl={class:"form-control"},Vl={class:"form-control mb-4"},Ul={key:0,class:"text-xs text-slate-400 py-4 text-center"},Cl={key:1,class:"overflow-x-auto"},Sl={class:"table text-xs"},Tl=["onUpdate:modelValue","title"],$l=["onUpdate:modelValue"],Ml={class:"text-center"},Al=["onUpdate:modelValue"],zl={class:"relative"},Fl=["type","onUpdate:modelValue"],Dl=["onClick"],Ll=["onUpdate:modelValue"],jl=["onUpdate:modelValue"],El=["onClick"],Il={key:0,class:"text-center py-10 text-slate-400"},Nl={class:"flex items-center justify-between mb-5"},Rl={class:"flex items-center gap-3"},Bl={class:"text-base font-semibold text-slate-800"},Ol={class:"badge badge-warning badge-sm mt-0.5"},Hl={class:"flex gap-2"},Pl={class:"rounded-lg px-3 py-2 mb-4 text-xs",style:{background:"#fefce8",border:"1px solid #fde047",color:"#854d0e"}},Jl={class:"overflow-x-auto"},ql={class:"table text-xs"},Gl=["title"],Kl={class:"text-slate-500"},Ql={class:"text-center"},Wl={key:0,class:"disabled-badge"},Xl={key:1,class:"override-badge"},Yl={key:2,class:"inherit-badge"},Zl={class:"text-center"},es=["onUpdate:modelValue"],ts={class:"relative"},ls=["type","onUpdate:modelValue","disabled"],ss=["onClick"],os=["onUpdate:modelValue","disabled"],ns=["onUpdate:modelValue","disabled","placeholder"],as={key:0},is={class:"divider text-xs text-slate-400 my-3"},ds={key:0,class:"text-xs text-slate-400 py-2 text-center"},us={key:1,class:"overflow-x-auto"},rs={class:"table text-xs"},cs=["onUpdate:modelValue","title"],ps=["onUpdate:modelValue"],vs={class:"text-center"},bs=["onUpdate:modelValue"],ms={class:"relative"},xs=["type","onUpdate:modelValue"],ys=["onClick"],_s=["onUpdate:modelValue"],hs=["onClick"],ks={class:"modal-overlay",style:{"z-index":"120"}},gs={class:"sync-box"},fs={class:"flex items-start gap-3 mb-4"},ws={style:{width:"42px",height:"42px",background:"linear-gradient(135deg,#4f46e5,#7c3aed)","border-radius":"13px",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},Vs={style:{width:"20px",height:"20px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Us={class:"text-xs text-slate-400 mt-1"},Cs=["innerHTML"],Ss={class:"flex items-center justify-between mb-1"},Ts={class:"flex gap-2"},$s={class:"sync-region-grid"},Ms=["onClick"],As=["checked","onClick"],zs={class:"modal-overlay",style:{"z-index":"130"}},Fs={class:"tpl-box"},Ds={class:"flex items-center justify-between mb-4"},Ls={class:"flex gap-2"},js={class:"tpl-list"},Es={class:"text-xs font-semibold text-slate-500 mb-1"},Is={style:{"min-width":"0",flex:"1"}},Ns={class:"flex items-center gap-2"},Rs={class:"font-semibold text-sm text-slate-800 truncate"},Bs={class:"provider-chip"},Os={key:0,class:"badge badge-xs badge-ghost"},Hs={class:"text-xs text-slate-400 mt-0.5"},Ps={class:"flex gap-1"},Js=["onClick"],qs=["onClick"],Gs={key:0,class:"text-xs text-slate-400 text-center py-6"},Ks={class:"flex items-center justify-between mb-4"},Qs={class:"text-base font-semibold text-slate-800"},Ws={class:"flex gap-2"},Xs={class:"grid grid-cols-2 gap-3 mb-3"},Ys={class:"form-control"},Zs=["disabled"],eo={class:"form-control"},to=["value"],lo={class:"form-control"},so={class:"form-control"},oo={class:"form-control mb-3"},no={class:"overflow-x-auto",style:{"max-height":"34vh"}},ao={class:"table text-xs"},io=["onUpdate:modelValue","title"],uo=["onUpdate:modelValue"],ro={class:"text-center"},co=["onUpdate:modelValue"],po=["onUpdate:modelValue"],vo=["onClick"],bo={key:0},Se=10,mo=Ye({__name:"serviceconfig",setup(xo){const G=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],N=[{v:1,label:"STT 语音识别",short:"STT",color:"#0369a1",bg:"#dbeafe"},{v:8,label:"录音文件识别",short:"录音识别",color:"#0e7490",bg:"#cffafe"},{v:2,label:"TTS 语音合成",short:"TTS",color:"#7c3aed",bg:"#ede9fe"},{v:3,label:"MT 机器翻译",short:"MT",color:"#059669",bg:"#dcfce7"},{v:4,label:"AST 端到端翻译",short:"AST",color:"#c2410c",bg:"#fff7ed"},{v:5,label:"LLM 文本大模型",short:"文本LLM",color:"#b45309",bg:"#fef9c3"},{v:9,label:"多媒体大模型",short:"多媒体LLM",color:"#9333ea",bg:"#f3e8ff"},{v:7,label:"STS 端到端对话",short:"STS",color:"#be185d",bg:"#fce7f3"},{v:6,label:"存储 OSS/COS",short:"存储",color:"#475569",bg:"#f1f5f9"},{v:10,label:"MCP 服务",short:"MCP",color:"#0d9488",bg:"#ccfbf1"}],{webApi:V,consoleApi:Te}=tt(),{success:j,error:U}=lt(),T=m(""),ee=m([]);async function $e(){try{const s=await Te("products/list",{});ee.value=(s??[]).map(l=>l.name).filter(Boolean)}catch{ee.value=[]}}function Me(){w(),X()}function C(s){return N.find(l=>l.v===s)||{short:"?",color:"#999",bg:"#eee",v:0,label:""}}function te(){return x.value===Se?!0:!!p.value&&K(p.value.categories).includes(Se)}function K(s){return(s||"").split(",").map(l=>parseInt(l)||0).filter(l=>l>0)}function ue(s){return(s.fields||[]).filter(l=>l.encrypted).length}const le=m(!0),R=m([]),p=m(null),f=m(0),Q=m(!1),E=m("default"),u=Ce({id:"",name:"",provider:"",description:"",enable:!1}),x=m(0),g=m([]),B=m(""),_=m(1),O=m([]),F=m([]),se=m(!1),H=m([]),W=q(()=>{const s=G.find(l=>l.value===f.value);return s?s.label:"区域"+f.value}),re=q(()=>{const s=N.map(r=>({...r,items:R.value.filter(t=>K(t.categories).includes(r.v))})).filter(r=>r.items.length),l=R.value.filter(r=>!K(r.categories).length);return l.length&&s.push({v:0,label:"未分类",short:"未分类",color:"#64748b",bg:"#f1f5f9",items:l}),s}),Ae=q(()=>N.map(s=>({cat:s.v,label:s.label,items:H.value.filter(l=>l.category===s.v)})).filter(s=>s.items.length));async function X(){try{const s=await V("getsvcconfigs",{app_name:T.value});R.value=s?.items??[],le.value=!0}catch{le.value=!1,R.value=[];return}if(p.value){const s=R.value.find(l=>l.id===p.value.id);s&&(p.value=s)}}async function Y(){try{const s=await V("getsvctemplates",{});H.value=s?.items??[]}catch{H.value=[]}}function ze(){w()}function Fe(s){s&&(p.value=s,Q.value=!0,f.value===0?De():je())}function w(){Q.value=!1,p.value=null}function De(){const s=p.value;u.id=s.id,u.name=s.name||"",u.provider=s.provider||"",u.description=s.description||"",u.enable=!!s.enable,x.value=K(s.categories)[0]||0,g.value=JSON.parse(JSON.stringify(s.fields||[])).map(l=>({...l,_show:!1})),E.value="default"}function oe(s=0){p.value=null,u.id="",u.name="",u.provider="",u.description="",u.enable=!1,x.value=s,g.value=[],B.value="",_.value=s?2:1,E.value="new",Q.value=!0}const ce=q(()=>H.value.filter(s=>s.category===x.value));function Le(s){x.value!==s&&(x.value=s,B.value="",u.provider="",g.value=[]),_.value=2}function pe(s){s?(B.value=s.id,u.provider=s.provider||"",u.name||(u.name=s.name||""),u.id||(u.id=s.id||""),u.description||(u.description=s.description||""),g.value=(s.fields||[]).map(l=>({key:l.key,description:l.description,type:l.type||"",encrypted:!!l.encrypted,def_value:l.def_value||"",sort:l.sort,_show:!1}))):(B.value="",u.provider="",g.value=[]),_.value=3}function ve(){g.value.push({key:"",description:"",encrypted:!1,def_value:"",sort:g.value.length,_show:!1})}function be(s){g.value.splice(s,1),g.value.forEach((l,r)=>{l.sort=r})}async function je(){const s=p.value;se.value=!0,E.value="region";try{const r=(await V("getsvcregionoverride",{app_name:T.value,svc_id:s.id,region:f.value}))?.fields??[];O.value=r.filter(t=>!t.region_only).map(t=>({key:t.key,description:t.description,type:t.type||"",encrypted:!!t.encrypted,is_overridden:!!t.is_overridden,disabled:!!t.disabled,value:t.value||"",_input:t.encrypted?"":t.is_overridden&&t.value||"",_show:!1})),F.value=r.filter(t=>t.region_only).map(t=>({key:t.key,description:t.description,encrypted:!!t.encrypted,_input:t.encrypted?"":t.value||"",_show:!1}))}catch(l){U(l?.message??"加载区域分叉失败"),O.value=[],F.value=[]}finally{se.value=!1}}function Ee(){F.value.push({key:"",description:"",encrypted:!1,_input:"",_show:!1})}function Ie(s){F.value.splice(s,1)}function Ne(s){const l={name:u.name||"",provider:u.provider||"",description:u.description||"",categories:x.value?String(x.value):"",enable:u.enable||!1,fields:g.value.map(r=>({key:r.key,description:r.description,type:r.type||"",encrypted:r.encrypted,def_value:r.def_value,sort:r.sort}))};return s?l.id=u.id||"":l.id=p.value.id,l.app_name=T.value,l}function Re(){const s={},l=[];O.value.forEach(t=>{s[t.key]=t._input||"",t.disabled&&l.push(t.key)});const r=F.value.filter(t=>(t.key||"").trim()).map((t,i)=>({key:t.key.trim(),description:t.description,encrypted:t.encrypted,def_value:t._input||"",sort:i}));return{overrides:s,disabled_keys:l,extra_fields:r}}async function me(s){const l=s||!p.value;if(f.value===0){const r=Ne(l);if(!r.id||!r.name)return U("服务ID 和名称 必填"),!1;const t=l?"addsvcconfig":"updatesvcconfig";try{const i=await V(t,r);return p.value=i,await X(),j("保存成功"),!0}catch(i){return U(i?.message??"保存失败"),!1}}else{const{overrides:r,disabled_keys:t,extra_fields:i}=Re();try{return await V("savesvcregionoverride",{app_name:T.value,svc_id:p.value.id,region:f.value,overrides:r,disabled_keys:t,extra_fields:i}),j("区域分叉已保存"),!0}catch(n){return U(n?.message??"保存失败"),!1}}}async function Be(){if(p.value&&window.confirm("确定删除服务「"+p.value.name+"」及其所有区域分叉?")){try{await V("delsvcconfig",{app_name:T.value,id:p.value.id})}catch(s){U(s?.message??"删除失败");return}w(),j("已删除"),await X()}}const ne=m(!1),ae=m(!1),xe=m(""),ye=m(""),$=m([]),_e=q(()=>G.filter(s=>s.value!==f.value));function ie(s){ae.value=s;const l=p.value?p.value.name:u.name||"新服务",r=f.value===0;xe.value=r?"「"+l+"」默认配置将保存,可同步推送到其他区域。":"「"+l+"」在当前区域的字段分叉将保存,可同步到其他区域。",ye.value=r?"✦ 同步内容:各字段默认值推送为目标区域「覆盖值」,目标区域原有分叉将被替换。":"✦ 同步内容:当前区域的值覆盖 / 区域专属字段 / 停用字段整体复制到目标区域。",$.value=[],ne.value=!0}function he(s){const l=$.value.indexOf(s);l>=0?$.value.splice(l,1):$.value.push(s)}function ke(s){$.value=s?_e.value.map(l=>l.value):[]}function ge(){ne.value=!1}async function Oe(){ge(),await me(ae.value)&&w()}async function He(){const s=$.value.slice();if(ge(),!await me(ae.value))return;const r=p.value?p.value.id:null;if(!s.length||!r){w();return}let t=0;try{t=(await V("syncsvctoregins",{app_name:T.value,svc_id:r,src_region:f.value,target_regions:s}))?.synced??0}catch(n){U(n?.message??"同步失败");return}const i=s.map(n=>{const we=G.find(We=>We.value===n);return we?we.label:"区域"+n});j("已保存并同步到:"+i.join("、")+"("+t+" 个)"),w()}const de=m(!1),P=m("list"),J=m(!1),v=Ce({id:"",category:2,provider:"",name:"",description:""}),S=m([]);function Pe(){P.value="list",de.value=!0,Y()}function Je(){de.value=!1}function fe(s){s?(J.value=!0,v.id=s.id,v.category=s.category||2,v.provider=s.provider||"",v.name=s.name||"",v.description=s.description||"",S.value=(s.fields||[]).map(l=>({key:l.key,description:l.description,type:l.type||"",encrypted:!!l.encrypted,def_value:l.def_value||"",sort:l.sort}))):(J.value=!1,v.id="",v.category=2,v.provider="",v.name="",v.description="",S.value=[]),P.value="form"}function qe(){S.value.push({key:"",description:"",encrypted:!1,def_value:"",sort:S.value.length})}function Ge(s){S.value.splice(s,1),S.value.forEach((l,r)=>{l.sort=r})}async function Ke(){if(!v.id.trim()||!v.name.trim()||!v.provider.trim()){U("模板ID / 展示名 / 服务商标识 必填");return}const s={id:v.id.trim(),category:Number(v.category)||0,provider:v.provider.trim(),name:v.name.trim(),description:v.description.trim(),fields:S.value.map((l,r)=>({key:l.key,description:l.description,type:l.type||"",encrypted:l.encrypted,def_value:l.def_value,sort:r}))};try{await V(J.value?"updatesvctemplate":"addsvctemplate",s)}catch(l){U(l?.message??"保存失败");return}j("模板已保存"),await Y(),P.value="list"}async function Qe(s){if(window.confirm("确定删除模板「"+s.name+"」?"+(s.builtin?"(内置模板下次启动会被重新补回)":""))){try{await V("delsvctemplate",{id:s.id})}catch(l){U(l?.message??"删除失败");return}j("已删除"),await Y()}}return Ze(()=>{$e(),X(),Y()}),(s,l)=>{const r=Xe;return o(),a("div",null,[le.value?h("",!0):(o(),a("div",st," ⚠ 「第三方服务配置」后端接口暂不可用(连接失败),请检查 console 服务是否运行。 ")),e("div",ot,[l[31]||(l[31]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"第三方服务配置"),e("p",{class:"text-xs text-slate-400 mt-1"},[M("按服务类型分组管理已接入的第三方服务(火山引擎、阿里云、Azure 等)。默认展示"),e("b",null,"全局默认"),M("配置,可切换到具体应用;区域默认"),e("b",null,"中国"),M(",切换区域后点击卡片可为该区域覆盖字段值。")])],-1)),e("div",nt,[c(e("select",{"onUpdate:modelValue":l[0]||(l[0]=t=>T.value=t),class:"select select-bordered select-sm",onChange:Me},[l[29]||(l[29]=e("option",{value:""},"全局默认",-1)),(o(!0),a(b,null,k(ee.value,t=>(o(),a("option",{key:t,value:t},"应用:"+d(t),9,at))),128))],544),[[I,T.value]]),c(e("select",{"onUpdate:modelValue":l[1]||(l[1]=t=>f.value=t),class:"select select-bordered select-sm",onChange:ze},[l[30]||(l[30]=e("option",{value:0},"默认(全区域)",-1)),(o(),a(b,null,k(G,t=>e("option",{key:t.value,value:t.value},d(t.label),9,it)),64))],544),[[I,f.value,void 0,{number:!0}]]),e("button",{class:"btn btn-ghost btn-sm",onClick:Pe},"服务商模板"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[2]||(l[2]=t=>oe())},"+ 添加服务")])]),f.value!==0?(o(),a("div",dt," ✦ 当前处于「"+d(W.value)+"」区域视图:点击服务卡片编辑该区域的字段分叉(覆盖值 / 停用字段 / 区域专属字段)。要改服务本身的默认配置,请切回「默认(全区域)」。 ",1)):h("",!0),re.value.length?(o(),a("div",ut,[(o(!0),a(b,null,k(re.value,t=>(o(),a("section",{key:t.v},[e("div",rt,[e("span",{class:"cat-chip",style:D({color:t.color,background:t.bg})},d(t.short),5),e("h3",ct,d(t.label),1),e("span",pt,d(t.items.length)+" 个服务",1),l[32]||(l[32]=e("div",{class:"flex-1 h-px bg-slate-100 ml-2"},null,-1))]),e("div",vt,[(o(!0),a(b,null,k(t.items,i=>(o(),a("div",{key:i.id,class:"svc-card",onClick:n=>Fe(i)},[e("div",mt,[e("div",{class:"svc-logo",style:D({background:i.color||"#6366f1"})},d(i.icon||(i.name||"").charAt(0)),5),e("div",xt,[e("div",yt,[e("span",_t,d(i.name),1),e("span",{class:A(["badge badge-xs",i.enable?"badge-success":"badge-ghost"])},d(i.enable?"启用":"停用"),3)]),e("p",{class:"text-[11px] text-slate-400 font-mono truncate mt-0.5",title:i.id},d(i.id),9,ht)])]),e("p",kt,d(i.description||"—"),1),e("div",gt,[i.provider?(o(),a("span",ft,d(i.provider),1)):h("",!0),e("span",wt,d((i.fields||[]).length)+" 字段",1),ue(i)?(o(),a("span",Vt,"🔒"+d(ue(i)),1)):h("",!0)])],8,bt))),128)),e("div",{class:"svc-card add-card",onClick:i=>oe(t.v)},[l[33]||(l[33]=e("span",{class:"text-2xl text-slate-300"},"+",-1)),e("span",Ct,"添加"+d(t.short)+"服务",1)],8,Ut)])]))),128))])):(o(),a("div",St,[l[34]||(l[34]=e("div",{class:"text-5xl mb-3"},"⚙️",-1)),l[35]||(l[35]=e("p",{class:"text-sm mb-4"},"尚未配置任何第三方服务",-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[3]||(l[3]=t=>oe())},"+ 添加服务")])),Q.value?(o(),a("div",{key:4,class:"modal-overlay",onClick:Ve(w,["self"])},[e("div",Tt,[E.value==="default"&&p.value?(o(),a(b,{key:0},[e("div",$t,[e("div",Mt,[e("div",{class:"svc-logo",style:D({background:p.value.color||"#6366f1",width:"44px",height:"44px",fontSize:"20px"})},d(p.value.icon||(p.value.name||"").charAt(0)),5),e("div",null,[e("h3",At,d(p.value.name),1),e("p",zt,[M(d(p.value.id),1),u.provider?(o(),a("span",Ft," · 服务商 "+d(u.provider),1)):h("",!0)])])]),e("div",Dt,[e("button",{class:"btn btn-error btn-sm btn-outline",onClick:Be},"删除服务"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[4]||(l[4]=t=>ie(!1))},"保存"),e("button",{class:"btn btn-ghost btn-sm",onClick:w},"关闭")])]),l[44]||(l[44]=e("div",{class:"divider text-xs text-slate-400 my-3"},"基本信息",-1)),e("div",Lt,[e("div",jt,[l[36]||(l[36]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务名称 *")],-1)),c(e("input",{"onUpdate:modelValue":l[5]||(l[5]=t=>u.name=t),class:"input input-bordered"},null,512),[[y,u.name]])]),e("div",Et,[l[37]||(l[37]=e("label",{class:"label"},[e("span",{class:"label-text"},"启用")],-1)),c(e("input",{"onUpdate:modelValue":l[6]||(l[6]=t=>u.enable=t),type:"checkbox",class:"toggle toggle-primary mt-3"},null,512),[[L,u.enable]])])]),e("div",It,[l[38]||(l[38]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务描述")],-1)),c(e("input",{"onUpdate:modelValue":l[7]||(l[7]=t=>u.description=t),class:"input input-bordered"},null,512),[[y,u.description]])]),e("div",Nt,[l[39]||(l[39]=e("p",{class:"text-sm font-medium text-slate-700 mb-2"},"服务类型",-1)),x.value?(o(),a("span",{key:0,class:"cat-chip",style:D({color:C(x.value).color,background:C(x.value).bg})},d(C(x.value).short),5)):h("",!0),e("span",Rt,d(x.value?C(x.value).label:"未设置"),1),l[40]||(l[40]=e("span",{class:"text-[11px] text-slate-400 ml-2"},"(类型在创建时确定,不可更改)",-1))]),l[45]||(l[45]=e("div",{class:"divider text-xs text-slate-400 my-3"},"配置字段(全区域共用)",-1)),e("div",null,[g.value.length?(o(),a("div",Ot,[e("table",Ht,[l[43]||(l[43]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(o(!0),a(b,null,k(g.value,(t,i)=>(o(),a("tr",{key:i},[e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.key=n,placeholder:"key",title:t.key},null,8,Pt),[[y,t.key]])]),e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.description=n,placeholder:"用途描述"},null,8,Jt),[[y,t.description]])]),e("td",qt,[c(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":n=>t.encrypted=n},null,8,Gt),[[L,t.encrypted]])]),e("td",null,[t.type==="langs"?(o(),z(r,{key:0,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(o(),z(r,{key:1,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n},null,8,["modelValue","onUpdate:modelValue"])):t.encrypted?(o(),a(b,{key:2},[e("div",Kt,[c(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":n=>t.def_value=n,placeholder:"留空保留原值"},null,8,Qt),[[Z,t.def_value]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:n=>t._show=!t._show},d(t._show?"隐藏":"显示"),9,Wt)]),l[41]||(l[41]=e("span",{class:"lock-badge ml-1"},"🔒 加密",-1))],64)):te()&&t.key==="type"?c((o(),a("select",{key:3,class:"field-input","onUpdate:modelValue":n=>t.def_value=n},[...l[42]||(l[42]=[e("option",{value:"0"},"HTTP",-1),e("option",{value:"1"},"SSE",-1)])],8,Xt)),[[I,t.def_value]]):c((o(),a("input",{key:4,class:"field-input","onUpdate:modelValue":n=>t.def_value=n},null,8,Yt)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:n=>be(i)},"×",8,Zt)])]))),128))])])])):(o(),a("p",Bt,"尚无字段,点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:ve},"+ 添加字段")])],64)):E.value==="new"?(o(),a(b,{key:1},[e("div",{class:"flex items-center justify-between mb-4"},[l[46]||(l[46]=e("h3",{class:"text-base font-semibold text-slate-800"},"新增第三方服务",-1)),e("button",{class:"btn btn-ghost btn-sm",onClick:w},"取消")]),e("div",el,[e("div",{class:A(["wstep",{on:_.value>=1,cur:_.value===1}]),onClick:l[8]||(l[8]=t=>_.value=1)},[l[47]||(l[47]=M("① 服务类型",-1)),x.value?(o(),a("span",tl," · "+d(C(x.value).short),1)):h("",!0)],2),l[49]||(l[49]=e("div",{class:"wline"},null,-1)),e("div",{class:A(["wstep",{on:_.value>=2,cur:_.value===2,disabled:!x.value}]),onClick:l[9]||(l[9]=t=>x.value&&(_.value=2))},[l[48]||(l[48]=M("② 服务商",-1)),u.provider?(o(),a("span",ll," · "+d(u.provider),1)):h("",!0)],2),l[50]||(l[50]=e("div",{class:"wline"},null,-1)),e("div",{class:A(["wstep",{on:_.value>=3,cur:_.value===3,disabled:_.value<3}])},"③ 配置",2)]),_.value===1?(o(),a(b,{key:0},[l[51]||(l[51]=e("p",{class:"text-sm text-slate-500 mb-3"},"请选择要接入的服务类型(每个服务归属单一类型,独立配置):",-1)),e("div",sl,[(o(),a(b,null,k(N,t=>e("div",{key:t.v,class:A(["type-card",{on:x.value===t.v}]),onClick:i=>Le(t.v)},[e("span",{class:"cat-chip",style:D({color:t.color,background:t.bg})},d(t.short),5),e("span",nl,d(t.label),1)],10,ol)),64))])],64)):_.value===2?(o(),a(b,{key:1},[e("div",al,[e("p",il,"为「"+d(C(x.value).label)+"」选择服务商:",1),e("button",{class:"btn btn-ghost btn-xs",onClick:l[10]||(l[10]=t=>_.value=1)},"← 上一步")]),e("div",dl,[(o(!0),a(b,null,k(ce.value,t=>(o(),a("div",{key:t.id,class:A(["type-card",{on:B.value===t.id}]),onClick:i=>pe(t)},[e("span",rl,d(t.provider),1),e("span",cl,d(t.name),1),e("span",pl,d((t.fields||[]).length)+" 字段",1)],10,ul))),128)),e("div",{class:"type-card",onClick:l[11]||(l[11]=t=>pe(null))},[...l[52]||(l[52]=[e("span",{class:"provider-chip",style:{background:"#f1f5f9",color:"#475569"}},"自定义",-1),e("span",{class:"text-sm text-slate-700 mt-2"},"空白自定义",-1),e("span",{class:"text-[11px] text-slate-400 mt-0.5"},"手动添加字段",-1)])])]),ce.value.length?h("",!0):(o(),a("p",vl,"该类型暂无内置模板,可选「空白自定义」,或到「服务商模板」新增。"))],64)):(o(),a(b,{key:2},[e("div",bl,[e("div",ml,[e("span",{class:"cat-chip",style:D({color:C(x.value).color,background:C(x.value).bg})},d(C(x.value).short),5),u.provider?(o(),a("span",xl,d(u.provider),1)):h("",!0)]),e("div",yl,[e("button",{class:"btn btn-ghost btn-xs",onClick:l[12]||(l[12]=t=>_.value=2)},"← 上一步"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[13]||(l[13]=t=>ie(!0))},"创建")])]),e("div",_l,[e("div",hl,[l[53]||(l[53]=e("label",{class:"label"},[e("span",{class:"label-text"},[M("服务ID * "),e("span",{class:"text-slate-400 text-xs"},"(唯一,如 tts_azure)")])],-1)),c(e("input",{"onUpdate:modelValue":l[14]||(l[14]=t=>u.id=t),class:"input input-bordered font-mono",placeholder:"tts_azure"},null,512),[[y,u.id]])]),e("div",kl,[l[54]||(l[54]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务名称 *")],-1)),c(e("input",{"onUpdate:modelValue":l[15]||(l[15]=t=>u.name=t),class:"input input-bordered",placeholder:"微软 Azure TTS"},null,512),[[y,u.name]])])]),e("div",gl,[e("div",fl,[l[55]||(l[55]=e("label",{class:"label"},[e("span",{class:"label-text"},[M("服务商标识 "),e("span",{class:"text-slate-400 text-xs"},"(如 azure/alibaba)")])],-1)),c(e("input",{"onUpdate:modelValue":l[16]||(l[16]=t=>u.provider=t),class:"input input-bordered font-mono",placeholder:"azure"},null,512),[[y,u.provider]])]),e("div",wl,[l[56]||(l[56]=e("label",{class:"label"},[e("span",{class:"label-text"},"启用")],-1)),c(e("input",{"onUpdate:modelValue":l[17]||(l[17]=t=>u.enable=t),type:"checkbox",class:"toggle toggle-primary mt-3"},null,512),[[L,u.enable]])])]),e("div",Vl,[l[57]||(l[57]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务描述")],-1)),c(e("input",{"onUpdate:modelValue":l[18]||(l[18]=t=>u.description=t),class:"input input-bordered",placeholder:"简述该服务的用途"},null,512),[[y,u.description]])]),l[61]||(l[61]=e("div",{class:"divider text-xs text-slate-400 my-3"},"配置字段",-1)),e("div",null,[g.value.length?(o(),a("div",Cl,[e("table",Sl,[l[60]||(l[60]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(o(!0),a(b,null,k(g.value,(t,i)=>(o(),a("tr",{key:i},[e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.key=n,placeholder:"key",title:t.key},null,8,Tl),[[y,t.key]])]),e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.description=n,placeholder:"用途描述"},null,8,$l),[[y,t.description]])]),e("td",Ml,[c(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":n=>t.encrypted=n},null,8,Al),[[L,t.encrypted]])]),e("td",null,[t.type==="langs"?(o(),z(r,{key:0,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(o(),z(r,{key:1,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n},null,8,["modelValue","onUpdate:modelValue"])):t.encrypted?(o(),a(b,{key:2},[e("div",zl,[c(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":n=>t.def_value=n,placeholder:"留空保留原值"},null,8,Fl),[[Z,t.def_value]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:n=>t._show=!t._show},d(t._show?"隐藏":"显示"),9,Dl)]),l[58]||(l[58]=e("span",{class:"lock-badge ml-1"},"🔒 加密",-1))],64)):te()&&t.key==="type"?c((o(),a("select",{key:3,class:"field-input","onUpdate:modelValue":n=>t.def_value=n},[...l[59]||(l[59]=[e("option",{value:"0"},"HTTP",-1),e("option",{value:"1"},"SSE",-1)])],8,Ll)),[[I,t.def_value]]):c((o(),a("input",{key:4,class:"field-input","onUpdate:modelValue":n=>t.def_value=n},null,8,jl)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:n=>be(i)},"×",8,El)])]))),128))])])])):(o(),a("p",Ul,"尚无字段,选模板自动带出或点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:ve},"+ 添加字段")])],64))],64)):E.value==="region"&&p.value?(o(),a(b,{key:2},[se.value?(o(),a("div",Il,"加载中...")):(o(),a(b,{key:1},[e("div",Nl,[e("div",Rl,[e("div",{class:"svc-logo",style:D({background:p.value.color||"#6366f1",width:"44px",height:"44px",fontSize:"20px"})},d(p.value.icon||(p.value.name||"").charAt(0)),5),e("div",null,[e("h3",Bl,d(p.value.name),1),e("span",Ol,d(W.value)+" 分叉模式",1)])]),e("div",Hl,[e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[19]||(l[19]=t=>ie(!1))},"保存分叉"),e("button",{class:"btn btn-ghost btn-sm",onClick:w},"关闭")])]),e("div",Pl," ✦ 当前编辑「"+d(W.value)+"」的字段分叉:默认字段可覆盖值或勾选「不适用」停用;也可新增本区域专属字段。留空的覆盖字段继承默认值,加密字段留空保留已存储密文。 ",1),l[68]||(l[68]=e("p",{class:"text-sm font-medium text-slate-700 mb-2"},"默认字段",-1)),e("div",Jl,[e("table",ql,[l[65]||(l[65]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-24 text-center"},"状态"),e("th",{class:"w-20 text-center"},"本区域不适用"),e("th",null,"有效值")])],-1)),e("tbody",null,[(o(!0),a(b,null,k(O.value,(t,i)=>(o(),a("tr",{key:i,class:A({"opacity-50":t.disabled})},[e("td",{class:"font-mono text-slate-700 break-all",title:t.key},d(t.key),9,Gl),e("td",Kl,d(t.description),1),e("td",Ql,[t.disabled?(o(),a("span",Wl,"停用")):t.is_overridden?(o(),a("span",Xl,"覆盖")):(o(),a("span",Yl,"继承"))]),e("td",Zl,[c(e("input",{type:"checkbox",class:"checkbox checkbox-xs","onUpdate:modelValue":n=>t.disabled=n},null,8,es),[[L,t.disabled]])]),e("td",null,[t.type==="langs"?(o(),z(r,{key:0,modelValue:t._input,"onUpdate:modelValue":n=>t._input=n,multiple:!0,disabled:t.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"])):t.type==="lang"?(o(),z(r,{key:1,modelValue:t._input,"onUpdate:modelValue":n=>t._input=n,disabled:t.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"])):t.encrypted?(o(),a(b,{key:2},[e("div",ts,[c(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":n=>t._input=n,disabled:t.disabled,placeholder:"留空继承默认"},null,8,ls),[[Z,t._input]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:n=>t._show=!t._show},d(t._show?"隐藏":"显示"),9,ss)]),l[62]||(l[62]=e("span",{class:"lock-badge ml-1"},"🔒",-1))],64)):te()&&t.key==="type"?c((o(),a("select",{key:3,class:"field-input","onUpdate:modelValue":n=>t._input=n,disabled:t.disabled},[...l[63]||(l[63]=[e("option",{value:""},"继承默认",-1),e("option",{value:"0"},"HTTP",-1),e("option",{value:"1"},"SSE",-1)])],8,os)),[[I,t._input]]):c((o(),a("input",{key:4,class:"field-input","onUpdate:modelValue":n=>t._input=n,disabled:t.disabled,placeholder:"留空继承:"+(t.value||"")},null,8,ns)),[[y,t._input]])])],2))),128)),O.value.length?h("",!0):(o(),a("tr",as,[...l[64]||(l[64]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-3"},"该服务尚无默认字段",-1)])]))])])]),e("div",is,d(W.value)+" 专属字段",1),e("div",null,[F.value.length?(o(),a("div",us,[e("table",rs,[l[67]||(l[67]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(o(!0),a(b,null,k(F.value,(t,i)=>(o(),a("tr",{key:i},[e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.key=n,placeholder:"key",title:t.key},null,8,cs),[[y,t.key]])]),e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.description=n,placeholder:"用途描述"},null,8,ps),[[y,t.description]])]),e("td",vs,[c(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":n=>t.encrypted=n},null,8,bs),[[L,t.encrypted]])]),e("td",null,[t.encrypted?(o(),a(b,{key:0},[e("div",ms,[c(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":n=>t._input=n,placeholder:"留空保留原值"},null,8,xs),[[Z,t._input]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:n=>t._show=!t._show},d(t._show?"隐藏":"显示"),9,ys)]),l[66]||(l[66]=e("span",{class:"lock-badge ml-1"},"🔒",-1))],64)):c((o(),a("input",{key:1,class:"field-input","onUpdate:modelValue":n=>t._input=n},null,8,_s)),[[y,t._input]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:n=>Ie(i)},"×",8,hs)])]))),128))])])])):(o(),a("p",ds,"尚无区域专属字段,点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:Ee},"+ 添加区域专属字段")])],64))],64)):h("",!0)])])):h("",!0),c(e("div",ks,[e("div",gs,[e("div",fs,[e("div",ws,[(o(),a("svg",Vs,[...l[69]||(l[69]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"},null,-1)])]))]),e("div",null,[l[70]||(l[70]=e("h3",{class:"text-base font-semibold text-slate-800"},"同步到其他区域",-1)),e("p",Us,d(xe.value),1)])]),e("div",{class:"text-xs px-3 py-2 rounded-lg mb-3",style:{background:"#f0fdf4",border:"1px solid #bbf7d0",color:"#15803d"},innerHTML:ye.value},null,8,Cs),e("div",Ss,[l[71]||(l[71]=e("span",{class:"text-xs font-semibold text-slate-500"},"选择目标区域",-1)),e("div",Ts,[e("button",{class:"btn btn-ghost btn-xs",onClick:l[20]||(l[20]=t=>ke(!0))},"全选"),e("button",{class:"btn btn-ghost btn-xs",onClick:l[21]||(l[21]=t=>ke(!1))},"清空")])]),e("div",$s,[(o(!0),a(b,null,k(_e.value,t=>(o(),a("label",{key:t.value,class:A(["sync-region-item",{checked:$.value.includes(t.value)}]),onClick:i=>he(t.value)},[e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:$.value.includes(t.value),onClick:Ve(i=>he(t.value),["stop"])},null,8,As),e("span",null,d(t.label),1)],10,Ms))),128))]),l[72]||(l[72]=e("p",{class:"text-[11px] text-slate-400 mb-5"},"⚠ 已勾选区域将被当前配置(值覆盖 / 区域专属字段 / 停用字段)整体替换;加密字段密文一并同步。",-1)),e("div",{class:"flex gap-3 justify-end"},[e("button",{class:"btn btn-ghost",onClick:Oe},"仅保存当前区域"),e("button",{class:"btn btn-primary text-white",onClick:He},"保存并同步")])])],512),[[Ue,ne.value]]),c(e("div",zs,[e("div",Fs,[P.value==="list"?(o(),a(b,{key:0},[e("div",Ds,[l[73]||(l[73]=e("div",null,[e("h3",{class:"text-base font-semibold text-slate-800"},"服务商模板"),e("p",{class:"text-xs text-slate-400 mt-1"},"模板是字段预设,新增服务时可一键带出。内置模板可编辑;删除后重启会被重新补回。")],-1)),e("div",Ls,[e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[22]||(l[22]=t=>fe())},"+ 新增模板"),e("button",{class:"btn btn-ghost btn-sm",onClick:Je},"关闭")])]),e("div",js,[(o(!0),a(b,null,k(Ae.value,t=>(o(),a("div",{key:t.cat,class:"mb-3"},[e("p",Es,d(t.label),1),(o(!0),a(b,null,k(t.items,i=>(o(),a("div",{key:i.id,class:"tpl-row"},[e("div",Is,[e("div",Ns,[e("span",Rs,d(i.name),1),e("span",Bs,d(i.provider),1),i.builtin?(o(),a("span",Os,"内置")):h("",!0)]),e("p",Hs,d(i.id)+" · "+d((i.fields||[]).length)+" 字段",1)]),e("div",Ps,[e("button",{class:"btn btn-ghost btn-xs",onClick:n=>fe(i)},"编辑",8,Js),e("button",{class:"btn btn-ghost btn-xs text-error",onClick:n=>Qe(i)},"删除",8,qs)])]))),128))]))),128)),H.value.length?h("",!0):(o(),a("p",Gs,"暂无模板"))])],64)):(o(),a(b,{key:1},[e("div",Ks,[e("h3",Qs,d(J.value?"编辑模板":"新增模板"),1),e("div",Ws,[e("button",{class:"btn btn-ghost btn-sm",onClick:l[23]||(l[23]=t=>P.value="list")},"返回"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:Ke},"保存")])]),e("div",Xs,[e("div",Ys,[l[74]||(l[74]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"模板ID *")],-1)),c(e("input",{"onUpdate:modelValue":l[24]||(l[24]=t=>v.id=t),disabled:J.value,class:"input input-bordered input-sm font-mono",placeholder:"tts_azure"},null,8,Zs),[[y,v.id]])]),e("div",eo,[l[75]||(l[75]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"类别 *")],-1)),c(e("select",{"onUpdate:modelValue":l[25]||(l[25]=t=>v.category=t),class:"select select-bordered select-sm"},[(o(),a(b,null,k(N,t=>e("option",{key:t.v,value:t.v},d(t.label),9,to)),64))],512),[[I,v.category,void 0,{number:!0}]])]),e("div",lo,[l[76]||(l[76]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"服务商标识 *")],-1)),c(e("input",{"onUpdate:modelValue":l[26]||(l[26]=t=>v.provider=t),class:"input input-bordered input-sm font-mono",placeholder:"azure"},null,512),[[y,v.provider]])]),e("div",so,[l[77]||(l[77]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"展示名 *")],-1)),c(e("input",{"onUpdate:modelValue":l[27]||(l[27]=t=>v.name=t),class:"input input-bordered input-sm",placeholder:"微软 Azure TTS"},null,512),[[y,v.name]])])]),e("div",oo,[l[78]||(l[78]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"描述")],-1)),c(e("input",{"onUpdate:modelValue":l[28]||(l[28]=t=>v.description=t),class:"input input-bordered input-sm"},null,512),[[y,v.description]])]),l[81]||(l[81]=e("p",{class:"text-sm font-medium text-slate-700 mb-1"},"字段",-1)),e("div",no,[e("table",ao,[l[80]||(l[80]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认/提示值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(o(!0),a(b,null,k(S.value,(t,i)=>(o(),a("tr",{key:i},[e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.key=n,placeholder:"key",title:t.key},null,8,io),[[y,t.key]])]),e("td",null,[c(e("input",{class:"field-input","onUpdate:modelValue":n=>t.description=n,placeholder:"用途描述"},null,8,uo),[[y,t.description]])]),e("td",ro,[c(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":n=>t.encrypted=n},null,8,co),[[L,t.encrypted]])]),e("td",null,[t.type==="langs"?(o(),z(r,{key:0,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(o(),z(r,{key:1,modelValue:t.def_value,"onUpdate:modelValue":n=>t.def_value=n},null,8,["modelValue","onUpdate:modelValue"])):c((o(),a("input",{key:2,class:"field-input","onUpdate:modelValue":n=>t.def_value=n,placeholder:"可留空"},null,8,po)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:n=>Ge(i)},"×",8,vo)])]))),128)),S.value.length?h("",!0):(o(),a("tr",bo,[...l[79]||(l[79]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-2"},"尚无字段",-1)])]))])])]),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:qe},"+ 添加字段")],64))])],512),[[Ue,de.value]])])}}}),wo=et(mo,[["__scopeId","data-v-4e0895d6"]]);export{wo as default}; diff --git a/apps/admin/.output/public/_nuxt/B7QETiRo.js b/apps/admin/.output/public/_nuxt/BSFY2Kep.js similarity index 91% rename from apps/admin/.output/public/_nuxt/B7QETiRo.js rename to apps/admin/.output/public/_nuxt/BSFY2Kep.js index 795b8e0f..93e160ac 100644 --- a/apps/admin/.output/public/_nuxt/B7QETiRo.js +++ b/apps/admin/.output/public/_nuxt/BSFY2Kep.js @@ -1 +1 @@ -import{g as q,B as H,c as a,p as i,H as A,a as t,F as p,r as f,q as D,v as u,t as r,m as I,L as G,x as m,y as J,z as k,o as d}from"./CCjf5Io-.js";import{u as K}from"./C-6Qe-lq.js";import{u as P}from"./DTVGNZEd.js";import"./42htcooJ.js";const Q={class:"flex items-center justify-between mb-5"},W={class:"flex items-center gap-3 mb-4 flex-wrap"},X=["value"],Y=["value"],Z={class:"bg-white rounded-xl shadow-sm border border-slate-100"},tt={class:"overflow-x-auto"},et={class:"table table-zebra"},st={key:0},lt={key:1},ot={class:"bg-slate-100/80"},nt={colspan:"7",class:"py-2"},at={class:"font-semibold text-slate-600 text-sm"},it={class:"text-xs text-slate-400 ml-2"},dt={class:"font-mono text-sm text-slate-400"},rt={class:"font-medium"},ut={class:"font-mono text-sm"},mt={class:"badge badge-outline badge-sm"},pt={class:"text-sm"},bt={class:"text-sm"},ct={key:1,class:"text-slate-300"},ft={class:"text-right"},vt={class:"inline-flex gap-1"},gt=["onClick"],xt=["onClick"],yt={class:"flex items-center gap-3 mb-5"},wt={class:"text-lg font-semibold text-slate-800"},kt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},ht={class:"grid grid-cols-2 gap-4"},_t={class:"form-control mb-4"},Vt={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Ct={class:"form-control mb-4"},Lt={class:"form-control mb-4"},Ft={class:"form-control mb-4"},St={class:"form-control mb-4"},$t={class:"form-control mb-4"},zt={class:"form-control mb-6"},Bt={class:"flex gap-3"},Et=["disabled"],jt=q({__name:"meettemplates",setup(At){const{webApi:v}=K(),{success:S,error:g}=P(),x=m("list"),b=m([]),h=m(!1),_=m(!1),c=m(!1),y=m("zh"),w=m(""),V=m(""),o=J({id:0,title:"",tid:"",language:"",ttype:"",tags:"",icon:"",description:"",outline:"",template:""});function $(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function z(l){return(l||"").split("-")[0].trim().toLowerCase()}const M=k(()=>{const l=new Set;return b.value.forEach(e=>{e.language&&l.add(e.language)}),Array.from(l).sort()}),O=k(()=>{const l=new Set;return b.value.forEach(e=>{e.tid&&l.add(e.tid)}),Array.from(l).sort()}),B=k(()=>{const l=V.value.trim().toLowerCase();return b.value.filter(e=>!(y.value&&z(e.language)!==z(y.value)||w.value&&(e.tid||"")!==w.value||l&&(e.title||"").toLowerCase().indexOf(l)<0))}),T=k(()=>{const l={};return B.value.forEach(s=>{const n=s.tid||"";(l[n]=l[n]||[]).push(s)}),Object.keys(l).sort((s,n)=>s===""?-1:n===""?1:s({key:s,label:s||"无 tid",items:l[s]}))});async function U(){h.value=!0;try{const l=await v("getmeettemplates",{});b.value=l?.templates??[]}catch(l){g(l?.message??"加载失败"),b.value=[]}finally{h.value=!1}}function C(){x.value="list",U()}function L(l){o.id=l.id||0,o.title=l.title||"",o.tid=l.tid||"",o.language=l.language||"",o.ttype=l.ttype||"",o.tags=l.tags||"",o.icon=l.icon||"",o.description=l.description||"",o.outline=l.outline||"",o.template=l.template||""}async function E(l){if(x.value="form",l&&l.id){c.value=!0,L(l);try{const e=await v("getmeettemplate",{id:l.id});e&&L(e)}catch(e){g(e?.message??"加载详情失败")}}else c.value=!1,L({})}async function j(){_.value=!0;try{const l={title:o.title.trim(),tid:o.tid.trim(),language:o.language.trim(),ttype:o.ttype.trim(),tags:o.tags.trim(),icon:o.icon.trim(),description:o.description.trim(),outline:o.outline,template:o.template};c.value&&(l.id=Number(o.id)),await v(c.value?"updatemeettemplate":"addmeettemplate",l),S("保存成功"),C()}catch(l){g(l?.message??"保存失败")}finally{_.value=!1}}function N(l){window.confirm(`确定删除模板 "${l.title||""}" 吗?`)&&v("delmeettemplate",{ids:[l.id]}).then(()=>{S("删除成功"),U()}).catch(e=>g(e?.message??"删除失败"))}return H(U),(l,e)=>(d(),a("div",null,[i(t("div",null,[t("div",Q,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"会议模板"),t("p",{class:"text-xs text-slate-400 mt-1"},"会议纪要公共模板(source=public),所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>E())},"+ 新增模板")]),t("div",W,[e[18]||(e[18]=t("span",{class:"text-sm text-slate-500"},"语言",-1)),i(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>y.value=s),class:"select select-bordered select-sm"},[e[16]||(e[16]=t("option",{value:""},"全部语言",-1)),(d(!0),a(p,null,f(M.value,s=>(d(),a("option",{key:s,value:s},r(s),9,X))),128))],512),[[D,y.value]]),e[19]||(e[19]=t("span",{class:"text-sm text-slate-500"},"分组(tid)",-1)),i(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>w.value=s),class:"select select-bordered select-sm"},[e[17]||(e[17]=t("option",{value:""},"全部分组",-1)),(d(!0),a(p,null,f(O.value,s=>(d(),a("option",{key:s,value:s},r(s),9,Y))),128))],512),[[D,w.value]]),i(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>V.value=s),class:"input input-bordered input-sm w-48",placeholder:"按标题搜索"},null,512),[[u,V.value]])]),t("div",Z,[t("div",tt,[t("table",et,[e[22]||(e[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"标题"),t("th",null,"模板标识(tid)"),t("th",null,"语言"),t("th",null,"类型"),t("th",null,"标签"),t("th",{class:"text-right"},"操作")])],-1)),t("tbody",null,[h.value?(d(),a("tr",st,[...e[20]||(e[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):B.value.length?(d(!0),a(p,{key:2},f(T.value,s=>(d(),a(p,{key:s.key},[t("tr",ot,[t("td",nt,[t("span",at,"▸ "+r(s.label),1),t("span",it,r(s.items.length)+" 个版本",1)])]),(d(!0),a(p,null,f(s.items,n=>(d(),a("tr",{key:n.id,class:"hover"},[t("td",dt,r(n.id||""),1),t("td",rt,r(n.title||""),1),t("td",ut,r(n.tid||""),1),t("td",null,[t("span",mt,r(n.language||"-"),1)]),t("td",pt,r(n.ttype||""),1),t("td",bt,[$(n.tags).length?(d(!0),a(p,{key:0},f($(n.tags),(F,R)=>(d(),a("span",{key:R,class:"badge badge-ghost badge-sm mr-1"},r(F),1))),128)):(d(),a("span",ct,"-"))]),t("td",ft,[t("div",vt,[t("button",{class:"btn btn-ghost btn-xs",onClick:F=>E(n)},"编辑",8,gt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:F=>N(n)},"删除",8,xt)])])]))),128))],64))),128)):(d(),a("tr",lt,[...e[21]||(e[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无模板",-1)])]))])])])])],512),[[A,x.value==="list"]]),i(t("div",null,[t("div",yt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>C())},"← 返回列表"),t("h2",wt,r(c.value?"编辑模板":"新增模板"),1)]),t("div",kt,[t("form",{onSubmit:I(j,["prevent"])},[t("div",ht,[t("div",_t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标题 *")],-1)),i(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>o.title=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[u,o.title]])]),t("div",Vt,[e[24]||(e[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板标识 (tid)")],-1)),i(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>o.tid=s),type:"text",class:"input input-bordered w-full",placeholder:"同一 tid 可有多语言版本"},null,512),[[u,o.tid]])]),t("div",Ut,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"语言")],-1)),i(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>o.language=s),type:"text",class:"input input-bordered w-full",placeholder:"如 zh / en",list:"langlist"},null,512),[[u,o.language]]),e[26]||(e[26]=G('',1))]),t("div",Ct,[e[27]||(e[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"类型 (ttype)")],-1)),i(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>o.ttype=s),type:"text",class:"input input-bordered w-full",placeholder:"如 meeting / interview"},null,512),[[u,o.ttype]])]),t("div",Lt,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标签 (tags)")],-1)),i(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>o.tags=s),type:"text",class:"input input-bordered w-full",placeholder:"逗号分隔"},null,512),[[u,o.tags]])]),t("div",Ft,[e[29]||(e[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"图标 (icon)")],-1)),i(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>o.icon=s),type:"text",class:"input input-bordered w-full",placeholder:"图标 URL 或名称"},null,512),[[u,o.icon]])])]),t("div",St,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),i(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>o.description=s),type:"text",class:"input input-bordered w-full"},null,512),[[u,o.description]])]),t("div",$t,[e[31]||(e[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"大纲 (outline)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=s=>o.outline=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"4"},null,512),[[u,o.outline]])]),t("div",zt,[e[32]||(e[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板内容 (template)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[13]||(e[13]=s=>o.template=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"10"},null,512),[[u,o.template]])]),t("div",Bt,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[14]||(e[14]=s=>C())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,Et)])],32)])],512),[[A,x.value==="form"]])]))}});export{jt as default}; +import{g as q,B as H,c as a,p as i,H as A,a as t,F as p,r as f,q as D,v as u,t as r,m as I,N as G,x as m,y as J,z as k,o as d}from"./Dv-LAQo6.js";import{u as K}from"./mz7Huk5H.js";import{u as P}from"./D7SVvy69.js";import"./D0vUT4uH.js";const Q={class:"flex items-center justify-between mb-5"},W={class:"flex items-center gap-3 mb-4 flex-wrap"},X=["value"],Y=["value"],Z={class:"bg-white rounded-xl shadow-sm border border-slate-100"},tt={class:"overflow-x-auto"},et={class:"table table-zebra"},st={key:0},lt={key:1},ot={class:"bg-slate-100/80"},nt={colspan:"7",class:"py-2"},at={class:"font-semibold text-slate-600 text-sm"},it={class:"text-xs text-slate-400 ml-2"},dt={class:"font-mono text-sm text-slate-400"},rt={class:"font-medium"},ut={class:"font-mono text-sm"},mt={class:"badge badge-outline badge-sm"},pt={class:"text-sm"},bt={class:"text-sm"},ct={key:1,class:"text-slate-300"},ft={class:"text-right"},vt={class:"inline-flex gap-1"},gt=["onClick"],xt=["onClick"],yt={class:"flex items-center gap-3 mb-5"},wt={class:"text-lg font-semibold text-slate-800"},kt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},ht={class:"grid grid-cols-2 gap-4"},_t={class:"form-control mb-4"},Vt={class:"form-control mb-4"},Ut={class:"form-control mb-4"},Ct={class:"form-control mb-4"},Lt={class:"form-control mb-4"},Ft={class:"form-control mb-4"},St={class:"form-control mb-4"},$t={class:"form-control mb-4"},zt={class:"form-control mb-6"},Bt={class:"flex gap-3"},Et=["disabled"],Tt=q({__name:"meettemplates",setup(At){const{webApi:v}=K(),{success:S,error:g}=P(),x=m("list"),b=m([]),h=m(!1),_=m(!1),c=m(!1),y=m("zh"),w=m(""),V=m(""),o=J({id:0,title:"",tid:"",language:"",ttype:"",tags:"",icon:"",description:"",outline:"",template:""});function $(l){return(l||"").split(",").map(e=>e.trim()).filter(Boolean)}function z(l){return(l||"").split("-")[0].trim().toLowerCase()}const M=k(()=>{const l=new Set;return b.value.forEach(e=>{e.language&&l.add(e.language)}),Array.from(l).sort()}),N=k(()=>{const l=new Set;return b.value.forEach(e=>{e.tid&&l.add(e.tid)}),Array.from(l).sort()}),B=k(()=>{const l=V.value.trim().toLowerCase();return b.value.filter(e=>!(y.value&&z(e.language)!==z(y.value)||w.value&&(e.tid||"")!==w.value||l&&(e.title||"").toLowerCase().indexOf(l)<0))}),O=k(()=>{const l={};return B.value.forEach(s=>{const n=s.tid||"";(l[n]=l[n]||[]).push(s)}),Object.keys(l).sort((s,n)=>s===""?-1:n===""?1:s({key:s,label:s||"无 tid",items:l[s]}))});async function U(){h.value=!0;try{const l=await v("getmeettemplates",{});b.value=l?.templates??[]}catch(l){g(l?.message??"加载失败"),b.value=[]}finally{h.value=!1}}function C(){x.value="list",U()}function L(l){o.id=l.id||0,o.title=l.title||"",o.tid=l.tid||"",o.language=l.language||"",o.ttype=l.ttype||"",o.tags=l.tags||"",o.icon=l.icon||"",o.description=l.description||"",o.outline=l.outline||"",o.template=l.template||""}async function E(l){if(x.value="form",l&&l.id){c.value=!0,L(l);try{const e=await v("getmeettemplate",{id:l.id});e&&L(e)}catch(e){g(e?.message??"加载详情失败")}}else c.value=!1,L({})}async function T(){_.value=!0;try{const l={title:o.title.trim(),tid:o.tid.trim(),language:o.language.trim(),ttype:o.ttype.trim(),tags:o.tags.trim(),icon:o.icon.trim(),description:o.description.trim(),outline:o.outline,template:o.template};c.value&&(l.id=Number(o.id)),await v(c.value?"updatemeettemplate":"addmeettemplate",l),S("保存成功"),C()}catch(l){g(l?.message??"保存失败")}finally{_.value=!1}}function j(l){window.confirm(`确定删除模板 "${l.title||""}" 吗?`)&&v("delmeettemplate",{ids:[l.id]}).then(()=>{S("删除成功"),U()}).catch(e=>g(e?.message??"删除失败"))}return H(U),(l,e)=>(d(),a("div",null,[i(t("div",null,[t("div",Q,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"会议模板"),t("p",{class:"text-xs text-slate-400 mt-1"},"会议纪要公共模板(source=public),所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=s=>E())},"+ 新增模板")]),t("div",W,[e[18]||(e[18]=t("span",{class:"text-sm text-slate-500"},"语言",-1)),i(t("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>y.value=s),class:"select select-bordered select-sm"},[e[16]||(e[16]=t("option",{value:""},"全部语言",-1)),(d(!0),a(p,null,f(M.value,s=>(d(),a("option",{key:s,value:s},r(s),9,X))),128))],512),[[D,y.value]]),e[19]||(e[19]=t("span",{class:"text-sm text-slate-500"},"分组(tid)",-1)),i(t("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>w.value=s),class:"select select-bordered select-sm"},[e[17]||(e[17]=t("option",{value:""},"全部分组",-1)),(d(!0),a(p,null,f(N.value,s=>(d(),a("option",{key:s,value:s},r(s),9,Y))),128))],512),[[D,w.value]]),i(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>V.value=s),class:"input input-bordered input-sm w-48",placeholder:"按标题搜索"},null,512),[[u,V.value]])]),t("div",Z,[t("div",tt,[t("table",et,[e[22]||(e[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"标题"),t("th",null,"模板标识(tid)"),t("th",null,"语言"),t("th",null,"类型"),t("th",null,"标签"),t("th",{class:"text-right"},"操作")])],-1)),t("tbody",null,[h.value?(d(),a("tr",st,[...e[20]||(e[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):B.value.length?(d(!0),a(p,{key:2},f(O.value,s=>(d(),a(p,{key:s.key},[t("tr",ot,[t("td",nt,[t("span",at,"▸ "+r(s.label),1),t("span",it,r(s.items.length)+" 个版本",1)])]),(d(!0),a(p,null,f(s.items,n=>(d(),a("tr",{key:n.id,class:"hover"},[t("td",dt,r(n.id||""),1),t("td",rt,r(n.title||""),1),t("td",ut,r(n.tid||""),1),t("td",null,[t("span",mt,r(n.language||"-"),1)]),t("td",pt,r(n.ttype||""),1),t("td",bt,[$(n.tags).length?(d(!0),a(p,{key:0},f($(n.tags),(F,R)=>(d(),a("span",{key:R,class:"badge badge-ghost badge-sm mr-1"},r(F),1))),128)):(d(),a("span",ct,"-"))]),t("td",ft,[t("div",vt,[t("button",{class:"btn btn-ghost btn-xs",onClick:F=>E(n)},"编辑",8,gt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:F=>j(n)},"删除",8,xt)])])]))),128))],64))),128)):(d(),a("tr",lt,[...e[21]||(e[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无模板",-1)])]))])])])])],512),[[A,x.value==="list"]]),i(t("div",null,[t("div",yt,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[4]||(e[4]=s=>C())},"← 返回列表"),t("h2",wt,r(c.value?"编辑模板":"新增模板"),1)]),t("div",kt,[t("form",{onSubmit:I(T,["prevent"])},[t("div",ht,[t("div",_t,[e[23]||(e[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标题 *")],-1)),i(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>o.title=s),type:"text",class:"input input-bordered w-full",required:""},null,512),[[u,o.title]])]),t("div",Vt,[e[24]||(e[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板标识 (tid)")],-1)),i(t("input",{"onUpdate:modelValue":e[6]||(e[6]=s=>o.tid=s),type:"text",class:"input input-bordered w-full",placeholder:"同一 tid 可有多语言版本"},null,512),[[u,o.tid]])]),t("div",Ut,[e[25]||(e[25]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"语言")],-1)),i(t("input",{"onUpdate:modelValue":e[7]||(e[7]=s=>o.language=s),type:"text",class:"input input-bordered w-full",placeholder:"如 zh / en",list:"langlist"},null,512),[[u,o.language]]),e[26]||(e[26]=G('',1))]),t("div",Ct,[e[27]||(e[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"类型 (ttype)")],-1)),i(t("input",{"onUpdate:modelValue":e[8]||(e[8]=s=>o.ttype=s),type:"text",class:"input input-bordered w-full",placeholder:"如 meeting / interview"},null,512),[[u,o.ttype]])]),t("div",Lt,[e[28]||(e[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"标签 (tags)")],-1)),i(t("input",{"onUpdate:modelValue":e[9]||(e[9]=s=>o.tags=s),type:"text",class:"input input-bordered w-full",placeholder:"逗号分隔"},null,512),[[u,o.tags]])]),t("div",Ft,[e[29]||(e[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"图标 (icon)")],-1)),i(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>o.icon=s),type:"text",class:"input input-bordered w-full",placeholder:"图标 URL 或名称"},null,512),[[u,o.icon]])])]),t("div",St,[e[30]||(e[30]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),i(t("input",{"onUpdate:modelValue":e[11]||(e[11]=s=>o.description=s),type:"text",class:"input input-bordered w-full"},null,512),[[u,o.description]])]),t("div",$t,[e[31]||(e[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"大纲 (outline)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[12]||(e[12]=s=>o.outline=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"4"},null,512),[[u,o.outline]])]),t("div",zt,[e[32]||(e[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"模板内容 (template)")],-1)),i(t("textarea",{"onUpdate:modelValue":e[13]||(e[13]=s=>o.template=s),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"10"},null,512),[[u,o.template]])]),t("div",Bt,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[14]||(e[14]=s=>C())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,Et)])],32)])],512),[[A,x.value==="form"]])]))}});export{Tt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCes3qcB.js b/apps/admin/.output/public/_nuxt/BSpPV7NB.js similarity index 87% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCes3qcB.js rename to apps/admin/.output/public/_nuxt/BSpPV7NB.js index 5c473455..e12e505b 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CCes3qcB.js +++ b/apps/admin/.output/public/_nuxt/BSpPV7NB.js @@ -1,4 +1,4 @@ -import{g as q,B as G,P as K,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Y,s as Z,t as n,x as i,z as E,o,n as F,l as I,_ as J}from"./CCjf5Io-.js";import{u as Q}from"./C-6Qe-lq.js";import{u as W}from"./DTVGNZEd.js";import"./42htcooJ.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=q({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{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 P(){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"./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+`」的接收流水吗? 只清除本核对面板的记录,不影响已落库的统计数据。 -清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function j(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return G(()=>{v.value=p(0),m()}),K(()=>{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),[[Y,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:j},null,544),[[Z,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:P},"清空本日")])]),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=J(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default}; +清空后可重新触发埋点,观察是否正常进来。`))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}; diff --git a/apps/admin/.output/public/_nuxt/BWhTtyw-.js b/apps/admin/.output/public/_nuxt/BWhTtyw-.js new file mode 100644 index 00000000..06ba17b3 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/BWhTtyw-.js @@ -0,0 +1 @@ +import{g as $e,B as Se,c as i,a as t,p,q as M,F as g,r as x,H as P,t as a,d as S,I as re,n as C,v as Y,L as ce,l as m,s as Ue,b as pe,m as z,x as u,y as je,z as U,A as Ie,o,_ as Ne}from"./Dv-LAQo6.js";import{u as Re}from"./mz7Huk5H.js";import{u as Te}from"./D7SVvy69.js";import{l as ve}from"./ChQPCk92.js";import{_ as D}from"./CZJGstC3.js";import"./D0vUT4uH.js";const Be={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},Ee={class:"flex items-center gap-3 flex-wrap"},Oe=["value"],Me=["value"],ze={class:"flex items-center justify-between mb-5"},De={class:"flex items-center gap-3"},Ge={class:"font-semibold text-slate-800 text-sm"},qe={class:"region-chip"},Fe={class:"ed-section"},Pe={class:"lang-row"},Ye={class:"lang-field"},He={class:"flex items-center justify-between"},We={class:"any-toggle"},Je=["checked"],Ke={key:0,class:"any-box"},Qe={class:"dir-col"},Xe=["title"],Ze={class:"dir-tip"},et={class:"lang-field"},tt={class:"flex items-center justify-between"},st={class:"any-toggle"},lt=["checked"],nt={key:0,class:"any-box"},at={class:"grid grid-cols-3 gap-3 mt-3"},ot=["value"],it={class:"ed-section"},ut={class:"grid grid-cols-2 gap-3"},dt={value:"",disabled:""},rt=["label"],ct=["value"],pt={key:0,class:"agent-preview"},vt={class:"text-xs text-slate-500"},bt={key:0,class:"text-[11px] text-slate-400"},gt={key:1,class:"text-[11px] text-amber-600"},mt={key:1,class:"ed-warn"},ft={class:"ed-footer"},yt={class:"flex items-center gap-2 text-sm cursor-pointer"},xt={key:0,class:"text-center py-20 text-slate-300"},_t={key:1,class:"rule-list"},kt=["onClick"],ht={class:"prio-cell"},At={class:"prio"},wt={class:"order"},Ct={class:"cond-cell"},Vt={class:"flex items-center gap-2 flex-wrap"},Lt={class:"text-slate-400 font-bold"},$t={key:0,class:"text-[11px] text-slate-400 mt-1"},St={key:0},Ut={class:"agent-cell"},jt={class:"text-xs text-slate-700"},It={class:"text-xs text-slate-500"},Nt={class:"text-right"},Rt={key:0,class:"badge badge-success badge-xs mr-2"},Tt={key:1,class:"badge badge-ghost badge-xs mr-2"},Bt=["onClick"],Et={class:"ct-box"},Ot={class:"grid grid-cols-2 gap-3"},Mt={class:"text-sm font-semibold text-slate-800 mb-1"},zt={class:"text-xs text-slate-600"},Dt={key:0},Gt={key:1,class:"text-sm text-amber-700"},qt={class:"flex gap-3 justify-end mt-5"},Ft={class:"ct-overlay"},Pt={class:"ct-box"},Yt={class:"text-xs text-slate-400 mb-3"},Ht={class:"flex items-center justify-between mb-1"},Wt={class:"flex gap-2"},Jt={class:"sync-region-grid"},Kt=["onClick"],Qt=["checked","onClick"],Xt={class:"flex gap-3 justify-end"},Zt=["disabled"],H="*",es=$e({__name:"calltranslate",setup(ts){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function W(s){return V.find(e=>e.value===s)?.label??"区域"+s}const _={translate:{label:"🧩 三段式翻译",color:"#059669",bg:"#dcfce7"},"ast-translate":{label:"🚀 端到端翻译",color:"#c2410c",bg:"#fff7ed"}};function G(s){return s&&_[s]?_[s].label:s||"未知"}function J(s){const e=s?_[s]:void 0;return e?{background:e.bg,color:e.color}:{background:"#f1f5f9",color:"#64748b"}}const{webApi:k,consoleApi:be}=Re(),{success:q,error:v}=Te(),f=u(""),F=u([]),L=u(V[0].value),j=u([]),h=u([]),I=u(!1),A=u(null),K=u(null),Q=u(0),n=je({name:"",srcLangs:"",dstLangs:"",srcAny:!1,dstAny:!1,bidir:!0,region:0,priority:100,agentId:"",remark:"",enable:!0}),X=U(()=>h.value.filter(s=>s.type in _)),ge=U(()=>Object.keys(_).map(s=>({type:s,label:_[s].label,items:X.value.filter(e=>e.type===s)})).filter(s=>s.items.length)),b=U(()=>h.value.find(s=>s.id===n.agentId)||null),Z=U(()=>{const s=b.value;if(!s||!s.support_langs)return"";const e=s.support_langs.split(",").map(y=>y.trim()).filter(Boolean);if(!e.length)return"";const c=[...n.srcAny?[]:n.srcLangs.split(","),...n.dstAny?[]:n.dstLangs.split(",")].map(y=>y.trim()).filter(Boolean).filter(y=>!e.includes(y));return c.length?`Agent「${s.name||s.id}」未声明支持:${c.join("、")}`:""});function $(s){return(s||"").trim()===H}function w(s){if($(s))return"任意语言";const e=(s||"").split(",").map(l=>l.trim()).filter(Boolean);return e.length?e.length<=3?e.map(l=>ve(l)).join("、"):e.slice(0,3).map(l=>ve(l)).join("、")+` 等 ${e.length} 种`:"—"}function me(s){return h.value.find(e=>e.id===s)?.name||s||"未配置"}function ee(s){return h.value.find(e=>e.id===s)?.type||""}async function fe(){try{const s=await be("products/list",{});F.value=(s??[]).map(e=>e.name).filter(Boolean)}catch{F.value=[]}}async function ye(){try{const s=await k("getagents",{app_name:f.value});h.value=s?.items??[]}catch{h.value=[]}}async function N(){try{const s=await k("getcalltranslaterules",{app_name:f.value,region:L.value});j.value=s?.items??[]}catch(s){v(s?.message??"加载失败"),j.value=[]}}async function te(){await Promise.all([ye(),N()])}function se(){Ie(()=>K.value?.scrollIntoView({behavior:"smooth",block:"nearest"}))}function le(s){n.name=s?.name??"",n.srcAny=$(s?.src_langs),n.dstAny=$(s?.dst_langs),n.srcLangs=n.srcAny?"":s?.src_langs??"",n.dstLangs=n.dstAny?"":s?.dst_langs??"",n.bidir=s?!!s.bidir:!0,n.region=s?s.region:L.value,n.priority=s?.priority??100,n.agentId=s?.agent_id??"",n.remark=s?.remark??"",n.enable=s?s.enable!==!1:!0}function xe(){A.value=null,le(null),I.value=!0,se()}function _e(s){A.value=s,le(s),I.value=!0,se()}function R(){I.value=!1,A.value=null}function ne(s){s==="src"?(n.srcAny=!n.srcAny,n.srcAny&&(n.srcLangs="")):(n.dstAny=!n.dstAny,n.dstAny&&(n.dstLangs=""))}function ke(){return{id:A.value?A.value.id:0,app_name:f.value,region:n.region,name:n.name.trim(),src_langs:n.srcAny?H:n.srcLangs,dst_langs:n.dstAny?H:n.dstLangs,bidir:n.bidir,agent_id:n.agentId,priority:n.priority||0,enable:n.enable,remark:n.remark.trim()}}async function ae(){const s=ke();if(!s.src_langs)return v("源语言必选(或勾选「任意语言」)"),!1;if(!s.dst_langs)return v("目标语言必选(或勾选「任意语言」)"),!1;if(!s.agent_id)return v("请选择翻译 Agent"),!1;try{const e=await k("savecalltranslaterule",s);return Q.value=e?.id??0,await N(),!0}catch(e){return v(e?.message??"保存失败"),!1}}async function he(){await ae()&&(R(),q("保存成功"))}function Ae(s){window.confirm(`确定删除规则「${s.name||"#"+s.id}」吗?`)&&k("delcalltranslaterules",{ids:[s.id]}).then(()=>{q("已删除"),N()}).catch(e=>v(e?.message??"删除失败"))}const T=u(!1),oe=u(""),r=u([]),ie=U(()=>V.filter(s=>s.value!==n.region));function we(){if(!n.agentId){v("请先选择翻译 Agent");return}oe.value=`将「${n.srcAny?"任意语言":w(n.srcLangs)} ${n.bidir?"⇄":"→"} ${n.dstAny?"任意语言":w(n.dstLangs)}」这条规则复制到其他区域。`,r.value=[],T.value=!0}function ue(s){const e=r.value.indexOf(s);e>=0?r.value.splice(e,1):r.value.push(s)}function de(s){r.value=s?ie.value.map(e=>e.value):[]}async function Ce(){const s=[...r.value];if(T.value=!1,!!await ae()){R();try{const e=await k("synccalltranslaterules",{rule_ids:[Q.value],target_regions:s});q(`已保存并同步到:${s.map(W).join("、")}(${e?.synced??0} 条)`)}catch(e){v(e?.message??"同步失败")}}}const B=u(!1),E=u("zh-CN"),O=u("en-US"),d=u(null);function Ve(){d.value=null,B.value=!0}async function Le(){if(!E.value||!O.value){v("请选择源语言与目标语言");return}try{d.value=await k("testcalltranslaterule",{app_name:f.value,region:L.value,src_lang:E.value,dst_lang:O.value})}catch(s){v(s?.message??"试算失败")}}return Se(async()=>{await fe(),await te()}),(s,e)=>(o(),i("div",null,[t("div",Be,[e[23]||(e[23]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"通话翻译规则"),t("p",{class:"text-xs text-slate-400 mt-1"}," 一条规则覆盖「多源语言 × 多目标语言」,命中后走它指定的 Agent。多条规则按优先级从高到低匹配,第一条命中的生效。 ")],-1)),t("div",Ee,[e[21]||(e[21]=t("span",{class:"text-sm text-slate-500"},"作用域",-1)),p(t("select",{"onUpdate:modelValue":e[0]||(e[0]=l=>f.value=l),class:"select select-bordered select-sm",onChange:te},[e[20]||(e[20]=t("option",{value:""},"全局默认",-1)),(o(!0),i(g,null,x(F.value,l=>(o(),i("option",{key:l,value:l},a(l),9,Oe))),128))],544),[[M,f.value]]),e[22]||(e[22]=t("span",{class:"text-sm text-slate-500"},"区域",-1)),p(t("select",{"onUpdate:modelValue":e[1]||(e[1]=l=>L.value=l),class:"select select-bordered select-sm",onChange:N},[(o(),i(g,null,x(V,l=>t("option",{key:l.value,value:l.value},a(l.label),9,Me)),64))],544),[[M,L.value,void 0,{number:!0}]]),t("button",{class:"btn btn-ghost btn-sm",onClick:Ve},"🔍 选路试算"),t("button",{class:"btn btn-primary btn-sm text-white",onClick:xe},"+ 新增规则")])]),p(t("div",{ref_key:"editorRef",ref:K,class:"editor-panel"},[t("div",ze,[t("div",De,[t("h3",Ge,a(A.value?"编辑规则":"新增规则"),1),t("span",qe,a(f.value||"全局默认"),1)]),t("button",{class:"btn btn-ghost btn-xs",onClick:R},"✕ 关闭")]),t("section",Fe,[e[32]||(e[32]=t("div",{class:"ed-section-title"},"匹配条件",-1)),t("div",Pe,[t("div",Ye,[t("div",He,[e[25]||(e[25]=t("span",{class:"ed-label"},"源语言",-1)),t("label",We,[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:n.srcAny,onChange:e[2]||(e[2]=l=>ne("src"))},null,40,Je),e[24]||(e[24]=S(" 任意语言 ",-1))])]),n.srcAny?(o(),i("div",Ke,"任意源语言")):(o(),re(D,{key:1,modelValue:n.srcLangs,"onUpdate:modelValue":e[3]||(e[3]=l=>n.srcLangs=l),multiple:""},null,8,["modelValue"]))]),t("div",Qe,[t("button",{type:"button",class:C(["dir-btn",{on:n.bidir}]),title:n.bidir?"点击改为单向":"点击改为双向(反向也走这条规则)",onClick:e[4]||(e[4]=l=>n.bidir=!n.bidir)},a(n.bidir?"⇄":"→"),11,Xe),t("span",Ze,a(n.bidir?"双向互译":"单向翻译"),1)]),t("div",et,[t("div",tt,[e[27]||(e[27]=t("span",{class:"ed-label"},"目标语言",-1)),t("label",st,[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:n.dstAny,onChange:e[5]||(e[5]=l=>ne("dst"))},null,40,lt),e[26]||(e[26]=S(" 任意语言 ",-1))])]),n.dstAny?(o(),i("div",nt,"任意目标语言")):(o(),re(D,{key:1,modelValue:n.dstLangs,"onUpdate:modelValue":e[6]||(e[6]=l=>n.dstLangs=l),multiple:""},null,8,["modelValue"]))])]),t("div",at,[t("div",null,[e[29]||(e[29]=t("span",{class:"ed-label"},"生效区域",-1)),p(t("select",{"onUpdate:modelValue":e[7]||(e[7]=l=>n.region=l),class:"select select-bordered select-sm w-full"},[e[28]||(e[28]=t("option",{value:0},"全部区域(兜底)",-1)),(o(),i(g,null,x(V,l=>t("option",{key:l.value,value:l.value},a(l.label),9,ot)),64))],512),[[M,n.region,void 0,{number:!0}]])]),t("div",null,[e[30]||(e[30]=t("span",{class:"ed-label"},"优先级(越大越先匹配)",-1)),p(t("input",{"onUpdate:modelValue":e[8]||(e[8]=l=>n.priority=l),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[Y,n.priority,void 0,{number:!0}]])]),t("div",null,[e[31]||(e[31]=t("span",{class:"ed-label"},"规则名(便于识别)",-1)),p(t("input",{"onUpdate:modelValue":e[9]||(e[9]=l=>n.name=l),class:"input input-bordered input-sm w-full",placeholder:"如 中日韩端到端"},null,512),[[Y,n.name]])])])]),t("section",it,[e[35]||(e[35]=t("div",{class:"ed-section-title"},"命中后使用的 Agent",-1)),t("div",ut,[t("div",null,[e[33]||(e[33]=t("span",{class:"ed-label"},[S("翻译 Agent "),t("i",{class:"req"},"*")],-1)),p(t("select",{"onUpdate:modelValue":e[10]||(e[10]=l=>n.agentId=l),class:"select select-bordered select-sm w-full"},[t("option",dt,a(X.value.length?"请选择 Agent":"(无可用 Agent,请先去 Agent 配置里创建)"),1),(o(!0),i(g,null,x(ge.value,l=>(o(),i("optgroup",{key:l.type,label:l.label},[(o(!0),i(g,null,x(l.items,c=>(o(),i("option",{key:c.id,value:c.id},a(c.name||c.id),9,ct))),128))],8,rt))),128))],512),[[M,n.agentId]])]),t("div",null,[e[34]||(e[34]=t("span",{class:"ed-label"},"备注",-1)),p(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>n.remark=l),class:"input input-bordered input-sm w-full",placeholder:"可留空"},null,512),[[Y,n.remark]])])]),b.value?(o(),i("div",pt,[t("span",{class:"type-badge",style:ce(J(b.value.type))},a(G(b.value.type)),5),t("span",vt,a(b.value.description||"(无描述)"),1),b.value.support_langs?(o(),i("span",bt,"支持:"+a(b.value.support_langs),1)):m("",!0),b.value.enable?m("",!0):(o(),i("span",gt,"⚠ 该 Agent 当前为停用状态"))])):m("",!0),Z.value?(o(),i("p",mt,"⚠ "+a(Z.value),1)):m("",!0)]),t("div",ft,[t("label",yt,[p(t("input",{"onUpdate:modelValue":e[12]||(e[12]=l=>n.enable=l),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[Ue,n.enable]]),e[36]||(e[36]=t("span",null,"启用",-1)),e[37]||(e[37]=t("span",{class:"text-xs text-slate-400"},"停用的规则不参与选路",-1))]),t("div",{class:"flex gap-2"},[t("button",{class:"btn btn-ghost btn-sm",onClick:R},"取消"),t("button",{class:"btn btn-outline btn-sm",onClick:we},"保存并同步…"),t("button",{class:"btn btn-primary btn-sm text-white",onClick:he},"保存")])])],512),[[P,I.value]]),j.value.length?(o(),i("div",_t,[e[39]||(e[39]=t("div",{class:"rule-head"},[t("span",null,"优先级"),t("span",null,"匹配条件"),t("span",null,"Agent"),t("span",null,"区域"),t("span",{class:"text-right"},"操作")],-1)),(o(!0),i(g,null,x(j.value,(l,c)=>(o(),i("div",{key:l.id,class:C(["rule-row",{off:!l.enable}]),onClick:y=>_e(l)},[t("div",ht,[t("span",At,a(l.priority),1),t("span",wt,"#"+a(c+1),1)]),t("div",Ct,[t("div",Vt,[t("span",{class:C(["lang-badge",{any:$(l.src_langs)}])},a(w(l.src_langs)),3),t("span",Lt,a(l.bidir?"⇄":"→"),1),t("span",{class:C(["lang-badge",{any:$(l.dst_langs)}])},a(w(l.dst_langs)),3)]),l.name||l.remark?(o(),i("div",$t,[S(a(l.name),1),l.remark?(o(),i("span",St," · "+a(l.remark),1)):m("",!0)])):m("",!0)]),t("div",Ut,[t("span",{class:"type-badge",style:ce(J(ee(l.agent_id)))},a(G(ee(l.agent_id))),5),t("span",jt,a(me(l.agent_id)),1)]),t("div",It,a(l.region===0?"全部区域":W(l.region)),1),t("div",Nt,[l.enable?(o(),i("span",Rt,"启用")):(o(),i("span",Tt,"停用")),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:z(y=>Ae(l),["stop"])},"删除",8,Bt)])],10,kt))),128))])):(o(),i("div",xt,[...e[38]||(e[38]=[t("div",{class:"text-5xl mb-3"},"🌐",-1),t("p",{class:"text-sm"},"当前区域还没有翻译规则",-1),t("p",{class:"text-xs mt-1"},"建议先加一条「任意 → 任意」的兜底规则,再往上叠精确规则",-1)])])),p(t("div",{class:"ct-overlay",onClick:e[16]||(e[16]=z(l=>B.value=!1,["self"]))},[t("div",Et,[e[42]||(e[42]=t("h3",{class:"text-base font-semibold text-slate-800 mb-1"},"选路试算",-1)),e[43]||(e[43]=t("p",{class:"text-xs text-slate-400 mb-4"},"用后端运行时同一套匹配逻辑,算一遍这个方向实际会走哪条规则。",-1)),t("div",Ot,[t("div",null,[e[40]||(e[40]=t("span",{class:"ed-label"},"源语言",-1)),pe(D,{modelValue:E.value,"onUpdate:modelValue":e[13]||(e[13]=l=>E.value=l)},null,8,["modelValue"])]),t("div",null,[e[41]||(e[41]=t("span",{class:"ed-label"},"目标语言",-1)),pe(D,{modelValue:O.value,"onUpdate:modelValue":e[14]||(e[14]=l=>O.value=l)},null,8,["modelValue"])])]),d.value?(o(),i("div",{key:0,class:C(["test-result",{miss:!d.value.matched}])},[d.value.matched?(o(),i(g,{key:0},[t("div",Mt," 命中规则:"+a(d.value.rule?.name||"#"+d.value.rule?.id)+"(优先级 "+a(d.value.rule?.priority)+") ",1),t("div",zt,[S(a(w(d.value.rule?.src_langs))+" "+a(d.value.rule?.bidir?"⇄":"→")+" "+a(w(d.value.rule?.dst_langs))+" · Agent:"+a(d.value.agent?.name||d.value.rule?.agent_id)+" ",1),d.value.agent?(o(),i("span",Dt,"("+a(G(d.value.agent.type))+")",1)):m("",!0)])],64)):(o(),i("div",Gt,"没有任何规则命中 —— 这个方向的通话翻译会不可用,建议补一条兜底规则。"))],2)):m("",!0),t("div",qt,[t("button",{class:"btn btn-ghost",onClick:e[15]||(e[15]=l=>B.value=!1)},"关闭"),t("button",{class:"btn btn-primary text-white",onClick:Le},"试算")])])],512),[[P,B.value]]),p(t("div",Ft,[t("div",Pt,[e[45]||(e[45]=t("h3",{class:"text-base font-semibold text-slate-800 mb-1"},"同步到其他区域",-1)),t("p",Yt,a(oe.value),1),e[46]||(e[46]=t("div",{class:"text-xs px-3 py-2 rounded-lg mb-3",style:{background:"#f0fdf4",border:"1px solid #bbf7d0",color:"#15803d"}}," ✦ 同步内容:语言条件、Agent、优先级、启停状态一并复制到目标区域。 ",-1)),t("div",Ht,[e[44]||(e[44]=t("span",{class:"text-xs font-semibold text-slate-500"},"选择目标区域",-1)),t("div",Wt,[t("button",{class:"btn btn-ghost btn-xs",onClick:e[17]||(e[17]=l=>de(!0))},"全选"),t("button",{class:"btn btn-ghost btn-xs",onClick:e[18]||(e[18]=l=>de(!1))},"清空")])]),t("div",Jt,[(o(!0),i(g,null,x(ie.value,l=>(o(),i("label",{key:l.value,class:C(["sync-region-item",{checked:r.value.includes(l.value)}]),onClick:z(c=>ue(l.value),["prevent"])},[t("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:r.value.includes(l.value),onClick:z(c=>ue(l.value),["stop"])},null,8,Qt),t("span",null,a(l.label),1)],10,Kt))),128))]),e[47]||(e[47]=t("p",{class:"text-[11px] text-slate-400 mb-5"},"⚠ 目标区域已有「同 Agent + 同语言条件」的规则则覆盖,否则新建。",-1)),t("div",Xt,[t("button",{class:"btn btn-ghost",onClick:e[19]||(e[19]=l=>T.value=!1)},"取消"),t("button",{class:"btn btn-primary text-white",disabled:!r.value.length,onClick:Ce}," 保存并同步"+a(r.value.length?"("+r.value.length+" 个区域)":""),9,Zt)])])],512),[[P,T.value]])]))}}),us=Ne(es,[["__scopeId","data-v-c0bab860"]]);export{us as default}; diff --git a/apps/admin/.output/public/_nuxt/BFMExc8z.js b/apps/admin/.output/public/_nuxt/BfiStvNk.js similarity index 98% rename from apps/admin/.output/public/_nuxt/BFMExc8z.js rename to apps/admin/.output/public/_nuxt/BfiStvNk.js index e026b81e..a069ad15 100644 --- a/apps/admin/.output/public/_nuxt/BFMExc8z.js +++ b/apps/admin/.output/public/_nuxt/BfiStvNk.js @@ -1 +1 @@ -import{g as D,B as F,c as n,p as i,H as $,a as e,F as b,r as y,q as B,v,l as j,t as r,m as q,x as d,y as I,z as E,o as u}from"./CCjf5Io-.js";import{u as O}from"./C-6Qe-lq.js";import{u as T}from"./DTVGNZEd.js";import"./42htcooJ.js";const z={class:"flex items-center justify-between mb-5"},G={class:"flex items-center gap-3 mb-4"},H=["value"],J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},K={class:"overflow-x-auto"},P={class:"table"},Q={key:0},W={key:1},X={class:"bg-slate-100/80"},Y={colspan:"4",class:"py-2"},Z={class:"font-semibold text-slate-600 text-sm"},ee={class:"text-xs text-slate-400 ml-2"},te={class:"font-mono text-sm font-medium"},le=["title"],se={class:"text-sm text-slate-400"},oe={class:"text-right"},ae={class:"inline-flex gap-1"},ne=["onClick"],ie=["onClick"],ue={class:"flex items-center gap-3 mb-5"},re={class:"text-lg font-semibold text-slate-800"},de={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},me={class:"grid grid-cols-2 gap-4"},be={class:"form-control mb-4"},ve=["value"],pe={class:"form-control mb-4"},ce={class:"form-control mb-4"},fe={class:"form-control mb-4"},ge={class:"form-control mb-6"},xe={class:"flex gap-3"},ye=["disabled"],Ve=D({__name:"globalconfig",setup(we){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],{webApi:p}=O(),{success:U,error:w}=T(),c=d("list"),f=d([]),k=d(!1),_=d(!1),g=d(!1),m=d(1),h=d(""),s=I({id:0,region:1,group:"",key:"",value:"",description:""}),N=E(()=>{const o=h.value.trim().toLowerCase();return o?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(o)):f.value}),L=E(()=>{const o={};return N.value.forEach(l=>{const a=l.group||"";(o[a]=o[a]||[]).push(l)}),Object.keys(o).sort((l,a)=>l===""?-1:a===""?1:l({key:l,label:l||"未分组",items:o[l]}))});async function x(){k.value=!0;try{const o=await p("getglobalconfigs",{region:m.value});f.value=o?.items??[]}catch(o){w(o?.message??"获取配置失败"),f.value=[]}finally{k.value=!1}}function C(){c.value="list",x()}function S(o){o?(g.value=!0,s.id=o.id||0,s.region=o.region||1,s.group=o.group||"",s.key=o.key||"",s.value=o.value||"",s.description=o.description||""):(g.value=!1,s.id=0,s.region=m.value>0?m.value:1,s.group="",s.key="",s.value="",s.description=""),c.value="form"}async function M(){_.value=!0;try{const o={region:Number(s.region)||0,group:s.group.trim(),key:s.key.trim(),value:s.value,description:s.description.trim()};g.value?(o.id=Number(s.id),await p("updateglobalconfig",o)):await p("addglobalconfig",o),U("保存成功"),C()}catch(o){w(o?.message??"保存失败")}finally{_.value=!1}}function R(o){window.confirm("确定删除该配置项吗?")&&p("delglobalconfig",{ids:[o.id]}).then(()=>{U("删除成功"),x()}).catch(t=>w(t?.message??"删除失败"))}return F(x),(o,t)=>(u(),n("div",null,[i(e("div",null,[e("div",z,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"全局环境配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"全局第三方服务配置(AI / 翻译等),按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>S())},"+ 新增配置")]),e("div",G,[t[11]||(t[11]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),i(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:x},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,H)),64))],544),[[B,m.value,void 0,{number:!0}]]),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>h.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[v,h.value]])]),e("div",J,[e("div",K,[e("table",P,[t[14]||(t[14]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[k.value?(u(),n("tr",Q,[...t[12]||(t[12]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):N.value.length?j("",!0):(u(),n("tr",W,[...t[13]||(t[13]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),n(b,null,y(L.value,l=>(u(),n(b,{key:l.key},[e("tr",X,[e("td",Y,[e("span",Z,"▸ "+r(l.label),1),e("span",ee,r(l.items.length)+" 项",1)])]),(u(!0),n(b,null,y(l.items,a=>(u(),n("tr",{key:a.id,class:"hover"},[e("td",te,r(a.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:a.value||""},r(a.value||""),9,le),e("td",se,r(a.description||""),1),e("td",oe,[e("div",ae,[e("button",{class:"btn btn-ghost btn-xs",onClick:A=>S(a)},"编辑",8,ne),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:A=>R(a)},"删除",8,ie)])])]))),128))],64))),128))])])])])],512),[[$,c.value==="list"]]),i(e("div",null,[e("div",ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>C())},"← 返回列表"),e("h2",re,r(g.value?"编辑配置":"新增配置"),1)]),e("div",de,[e("form",{onSubmit:q(M,["prevent"])},[e("div",me,[e("div",be,[t[15]||(t[15]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.region=l),class:"select select-bordered w-full"},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,ve)),64))],512),[[B,s.region,void 0,{number:!0}]])]),e("div",pe,[t[16]||(t[16]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 ai / translate / asr"},null,512),[[v,s.group]])])]),e("div",ce,[t[17]||(t[17]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 openai_api_key"},null,512),[[v,s.key]])]),e("div",fe,[t[18]||(t[18]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),i(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[v,s.value]])]),e("div",ge,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[v,s.description]])]),e("div",xe,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>C())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,ye)])],32)])],512),[[$,c.value==="form"]])]))}});export{Ve as default}; +import{g as D,B as F,c as n,p as i,H as $,a as e,F as b,r as y,q as B,v,l as j,t as r,m as q,x as d,y as I,z as E,o as u}from"./Dv-LAQo6.js";import{u as O}from"./mz7Huk5H.js";import{u as T}from"./D7SVvy69.js";import"./D0vUT4uH.js";const z={class:"flex items-center justify-between mb-5"},G={class:"flex items-center gap-3 mb-4"},H=["value"],J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},K={class:"overflow-x-auto"},P={class:"table"},Q={key:0},W={key:1},X={class:"bg-slate-100/80"},Y={colspan:"4",class:"py-2"},Z={class:"font-semibold text-slate-600 text-sm"},ee={class:"text-xs text-slate-400 ml-2"},te={class:"font-mono text-sm font-medium"},le=["title"],se={class:"text-sm text-slate-400"},oe={class:"text-right"},ae={class:"inline-flex gap-1"},ne=["onClick"],ie=["onClick"],ue={class:"flex items-center gap-3 mb-5"},re={class:"text-lg font-semibold text-slate-800"},de={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},me={class:"grid grid-cols-2 gap-4"},be={class:"form-control mb-4"},ve=["value"],pe={class:"form-control mb-4"},ce={class:"form-control mb-4"},fe={class:"form-control mb-4"},ge={class:"form-control mb-6"},xe={class:"flex gap-3"},ye=["disabled"],Ve=D({__name:"globalconfig",setup(we){const V=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],{webApi:p}=O(),{success:U,error:w}=T(),c=d("list"),f=d([]),k=d(!1),_=d(!1),g=d(!1),m=d(1),h=d(""),s=I({id:0,region:1,group:"",key:"",value:"",description:""}),N=E(()=>{const o=h.value.trim().toLowerCase();return o?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(o)):f.value}),L=E(()=>{const o={};return N.value.forEach(l=>{const a=l.group||"";(o[a]=o[a]||[]).push(l)}),Object.keys(o).sort((l,a)=>l===""?-1:a===""?1:l({key:l,label:l||"未分组",items:o[l]}))});async function x(){k.value=!0;try{const o=await p("getglobalconfigs",{region:m.value});f.value=o?.items??[]}catch(o){w(o?.message??"获取配置失败"),f.value=[]}finally{k.value=!1}}function C(){c.value="list",x()}function S(o){o?(g.value=!0,s.id=o.id||0,s.region=o.region||1,s.group=o.group||"",s.key=o.key||"",s.value=o.value||"",s.description=o.description||""):(g.value=!1,s.id=0,s.region=m.value>0?m.value:1,s.group="",s.key="",s.value="",s.description=""),c.value="form"}async function M(){_.value=!0;try{const o={region:Number(s.region)||0,group:s.group.trim(),key:s.key.trim(),value:s.value,description:s.description.trim()};g.value?(o.id=Number(s.id),await p("updateglobalconfig",o)):await p("addglobalconfig",o),U("保存成功"),C()}catch(o){w(o?.message??"保存失败")}finally{_.value=!1}}function R(o){window.confirm("确定删除该配置项吗?")&&p("delglobalconfig",{ids:[o.id]}).then(()=>{U("删除成功"),x()}).catch(t=>w(t?.message??"删除失败"))}return F(x),(o,t)=>(u(),n("div",null,[i(e("div",null,[e("div",z,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"全局环境配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"全局第三方服务配置(AI / 翻译等),按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>S())},"+ 新增配置")]),e("div",G,[t[11]||(t[11]=e("span",{class:"text-sm text-slate-500"},"区域",-1)),i(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:x},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,H)),64))],544),[[B,m.value,void 0,{number:!0}]]),i(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>h.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[v,h.value]])]),e("div",J,[e("div",K,[e("table",P,[t[14]||(t[14]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[k.value?(u(),n("tr",Q,[...t[12]||(t[12]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):N.value.length?j("",!0):(u(),n("tr",W,[...t[13]||(t[13]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),n(b,null,y(L.value,l=>(u(),n(b,{key:l.key},[e("tr",X,[e("td",Y,[e("span",Z,"▸ "+r(l.label),1),e("span",ee,r(l.items.length)+" 项",1)])]),(u(!0),n(b,null,y(l.items,a=>(u(),n("tr",{key:a.id,class:"hover"},[e("td",te,r(a.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:a.value||""},r(a.value||""),9,le),e("td",se,r(a.description||""),1),e("td",oe,[e("div",ae,[e("button",{class:"btn btn-ghost btn-xs",onClick:A=>S(a)},"编辑",8,ne),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:A=>R(a)},"删除",8,ie)])])]))),128))],64))),128))])])])])],512),[[$,c.value==="list"]]),i(e("div",null,[e("div",ue,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>C())},"← 返回列表"),e("h2",re,r(g.value?"编辑配置":"新增配置"),1)]),e("div",de,[e("form",{onSubmit:q(M,["prevent"])},[e("div",me,[e("div",be,[t[15]||(t[15]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),i(e("select",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.region=l),class:"select select-bordered w-full"},[(u(),n(b,null,y(V,l=>e("option",{key:l.value,value:l.value},r(l.label),9,ve)),64))],512),[[B,s.region,void 0,{number:!0}]])]),e("div",pe,[t[16]||(t[16]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),i(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 ai / translate / asr"},null,512),[[v,s.group]])])]),e("div",ce,[t[17]||(t[17]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),i(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 openai_api_key"},null,512),[[v,s.key]])]),e("div",fe,[t[18]||(t[18]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),i(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[v,s.value]])]),e("div",ge,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),i(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[v,s.description]])]),e("div",xe,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>C())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:_.value},"保存",8,ye)])],32)])],512),[[$,c.value==="form"]])]))}});export{Ve as default}; diff --git a/apps/admin/.output/public/_nuxt/S5V4LTkJ.js b/apps/admin/.output/public/_nuxt/BtEuBlBw.js similarity index 94% rename from apps/admin/.output/public/_nuxt/S5V4LTkJ.js rename to apps/admin/.output/public/_nuxt/BtEuBlBw.js index 1abd7346..2fc54f54 100644 --- a/apps/admin/.output/public/_nuxt/S5V4LTkJ.js +++ b/apps/admin/.output/public/_nuxt/BtEuBlBw.js @@ -1 +1 @@ -import{_ as s}from"./CA44cC15.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./CCjf5Io-.js";import{u as f}from"./b15UHpcb.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"./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}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0cd7Vyx.js b/apps/admin/.output/public/_nuxt/CEsBRmS9.js similarity index 89% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0cd7Vyx.js rename to apps/admin/.output/public/_nuxt/CEsBRmS9.js index 59b1d334..3cde22b9 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0cd7Vyx.js +++ b/apps/admin/.output/public/_nuxt/CEsBRmS9.js @@ -1 +1 @@ -import{g as Q,B as J,c as o,a,l as r,d as f,t as i,F as k,r as M,O as I,p as q,s as W,v as X,x as h,z as D,y as Y,o as n,n as A,m as L,q as Z,C as ee,_ as te}from"./CCjf5Io-.js";import{u as se}from"./DTVGNZEd.js";import{u as le}from"./C-6Qe-lq.js";import"./42htcooJ.js";const ae={class:"flex items-center gap-2 mb-1"},oe={class:"text-lg font-semibold text-slate-800"},ne={key:0,class:"text-slate-400 font-normal"},ie={key:0,class:"grid grid-cols-3 gap-4"},re=["onClick"],de={class:"flex items-start justify-between"},ce={width:"22",height:"22",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ue=["d"],ve={key:0,class:"badge badge-success badge-sm text-white"},ye={key:1,class:"badge badge-ghost badge-sm"},me={class:"text-base font-semibold text-slate-800 mt-3"},pe={class:"text-xs text-slate-400 mt-1"},_e={class:"text-[11px] text-slate-400 mt-3 pt-3 border-t border-slate-100"},be={key:0},fe={class:"text-slate-600"},ke={key:1,class:"text-slate-300"},he={key:1},ge={class:"grid grid-cols-4 gap-3 mb-5"},xe=["onClick"],we={class:"flex items-center justify-between"},Ce={key:0,class:"text-[10px] text-emerald-500 font-semibold"},Se={key:1,class:"text-[10px] text-slate-300 font-semibold"},Me={class:"text-sm font-semibold text-slate-700 mt-2"},qe={class:"text-[11px] text-slate-400 mb-2.5"},Ae=["onClick"],Te=["checked","onClick"],Pe={key:1,class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6 max-w-3xl"},Ie={class:"flex items-center justify-between mb-5"},De={class:"flex items-center gap-3"},Ve={class:"text-base font-semibold text-slate-800"},Ke={class:"text-xs text-slate-400 mt-0.5"},Re={class:"flex items-center gap-2"},$e={class:"flex items-center gap-2 mr-1"},Le=["disabled"],je={key:0,class:"loading loading-spinner loading-xs"},ze={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Be={class:"label py-1"},Ee={class:"label-text text-sm"},Ne={key:0,class:"text-rose-500 ml-0.5"},Oe={key:1,class:"lock-tag ml-1.5"},Ue=["onUpdate:modelValue"],Fe=["value"],Ge={key:1,class:"relative"},He=["onUpdate:modelValue","type","placeholder"],Qe=["onClick"],Je={key:2,class:"text-[11px] text-slate-400 mt-1"},We={class:"flex items-end gap-3"},Xe={class:"form-control flex-1"},Ye=["disabled"],Ze={key:0,class:"loading loading-spinner loading-xs"},et=Q({__name:"systemconfig",setup(tt){const{success:T,info:V,error:P}=se(),{webApi:g}=le();function v(l,t,e,s,c,p,_){return{id:l,provider:t,name:e,short:s,tag:c,color:p,enable:!1,is_default:!1,fields:_}}const y=Y([{id:"storage",label:"对象存储",desc:"固件 / 头像等文件直传(默认阿里云 OSS)",color:"#6366f1",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8",multi:!0,services:[v("storage_aliyun_oss","aliyun_oss","阿里云 OSS","OSS","Aliyun · 固件/头像上传所用","#ff6a00",[{key:"endpoint",label:"Endpoint",value:"",placeholder:"oss-cn-shanghai.aliyuncs.com",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",placeholder:"yunyan-firmware",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",placeholder:"cdn.yunyan.com",wide:!0,hint:"可选,配置后文件下载 URL 走该域名"}]),v("storage_tencent_cos","tencent_cos","腾讯云 COS","COS","Tencent","#00a4ff",[{key:"region",label:"Region",value:"",placeholder:"ap-guangzhou",mono:!0,required:!0},{key:"appid",label:"AppId",value:"",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"secret_id",label:"SecretId",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",wide:!0,hint:"可选"}])]},{id:"email",label:"邮件服务",desc:"生产通知 / 账号告警发信(支持 SMTP 与 Resend)",color:"#f59e0b",icon:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z",multi:!1,services:[v("email","auto","邮件服务","MAIL","生产通知 / 账号告警","#f59e0b",[{key:"EmailType",label:"邮箱类型",value:"1",type:"select",required:!0,options:[{value:"0",label:"QQ 邮箱 (SMTP)"},{value:"1",label:"腾讯企业邮箱 (SMTP)"},{value:"2",label:"Gmail (SMTP)"},{value:"3",label:"Resend(HTTP API,海外送达率优)"}]},{key:"FromEmail",label:"发件人邮箱",value:"",mono:!0,required:!0,placeholder:"noreply@yourdomain.com",hint:"Resend 须为已在其后台验证域名下的地址"},{key:"FromName",label:"发件人昵称",value:"",placeholder:"云岩科技"},{key:"Password",label:"SMTP 授权码 / Resend API Key",value:"",mono:!0,encrypted:!0,required:!0,hint:"SMTP 类型填邮箱授权码;Resend 填 re_ 开头的 API Key"}])]},{id:"translate",label:"翻译服务",desc:"后台文案多语言同步",color:"#14b8a6",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",multi:!0,services:[v("translate_volc","volc","火山引擎翻译","火山","Volcengine MT","#1664ff",[{key:"region",label:"Region",value:"cn-beijing",mono:!0,required:!0},{key:"access_key",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_aliyun","aliyun_mt","阿里云翻译","阿里","Aliyun MT","#ff6a00",[{key:"region",label:"Region",value:"cn-hangzhou",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_google","google_mt","Google 翻译","G","Cloud Translation","#ea4335",[{key:"project",label:"Project ID",value:"",mono:!0,required:!0},{key:"api_key",label:"API Key",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_deepl","deepl","DeepL","DL","DeepL API","#0f2b46",[{key:"auth_key",label:"Auth Key",value:"",mono:!0,encrypted:!0,required:!0}])]}]),m=h("cards"),K=h(""),x=h(""),C=h(!1),S=h(!1),w=h(""),d=D(()=>y.find(l=>l.id===K.value)||y[0]),j=D(()=>d.value.services),u=D(()=>d.value.multi&&d.value.services.find(l=>l.id===x.value)||d.value.services[0]);function z(l){return y.find(t=>t.id===l)?.services||[]}function B(l){return z(l).some(t=>t.enable)}function R(l){const t=y.find(s=>s.id===l);if(!t)return"";if(!t.multi){const s=t.services[0];return s.enable?s.name:""}const e=t.services.find(s=>s.is_default&&s.enable);return e?e.name:""}function E(l){K.value=l;const t=y.find(s=>s.id===l),e=t.services.find(s=>s.is_default)||t.services[0];x.value=e.id,m.value="edit"}function N(){m.value="cards"}async function O(){try{const t=(await g("getsysconfigs",{}))?.items||[],e={};for(const s of t)e[s.id]=s;for(const s of y)for(const c of s.services){const p=e[c.id];if(p){c.enable=!!p.enable,c.is_default=!!p.is_default;for(const _ of p.fields||[]){const b=c.fields.find(H=>H.key===_.key);b&&(_.encrypted?(b.value="",_.def_value==="[encrypted]"&&(b.hint=(b.hint?b.hint+";":"")+"已配置(留空保留原密文)")):b.value=_.def_value||"")}}}}catch(l){V("系统配置读取失败:"+(l?.message??l))}}J(O);async function U(){const l=u.value;if(!l)return;const t=d.value;C.value=!0;const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:l.enable,is_default:t.multi?l.is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};try{await g("savesysconfig",e),T(`「${l.name}」配置已保存${l.enable?"并启用":""}`)}catch(s){P(s?.message??"保存失败")}finally{C.value=!1}}async function $(l){const t=d.value;t.services.forEach(e=>{e.is_default=e.id===l.id}),l.enable=!0,x.value=l.id;try{await F(l,t),await g("setsysdefault",{id:l.id,category:t.id}),T(`已将「${l.name}」设为默认`)}catch(e){P(e?.message??"设置失败")}}async function F(l,t){const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:!0,is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};await g("savesysconfig",e)}async function G(){if(!w.value.trim()){V("请先填测试收件邮箱");return}S.value=!0;try{await g("testsysemail",{to:w.value.trim()}),T(`测试邮件已发送至 ${w.value.trim()}`)}catch(l){P(l?.message??"发送失败")}finally{S.value=!1}}return(l,t)=>(n(),o("div",null,[a("div",ae,[m.value==="edit"?(n(),o("button",{key:0,class:"btn btn-ghost btn-sm",onClick:N},"← 返回")):r("",!0),a("h2",oe,[t[2]||(t[2]=f("系统配置",-1)),m.value==="edit"?(n(),o("span",ne," / "+i(d.value.label),1)):r("",!0)])]),t[11]||(t[11]=a("p",{class:"text-xs text-slate-400 mb-5"}," 平台自用服务配置(与「第三方服务配置」分库存储,不下发客户端):对象存储(固件 / 头像直传)、邮件服务(生产通知发信)、翻译服务(后台文案多语言)。 ",-1)),m.value==="cards"?(n(),o("div",ie,[(n(!0),o(k,null,M(y,e=>(n(),o("div",{key:e.id,class:"cat-card",onClick:s=>E(e.id)},[a("div",de,[a("div",{class:"cat-icon",style:I({background:e.color})},[(n(),o("svg",ce,[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:e.icon},null,8,ue)]))],4),B(e.id)?(n(),o("span",ve,"已启用")):(n(),o("span",ye,"未配置"))]),a("div",me,i(e.label),1),a("div",pe,i(e.desc),1),a("div",_e,[R(e.id)?(n(),o("span",be,[t[3]||(t[3]=f("当前:",-1)),a("b",fe,i(R(e.id)),1)])):(n(),o("span",ke,"尚未配置,点击设置"))])],8,re))),128))])):m.value==="edit"?(n(),o("div",he,[d.value.multi?(n(),o(k,{key:0},[t[4]||(t[4]=a("div",{class:"text-xs font-semibold text-slate-500 mb-2"},[f("选择服务商 "),a("span",{class:"text-slate-400 font-normal"},"(勾选设为默认,平台调用走默认项)")],-1)),a("div",ge,[(n(!0),o(k,null,M(j.value,e=>(n(),o("div",{key:e.id,class:A(["provider-card",{active:x.value===e.id,"is-default":e.is_default}]),onClick:s=>x.value=e.id},[a("div",we,[a("div",{class:"provider-logo",style:I({background:e.color})},i(e.short),5),e.enable?(n(),o("span",Ce,"已配置")):(n(),o("span",Se,"未配置"))]),a("div",Me,i(e.name),1),a("div",qe,i(e.tag),1),a("label",{class:A(["default-pick",{on:e.is_default}]),onClick:L(s=>$(e),["stop"])},[a("input",{type:"radio",class:"radio radio-xs radio-primary",checked:e.is_default,onClick:L(s=>$(e),["stop"])},null,8,Te),a("span",null,i(e.is_default?"默认使用":"设为默认"),1)],10,Ae)],10,xe))),128))])],64)):r("",!0),u.value?(n(),o("div",Pe,[a("div",Ie,[a("div",De,[a("div",{class:"provider-logo",style:I({background:u.value.color,width:"44px",height:"44px",fontSize:"14px"})},i(u.value.short),5),a("div",null,[a("h3",Ve,i(u.value.name),1),a("p",Ke,i(u.value.tag),1)])]),a("div",Re,[a("label",$e,[t[5]||(t[5]=a("span",{class:"text-xs text-slate-500"},"启用",-1)),q(a("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>u.value.enable=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[W,u.value.enable]])]),a("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:U},[C.value?(n(),o("span",je)):r("",!0),t[6]||(t[6]=f("保存 ",-1))],8,Le)])]),t[10]||(t[10]=a("div",{class:"divider text-xs text-slate-400 my-3"},"配置项",-1)),a("div",ze,[(n(!0),o(k,null,M(u.value.fields,e=>(n(),o("div",{key:e.key,class:A(["form-control",{"col-span-2":e.wide}])},[a("label",Be,[a("span",Ee,[f(i(e.label),1),e.required?(n(),o("span",Ne,"*")):r("",!0),e.encrypted?(n(),o("span",Oe,"🔒 加密存储")):r("",!0)])]),e.type==="select"?q((n(),o("select",{key:0,"onUpdate:modelValue":s=>e.value=s,class:"select select-bordered select-sm"},[(n(!0),o(k,null,M(e.options,s=>(n(),o("option",{key:s.value,value:s.value},i(s.label),9,Fe))),128))],8,Ue)),[[Z,e.value]]):(n(),o("div",Ge,[q(a("input",{"onUpdate:modelValue":s=>e.value=s,type:e.encrypted&&!e._show?"password":"text",class:A(["input input-bordered input-sm w-full",{"font-mono":e.mono,"pr-14":e.encrypted}]),placeholder:e.placeholder},null,10,He),[[ee,e.value]]),e.encrypted?(n(),o("button",{key:0,type:"button",class:"absolute right-3 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:s=>e._show=!e._show},i(e._show?"隐藏":"显示"),9,Qe)):r("",!0)])),e.hint?(n(),o("span",Je,i(e.hint),1)):r("",!0)],2))),128))]),d.value.id==="email"?(n(),o(k,{key:0},[t[9]||(t[9]=a("div",{class:"divider text-xs text-slate-400 my-4"},"测试发信",-1)),a("div",We,[a("div",Xe,[t[7]||(t[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-sm"},"测试收件邮箱")],-1)),q(a("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>w.value=e),class:"input input-bordered input-sm font-mono",placeholder:"填一个邮箱,发送测试邮件验证配置(需先保存)"},null,512),[[X,w.value]])]),a("button",{class:"btn btn-outline btn-sm",disabled:S.value,onClick:G},[S.value?(n(),o("span",Ze)):r("",!0),t[8]||(t[8]=f("发送测试 ",-1))],8,Ye)])],64)):r("",!0)])):r("",!0)])):r("",!0)]))}}),nt=te(et,[["__scopeId","data-v-6ea4e757"]]);export{nt as default}; +import{g as Q,B as J,c as o,a,l as r,d as f,t as i,F as k,r as M,L as I,p as q,s as W,v as X,x as h,z as D,y as Y,o as n,n as A,m as $,q as Z,C as ee,_ as te}from"./Dv-LAQo6.js";import{u as se}from"./D7SVvy69.js";import{u as le}from"./mz7Huk5H.js";import"./D0vUT4uH.js";const ae={class:"flex items-center gap-2 mb-1"},oe={class:"text-lg font-semibold text-slate-800"},ne={key:0,class:"text-slate-400 font-normal"},ie={key:0,class:"grid grid-cols-3 gap-4"},re=["onClick"],de={class:"flex items-start justify-between"},ce={width:"22",height:"22",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ue=["d"],ve={key:0,class:"badge badge-success badge-sm text-white"},ye={key:1,class:"badge badge-ghost badge-sm"},me={class:"text-base font-semibold text-slate-800 mt-3"},pe={class:"text-xs text-slate-400 mt-1"},_e={class:"text-[11px] text-slate-400 mt-3 pt-3 border-t border-slate-100"},be={key:0},fe={class:"text-slate-600"},ke={key:1,class:"text-slate-300"},he={key:1},ge={class:"grid grid-cols-4 gap-3 mb-5"},xe=["onClick"],we={class:"flex items-center justify-between"},Ce={key:0,class:"text-[10px] text-emerald-500 font-semibold"},Se={key:1,class:"text-[10px] text-slate-300 font-semibold"},Me={class:"text-sm font-semibold text-slate-700 mt-2"},qe={class:"text-[11px] text-slate-400 mb-2.5"},Ae=["onClick"],Te=["checked","onClick"],Pe={key:1,class:"bg-white rounded-2xl border border-slate-100 shadow-sm p-6 max-w-3xl"},Ie={class:"flex items-center justify-between mb-5"},De={class:"flex items-center gap-3"},Ve={class:"text-base font-semibold text-slate-800"},Ke={class:"text-xs text-slate-400 mt-0.5"},Le={class:"flex items-center gap-2"},Re={class:"flex items-center gap-2 mr-1"},$e=["disabled"],je={key:0,class:"loading loading-spinner loading-xs"},ze={class:"grid grid-cols-2 gap-x-5 gap-y-4"},Be={class:"label py-1"},Ee={class:"label-text text-sm"},Ne={key:0,class:"text-rose-500 ml-0.5"},Ue={key:1,class:"lock-tag ml-1.5"},Oe=["onUpdate:modelValue"],Fe=["value"],Ge={key:1,class:"relative"},He=["onUpdate:modelValue","type","placeholder"],Qe=["onClick"],Je={key:2,class:"text-[11px] text-slate-400 mt-1"},We={class:"flex items-end gap-3"},Xe={class:"form-control flex-1"},Ye=["disabled"],Ze={key:0,class:"loading loading-spinner loading-xs"},et=Q({__name:"systemconfig",setup(tt){const{success:T,info:V,error:P}=se(),{webApi:g}=le();function v(l,t,e,s,c,p,_){return{id:l,provider:t,name:e,short:s,tag:c,color:p,enable:!1,is_default:!1,fields:_}}const y=Y([{id:"storage",label:"对象存储",desc:"固件 / 头像等文件直传(默认阿里云 OSS)",color:"#6366f1",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8",multi:!0,services:[v("storage_aliyun_oss","aliyun_oss","阿里云 OSS","OSS","Aliyun · 固件/头像上传所用","#ff6a00",[{key:"endpoint",label:"Endpoint",value:"",placeholder:"oss-cn-shanghai.aliyuncs.com",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",placeholder:"yunyan-firmware",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",placeholder:"cdn.yunyan.com",wide:!0,hint:"可选,配置后文件下载 URL 走该域名"}]),v("storage_tencent_cos","tencent_cos","腾讯云 COS","COS","Tencent","#00a4ff",[{key:"region",label:"Region",value:"",placeholder:"ap-guangzhou",mono:!0,required:!0},{key:"appid",label:"AppId",value:"",mono:!0,required:!0},{key:"bucket",label:"Bucket",value:"",mono:!0,required:!0},{key:"secret_id",label:"SecretId",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"domain",label:"自定义域名 (CDN)",value:"",wide:!0,hint:"可选"}])]},{id:"email",label:"邮件服务",desc:"生产通知 / 账号告警发信(支持 SMTP 与 Resend)",color:"#f59e0b",icon:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z",multi:!1,services:[v("email","auto","邮件服务","MAIL","生产通知 / 账号告警","#f59e0b",[{key:"EmailType",label:"邮箱类型",value:"1",type:"select",required:!0,options:[{value:"0",label:"QQ 邮箱 (SMTP)"},{value:"1",label:"腾讯企业邮箱 (SMTP)"},{value:"2",label:"Gmail (SMTP)"},{value:"3",label:"Resend(HTTP API,海外送达率优)"}]},{key:"FromEmail",label:"发件人邮箱",value:"",mono:!0,required:!0,placeholder:"noreply@yourdomain.com",hint:"Resend 须为已在其后台验证域名下的地址"},{key:"FromName",label:"发件人昵称",value:"",placeholder:"云岩科技"},{key:"Password",label:"SMTP 授权码 / Resend API Key",value:"",mono:!0,encrypted:!0,required:!0,hint:"SMTP 类型填邮箱授权码;Resend 填 re_ 开头的 API Key"}])]},{id:"translate",label:"翻译服务",desc:"后台文案多语言同步",color:"#14b8a6",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",multi:!0,services:[v("translate_volc","volc","火山引擎翻译","火山","Volcengine MT","#1664ff",[{key:"region",label:"Region",value:"cn-beijing",mono:!0,required:!0},{key:"access_key",label:"AccessKey",value:"",mono:!0,encrypted:!0,required:!0},{key:"secret_key",label:"SecretKey",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_aliyun","aliyun_mt","阿里云翻译","阿里","Aliyun MT","#ff6a00",[{key:"region",label:"Region",value:"cn-hangzhou",mono:!0,required:!0},{key:"access_key_id",label:"AccessKey ID",value:"",mono:!0,encrypted:!0,required:!0},{key:"access_key_secret",label:"AccessKey Secret",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_google","google_mt","Google 翻译","G","Cloud Translation","#ea4335",[{key:"project",label:"Project ID",value:"",mono:!0,required:!0},{key:"api_key",label:"API Key",value:"",mono:!0,encrypted:!0,required:!0}]),v("translate_deepl","deepl","DeepL","DL","DeepL API","#0f2b46",[{key:"auth_key",label:"Auth Key",value:"",mono:!0,encrypted:!0,required:!0}])]}]),m=h("cards"),K=h(""),x=h(""),C=h(!1),S=h(!1),w=h(""),d=D(()=>y.find(l=>l.id===K.value)||y[0]),j=D(()=>d.value.services),u=D(()=>d.value.multi&&d.value.services.find(l=>l.id===x.value)||d.value.services[0]);function z(l){return y.find(t=>t.id===l)?.services||[]}function B(l){return z(l).some(t=>t.enable)}function L(l){const t=y.find(s=>s.id===l);if(!t)return"";if(!t.multi){const s=t.services[0];return s.enable?s.name:""}const e=t.services.find(s=>s.is_default&&s.enable);return e?e.name:""}function E(l){K.value=l;const t=y.find(s=>s.id===l),e=t.services.find(s=>s.is_default)||t.services[0];x.value=e.id,m.value="edit"}function N(){m.value="cards"}async function U(){try{const t=(await g("getsysconfigs",{}))?.items||[],e={};for(const s of t)e[s.id]=s;for(const s of y)for(const c of s.services){const p=e[c.id];if(p){c.enable=!!p.enable,c.is_default=!!p.is_default;for(const _ of p.fields||[]){const b=c.fields.find(H=>H.key===_.key);b&&(_.encrypted?(b.value="",_.def_value==="[encrypted]"&&(b.hint=(b.hint?b.hint+";":"")+"已配置(留空保留原密文)")):b.value=_.def_value||"")}}}}catch(l){V("系统配置读取失败:"+(l?.message??l))}}J(U);async function O(){const l=u.value;if(!l)return;const t=d.value;C.value=!0;const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:l.enable,is_default:t.multi?l.is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};try{await g("savesysconfig",e),T(`「${l.name}」配置已保存${l.enable?"并启用":""}`)}catch(s){P(s?.message??"保存失败")}finally{C.value=!1}}async function R(l){const t=d.value;t.services.forEach(e=>{e.is_default=e.id===l.id}),l.enable=!0,x.value=l.id;try{await F(l,t),await g("setsysdefault",{id:l.id,category:t.id}),T(`已将「${l.name}」设为默认`)}catch(e){P(e?.message??"设置失败")}}async function F(l,t){const e={id:l.id,category:t.id,name:l.name,provider:l.provider,enable:!0,is_default:!0,fields:l.fields.map((s,c)=>({key:s.key,description:s.label,type:s.type==="select"?"select":"",encrypted:!!s.encrypted,def_value:s.value||"",sort:c}))};await g("savesysconfig",e)}async function G(){if(!w.value.trim()){V("请先填测试收件邮箱");return}S.value=!0;try{await g("testsysemail",{to:w.value.trim()}),T(`测试邮件已发送至 ${w.value.trim()}`)}catch(l){P(l?.message??"发送失败")}finally{S.value=!1}}return(l,t)=>(n(),o("div",null,[a("div",ae,[m.value==="edit"?(n(),o("button",{key:0,class:"btn btn-ghost btn-sm",onClick:N},"← 返回")):r("",!0),a("h2",oe,[t[2]||(t[2]=f("系统配置",-1)),m.value==="edit"?(n(),o("span",ne," / "+i(d.value.label),1)):r("",!0)])]),t[11]||(t[11]=a("p",{class:"text-xs text-slate-400 mb-5"}," 平台自用服务配置(与「第三方服务配置」分库存储,不下发客户端):对象存储(固件 / 头像直传)、邮件服务(生产通知发信)、翻译服务(后台文案多语言)。 ",-1)),m.value==="cards"?(n(),o("div",ie,[(n(!0),o(k,null,M(y,e=>(n(),o("div",{key:e.id,class:"cat-card",onClick:s=>E(e.id)},[a("div",de,[a("div",{class:"cat-icon",style:I({background:e.color})},[(n(),o("svg",ce,[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:e.icon},null,8,ue)]))],4),B(e.id)?(n(),o("span",ve,"已启用")):(n(),o("span",ye,"未配置"))]),a("div",me,i(e.label),1),a("div",pe,i(e.desc),1),a("div",_e,[L(e.id)?(n(),o("span",be,[t[3]||(t[3]=f("当前:",-1)),a("b",fe,i(L(e.id)),1)])):(n(),o("span",ke,"尚未配置,点击设置"))])],8,re))),128))])):m.value==="edit"?(n(),o("div",he,[d.value.multi?(n(),o(k,{key:0},[t[4]||(t[4]=a("div",{class:"text-xs font-semibold text-slate-500 mb-2"},[f("选择服务商 "),a("span",{class:"text-slate-400 font-normal"},"(勾选设为默认,平台调用走默认项)")],-1)),a("div",ge,[(n(!0),o(k,null,M(j.value,e=>(n(),o("div",{key:e.id,class:A(["provider-card",{active:x.value===e.id,"is-default":e.is_default}]),onClick:s=>x.value=e.id},[a("div",we,[a("div",{class:"provider-logo",style:I({background:e.color})},i(e.short),5),e.enable?(n(),o("span",Ce,"已配置")):(n(),o("span",Se,"未配置"))]),a("div",Me,i(e.name),1),a("div",qe,i(e.tag),1),a("label",{class:A(["default-pick",{on:e.is_default}]),onClick:$(s=>R(e),["stop"])},[a("input",{type:"radio",class:"radio radio-xs radio-primary",checked:e.is_default,onClick:$(s=>R(e),["stop"])},null,8,Te),a("span",null,i(e.is_default?"默认使用":"设为默认"),1)],10,Ae)],10,xe))),128))])],64)):r("",!0),u.value?(n(),o("div",Pe,[a("div",Ie,[a("div",De,[a("div",{class:"provider-logo",style:I({background:u.value.color,width:"44px",height:"44px",fontSize:"14px"})},i(u.value.short),5),a("div",null,[a("h3",Ve,i(u.value.name),1),a("p",Ke,i(u.value.tag),1)])]),a("div",Le,[a("label",Re,[t[5]||(t[5]=a("span",{class:"text-xs text-slate-500"},"启用",-1)),q(a("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>u.value.enable=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[W,u.value.enable]])]),a("button",{class:"btn btn-primary btn-sm text-white",disabled:C.value,onClick:O},[C.value?(n(),o("span",je)):r("",!0),t[6]||(t[6]=f("保存 ",-1))],8,$e)])]),t[10]||(t[10]=a("div",{class:"divider text-xs text-slate-400 my-3"},"配置项",-1)),a("div",ze,[(n(!0),o(k,null,M(u.value.fields,e=>(n(),o("div",{key:e.key,class:A(["form-control",{"col-span-2":e.wide}])},[a("label",Be,[a("span",Ee,[f(i(e.label),1),e.required?(n(),o("span",Ne,"*")):r("",!0),e.encrypted?(n(),o("span",Ue,"🔒 加密存储")):r("",!0)])]),e.type==="select"?q((n(),o("select",{key:0,"onUpdate:modelValue":s=>e.value=s,class:"select select-bordered select-sm"},[(n(!0),o(k,null,M(e.options,s=>(n(),o("option",{key:s.value,value:s.value},i(s.label),9,Fe))),128))],8,Oe)),[[Z,e.value]]):(n(),o("div",Ge,[q(a("input",{"onUpdate:modelValue":s=>e.value=s,type:e.encrypted&&!e._show?"password":"text",class:A(["input input-bordered input-sm w-full",{"font-mono":e.mono,"pr-14":e.encrypted}]),placeholder:e.placeholder},null,10,He),[[ee,e.value]]),e.encrypted?(n(),o("button",{key:0,type:"button",class:"absolute right-3 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:s=>e._show=!e._show},i(e._show?"隐藏":"显示"),9,Qe)):r("",!0)])),e.hint?(n(),o("span",Je,i(e.hint),1)):r("",!0)],2))),128))]),d.value.id==="email"?(n(),o(k,{key:0},[t[9]||(t[9]=a("div",{class:"divider text-xs text-slate-400 my-4"},"测试发信",-1)),a("div",We,[a("div",Xe,[t[7]||(t[7]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-sm"},"测试收件邮箱")],-1)),q(a("input",{"onUpdate:modelValue":t[1]||(t[1]=e=>w.value=e),class:"input input-bordered input-sm font-mono",placeholder:"填一个邮箱,发送测试邮件验证配置(需先保存)"},null,512),[[X,w.value]])]),a("button",{class:"btn btn-outline btn-sm",disabled:S.value,onClick:G},[S.value?(n(),o("span",Ze)):r("",!0),t[8]||(t[8]=f("发送测试 ",-1))],8,Ye)])],64)):r("",!0)])):r("",!0)])):r("",!0)]))}}),nt=te(et,[["__scopeId","data-v-6ea4e757"]]);export{nt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/JlX4SqFM.js b/apps/admin/.output/public/_nuxt/CFXePYDs.js similarity index 93% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/JlX4SqFM.js rename to apps/admin/.output/public/_nuxt/CFXePYDs.js index 3ffaed97..12f79d23 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/JlX4SqFM.js +++ b/apps/admin/.output/public/_nuxt/CFXePYDs.js @@ -1 +1 @@ -import{g as Z,j as $,B as ee,c as l,a as e,p as v,q as P,l as D,F as y,r as h,v as w,N as te,m as se,t as i,d as j,x as u,z as _,y as ne,o}from"./CCjf5Io-.js";import{u as le}from"./C-6Qe-lq.js";import{u as oe}from"./DTVGNZEd.js";import"./42htcooJ.js";const ae={class:"space-y-6"},ie={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},re={class:"flex items-end gap-3 flex-wrap"},de={class:"form-control"},ue={key:0,value:""},ce=["value"],pe={class:"form-control"},me={key:0,value:""},ve=["value"],be={class:"form-control"},fe=["onKeydown"],xe={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-12 text-center text-slate-400"},ge={key:1,class:"space-y-5"},ye={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5 flex items-center gap-4"},he=["src"],we={key:1,class:"w-14 h-14 rounded-full bg-indigo-100 text-indigo-600 flex items-center justify-center text-xl font-bold"},_e={class:"text-lg font-semibold text-slate-800"},ke={class:"text-xs text-slate-400 font-mono mt-0.5"},Ie={class:"ml-auto flex items-center gap-3"},Ae={class:"badge badge-primary badge-outline"},Ue={class:"px-5 py-3 border-b border-slate-50 text-sm font-semibold text-slate-700"},Ve={class:"px-5 py-3 grid grid-cols-1 md:grid-cols-2 gap-x-8"},Ce={class:"text-xs text-slate-400 shrink-0"},De={class:"text-sm text-slate-700 break-all text-right"},Ne={class:"modal-box max-w-md"},Me={class:"text-xs text-slate-400 mb-4"},Se={class:"font-mono text-slate-600"},Ge={class:"grid grid-cols-3 gap-3"},Be={class:"form-control"},Pe={class:"form-control"},je={class:"form-control"},Le=Z({__name:"users",setup(qe){const{webApi:N,consoleApi:q}=le(),{success:T,error:M,warn:c}=oe(),b=$(),E={cn:"中国",us:"美国",hw:"海外",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function F(s){return E[s]||s||"默认"}const f=u([]),p=u(""),m=u(""),k=u(""),r=u(null),S=u("请输入查询条件后点击「搜索」"),I=u(""),x=u(""),K=_(()=>[1,2,3].includes(b.identity)),g=u(null),a=ne({vipday:0,trademin:0,meetmin:0}),A=_(()=>{const s=[];return f.value.forEach(t=>{s.includes(t.name)||s.push(t.name)}),s}),U=_(()=>f.value.filter(s=>s.name===p.value));function G(){const s=U.value;m.value=s.length?s[0].id:""}function L(s){return s?new Date(s*1e3).toLocaleString():"-"}function R(s){return s?"是":"否"}function z(s){return s===1?"男":s===2?"女":"未知"}function V(s){return s==null||s===""?"-":s}const H=[{title:"基本信息",rows:[["uid","UID"],["name","用户名"],["account","登录账号"],["mail","邮箱"],["phone","手机号"],["gender","性别","gender"],["language","语言"],["version","版本"],["channel","渠道"],["State","状态"],["country_code","国家码"],["continent_code","大洲码"],["servicetag","服务区"],["phonemodel","手机型号"],["phonemac","设备ID"]]},{title:"第三方登录",rows:[["wxopenid","微信 openid"],["googleopenid","Google openid"],["facebookopenid","Facebook openid"],["appleopenid","Apple openid"]]},{title:"会员与积分",rows:[["viplv","VIP等级"],["vipexptime","VIP到期","ts"],["aichatintegral","AI积分"],["aichattotalintegral","AI累计积分"],["tradeintegral","翻译积分"],["tradetotalintegral","翻译累计积分"],["meetintegral","会议积分"],["meettotalintegral","会议累计积分"],["lastbindproductid","最后绑定产品ID"],["isactivatecode","已领激活码","bool"],["isgiveaway","首次绑定赠送","bool"]]},{title:"时间",rows:[["createtime","注册时间","ts"],["lastsgintime","最后登录","ts"],["canceltime","注销时间","ts"]]}];function O(s,t){const n=t[2],d=s[t[0]];return n==="ts"?L(d):n==="bool"?R(d):n==="gender"?z(d):V(d)}const J=_(()=>{const s=r.value;return s?String(s.name||s.uid||"?").charAt(0).toUpperCase():"?"});async function C(){if(!p.value){c("请选择应用");return}if(!m.value){c("请选择区域");return}const s=k.value.trim();if(!s){c("请输入用户UID");return}const t=Number(m.value);I.value=t,x.value=s,b.setCurrentApp(t);try{const n=await N("getuserinfo",{uid:s});r.value=n||{}}catch(n){M(n?.message||"查询失败"),r.value=null,S.value=n?.message||"未找到该用户"}}function Q(){if(!x.value){c("请先查询用户");return}a.vipday=0,a.trademin=0,a.meetmin=0,g.value?.showModal()}function W(){g.value?.close()}async function X(){const s=Number(a.vipday)||0,t=Number(a.trademin)||0,n=Number(a.meetmin)||0;if(s<0||t<0||n<0){c("数量不能为负");return}if(!s&&!t&&!n){c("请至少填写一项");return}if(!I.value||!x.value){c("请先查询用户");return}b.setCurrentApp(Number(I.value));try{await N("giftuserresource",{uid:x.value,vipday:s,trademin:t,meetmin:n}),T("赠送成功"),g.value?.close(),C()}catch(d){M(d?.message||"赠送失败")}}function B(){const s=A.value;if(!s.length){p.value="",m.value="";return}p.value=s[0],G()}async function Y(){if(b.identity===3){f.value=(b.appbinds||[]).map(s=>({id:s.id,name:s.name,region:s.region,enabled:!0})),B();return}try{const s=await q("apps/list",{});f.value=(s||[]).filter(t=>t.enabled)}catch{f.value=[]}B()}return ee(Y),(s,t)=>(o(),l("div",ae,[e("div",ie,[e("div",re,[e("div",de,[t[6]||(t[6]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"应用")],-1)),v(e("select",{"onUpdate:modelValue":t[0]||(t[0]=n=>p.value=n),class:"select select-bordered select-sm",style:{"min-width":"180px"},onChange:G},[A.value.length?D("",!0):(o(),l("option",ue,"无可用应用")),(o(!0),l(y,null,h(A.value,n=>(o(),l("option",{key:n,value:n},i(n),9,ce))),128))],544),[[P,p.value]])]),e("div",pe,[t[7]||(t[7]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"区域")],-1)),v(e("select",{"onUpdate:modelValue":t[1]||(t[1]=n=>m.value=n),class:"select select-bordered select-sm",style:{"min-width":"140px"}},[U.value.length?D("",!0):(o(),l("option",me,"无可用区域")),(o(!0),l(y,null,h(U.value,n=>(o(),l("option",{key:n.id,value:n.id},i(F(n.region)),9,ve))),128))],512),[[P,m.value]])]),e("div",be,[t[8]||(t[8]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"用户UID")],-1)),v(e("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>k.value=n),type:"text",class:"input input-bordered input-sm",style:{"min-width":"240px"},placeholder:"输入用户 UID",onKeydown:te(se(C,["prevent"]),["enter"])},null,40,fe),[[w,k.value]])]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:C},"搜索")]),t[9]||(t[9]=e("p",{class:"text-xs text-slate-400 mt-2"},"选择应用与区域后输入 UID,直接查询该部署业务库中的用户信息。",-1))]),r.value?(o(),l("div",ge,[e("div",ye,[r.value.avatar?(o(),l("img",{key:0,src:r.value.avatar,class:"w-14 h-14 rounded-full object-cover border border-slate-100"},null,8,he)):(o(),l("div",we,i(J.value),1)),e("div",null,[e("div",_e,i(V(r.value.name)),1),e("div",ke,i(V(r.value.uid)),1)]),e("div",Ie,[e("span",Ae,"VIP "+i(r.value.viplv||0),1),K.value?(o(),l("button",{key:0,class:"btn btn-success btn-sm text-white",onClick:Q},"赠送资源点")):D("",!0)])]),(o(),l(y,null,h(H,n=>e("div",{key:n.title,class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},[e("div",Ue,i(n.title),1),e("div",Ve,[(o(!0),l(y,null,h(n.rows,d=>(o(),l("div",{key:d[0],class:"flex justify-between gap-3 py-1.5 border-b border-slate-50"},[e("span",Ce,i(d[1]),1),e("span",De,i(O(r.value,d)),1)]))),128))])])),64))])):(o(),l("div",xe,i(S.value),1)),e("dialog",{ref_key:"giftModal",ref:g,class:"modal"},[e("div",Ne,[t[15]||(t[15]=e("h3",{class:"font-bold text-lg mb-1 text-slate-800"},"赠送资源点",-1)),e("p",Me,[t[10]||(t[10]=j("目标用户 UID:",-1)),e("span",Se,i(x.value),1),t[11]||(t[11]=j("。代理账号将从自己的资源点余额中扣减,超管/管理员无消耗。",-1))]),e("div",Ge,[e("div",Be,[t[12]||(t[12]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"VIP天数")],-1)),v(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>a.vipday=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.vipday,void 0,{number:!0}]])]),e("div",Pe,[t[13]||(t[13]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"翻译分钟")],-1)),v(e("input",{"onUpdate:modelValue":t[4]||(t[4]=n=>a.trademin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.trademin,void 0,{number:!0}]])]),e("div",je,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"会议分钟")],-1)),v(e("input",{"onUpdate:modelValue":t[5]||(t[5]=n=>a.meetmin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.meetmin,void 0,{number:!0}]])])]),e("div",{class:"modal-action"},[e("button",{class:"btn btn-sm",onClick:W},"取消"),e("button",{class:"btn btn-success btn-sm text-white",onClick:X},"确认赠送")])]),t[16]||(t[16]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}});export{Le as default}; +import{g as Z,j as $,B as ee,c as l,a as e,p as v,q as P,l as D,F as y,r as h,v as w,O as te,m as se,t as i,d as j,x as u,z as _,y as ne,o}from"./Dv-LAQo6.js";import{u as le}from"./mz7Huk5H.js";import{u as oe}from"./D7SVvy69.js";import"./D0vUT4uH.js";const ae={class:"space-y-6"},ie={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},re={class:"flex items-end gap-3 flex-wrap"},de={class:"form-control"},ue={key:0,value:""},ce=["value"],pe={class:"form-control"},me={key:0,value:""},ve=["value"],be={class:"form-control"},fe=["onKeydown"],xe={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 p-12 text-center text-slate-400"},ge={key:1,class:"space-y-5"},ye={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5 flex items-center gap-4"},he=["src"],we={key:1,class:"w-14 h-14 rounded-full bg-indigo-100 text-indigo-600 flex items-center justify-center text-xl font-bold"},_e={class:"text-lg font-semibold text-slate-800"},ke={class:"text-xs text-slate-400 font-mono mt-0.5"},Ie={class:"ml-auto flex items-center gap-3"},Ae={class:"badge badge-primary badge-outline"},Ue={class:"px-5 py-3 border-b border-slate-50 text-sm font-semibold text-slate-700"},Ve={class:"px-5 py-3 grid grid-cols-1 md:grid-cols-2 gap-x-8"},Ce={class:"text-xs text-slate-400 shrink-0"},De={class:"text-sm text-slate-700 break-all text-right"},Ne={class:"modal-box max-w-md"},Me={class:"text-xs text-slate-400 mb-4"},Se={class:"font-mono text-slate-600"},Ge={class:"grid grid-cols-3 gap-3"},Be={class:"form-control"},Pe={class:"form-control"},je={class:"form-control"},Le=Z({__name:"users",setup(qe){const{webApi:N,consoleApi:q}=le(),{success:T,error:M,warn:c}=oe(),b=$(),E={cn:"中国",us:"美国",hw:"海外",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function F(s){return E[s]||s||"默认"}const f=u([]),p=u(""),m=u(""),k=u(""),r=u(null),S=u("请输入查询条件后点击「搜索」"),I=u(""),x=u(""),K=_(()=>[1,2,3].includes(b.identity)),g=u(null),a=ne({vipday:0,trademin:0,meetmin:0}),A=_(()=>{const s=[];return f.value.forEach(t=>{s.includes(t.name)||s.push(t.name)}),s}),U=_(()=>f.value.filter(s=>s.name===p.value));function G(){const s=U.value;m.value=s.length?s[0].id:""}function L(s){return s?new Date(s*1e3).toLocaleString():"-"}function O(s){return s?"是":"否"}function R(s){return s===1?"男":s===2?"女":"未知"}function V(s){return s==null||s===""?"-":s}const z=[{title:"基本信息",rows:[["uid","UID"],["name","用户名"],["account","登录账号"],["mail","邮箱"],["phone","手机号"],["gender","性别","gender"],["language","语言"],["version","版本"],["channel","渠道"],["State","状态"],["country_code","国家码"],["continent_code","大洲码"],["servicetag","服务区"],["phonemodel","手机型号"],["phonemac","设备ID"]]},{title:"第三方登录",rows:[["wxopenid","微信 openid"],["googleopenid","Google openid"],["facebookopenid","Facebook openid"],["appleopenid","Apple openid"]]},{title:"会员与积分",rows:[["viplv","VIP等级"],["vipexptime","VIP到期","ts"],["aichatintegral","AI积分"],["aichattotalintegral","AI累计积分"],["tradeintegral","翻译积分"],["tradetotalintegral","翻译累计积分"],["meetintegral","会议积分"],["meettotalintegral","会议累计积分"],["lastbindproductid","最后绑定产品ID"],["isactivatecode","已领激活码","bool"],["isgiveaway","首次绑定赠送","bool"]]},{title:"时间",rows:[["createtime","注册时间","ts"],["lastsgintime","最后登录","ts"],["canceltime","注销时间","ts"]]}];function H(s,t){const n=t[2],d=s[t[0]];return n==="ts"?L(d):n==="bool"?O(d):n==="gender"?R(d):V(d)}const J=_(()=>{const s=r.value;return s?String(s.name||s.uid||"?").charAt(0).toUpperCase():"?"});async function C(){if(!p.value){c("请选择应用");return}if(!m.value){c("请选择区域");return}const s=k.value.trim();if(!s){c("请输入用户UID");return}const t=Number(m.value);I.value=t,x.value=s,b.setCurrentApp(t);try{const n=await N("getuserinfo",{uid:s});r.value=n||{}}catch(n){M(n?.message||"查询失败"),r.value=null,S.value=n?.message||"未找到该用户"}}function Q(){if(!x.value){c("请先查询用户");return}a.vipday=0,a.trademin=0,a.meetmin=0,g.value?.showModal()}function W(){g.value?.close()}async function X(){const s=Number(a.vipday)||0,t=Number(a.trademin)||0,n=Number(a.meetmin)||0;if(s<0||t<0||n<0){c("数量不能为负");return}if(!s&&!t&&!n){c("请至少填写一项");return}if(!I.value||!x.value){c("请先查询用户");return}b.setCurrentApp(Number(I.value));try{await N("giftuserresource",{uid:x.value,vipday:s,trademin:t,meetmin:n}),T("赠送成功"),g.value?.close(),C()}catch(d){M(d?.message||"赠送失败")}}function B(){const s=A.value;if(!s.length){p.value="",m.value="";return}p.value=s[0],G()}async function Y(){if(b.identity===3){f.value=(b.appbinds||[]).map(s=>({id:s.id,name:s.name,region:s.region,enabled:!0})),B();return}try{const s=await q("apps/list",{});f.value=(s||[]).filter(t=>t.enabled)}catch{f.value=[]}B()}return ee(Y),(s,t)=>(o(),l("div",ae,[e("div",ie,[e("div",re,[e("div",de,[t[6]||(t[6]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"应用")],-1)),v(e("select",{"onUpdate:modelValue":t[0]||(t[0]=n=>p.value=n),class:"select select-bordered select-sm",style:{"min-width":"180px"},onChange:G},[A.value.length?D("",!0):(o(),l("option",ue,"无可用应用")),(o(!0),l(y,null,h(A.value,n=>(o(),l("option",{key:n,value:n},i(n),9,ce))),128))],544),[[P,p.value]])]),e("div",pe,[t[7]||(t[7]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"区域")],-1)),v(e("select",{"onUpdate:modelValue":t[1]||(t[1]=n=>m.value=n),class:"select select-bordered select-sm",style:{"min-width":"140px"}},[U.value.length?D("",!0):(o(),l("option",me,"无可用区域")),(o(!0),l(y,null,h(U.value,n=>(o(),l("option",{key:n.id,value:n.id},i(F(n.region)),9,ve))),128))],512),[[P,m.value]])]),e("div",be,[t[8]||(t[8]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-xs"},"用户UID")],-1)),v(e("input",{"onUpdate:modelValue":t[2]||(t[2]=n=>k.value=n),type:"text",class:"input input-bordered input-sm",style:{"min-width":"240px"},placeholder:"输入用户 UID",onKeydown:te(se(C,["prevent"]),["enter"])},null,40,fe),[[w,k.value]])]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:C},"搜索")]),t[9]||(t[9]=e("p",{class:"text-xs text-slate-400 mt-2"},"选择应用与区域后输入 UID,直接查询该部署业务库中的用户信息。",-1))]),r.value?(o(),l("div",ge,[e("div",ye,[r.value.avatar?(o(),l("img",{key:0,src:r.value.avatar,class:"w-14 h-14 rounded-full object-cover border border-slate-100"},null,8,he)):(o(),l("div",we,i(J.value),1)),e("div",null,[e("div",_e,i(V(r.value.name)),1),e("div",ke,i(V(r.value.uid)),1)]),e("div",Ie,[e("span",Ae,"VIP "+i(r.value.viplv||0),1),K.value?(o(),l("button",{key:0,class:"btn btn-success btn-sm text-white",onClick:Q},"赠送资源点")):D("",!0)])]),(o(),l(y,null,h(z,n=>e("div",{key:n.title,class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},[e("div",Ue,i(n.title),1),e("div",Ve,[(o(!0),l(y,null,h(n.rows,d=>(o(),l("div",{key:d[0],class:"flex justify-between gap-3 py-1.5 border-b border-slate-50"},[e("span",Ce,i(d[1]),1),e("span",De,i(H(r.value,d)),1)]))),128))])])),64))])):(o(),l("div",xe,i(S.value),1)),e("dialog",{ref_key:"giftModal",ref:g,class:"modal"},[e("div",Ne,[t[15]||(t[15]=e("h3",{class:"font-bold text-lg mb-1 text-slate-800"},"赠送资源点",-1)),e("p",Me,[t[10]||(t[10]=j("目标用户 UID:",-1)),e("span",Se,i(x.value),1),t[11]||(t[11]=j("。代理账号将从自己的资源点余额中扣减,超管/管理员无消耗。",-1))]),e("div",Ge,[e("div",Be,[t[12]||(t[12]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"VIP天数")],-1)),v(e("input",{"onUpdate:modelValue":t[3]||(t[3]=n=>a.vipday=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.vipday,void 0,{number:!0}]])]),e("div",Pe,[t[13]||(t[13]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"翻译分钟")],-1)),v(e("input",{"onUpdate:modelValue":t[4]||(t[4]=n=>a.trademin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.trademin,void 0,{number:!0}]])]),e("div",je,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm"},"会议分钟")],-1)),v(e("input",{"onUpdate:modelValue":t[5]||(t[5]=n=>a.meetmin=n),type:"number",class:"input input-bordered",min:"0"},null,512),[[w,a.meetmin,void 0,{number:!0}]])])]),e("div",{class:"modal-action"},[e("button",{class:"btn btn-sm",onClick:W},"取消"),e("button",{class:"btn btn-success btn-sm text-white",onClick:X},"确认赠送")])]),t[16]||(t[16]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}});export{Le as default}; diff --git a/apps/admin/.output/public/_nuxt/CSQN7OHo.js b/apps/admin/.output/public/_nuxt/CSQN7OHo.js new file mode 100644 index 00000000..166655a6 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/CSQN7OHo.js @@ -0,0 +1 @@ +import{g as A,B as H,c as o,p as c,H as S,a as t,l as U,F as g,r as h,t as d,m as D,v as V,q as I,O,x as r,y as P,o as a,d as G}from"./Dv-LAQo6.js";import{u as J}from"./mz7Huk5H.js";import{u as Q}from"./D7SVvy69.js";import"./D0vUT4uH.js";const R={class:"flex items-center justify-between mb-5"},W={class:"bg-white rounded-xl shadow-sm border border-slate-100"},X={class:"overflow-x-auto"},Y={class:"table table-zebra"},Z={key:0},tt={key:1},et={class:"font-mono text-sm"},st={class:"font-medium"},nt={class:"badge badge-ghost badge-sm"},lt={class:"text-sm"},ot={key:1,class:"text-slate-300"},at={class:"text-sm text-slate-500"},it={class:"flex gap-1"},dt=["onClick"],rt=["onClick"],ut={class:"flex items-center gap-3 mb-5"},ct={class:"text-lg font-semibold text-slate-800"},mt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},vt={class:"form-control mb-4"},bt={class:"form-control mb-4"},pt=["value"],ft={class:"form-control mb-4"},xt={class:"form-control mb-6"},gt={class:"space-y-2"},ht={key:0,class:"text-xs text-slate-400"},yt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},_t=["onClick"],wt={class:"flex gap-2 mt-2"},kt=["onKeydown"],Ct={class:"flex gap-3"},Bt=["disabled"],St=A({__name:"factory",setup(Vt){const{webApi:b}=J(),{success:N,error:y,warn:L}=Q(),p=r("list"),f=r([]),x=r([]),_=r(!1),w=r(!1),m=r(!1),i=r([]),v=r(""),l=P({id:0,brand:"",providerid:0,description:""});function j(s){return s?Number(s).toString(16).toUpperCase():""}function k(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function F(s){if(!s)return"-";const e=x.value.find(n=>n.id===s);return e?e.name:"方案商#"+s}async function K(){try{const s=await b("getsolutionproviders",{});x.value=s?.providers??[]}catch{x.value=[]}}async function C(){_.value=!0;try{await K();const s=await b("getbrands",{});f.value=s?.brands??[]}catch(s){y(s?.message??"获取品牌商列表失败"),f.value=[]}finally{_.value=!1}}function B(){p.value="list",C()}function $(s){s?(m.value=!0,l.id=s.id,l.brand=s.brand||"",l.providerid=s.providerid||0,l.description=s.description||"",i.value=k(s.contactmails)):(m.value=!1,l.id=0,l.brand="",l.providerid=0,l.description="",i.value=[]),v.value="",p.value="form"}function M(){const s=v.value.trim();if(s){if(i.value.includes(s)){L("邮箱已存在");return}i.value.push(s),v.value=""}}function T(s){i.value.splice(s,1)}async function q(){w.value=!0;try{const s={brand:{brand:l.brand,providerid:Number(l.providerid)||0,description:l.description,contactmails:i.value.join(",")}};m.value&&(s.brand.id=Number(l.id)),await b(m.value?"updatebrand":"addbrand",s),N("保存成功"),B()}catch(s){y(s?.message??"保存失败")}finally{w.value=!1}}function z(s){window.confirm(`确定删除品牌商 "${s.brand}" 吗?`)&&b("delbrand",{id:s.id}).then(()=>{N("删除成功"),C()}).catch(e=>y(e?.message??"删除失败"))}return H(C),(s,e)=>(a(),o("div",null,[c(t("div",null,[t("div",R,[e[7]||(e[7]=t("h2",{class:"text-lg font-semibold text-slate-800"},"品牌商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>$())},"+ 新增品牌商")]),t("div",W,[t("div",X,[t("table",Y,[e[10]||(e[10]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"品牌名称"),t("th",null,"归属方案商"),t("th",null,"联系邮箱"),t("th",null,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[_.value?(a(),o("tr",Z,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):f.value.length?U("",!0):(a(),o("tr",tt,[...e[9]||(e[9]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),o(g,null,h(f.value,n=>(a(),o("tr",{key:n.id},[t("td",et,d(j(n.id)),1),t("td",st,d(n.brand),1),t("td",null,[t("span",nt,d(F(n.providerid)),1)]),t("td",lt,[k(n.contactmails).length?(a(!0),o(g,{key:0},h(k(n.contactmails),(u,E)=>(a(),o("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},d(u),1))),128)):(a(),o("span",ot,"-"))]),t("td",at,d(n.productlists||""),1),t("td",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>$(n)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>z(n)},"删除",8,rt)])])]))),128))])])])])],512),[[S,p.value==="list"]]),c(t("div",null,[t("div",ut,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>B())},"← 返回列表"),t("h2",ct,d(m.value?"编辑品牌商":"新增品牌商"),1)]),t("div",mt,[t("form",{onSubmit:D(q,["prevent"])},[t("div",vt,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),c(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>l.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[V,l.brand]])]),t("div",bt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),c(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>l.providerid=n),class:"select select-bordered w-full"},[e[12]||(e[12]=t("option",{value:0},"请选择方案商",-1)),(a(!0),o(g,null,h(x.value,n=>(a(),o("option",{key:n.id,value:n.id},d(n.name),9,pt))),128))],512),[[I,l.providerid,void 0,{number:!0}]])]),t("div",ft,[e[14]||(e[14]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),c(t("textarea",{"onUpdate:modelValue":e[4]||(e[4]=n=>l.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[V,l.description]])]),t("div",xt,[e[16]||(e[16]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",gt,[i.value.length?U("",!0):(a(),o("p",ht,"暂无邮箱")),(a(!0),o(g,null,h(i.value,(n,u)=>(a(),o("div",{key:u,class:"flex items-center gap-2"},[t("span",yt,[e[15]||(e[15]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),G(" "+d(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>T(u)},"×",8,_t)]))),128))]),t("div",wt,[c(t("input",{"onUpdate:modelValue":e[5]||(e[5]=n=>v.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:O(D(M,["prevent"]),["enter"])},null,40,kt),[[V,v.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:M},"添加")])]),t("div",Ct,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[6]||(e[6]=n=>B())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:w.value},"保存",8,Bt)])],32)])],512),[[S,p.value==="form"]])]))}});export{St as default}; diff --git a/apps/admin/.output/public/_nuxt/CFPPaSCZ.js b/apps/admin/.output/public/_nuxt/CSir_6Sc.js similarity index 95% rename from apps/admin/.output/public/_nuxt/CFPPaSCZ.js rename to apps/admin/.output/public/_nuxt/CSir_6Sc.js index 768d6ee9..6a9e88ab 100644 --- a/apps/admin/.output/public/_nuxt/CFPPaSCZ.js +++ b/apps/admin/.output/public/_nuxt/CSir_6Sc.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"./CCjf5Io-.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"./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}; diff --git a/apps/admin/.output/public/_nuxt/D3KKJ_NK.js b/apps/admin/.output/public/_nuxt/CTIvguo-.js similarity index 85% rename from apps/admin/.output/public/_nuxt/D3KKJ_NK.js rename to apps/admin/.output/public/_nuxt/CTIvguo-.js index 75039d1b..19fec830 100644 --- a/apps/admin/.output/public/_nuxt/D3KKJ_NK.js +++ b/apps/admin/.output/public/_nuxt/CTIvguo-.js @@ -1 +1 @@ -import{g as K,B as z,c as l,p as b,H as D,a as t,l as N,F as k,r as C,t as r,m as E,v as S,N as A,x as d,y as I,o as a,d as P}from"./CCjf5Io-.js";import{u as q}from"./C-6Qe-lq.js";import{u as Y}from"./DTVGNZEd.js";import"./42htcooJ.js";const G={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},O={class:"overflow-x-auto"},Q={class:"table table-zebra"},R={key:0},W={key:1},X={class:"font-mono text-sm"},Z={class:"font-medium"},tt={class:"text-sm text-slate-500"},et={class:"text-sm"},st={key:1,class:"text-slate-300"},nt={class:"text-sm text-slate-500"},ot={class:"flex gap-1"},lt=["onClick"],at=["onClick"],it={class:"flex items-center gap-3 mb-5"},rt={class:"text-lg font-semibold text-slate-800"},dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},ut={class:"form-control mb-4"},ct={class:"form-control mb-4"},mt={class:"form-control mb-6"},bt={class:"space-y-2"},vt={key:0,class:"text-xs text-slate-400"},pt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},ft=["onClick"],xt={class:"flex gap-2 mt-2"},gt=["onKeydown"],ht={class:"flex gap-3"},_t=["disabled"],Mt=K({__name:"provider",setup(yt){const{webApi:f}=q(),{success:M,error:x,warn:F}=Y(),v=d("list"),p=d([]),g=d(!1),h=d(!1),c=d(!1),i=d([]),m=d(""),o=I({id:0,name:"",description:""});function L(s){return s?Number(s).toString(16).toUpperCase():""}function _(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function T(s){if(!s)return"-";const e=new Date(s*1e3);return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}async function y(){g.value=!0;try{const s=await f("getsolutionproviders",{});p.value=s?.providers??[]}catch(s){x(s?.message??"获取方案商列表失败"),p.value=[]}finally{g.value=!1}}function w(){v.value="list",y()}function V(s){s?(c.value=!0,o.id=s.id,o.name=s.name||"",o.description=s.description||"",i.value=_(s.contactmails)):(c.value=!1,o.id=0,o.name="",o.description="",i.value=[]),m.value="",v.value="form"}function $(){const s=m.value.trim();if(s){if(i.value.includes(s)){F("邮箱已存在");return}i.value.push(s),m.value=""}}function U(s){i.value.splice(s,1)}async function j(){h.value=!0;try{const s={provider:{name:o.name,description:o.description,contactmails:i.value.join(",")}};c.value&&(s.provider.id=Number(o.id)),await f(c.value?"updatesolutionprovider":"addsolutionprovider",s),M("保存成功"),w()}catch(s){x(s?.message??"保存失败")}finally{h.value=!1}}function H(s){window.confirm(`确定删除方案商 "${s.name}" 吗?`)&&f("delsolutionprovider",{id:s.id}).then(()=>{M("删除成功"),y()}).catch(e=>x(e?.message??"删除失败"))}return z(y),(s,e)=>(a(),l("div",null,[b(t("div",null,[t("div",G,[e[6]||(e[6]=t("h2",{class:"text-lg font-semibold text-slate-800"},"方案商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>V())},"+ 新增方案商")]),t("div",J,[t("div",O,[t("table",Q,[e[9]||(e[9]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"方案商名称"),t("th",null,"描述"),t("th",null,"联系邮箱"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[g.value?(a(),l("tr",R,[...e[7]||(e[7]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):p.value.length?N("",!0):(a(),l("tr",W,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),l(k,null,C(p.value,n=>(a(),l("tr",{key:n.id},[t("td",X,r(L(n.id)),1),t("td",Z,r(n.name),1),t("td",tt,r(n.description||""),1),t("td",et,[_(n.contactmails).length?(a(!0),l(k,{key:0},C(_(n.contactmails),(u,B)=>(a(),l("span",{key:B,class:"badge badge-ghost badge-sm mr-1"},r(u),1))),128)):(a(),l("span",st,"-"))]),t("td",nt,r(T(n.createtime)),1),t("td",null,[t("div",ot,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>V(n)},"编辑",8,lt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>H(n)},"删除",8,at)])])]))),128))])])])])],512),[[D,v.value==="list"]]),b(t("div",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>w())},"← 返回列表"),t("h2",rt,r(c.value?"编辑方案商":"新增方案商"),1)]),t("div",dt,[t("form",{onSubmit:E(j,["prevent"])},[t("div",ut,[e[10]||(e[10]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"方案商名称 *")],-1)),b(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>o.name=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[S,o.name]])]),t("div",ct,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),b(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=n=>o.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[S,o.description]])]),t("div",mt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",bt,[i.value.length?N("",!0):(a(),l("p",vt,"暂无邮箱")),(a(!0),l(k,null,C(i.value,(n,u)=>(a(),l("div",{key:u,class:"flex items-center gap-2"},[t("span",pt,[e[12]||(e[12]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),P(" "+r(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:B=>U(u)},"×",8,ft)]))),128))]),t("div",xt,[b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>m.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:A(E($,["prevent"]),["enter"])},null,40,gt),[[S,m.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:$},"添加")])]),t("div",ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[5]||(e[5]=n=>w())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,_t)])],32)])],512),[[D,v.value==="form"]])]))}});export{Mt as default}; +import{g as K,B as z,c as l,p as b,H as D,a as t,l as E,F as k,r as C,t as r,m as N,v as S,O as A,x as d,y as I,o as a,d as P}from"./Dv-LAQo6.js";import{u as q}from"./mz7Huk5H.js";import{u as O}from"./D7SVvy69.js";import"./D0vUT4uH.js";const Y={class:"flex items-center justify-between mb-5"},G={class:"bg-white rounded-xl shadow-sm border border-slate-100"},J={class:"overflow-x-auto"},Q={class:"table table-zebra"},R={key:0},W={key:1},X={class:"font-mono text-sm"},Z={class:"font-medium"},tt={class:"text-sm text-slate-500"},et={class:"text-sm"},st={key:1,class:"text-slate-300"},nt={class:"text-sm text-slate-500"},ot={class:"flex gap-1"},lt=["onClick"],at=["onClick"],it={class:"flex items-center gap-3 mb-5"},rt={class:"text-lg font-semibold text-slate-800"},dt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},ut={class:"form-control mb-4"},ct={class:"form-control mb-4"},mt={class:"form-control mb-6"},bt={class:"space-y-2"},vt={key:0,class:"text-xs text-slate-400"},pt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},ft=["onClick"],xt={class:"flex gap-2 mt-2"},gt=["onKeydown"],ht={class:"flex gap-3"},_t=["disabled"],Mt=K({__name:"provider",setup(yt){const{webApi:f}=q(),{success:M,error:x,warn:F}=O(),v=d("list"),p=d([]),g=d(!1),h=d(!1),c=d(!1),i=d([]),m=d(""),o=I({id:0,name:"",description:""});function L(s){return s?Number(s).toString(16).toUpperCase():""}function _(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function T(s){if(!s)return"-";const e=new Date(s*1e3);return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")}async function y(){g.value=!0;try{const s=await f("getsolutionproviders",{});p.value=s?.providers??[]}catch(s){x(s?.message??"获取方案商列表失败"),p.value=[]}finally{g.value=!1}}function w(){v.value="list",y()}function V(s){s?(c.value=!0,o.id=s.id,o.name=s.name||"",o.description=s.description||"",i.value=_(s.contactmails)):(c.value=!1,o.id=0,o.name="",o.description="",i.value=[]),m.value="",v.value="form"}function $(){const s=m.value.trim();if(s){if(i.value.includes(s)){F("邮箱已存在");return}i.value.push(s),m.value=""}}function U(s){i.value.splice(s,1)}async function j(){h.value=!0;try{const s={provider:{name:o.name,description:o.description,contactmails:i.value.join(",")}};c.value&&(s.provider.id=Number(o.id)),await f(c.value?"updatesolutionprovider":"addsolutionprovider",s),M("保存成功"),w()}catch(s){x(s?.message??"保存失败")}finally{h.value=!1}}function H(s){window.confirm(`确定删除方案商 "${s.name}" 吗?`)&&f("delsolutionprovider",{id:s.id}).then(()=>{M("删除成功"),y()}).catch(e=>x(e?.message??"删除失败"))}return z(y),(s,e)=>(a(),l("div",null,[b(t("div",null,[t("div",Y,[e[6]||(e[6]=t("h2",{class:"text-lg font-semibold text-slate-800"},"方案商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>V())},"+ 新增方案商")]),t("div",G,[t("div",J,[t("table",Q,[e[9]||(e[9]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"方案商名称"),t("th",null,"描述"),t("th",null,"联系邮箱"),t("th",null,"创建时间"),t("th",null,"操作")])],-1)),t("tbody",null,[g.value?(a(),l("tr",R,[...e[7]||(e[7]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):p.value.length?E("",!0):(a(),l("tr",W,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),l(k,null,C(p.value,n=>(a(),l("tr",{key:n.id},[t("td",X,r(L(n.id)),1),t("td",Z,r(n.name),1),t("td",tt,r(n.description||""),1),t("td",et,[_(n.contactmails).length?(a(!0),l(k,{key:0},C(_(n.contactmails),(u,B)=>(a(),l("span",{key:B,class:"badge badge-ghost badge-sm mr-1"},r(u),1))),128)):(a(),l("span",st,"-"))]),t("td",nt,r(T(n.createtime)),1),t("td",null,[t("div",ot,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>V(n)},"编辑",8,lt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>H(n)},"删除",8,at)])])]))),128))])])])])],512),[[D,v.value==="list"]]),b(t("div",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>w())},"← 返回列表"),t("h2",rt,r(c.value?"编辑方案商":"新增方案商"),1)]),t("div",dt,[t("form",{onSubmit:N(j,["prevent"])},[t("div",ut,[e[10]||(e[10]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"方案商名称 *")],-1)),b(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>o.name=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[S,o.name]])]),t("div",ct,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),b(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=n=>o.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[S,o.description]])]),t("div",mt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",bt,[i.value.length?E("",!0):(a(),l("p",vt,"暂无邮箱")),(a(!0),l(k,null,C(i.value,(n,u)=>(a(),l("div",{key:u,class:"flex items-center gap-2"},[t("span",pt,[e[12]||(e[12]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),P(" "+r(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:B=>U(u)},"×",8,ft)]))),128))]),t("div",xt,[b(t("input",{"onUpdate:modelValue":e[4]||(e[4]=n=>m.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:A(N($,["prevent"]),["enter"])},null,40,gt),[[S,m.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:$},"添加")])]),t("div",ht,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[5]||(e[5]=n=>w())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,_t)])],32)])],512),[[D,v.value==="form"]])]))}});export{Mt as default}; diff --git a/apps/admin/.output/public/_nuxt/CZJGstC3.js b/apps/admin/.output/public/_nuxt/CZJGstC3.js new file mode 100644 index 00000000..78451d78 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/CZJGstC3.js @@ -0,0 +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 _}; diff --git a/apps/admin/.output/public/_nuxt/-Au2A1Cv.js b/apps/admin/.output/public/_nuxt/CmHlPuQb.js similarity index 91% rename from apps/admin/.output/public/_nuxt/-Au2A1Cv.js rename to apps/admin/.output/public/_nuxt/CmHlPuQb.js index 529dc890..73c76aa5 100644 --- a/apps/admin/.output/public/_nuxt/-Au2A1Cv.js +++ b/apps/admin/.output/public/_nuxt/CmHlPuQb.js @@ -1 +1 @@ -import{g as L,k as R,B as j,c as l,a as e,d as p,F as u,r as h,L as G,l as A,t as d,m as g,p as m,v as N,s as H,x as v,z as k,y as B,o as i,N as D,n as w,q as J,_ as O}from"./CCjf5Io-.js";import{u as Q}from"./C-6Qe-lq.js";import{u as W}from"./DTVGNZEd.js";import"./42htcooJ.js";const X={class:"flex items-start justify-between mb-5 flex-wrap gap-3"},Y={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Z={key:1,class:"bg-white rounded-xl border border-slate-100 py-16 text-center text-slate-400"},tt={key:2,class:"app-grid"},et=["onClick","onKeydown"],st={class:"ac-head"},at={class:"ac-logo"},nt={class:"min-w-0 flex-1"},ot={class:"ac-title"},lt={class:"ac-meta"},it={key:0,class:"chip"},dt={class:"ac-remark"},rt={class:"ac-stats"},ct={class:"ac-stat"},pt={class:"ac-stat"},ut={class:"ac-stat"},mt={class:"ac-regions"},vt={key:1,class:"text-xs text-slate-300"},bt=["onClick"],ft=["onClick"],xt=["onClick"],_t={key:0,class:"app-card orphan"},yt={class:"orphan-list"},ht={class:"min-w-0"},gt={class:"text-sm font-medium text-slate-700 truncate"},kt={class:"text-[11px] text-slate-400 font-mono"},wt=["onUpdate:modelValue"],Ct=["value"],$t=["disabled","onClick"],Vt={class:"modal-box max-w-lg"},Ut={class:"font-bold text-lg"},Mt={class:"form-control"},At={class:"form-control"},Nt={class:"form-control"},zt={class:"flex items-center gap-2 cursor-pointer pt-1"},St={class:"modal-action"},Bt=L({__name:"index",setup(Dt){const{consoleApi:r}=Q(),{success:C,error:b}=W(),F=R(),f=v([]),$=v([]),V=v(!1),c=B({}),T=k(()=>{const a=new Map;for(const t of $.value){const s=t.app_name||"";a.has(s)||a.set(s,[]),a.get(s).push(t)}return a}),z=k(()=>f.value.map(a=>{const t=T.value.get(a.name)||[];return{product:a,deployments:t,okCount:t.filter(s=>s.status!=="pending").length,pendingCount:t.filter(s=>s.status==="pending").length}})),U=k(()=>{const a=new Set(f.value.map(t=>t.name));return $.value.filter(t=>!t.app_name||!a.has(t.app_name))}),K=k(()=>z.value.length+(U.value.length?1:0));function P(a){return(a||"?").charAt(0).toUpperCase()}function x(a){F.push(`/apps/${encodeURIComponent(a)}`)}async function _(){V.value=!0;try{const[a,t]=await Promise.all([r("products/list",{}),r("apps/list",{})]);f.value=a??[],$.value=t??[]}catch(a){b(a?.message??"获取应用列表失败")}finally{V.value=!1}}const y=v(null),M=v(!1),n=B({id:0,name:"",image_name:"",remark:"",enabled:!0});function S(a){M.value=!!a,n.id=a?.id??0,n.name=a?.name??"",n.image_name=a?.image_name??"",n.remark=a?.remark??"",n.enabled=a?!!a.enabled:!0,y.value?.showModal()}async function q(){const a={name:n.name,image_name:n.image_name,remark:n.remark,enabled:n.enabled};let t="products/add";M.value&&n.id&&(a.id=Number(n.id),t="products/update");try{await r(t,a),C("保存成功"),y.value?.close(),await _()}catch(s){b(s?.message??"保存失败")}}function E(a){window.confirm(`删除应用「${a.name}」?(其下若有区域部署将被拒绝)`)&&r("products/del",{id:a.id}).then(()=>{C("已删除"),_()}).catch(t=>b(t?.message??"删除失败"))}async function I(a){const t=c[a.id];if(t)try{await r("apps/assign",{id:a.id,app_name:t}),C(`已归位到「${t}」`),delete c[a.id],await _()}catch(s){b(s?.message??"归位失败")}}return j(_),(a,t)=>(i(),l("div",null,[e("div",X,[t[7]||(t[7]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"应用中心"),e("p",{class:"text-sm text-slate-400 mt-1 max-w-3xl"},[p(" 一张卡片 = 一个 "),e("span",{class:"chip chip-app"},"应用"),p(",卡片里是它在各区域的 "),e("span",{class:"chip chip-dep"},"部署"),p(" 概况。 点卡片进入应用详情:编辑应用、部署新环境、升级服务、改各项配置。 ")])],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>S())},"+ 添加应用")]),V.value?(i(),l("div",Y,[...t[8]||(t[8]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):K.value?(i(),l("div",tt,[(i(!0),l(u,null,h(z.value,s=>(i(),l("article",{key:s.product.name,class:w(["app-card",{off:!s.product.enabled}]),tabindex:"0",role:"button",onClick:o=>x(s.product.name),onKeydown:[D(g(o=>x(s.product.name),["prevent"]),["enter"]),D(g(o=>x(s.product.name),["prevent"]),["space"])]},[e("div",st,[e("div",at,d(P(s.product.name)),1),e("div",nt,[e("div",ot,d(s.product.name),1),e("div",lt,d(s.product.image_name?"🐳 "+s.product.image_name:"未设置默认镜像"),1)]),s.product.enabled?A("",!0):(i(),l("span",it,"停用"))]),e("p",dt,d(s.product.remark||"—"),1),e("div",rt,[e("div",ct,[e("div",{class:w(["ac-stat-n",{zero:!s.deployments.length}])},d(s.deployments.length),3),t[9]||(t[9]=e("div",{class:"ac-stat-l"},"部署",-1))]),e("div",pt,[e("div",{class:w(["ac-stat-n",{zero:!s.okCount}])},d(s.okCount),3),t[10]||(t[10]=e("div",{class:"ac-stat-l"},"已接入",-1))]),e("div",ut,[e("div",{class:w(["ac-stat-n",s.pendingCount?"warn":"zero"])},d(s.pendingCount),3),t[11]||(t[11]=e("div",{class:"ac-stat-l"},"待部署",-1))])]),e("div",mt,[s.deployments.length?(i(!0),l(u,{key:0},h(s.deployments,o=>(i(),l("span",{key:o.id,class:"chip chip-dep"},[p(d(o.region||"未指定"),1),o.status==="pending"?(i(),l(u,{key:0},[p(" · 待部署")],64)):A("",!0)]))),128)):(i(),l("span",vt,"还没有任何部署"))]),e("div",{class:"ac-foot",onClick:t[1]||(t[1]=g(()=>{},["stop"]))},[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>S(s.product)},"编辑",8,bt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>E(s.product)},"删除",8,ft),e("button",{class:"btn btn-primary btn-xs text-white",onClick:o=>x(s.product.name)},"进入详情 →",8,xt)])],42,et))),128)),U.value.length?(i(),l("article",_t,[t[13]||(t[13]=G('
未分组部署
需要归位到某个应用
待归位

未填所属应用名、或应用已被删除的历史部署。选一个应用把它归位,之后就能在该应用详情里管理。

',2)),e("div",yt,[(i(!0),l(u,null,h(U.value,s=>(i(),l("div",{key:s.id,class:"orphan-row"},[e("div",ht,[e("div",gt,d(s.name||"部署#"+s.id),1),e("div",kt,"#"+d(s.id)+" · "+d(s.region||"未指定区域"),1)]),m(e("select",{"onUpdate:modelValue":o=>c[s.id]=o,class:"select select-bordered select-xs w-32"},[t[12]||(t[12]=e("option",{value:""},"选择应用…",-1)),(i(!0),l(u,null,h(f.value,o=>(i(),l("option",{key:o.id,value:o.name},d(o.name),9,Ct))),128))],8,wt),[[J,c[s.id]]]),e("button",{class:"btn btn-xs",disabled:!c[s.id],onClick:o=>I(s)},"归位",8,$t)]))),128))])])):A("",!0)])):(i(),l("div",Z," 暂无应用,先「添加应用」 ")),e("dialog",{ref_key:"appDlg",ref:y,class:"modal"},[e("div",Vt,[e("h3",Ut,d(M.value?"编辑应用":"添加应用"),1),t[19]||(t[19]=e("p",{class:"text-xs text-slate-400 mt-1"}," 应用名是关联键:部署、账号作用域、第三方服务配置都按它挂载,改名会断开已有关联。 ",-1)),e("form",{class:"mt-4 space-y-3",onSubmit:g(q,["prevent"])},[e("div",Mt,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"应用名 *")],-1)),m(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.name=s),type:"text",class:"input input-bordered input-sm w-full",required:"",placeholder:"如 Voitrans"},null,512),[[N,n.name]])]),e("div",At,[t[15]||(t[15]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"默认镜像名")],-1)),m(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.image_name=s),type:"text",class:"input input-bordered input-sm w-full font-mono text-xs",placeholder:"voitrans-a11(新建部署时预填)"},null,512),[[N,n.image_name]])]),e("div",Nt,[t[16]||(t[16]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"备注")],-1)),m(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.remark=s),type:"text",class:"input input-bordered input-sm w-full"},null,512),[[N,n.remark]])]),e("label",zt,[m(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[H,n.enabled]]),t[17]||(t[17]=e("span",{class:"text-sm"},"启用",-1))]),e("div",St,[e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:t[6]||(t[6]=s=>y.value?.close())},"取消"),t[18]||(t[18]=e("button",{type:"submit",class:"btn btn-primary btn-sm text-white"},"保存",-1))])],32)]),t[20]||(t[20]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),qt=O(Bt,[["__scopeId","data-v-6c9af955"]]);export{qt as default}; +import{g as R,k as j,B as G,c as l,a as e,d as p,F as u,r as h,N as L,l as A,t as d,m as g,p as m,v as N,s as O,x as v,z as k,y as B,o as i,O as D,n as w,q as H,_ as J}from"./Dv-LAQo6.js";import{u as Q}from"./mz7Huk5H.js";import{u as W}from"./D7SVvy69.js";import"./D0vUT4uH.js";const X={class:"flex items-start justify-between mb-5 flex-wrap gap-3"},Y={key:0,class:"bg-white rounded-xl border border-slate-100 py-16 text-center"},Z={key:1,class:"bg-white rounded-xl border border-slate-100 py-16 text-center text-slate-400"},tt={key:2,class:"app-grid"},et=["onClick","onKeydown"],st={class:"ac-head"},at={class:"ac-logo"},nt={class:"min-w-0 flex-1"},ot={class:"ac-title"},lt={class:"ac-meta"},it={key:0,class:"chip"},dt={class:"ac-remark"},rt={class:"ac-stats"},ct={class:"ac-stat"},pt={class:"ac-stat"},ut={class:"ac-stat"},mt={class:"ac-regions"},vt={key:1,class:"text-xs text-slate-300"},bt=["onClick"],ft=["onClick"],xt=["onClick"],_t={key:0,class:"app-card orphan"},yt={class:"orphan-list"},ht={class:"min-w-0"},gt={class:"text-sm font-medium text-slate-700 truncate"},kt={class:"text-[11px] text-slate-400 font-mono"},wt=["onUpdate:modelValue"],Ct=["value"],$t=["disabled","onClick"],Vt={class:"modal-box max-w-lg"},Ut={class:"font-bold text-lg"},Mt={class:"form-control"},At={class:"form-control"},Nt={class:"form-control"},zt={class:"flex items-center gap-2 cursor-pointer pt-1"},St={class:"modal-action"},Bt=R({__name:"index",setup(Dt){const{consoleApi:r}=Q(),{success:C,error:b}=W(),F=j(),f=v([]),$=v([]),V=v(!1),c=B({}),T=k(()=>{const a=new Map;for(const t of $.value){const s=t.app_name||"";a.has(s)||a.set(s,[]),a.get(s).push(t)}return a}),z=k(()=>f.value.map(a=>{const t=T.value.get(a.name)||[];return{product:a,deployments:t,okCount:t.filter(s=>s.status!=="pending").length,pendingCount:t.filter(s=>s.status==="pending").length}})),U=k(()=>{const a=new Set(f.value.map(t=>t.name));return $.value.filter(t=>!t.app_name||!a.has(t.app_name))}),K=k(()=>z.value.length+(U.value.length?1:0));function P(a){return(a||"?").charAt(0).toUpperCase()}function x(a){F.push(`/apps/${encodeURIComponent(a)}`)}async function _(){V.value=!0;try{const[a,t]=await Promise.all([r("products/list",{}),r("apps/list",{})]);f.value=a??[],$.value=t??[]}catch(a){b(a?.message??"获取应用列表失败")}finally{V.value=!1}}const y=v(null),M=v(!1),n=B({id:0,name:"",image_name:"",remark:"",enabled:!0});function S(a){M.value=!!a,n.id=a?.id??0,n.name=a?.name??"",n.image_name=a?.image_name??"",n.remark=a?.remark??"",n.enabled=a?!!a.enabled:!0,y.value?.showModal()}async function q(){const a={name:n.name,image_name:n.image_name,remark:n.remark,enabled:n.enabled};let t="products/add";M.value&&n.id&&(a.id=Number(n.id),t="products/update");try{await r(t,a),C("保存成功"),y.value?.close(),await _()}catch(s){b(s?.message??"保存失败")}}function E(a){window.confirm(`删除应用「${a.name}」?(其下若有区域部署将被拒绝)`)&&r("products/del",{id:a.id}).then(()=>{C("已删除"),_()}).catch(t=>b(t?.message??"删除失败"))}async function I(a){const t=c[a.id];if(t)try{await r("apps/assign",{id:a.id,app_name:t}),C(`已归位到「${t}」`),delete c[a.id],await _()}catch(s){b(s?.message??"归位失败")}}return G(_),(a,t)=>(i(),l("div",null,[e("div",X,[t[7]||(t[7]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"应用中心"),e("p",{class:"text-sm text-slate-400 mt-1 max-w-3xl"},[p(" 一张卡片 = 一个 "),e("span",{class:"chip chip-app"},"应用"),p(",卡片里是它在各区域的 "),e("span",{class:"chip chip-dep"},"部署"),p(" 概况。 点卡片进入应用详情:编辑应用、部署新环境、升级服务、改各项配置。 ")])],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=s=>S())},"+ 添加应用")]),V.value?(i(),l("div",Y,[...t[8]||(t[8]=[e("span",{class:"loading loading-spinner loading-sm"},null,-1)])])):K.value?(i(),l("div",tt,[(i(!0),l(u,null,h(z.value,s=>(i(),l("article",{key:s.product.name,class:w(["app-card",{off:!s.product.enabled}]),tabindex:"0",role:"button",onClick:o=>x(s.product.name),onKeydown:[D(g(o=>x(s.product.name),["prevent"]),["enter"]),D(g(o=>x(s.product.name),["prevent"]),["space"])]},[e("div",st,[e("div",at,d(P(s.product.name)),1),e("div",nt,[e("div",ot,d(s.product.name),1),e("div",lt,d(s.product.image_name?"🐳 "+s.product.image_name:"未设置默认镜像"),1)]),s.product.enabled?A("",!0):(i(),l("span",it,"停用"))]),e("p",dt,d(s.product.remark||"—"),1),e("div",rt,[e("div",ct,[e("div",{class:w(["ac-stat-n",{zero:!s.deployments.length}])},d(s.deployments.length),3),t[9]||(t[9]=e("div",{class:"ac-stat-l"},"部署",-1))]),e("div",pt,[e("div",{class:w(["ac-stat-n",{zero:!s.okCount}])},d(s.okCount),3),t[10]||(t[10]=e("div",{class:"ac-stat-l"},"已接入",-1))]),e("div",ut,[e("div",{class:w(["ac-stat-n",s.pendingCount?"warn":"zero"])},d(s.pendingCount),3),t[11]||(t[11]=e("div",{class:"ac-stat-l"},"待部署",-1))])]),e("div",mt,[s.deployments.length?(i(!0),l(u,{key:0},h(s.deployments,o=>(i(),l("span",{key:o.id,class:"chip chip-dep"},[p(d(o.region||"未指定"),1),o.status==="pending"?(i(),l(u,{key:0},[p(" · 待部署")],64)):A("",!0)]))),128)):(i(),l("span",vt,"还没有任何部署"))]),e("div",{class:"ac-foot",onClick:t[1]||(t[1]=g(()=>{},["stop"]))},[e("button",{class:"btn btn-ghost btn-xs",onClick:o=>S(s.product)},"编辑",8,bt),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:o=>E(s.product)},"删除",8,ft),e("button",{class:"btn btn-primary btn-xs text-white",onClick:o=>x(s.product.name)},"进入详情 →",8,xt)])],42,et))),128)),U.value.length?(i(),l("article",_t,[t[13]||(t[13]=L('
未分组部署
需要归位到某个应用
待归位

未填所属应用名、或应用已被删除的历史部署。选一个应用把它归位,之后就能在该应用详情里管理。

',2)),e("div",yt,[(i(!0),l(u,null,h(U.value,s=>(i(),l("div",{key:s.id,class:"orphan-row"},[e("div",ht,[e("div",gt,d(s.name||"部署#"+s.id),1),e("div",kt,"#"+d(s.id)+" · "+d(s.region||"未指定区域"),1)]),m(e("select",{"onUpdate:modelValue":o=>c[s.id]=o,class:"select select-bordered select-xs w-32"},[t[12]||(t[12]=e("option",{value:""},"选择应用…",-1)),(i(!0),l(u,null,h(f.value,o=>(i(),l("option",{key:o.id,value:o.name},d(o.name),9,Ct))),128))],8,wt),[[H,c[s.id]]]),e("button",{class:"btn btn-xs",disabled:!c[s.id],onClick:o=>I(s)},"归位",8,$t)]))),128))])])):A("",!0)])):(i(),l("div",Z," 暂无应用,先「添加应用」 ")),e("dialog",{ref_key:"appDlg",ref:y,class:"modal"},[e("div",Vt,[e("h3",Ut,d(M.value?"编辑应用":"添加应用"),1),t[19]||(t[19]=e("p",{class:"text-xs text-slate-400 mt-1"}," 应用名是关联键:部署、账号作用域、第三方服务配置都按它挂载,改名会断开已有关联。 ",-1)),e("form",{class:"mt-4 space-y-3",onSubmit:g(q,["prevent"])},[e("div",Mt,[t[14]||(t[14]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"应用名 *")],-1)),m(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>n.name=s),type:"text",class:"input input-bordered input-sm w-full",required:"",placeholder:"如 Voitrans"},null,512),[[N,n.name]])]),e("div",At,[t[15]||(t[15]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"默认镜像名")],-1)),m(e("input",{"onUpdate:modelValue":t[3]||(t[3]=s=>n.image_name=s),type:"text",class:"input input-bordered input-sm w-full font-mono text-xs",placeholder:"voitrans-a11(新建部署时预填)"},null,512),[[N,n.image_name]])]),e("div",Nt,[t[16]||(t[16]=e("label",{class:"label py-1"},[e("span",{class:"label-text text-sm font-medium"},"备注")],-1)),m(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>n.remark=s),type:"text",class:"input input-bordered input-sm w-full"},null,512),[[N,n.remark]])]),e("label",zt,[m(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>n.enabled=s),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[O,n.enabled]]),t[17]||(t[17]=e("span",{class:"text-sm"},"启用",-1))]),e("div",St,[e("button",{type:"button",class:"btn btn-ghost btn-sm",onClick:t[6]||(t[6]=s=>y.value?.close())},"取消"),t[18]||(t[18]=e("button",{type:"submit",class:"btn btn-primary btn-sm text-white"},"保存",-1))])],32)]),t[20]||(t[20]=e("form",{method:"dialog",class:"modal-backdrop"},[e("button",null,"close")],-1))],512)]))}}),qt=J(Bt,[["__scopeId","data-v-6c9af955"]]);export{qt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/swrhJgBy.js b/apps/admin/.output/public/_nuxt/CyIH3Sn4.js similarity index 99% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/swrhJgBy.js rename to apps/admin/.output/public/_nuxt/CyIH3Sn4.js index 2c0b0e86..f377f534 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/swrhJgBy.js +++ b/apps/admin/.output/public/_nuxt/CyIH3Sn4.js @@ -1,4 +1,4 @@ -import{g as Ne,j as Ie,B as Be,c as d,a as e,n as z,l as y,p as r,q,F as T,r as Y,H as J,d as v,v as f,L as ae,s as zt,t as n,m as wt,z as h,x as a,y as je,o as u}from"./CCjf5Io-.js";import{u as Te}from"./C-6Qe-lq.js";import{u as Pe}from"./DTVGNZEd.js";import"./42htcooJ.js";const Le={class:"space-y-5"},$e={class:"flex items-center justify-between flex-wrap gap-3"},Fe={class:"tabs tabs-boxed bg-slate-100 inline-flex"},Oe={key:0,class:"flex items-end gap-2 flex-wrap"},Ee=["value"],ze=["value"],qe={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Re={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},He={class:"flex items-end gap-2 flex-wrap"},Ge={class:"form-control"},Xe={class:"form-control"},Ye={class:"form-control"},Je={class:"form-control"},Ke={class:"form-control"},Qe={class:"form-control"},We={class:"form-control"},Ze={class:"form-control"},ts=["disabled"],es=["disabled"],ss=["disabled"],ls=["disabled"],os={class:"overflow-x-auto"},ns={class:"w-8"},as={key:0},is={key:1},ds={colspan:"8",class:"text-center text-red-400 py-8"},us={key:2},rs=["value"],cs={class:"font-mono text-xs"},vs={class:"font-mono text-xs"},bs={class:"font-mono text-xs"},ps={class:"text-xs"},ms={class:"text-xs text-slate-500"},xs={class:"flex gap-1"},fs=["onClick"],gs=["onClick"],ys=["onClick"],hs={class:"flex items-center justify-between px-5 py-3 border-t border-slate-100"},ws={class:"text-xs text-slate-500"},ks={class:"flex items-center gap-2"},Cs=["disabled"],_s={class:"text-xs text-slate-500"},Ss=["disabled"],Ms={class:"grid grid-cols-3 gap-4 mb-5"},Ds={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Us={class:"text-2xl font-bold text-slate-800"},Vs={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},As={class:"text-2xl font-bold text-indigo-600"},Ns={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Is={class:"text-base font-semibold text-slate-700"},Bs={class:"bg-white rounded-xl shadow-sm border border-slate-100"},js={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},Ts={class:"flex items-end gap-2 flex-wrap"},Ps={class:"form-control"},Ls={class:"form-control"},$s={class:"text-xs text-slate-400"},Fs={class:"overflow-x-auto",style:{"max-height":"480px"}},Os={class:"table table-pin-rows text-sm"},Es={key:0},zs={key:1},qs={colspan:"9",class:"text-center text-red-400 py-8"},Rs={key:2},Hs=["onClick"],Gs={class:"text-xs text-slate-500 whitespace-nowrap"},Xs={class:"text-xs"},Ys={class:"text-xs"},Js={class:"font-mono text-xs font-medium text-indigo-600"},Ks={class:"font-mono text-xs"},Qs={class:"font-mono text-xs"},Ws={class:"font-mono text-xs"},Zs={class:"text-right font-medium"},tl={class:"flex gap-1"},el=["onClick"],sl=["onClick"],ll={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-8 max-w-3xl"},ol={class:"modal-box max-w-2xl"},nl={class:"grid grid-cols-2 gap-4 mb-4"},al={class:"form-control"},il=["value"],dl={class:"form-control"},ul=["disabled"],rl={value:0},cl=["value"],vl={class:"tabs tabs-boxed mb-4 bg-slate-100 inline-flex"},bl={class:"grid grid-cols-2 gap-4 mb-1"},pl={class:"form-control"},ml=["required"],xl={class:"form-control"},fl={class:"form-control mb-2"},gl={class:"form-control mb-1"},yl={key:0,class:"rounded-lg bg-indigo-50 border border-indigo-100 px-4 py-3 text-sm text-slate-700 mt-3 mb-3"},hl={class:"flex flex-wrap gap-x-6 gap-y-1"},wl={key:0},kl={class:"text-indigo-600"},Cl={key:1},_l={class:"text-indigo-600"},Sl={class:"form-control mb-4"},Ml={class:"modal-action"},Dl=["disabled"],Ul={key:0,class:"loading loading-spinner loading-xs"},Vl={class:"modal-box max-w-lg"},Al={key:0,class:"rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 font-mono text-sm leading-7 mb-4"},Nl={class:"text-indigo-600"},Il={class:"text-indigo-600"},Bl={key:0},jl={class:"modal-action"},Tl=["disabled"],Pl={key:0,class:"loading loading-spinner loading-xs"},Ll={class:"modal-box w-11/12 max-w-2xl"},$l={class:"grid grid-cols-2 gap-4 mb-3"},Fl={class:"form-control"},Ol={class:"form-control"},El={class:"form-control mb-3"},zl={class:"form-control mb-3"},ql={class:"form-control mb-4"},Rl={class:"text-sm text-slate-500"},Hl={class:"modal-action"},Gl=["disabled"],Xl={key:0,class:"loading loading-spinner loading-xs"},Yl={class:"modal-box max-w-md"},Jl={class:"text-sm space-y-1 mb-4"},Kl={class:"font-medium"},Ql={class:"font-medium"},Wl={class:"font-mono font-medium text-red-600"},Zl={class:"font-medium"},to={class:"form-control mb-2"},eo={class:"label"},so={class:"label-text text-xs"},lo={class:"font-mono text-red-600"},oo={class:"text-xs text-red-500 min-h-[1em] mb-2"},no={class:"modal-action"},ao=["disabled"],io={key:0,class:"loading loading-spinner loading-xs"},po=Ne({__name:"device",setup(uo){const{webApi:C}=Te(),{success:M,error:D,warn:N}=Pe(),U=Ie(),ie=h(()=>U.identity===1),de=h(()=>U.identity>0&&U.identity<=2),k=a("codes");function kt(l){k.value=l}const I=a([]),P=a([]),B=a([]),_=a([]),w=a([]),K=a(0),V=a(0),st=a(200),j=a(0),m=a(0),lt=a(""),ot=a(""),Ct=a("-"),_t=a("-"),St=a("-"),Mt=a(""),Dt=a(!1),nt=a(""),at=a("0"),Ut=a("createtime"),it=a(""),Vt=a(""),At=a(""),Nt=a(""),Q=a("200"),It=a(null),W=a(""),dt=a(!1),L=a([]),qt=h(()=>L.value.length),Rt=a(null),Bt=a(null),jt=a(null),S=a("production"),$=a(0),F=a(0),ut=a(!1),R=a(null),H=a(""),rt=a(""),ct=a(!1),vt=a(!1),b=a(null),Z=a(null),O=a(""),bt=a(null),pt=a(!1),p=je({to:"",cc:"",subject:"",content:""}),Tt=a(null),g=a(null),mt=a(""),xt=a(""),ft=a(!1),Pt=h(()=>g.value?g.value.batchno:""),ue=h(()=>!!g.value&&mt.value.trim()===Pt.value),Ht=h(()=>Math.max(1,Math.ceil(K.value/st.value))),re=h(()=>m.value?"第 "+(V.value+1)+" / "+Ht.value+" 页":"-"),Gt=h(()=>j.value?P.value.filter(l=>l.brandid===j.value):P.value),Xt=h(()=>$.value?P.value.filter(l=>l.brandid===$.value):[]),G=h(()=>{const l=B.value.find(s=>s.id===F.value),t=l?.devicecodecount&&l.devicecodecount>0?l.devicecodecount:1;return{isClassicBT:l?.devicetype===1,codeCount:t}}),ce=h(()=>(Number(R.value)||0)*G.value.codeCount),ve=h(()=>H.value.split(",").map(l=>l.trim()).filter(Boolean).length),be=h(()=>{if(!b.value)return"N/A";const l=I.value.find(t=>t.id===b.value.brandid);return l&&l.providerid!=null?Number(l.providerid).toString(16).padStart(4,"0").toUpperCase():"N/A"});function gt(l){if(!l)return"-";const t=new Date(l*1e3);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")}function Yt(l,t){if(!l)return 0;const s=new Date(l+(t?"T23:59:59":"T00:00:00"));return Math.floor(s.getTime()/1e3)}function Lt(l){const t=I.value.find(s=>s.id===l);return t?t.brand:String(l||"")}function $t(l){const t=B.value.find(s=>s.id===l);return t?t.devicename:String(l||"")}function yt(l){return l?Number(l).toString(16).toUpperCase():""}function Jt(l){const t=l.serialstart!=null&&l.serialstart!==""?String(l.serialstart):"",s=l.serialend!=null&&l.serialend!==""?String(l.serialend):"";return!t&&!s?"-":t+" - "+s}function Ft(l){return l.disabled!==0?{label:"已禁用",dot:"bg-red-500",text:"text-red-600"}:l.status===1?{label:"已激活",dot:"bg-emerald-500",text:"text-emerald-600"}:l.status===2?{label:"已过期",dot:"bg-amber-500",text:"text-amber-600"}:{label:"未使用",dot:"bg-slate-300",text:"text-slate-500"}}async function pe(){try{const[t,s]=await Promise.all([C("getbrands",{}),C("getproducts",{})]);I.value=t?.brands??[],B.value=s?.products??[]}catch(t){D(t?.message??"加载基础数据失败"),I.value=[],B.value=[]}const l=U.products.map(t=>parseInt(t)).filter(t=>!isNaN(t)&&t>0);U.identity!==1&&l.length>0?P.value=B.value.filter(t=>l.indexOf(t.id)>=0):P.value=B.value.slice(),P.value.length>0&&(m.value=P.value[0].id),X()}function me(){m.value&&!Gt.value.find(l=>l.id===m.value)&&(m.value=0),X()}function xe(){V.value=0,X()}function Kt(){let l;if(Q.value==="custom"){if(l=Number(It.value),!l||l<1)return}else l=parseInt(Q.value);l>2e3&&(l=2e3),st.value=l,E(!0)}function X(){Ot(),E(!0)}async function Ot(){Dt.value=!0,nt.value="";const l=!!(lt.value||ot.value),t={limit:l?500:10};j.value&&(t.brandid=j.value),m.value&&(t.productid=m.value);const s=Yt(lt.value,!1);s&&(t.start=s);const o=Yt(ot.value,!0);o&&(t.end=o);try{const i=await C("getproductionbatches",t);_.value=i?.notes??[],Ct.value=i?.total_batch??0,_t.value=i?.total_devices??0,St.value=_.value.length?gt(_.value[0].ts):"-",Mt.value=l?"共 "+_.value.length+" 条":"最近 "+_.value.length+" 条"}catch(i){nt.value=i?.message??"",_.value=[],Ct.value="0",_t.value="0",St.value="-",Mt.value=""}finally{Dt.value=!1}}function fe(l,t,s,o){g.value={brandid:l,productid:t,batchno:s,devicenum:o},mt.value="",xt.value="",Tt.value?.showModal()}function Qt(){Tt.value?.close(),g.value=null}async function ge(){if(g.value){ft.value=!0,xt.value="";try{const l=await C("revokeproductionbatch",{productid:g.value.productid,batchno:g.value.batchno});Qt(),M("已撤销批次,删除 "+(l?.deleted??0)+" 个授权码"),X()}catch(l){xt.value=l?.message??"撤销失败"}finally{ft.value=!1}}}function Wt(l,t){m.value=l,it.value=t,at.value="0",V.value=0,k.value="codes",E(!0),setTimeout(()=>{Rt.value?.scrollIntoView({behavior:"smooth",block:"start"})},100)}function Zt(){const l={productid:m.value,sortby:Ut.value,order:"desc"},t=parseInt(at.value);isNaN(t)||(l.status=t),j.value&&(l.brandid=j.value);const s=it.value.trim();s&&(l.batchno=s);const o=Vt.value.trim();o&&(l.code=o);const i=At.value.trim();i&&(l.devicemac=i);const x=Nt.value.trim();return x&&(l.uid=x),l}async function E(l){if(l&&(V.value=0),L.value=[],dt.value=!1,!m.value){w.value=[],K.value=0,W.value="";return}const t=Object.assign(Zt(),{limit:st.value,offset:V.value*st.value});try{const s=await C("getauthcodes",t);w.value=s?.devices??[],K.value=s?.total??0,W.value=""}catch(s){W.value=s?.message??"",w.value=[],K.value=0}}function te(l){V.value=Math.max(0,V.value+l),E(!1)}async function ye(l){if(window.confirm("确定重置该设备授权状态?"))try{await C("resetlicensestatus",{licenses:l}),M("重置成功"),E(!1),Ot()}catch(t){D(t?.message??"失败")}}function he(){dt.value?L.value=w.value.map(l=>l.code||""):L.value=[]}async function ht(l,t){if(!m.value){N("请先选择产品");return}const s=t??L.value.slice();if(!s.length){N("请先勾选授权码");return}const o=l===-1?"禁用":"恢复";if(window.confirm("确定"+o+" "+s.length+" 个授权码?"+(l===-1?` +import{g as Ne,j as Ie,B as Be,c as d,a as e,n as z,l as y,p as r,q,F as T,r as Y,H as J,d as v,v as f,N as ae,s as zt,t as n,m as wt,z as h,x as a,y as je,o as u}from"./Dv-LAQo6.js";import{u as Te}from"./mz7Huk5H.js";import{u as Pe}from"./D7SVvy69.js";import"./D0vUT4uH.js";const Le={class:"space-y-5"},$e={class:"flex items-center justify-between flex-wrap gap-3"},Fe={class:"tabs tabs-boxed bg-slate-100 inline-flex"},Oe={key:0,class:"flex items-end gap-2 flex-wrap"},Ee=["value"],ze=["value"],qe={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Re={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},He={class:"flex items-end gap-2 flex-wrap"},Ge={class:"form-control"},Xe={class:"form-control"},Ye={class:"form-control"},Je={class:"form-control"},Ke={class:"form-control"},Qe={class:"form-control"},We={class:"form-control"},Ze={class:"form-control"},ts=["disabled"],es=["disabled"],ss=["disabled"],ls=["disabled"],os={class:"overflow-x-auto"},ns={class:"w-8"},as={key:0},is={key:1},ds={colspan:"8",class:"text-center text-red-400 py-8"},us={key:2},rs=["value"],cs={class:"font-mono text-xs"},vs={class:"font-mono text-xs"},bs={class:"font-mono text-xs"},ps={class:"text-xs"},ms={class:"text-xs text-slate-500"},xs={class:"flex gap-1"},fs=["onClick"],gs=["onClick"],ys=["onClick"],hs={class:"flex items-center justify-between px-5 py-3 border-t border-slate-100"},ws={class:"text-xs text-slate-500"},ks={class:"flex items-center gap-2"},Cs=["disabled"],_s={class:"text-xs text-slate-500"},Ss=["disabled"],Ms={class:"grid grid-cols-3 gap-4 mb-5"},Ds={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Us={class:"text-2xl font-bold text-slate-800"},Vs={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},As={class:"text-2xl font-bold text-indigo-600"},Ns={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-5"},Is={class:"text-base font-semibold text-slate-700"},Bs={class:"bg-white rounded-xl shadow-sm border border-slate-100"},js={class:"flex items-center justify-between px-5 py-3 border-b border-slate-100 flex-wrap gap-2"},Ts={class:"flex items-end gap-2 flex-wrap"},Ps={class:"form-control"},Ls={class:"form-control"},$s={class:"text-xs text-slate-400"},Fs={class:"overflow-x-auto",style:{"max-height":"480px"}},Os={class:"table table-pin-rows text-sm"},Es={key:0},zs={key:1},qs={colspan:"9",class:"text-center text-red-400 py-8"},Rs={key:2},Hs=["onClick"],Gs={class:"text-xs text-slate-500 whitespace-nowrap"},Xs={class:"text-xs"},Ys={class:"text-xs"},Js={class:"font-mono text-xs font-medium text-indigo-600"},Ks={class:"font-mono text-xs"},Qs={class:"font-mono text-xs"},Ws={class:"font-mono text-xs"},Zs={class:"text-right font-medium"},tl={class:"flex gap-1"},el=["onClick"],sl=["onClick"],ll={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-8 max-w-3xl"},ol={class:"modal-box max-w-2xl"},nl={class:"grid grid-cols-2 gap-4 mb-4"},al={class:"form-control"},il=["value"],dl={class:"form-control"},ul=["disabled"],rl={value:0},cl=["value"],vl={class:"tabs tabs-boxed mb-4 bg-slate-100 inline-flex"},bl={class:"grid grid-cols-2 gap-4 mb-1"},pl={class:"form-control"},ml=["required"],xl={class:"form-control"},fl={class:"form-control mb-2"},gl={class:"form-control mb-1"},yl={key:0,class:"rounded-lg bg-indigo-50 border border-indigo-100 px-4 py-3 text-sm text-slate-700 mt-3 mb-3"},hl={class:"flex flex-wrap gap-x-6 gap-y-1"},wl={key:0},kl={class:"text-indigo-600"},Cl={key:1},_l={class:"text-indigo-600"},Sl={class:"form-control mb-4"},Ml={class:"modal-action"},Dl=["disabled"],Ul={key:0,class:"loading loading-spinner loading-xs"},Vl={class:"modal-box max-w-lg"},Al={key:0,class:"rounded-lg border border-slate-200 bg-slate-50 px-4 py-3 font-mono text-sm leading-7 mb-4"},Nl={class:"text-indigo-600"},Il={class:"text-indigo-600"},Bl={key:0},jl={class:"modal-action"},Tl=["disabled"],Pl={key:0,class:"loading loading-spinner loading-xs"},Ll={class:"modal-box w-11/12 max-w-2xl"},$l={class:"grid grid-cols-2 gap-4 mb-3"},Fl={class:"form-control"},Ol={class:"form-control"},El={class:"form-control mb-3"},zl={class:"form-control mb-3"},ql={class:"form-control mb-4"},Rl={class:"text-sm text-slate-500"},Hl={class:"modal-action"},Gl=["disabled"],Xl={key:0,class:"loading loading-spinner loading-xs"},Yl={class:"modal-box max-w-md"},Jl={class:"text-sm space-y-1 mb-4"},Kl={class:"font-medium"},Ql={class:"font-medium"},Wl={class:"font-mono font-medium text-red-600"},Zl={class:"font-medium"},to={class:"form-control mb-2"},eo={class:"label"},so={class:"label-text text-xs"},lo={class:"font-mono text-red-600"},oo={class:"text-xs text-red-500 min-h-[1em] mb-2"},no={class:"modal-action"},ao=["disabled"],io={key:0,class:"loading loading-spinner loading-xs"},po=Ne({__name:"device",setup(uo){const{webApi:C}=Te(),{success:M,error:D,warn:N}=Pe(),U=Ie(),ie=h(()=>U.identity===1),de=h(()=>U.identity>0&&U.identity<=2),k=a("codes");function kt(l){k.value=l}const I=a([]),P=a([]),B=a([]),_=a([]),w=a([]),K=a(0),V=a(0),st=a(200),j=a(0),m=a(0),lt=a(""),ot=a(""),Ct=a("-"),_t=a("-"),St=a("-"),Mt=a(""),Dt=a(!1),nt=a(""),at=a("0"),Ut=a("createtime"),it=a(""),Vt=a(""),At=a(""),Nt=a(""),Q=a("200"),It=a(null),W=a(""),dt=a(!1),L=a([]),qt=h(()=>L.value.length),Rt=a(null),Bt=a(null),jt=a(null),S=a("production"),$=a(0),F=a(0),ut=a(!1),R=a(null),H=a(""),rt=a(""),ct=a(!1),vt=a(!1),b=a(null),Z=a(null),O=a(""),bt=a(null),pt=a(!1),p=je({to:"",cc:"",subject:"",content:""}),Tt=a(null),g=a(null),mt=a(""),xt=a(""),ft=a(!1),Pt=h(()=>g.value?g.value.batchno:""),ue=h(()=>!!g.value&&mt.value.trim()===Pt.value),Ht=h(()=>Math.max(1,Math.ceil(K.value/st.value))),re=h(()=>m.value?"第 "+(V.value+1)+" / "+Ht.value+" 页":"-"),Gt=h(()=>j.value?P.value.filter(l=>l.brandid===j.value):P.value),Xt=h(()=>$.value?P.value.filter(l=>l.brandid===$.value):[]),G=h(()=>{const l=B.value.find(s=>s.id===F.value),t=l?.devicecodecount&&l.devicecodecount>0?l.devicecodecount:1;return{isClassicBT:l?.devicetype===1,codeCount:t}}),ce=h(()=>(Number(R.value)||0)*G.value.codeCount),ve=h(()=>H.value.split(",").map(l=>l.trim()).filter(Boolean).length),be=h(()=>{if(!b.value)return"N/A";const l=I.value.find(t=>t.id===b.value.brandid);return l&&l.providerid!=null?Number(l.providerid).toString(16).padStart(4,"0").toUpperCase():"N/A"});function gt(l){if(!l)return"-";const t=new Date(l*1e3);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+" "+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")}function Yt(l,t){if(!l)return 0;const s=new Date(l+(t?"T23:59:59":"T00:00:00"));return Math.floor(s.getTime()/1e3)}function Lt(l){const t=I.value.find(s=>s.id===l);return t?t.brand:String(l||"")}function $t(l){const t=B.value.find(s=>s.id===l);return t?t.devicename:String(l||"")}function yt(l){return l?Number(l).toString(16).toUpperCase():""}function Jt(l){const t=l.serialstart!=null&&l.serialstart!==""?String(l.serialstart):"",s=l.serialend!=null&&l.serialend!==""?String(l.serialend):"";return!t&&!s?"-":t+" - "+s}function Ft(l){return l.disabled!==0?{label:"已禁用",dot:"bg-red-500",text:"text-red-600"}:l.status===1?{label:"已激活",dot:"bg-emerald-500",text:"text-emerald-600"}:l.status===2?{label:"已过期",dot:"bg-amber-500",text:"text-amber-600"}:{label:"未使用",dot:"bg-slate-300",text:"text-slate-500"}}async function pe(){try{const[t,s]=await Promise.all([C("getbrands",{}),C("getproducts",{})]);I.value=t?.brands??[],B.value=s?.products??[]}catch(t){D(t?.message??"加载基础数据失败"),I.value=[],B.value=[]}const l=U.products.map(t=>parseInt(t)).filter(t=>!isNaN(t)&&t>0);U.identity!==1&&l.length>0?P.value=B.value.filter(t=>l.indexOf(t.id)>=0):P.value=B.value.slice(),P.value.length>0&&(m.value=P.value[0].id),X()}function me(){m.value&&!Gt.value.find(l=>l.id===m.value)&&(m.value=0),X()}function xe(){V.value=0,X()}function Kt(){let l;if(Q.value==="custom"){if(l=Number(It.value),!l||l<1)return}else l=parseInt(Q.value);l>2e3&&(l=2e3),st.value=l,E(!0)}function X(){Ot(),E(!0)}async function Ot(){Dt.value=!0,nt.value="";const l=!!(lt.value||ot.value),t={limit:l?500:10};j.value&&(t.brandid=j.value),m.value&&(t.productid=m.value);const s=Yt(lt.value,!1);s&&(t.start=s);const o=Yt(ot.value,!0);o&&(t.end=o);try{const i=await C("getproductionbatches",t);_.value=i?.notes??[],Ct.value=i?.total_batch??0,_t.value=i?.total_devices??0,St.value=_.value.length?gt(_.value[0].ts):"-",Mt.value=l?"共 "+_.value.length+" 条":"最近 "+_.value.length+" 条"}catch(i){nt.value=i?.message??"",_.value=[],Ct.value="0",_t.value="0",St.value="-",Mt.value=""}finally{Dt.value=!1}}function fe(l,t,s,o){g.value={brandid:l,productid:t,batchno:s,devicenum:o},mt.value="",xt.value="",Tt.value?.showModal()}function Qt(){Tt.value?.close(),g.value=null}async function ge(){if(g.value){ft.value=!0,xt.value="";try{const l=await C("revokeproductionbatch",{productid:g.value.productid,batchno:g.value.batchno});Qt(),M("已撤销批次,删除 "+(l?.deleted??0)+" 个授权码"),X()}catch(l){xt.value=l?.message??"撤销失败"}finally{ft.value=!1}}}function Wt(l,t){m.value=l,it.value=t,at.value="0",V.value=0,k.value="codes",E(!0),setTimeout(()=>{Rt.value?.scrollIntoView({behavior:"smooth",block:"start"})},100)}function Zt(){const l={productid:m.value,sortby:Ut.value,order:"desc"},t=parseInt(at.value);isNaN(t)||(l.status=t),j.value&&(l.brandid=j.value);const s=it.value.trim();s&&(l.batchno=s);const o=Vt.value.trim();o&&(l.code=o);const i=At.value.trim();i&&(l.devicemac=i);const x=Nt.value.trim();return x&&(l.uid=x),l}async function E(l){if(l&&(V.value=0),L.value=[],dt.value=!1,!m.value){w.value=[],K.value=0,W.value="";return}const t=Object.assign(Zt(),{limit:st.value,offset:V.value*st.value});try{const s=await C("getauthcodes",t);w.value=s?.devices??[],K.value=s?.total??0,W.value=""}catch(s){W.value=s?.message??"",w.value=[],K.value=0}}function te(l){V.value=Math.max(0,V.value+l),E(!1)}async function ye(l){if(window.confirm("确定重置该设备授权状态?"))try{await C("resetlicensestatus",{licenses:l}),M("重置成功"),E(!1),Ot()}catch(t){D(t?.message??"失败")}}function he(){dt.value?L.value=w.value.map(l=>l.code||""):L.value=[]}async function ht(l,t){if(!m.value){N("请先选择产品");return}const s=t??L.value.slice();if(!s.length){N("请先勾选授权码");return}const o=l===-1?"禁用":"恢复";if(window.confirm("确定"+o+" "+s.length+" 个授权码?"+(l===-1?` 禁用后该授权码将无法绑定。`:"")))try{const i=await C("disableauthcodes",{productid:m.value,codes:s,disabled:l});M(o+"成功("+(i?.affected??0)+" 条)"),E(!1)}catch(i){D(i?.message??o+"失败")}}function we(){$.value=0,F.value=0,ut.value=!1,R.value=null,H.value="",rt.value="",S.value="production",b.value=null,Bt.value?.showModal()}function ee(){Bt.value?.close()}function se(){jt.value?.close()}function ke(){F.value=0}function Ce(l){const s=l.target.files?.[0];if(!s)return;const o=new FileReader;o.onload=i=>{const x=String(i.target?.result??"").split(` `),c=[];x.forEach(A=>{const tt=A.split(",");tt[0]&&tt[0].trim()&&c.push(tt[0].trim())}),H.value=c.join(", "),M("读取 "+c.length+" 个 MAC 地址")},o.readAsText(s,"UTF-8")}function le(){const l=Number($.value),t=Number(F.value);if(!l||!t)return N("请选择品牌商和产品"),null;const s={brandid:l,productid:t,remark:rt.value.trim()};if(S.value==="production"){if(s.createtype=1,s.number=Number(R.value),s.isbindmac=ut.value,!s.number||s.number<1)return N("请输入有效数量"),null}else{s.createtype=2;const o=H.value.trim();if(!o)return N("请输入或上传 MAC 地址"),null;s.macaddresses=o}return s}async function _e(){const l=le();if(l){vt.value=!0;try{const t=await C("previewauthcodes",l);if(b.value=t??null,!b.value){D("预检失败");return}jt.value?.showModal()}catch(t){D(t?.message??"预检失败")}finally{vt.value=!1}}}async function Se(){const l=le();if(!l)return;const t=l.brandid,s=l.productid;b.value?.batchno&&(l.batchno=b.value.batchno),ct.value=!0;try{const o=await C("createauthcodes",l),x=(o?.devices??[]).map(c=>typeof c=="string"?{code:c,brandid:o?.brandid??t,productid:o?.productid??s}:{...c,brandid:c.brandid??o?.brandid??t,productid:c.productid??o?.productid??s});se(),ee(),x.length>0?(M("成功生成 "+x.length+" 个授权码,批次 "+(o?.batchno||"")),Et(x),Ue(o??{},t,s)):(M("创建成功"),k.value="batches",X())}catch(o){D(o?.message??"创建失败")}finally{ct.value=!1}}function Et(l){const t=l.some(c=>c.devicemac),s=t?["License","Mac地址"]:["License"],o=l.map(c=>t?[c.code||"",c.devicemac||""]:[c.code||""]),i=[s.join(",")].concat(o.map(c=>c.join(","))).join(` `);Z.value=new Blob([i],{type:"text/csv;charset=utf-8;"});const x=l[0];O.value="设备生产_"+(x.brandid||"unknown")+"_"+(x.productid||"unknown")+"_"+new Date().toISOString().split("T")[0]+".csv"}async function Me(){if(!m.value){N("请先选择产品");return}try{const l=Zt(),t=2e3;let s=[],o=0,i=1/0;for(;s.length[gt(i.ts),Lt(i.brandid),$t(i.productid),i.batchno||"",Jt(i),i.startmac||"",i.endmac||"",i.devicenum||0]),s=[l.join(",")].concat(t.map(i=>i.join(","))).join(` diff --git a/apps/admin/.output/public/_nuxt/C8IUv0mA.js b/apps/admin/.output/public/_nuxt/CzRv6c7P.js similarity index 98% rename from apps/admin/.output/public/_nuxt/C8IUv0mA.js rename to apps/admin/.output/public/_nuxt/CzRv6c7P.js index ef2842b0..e7e179fc 100644 --- a/apps/admin/.output/public/_nuxt/C8IUv0mA.js +++ b/apps/admin/.output/public/_nuxt/CzRv6c7P.js @@ -1 +1 @@ -import{g as at,E as it,B as dt,c as l,p as r,H as C,a as s,l as L,F as v,r as g,t as u,v as _,q as K,G as B,J as G,K as ut,M as rt,d as m,x as b,y as R,o,n as pt,s as j,_ as ct}from"./CCjf5Io-.js";import{u as mt}from"./C-6Qe-lq.js";import{u as bt}from"./DTVGNZEd.js";import"./42htcooJ.js";const xt={class:"flex items-center justify-between mb-4"},vt={class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},ft={class:"table table-sm"},yt={key:0},gt={key:1},kt={class:"font-mono"},wt={class:"font-medium"},_t={key:0,class:"text-green-600 text-xs"},ht={key:1,class:"text-slate-400 text-xs"},Ct={key:0,class:"text-xs text-slate-500"},St={key:1,class:"text-xs text-slate-300"},Vt={key:0,class:"text-xs text-slate-500"},Ut={key:1,class:"text-xs text-slate-300"},Et={key:2,class:"text-xs text-slate-300"},It={key:3,class:"text-[11px] text-emerald-600 mt-0.5"},$t={class:"text-xs text-slate-500"},Mt={class:"flex gap-1 justify-end"},Nt=["onClick"],At=["onClick"],Lt=["onClick"],jt=["onClick"],Dt={class:"flex items-center gap-3 mb-5"},Pt={class:"text-lg font-semibold text-slate-800"},Tt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Ot={class:"grid grid-cols-2 gap-3"},Bt=["disabled"],Gt={class:"col-span-2"},Rt={class:"mt-4 border-t border-slate-100 pt-4"},Ft={class:"flex items-center justify-between mb-1"},qt={class:"flex gap-1"},zt={class:"text-xs text-slate-500 mb-1.5"},Ht={key:0,class:"text-amber-500 ml-1"},Jt={class:"flex flex-wrap gap-2"},Kt=["value"],Qt={class:"mt-4 border-t border-slate-100 pt-4"},Wt={class:"mb-3"},Xt={class:"flex flex-wrap gap-2"},Yt=["value"],Zt={key:1,class:"text-xs text-slate-300"},ts={class:"mb-3"},ss={class:"flex flex-wrap gap-2"},es=["value"],ns={class:"max-h-56 overflow-y-auto pr-1 border border-slate-100 rounded-lg p-2"},ls={key:0,class:"text-xs text-slate-300"},os={key:1,class:"text-xs text-slate-300"},as={class:"text-[11px] font-semibold text-slate-500 mb-1 sticky top-0 bg-white py-0.5"},is={class:"flex flex-wrap gap-2"},ds=["value"],us={class:"flex gap-3 justify-end mt-6"},rs=["disabled"],ps={class:"modal-box max-w-md"},cs={class:"text-xs text-slate-400 mb-3"},ms={class:"font-medium text-slate-600"},bs={class:"text-emerald-600"},xs={class:"grid grid-cols-3 gap-3"},vs={class:"modal-action"},fs=at({__name:"accounts",setup(ys){const{webApi:F,consoleApi:f}=mt(),{success:S,error:k,warn:Q}=bt(),W={1:"超管",2:"管理员",3:"代理",4:"运营"},X={1:"badge-error",2:"badge-primary",3:"badge-warning",4:"badge-info"},Y=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],V=b("list"),U=b([]),E=b([]),D=b(!1),I=b(!1),y=b(0),a=R({username:"",password:"",identity:2,enabled:"1",remark:""}),i=R({access:[],apps:[],regions:[],products:[]}),h=b([]),P=b(!1);function x(n){return(n||"").split(",").map(t=>t.trim()).filter(t=>t)}function $(n){return n.join(",")}function q(n){const t=[];return n.apps&&t.push("应用:"+x(n.apps).length),n.regions&&t.push("区域:"+x(n.regions).length),n.products&&t.push("产品:"+x(n.products).length),n.access&&t.push("页面:"+x(n.access).length),t}async function M(){D.value=!0;try{try{E.value=await f("apps/list",{})??[]}catch{E.value=[]}const n=await f("accounts/list",{});U.value=n??[]}catch(n){k(n?.message??"获取账号列表失败"),U.value=[]}finally{D.value=!1}}async function Z(){P.value=!0,h.value=[];try{const[n,t]=await Promise.all([F("getbrands",{}),F("getproducts",{})]),e=n?.brands??[],d=t?.products??[],w={};e.forEach(c=>{w[c.id]=c.brand||"品牌商#"+c.id});const N={};d.forEach(c=>{const A=String(c.brandid||0);(N[A]=N[A]||[]).push(c)});const ot=Object.keys(N).sort((c,A)=>(parseInt(c)||0)-(parseInt(A)||0));h.value=ot.map(c=>({fid:c,label:w[c]||(parseInt(c)?"品牌商#"+c:"未分组"),products:N[c]??[]}))}catch{h.value=[]}finally{P.value=!1}}function z(n){y.value=n?n.id:0,a.username=n&&n.username||"",a.password="",a.identity=n?n.identity:2,a.enabled=n&&!n.enabled?"0":"1",a.remark=n&&n.remark||"",i.access=x(n?.access),a.identity===2&&!i.access.length&&(i.access=G.slice()),i.apps=x(n?.apps),i.regions=x(n?.regions),i.products=x(n?.products),Z(),V.value="form"}it(()=>a.identity,n=>{n===2&&i.access.length===0&&(i.access=G.slice())});function T(){V.value="list",M()}async function tt(){const n=a.identity,t={identity:n,enabled:a.enabled==="1",remark:a.remark.trim(),access:"",apps:"",regions:"",products:""};n!==1&&(t.access=$(i.access)),(n===3||n===4)&&(t.apps=$(i.apps),t.regions=$(i.regions),t.products=$(i.products)),I.value=!0;try{if(y.value)t.id=y.value,await f("accounts/update",t);else{if(t.username=a.username.trim(),t.password=a.password,!t.username||!t.password){k("用户名和密码必填"),I.value=!1;return}await f("accounts/add",t)}S("已保存"),T()}catch(e){k(e?.message??"保存失败")}finally{I.value=!1}}async function st(n,t){const e=window.prompt("为账号【"+t+"】设置新密码:");if(e)try{await f("accounts/resetpwd",{id:n,password:e}),S("密码已重置")}catch(d){k(d?.message??"失败")}}function et(n,t){window.confirm("确认删除账号【"+t+"】?该操作不可恢复。")&&f("accounts/del",{id:n}).then(()=>{S("已删除"),M()}).catch(e=>k(e?.message??"失败"))}const O=b(null),H=b(0),p=R({name:"",cur:"",vipday:0,trademin:0,meetmin:0});function nt(n){H.value=n.id,p.name=n.username||"#"+n.id,p.cur="VIP"+(n.balance_vipday||0)+"天 · 翻译"+(n.balance_trademin||0)+"分 · 会议"+(n.balance_meetmin||0)+"分",p.vipday=0,p.trademin=0,p.meetmin=0,O.value?.showModal()}function J(){O.value?.close()}async function lt(){const n=Number(p.vipday)||0,t=Number(p.trademin)||0,e=Number(p.meetmin)||0;if(!n&&!t&&!e){Q("请至少填写一项");return}try{await f("accounts/topup",{account_id:H.value,vipday:n,trademin:t,meetmin:e}),S("余额已更新"),J(),M()}catch(d){k(d?.message??"操作失败")}}return dt(M),(n,t)=>(o(),l("div",null,[r(s("div",null,[s("div",xt,[t[21]||(t[21]=s("div",null,[s("h2",{class:"text-lg font-bold text-slate-700"},"后台账号"),s("p",{class:"text-xs text-slate-400 mt-0.5"},"超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。")],-1)),s("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=e=>z())},"+ 新建账号")]),s("div",vt,[s("table",ft,[t[24]||(t[24]=s("thead",null,[s("tr",{class:"text-slate-500"},[s("th",null,"ID"),s("th",null,"用户名"),s("th",null,"角色"),s("th",null,"状态"),s("th",null,"绑定作用域"),s("th",null,"备注"),s("th",{class:"text-right"},"操作")])],-1)),s("tbody",null,[D.value?(o(),l("tr",yt,[...t[22]||(t[22]=[s("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"加载中...",-1)])])):U.value.length?L("",!0):(o(),l("tr",gt,[...t[23]||(t[23]=[s("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无账号(引导超管不在此列)",-1)])])),(o(!0),l(v,null,g(U.value,e=>(o(),l("tr",{key:e.id},[s("td",kt,u(e.id),1),s("td",wt,u(e.username||""),1),s("td",null,[s("span",{class:pt(["badge badge-sm",X[e.identity]||""])},u(W[e.identity]||e.identity),3)]),s("td",null,[e.enabled?(o(),l("span",_t,"启用")):(o(),l("span",ht,"停用"))]),s("td",null,[e.identity===3||e.identity===4?(o(),l(v,{key:0},[q(e).length?(o(),l("span",Ct,u(q(e).join(" · ")),1)):(o(),l("span",St,"未绑定(不限)"))],64)):e.identity===2?(o(),l(v,{key:1},[e.access?(o(),l("span",Vt,"菜单:"+u(x(e.access).length),1)):(o(),l("span",Ut,"默认(除SaaS/系统管理)"))],64)):(o(),l("span",Et,"全部权限")),e.identity===3?(o(),l("div",It," 余额 VIP"+u(e.balance_vipday||0)+"天 · 翻译"+u(e.balance_trademin||0)+"分 · 会议"+u(e.balance_meetmin||0)+"分 ",1)):L("",!0)]),s("td",$t,u(e.remark||""),1),s("td",null,[s("div",Mt,[e.identity===3?(o(),l("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:d=>nt(e)},"充值",8,Nt)):L("",!0),s("button",{class:"btn btn-ghost btn-xs",onClick:d=>z(e)},"编辑",8,At),s("button",{class:"btn btn-ghost btn-xs text-amber-600",onClick:d=>st(e.id,e.username)},"改密",8,Lt),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:d=>et(e.id,e.username)},"删除",8,jt)])])]))),128))])])])],512),[[C,V.value==="list"]]),r(s("div",null,[s("div",Dt,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=e=>T())},"← 返回列表"),s("h2",Pt,u(y.value?"编辑账号 #"+y.value:"新建账号"),1)]),s("div",Tt,[s("div",Ot,[s("div",null,[t[25]||(t[25]=s("label",{class:"text-xs text-slate-500"},"用户名",-1)),r(s("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>a.username=e),disabled:!!y.value,class:"input input-bordered input-sm w-full",placeholder:"登录用户名"},null,8,Bt),[[_,a.username]])]),r(s("div",null,[t[26]||(t[26]=s("label",{class:"text-xs text-slate-500"},"密码",-1)),r(s("input",{"onUpdate:modelValue":t[3]||(t[3]=e=>a.password=e),type:"password",class:"input input-bordered input-sm w-full",placeholder:"登录密码"},null,512),[[_,a.password]])],512),[[C,!y.value]]),s("div",null,[t[28]||(t[28]=s("label",{class:"text-xs text-slate-500"},"角色",-1)),r(s("select",{"onUpdate:modelValue":t[4]||(t[4]=e=>a.identity=e),class:"select select-bordered select-sm w-full"},[...t[27]||(t[27]=[s("option",{value:2},"管理员(默认除 SaaS/系统管理外全部)",-1),s("option",{value:3},"代理(外部,按绑定限制)",-1),s("option",{value:4},"运营(内部,按绑定限制)",-1),s("option",{value:1},"超管(全部权限)",-1)])],512),[[K,a.identity,void 0,{number:!0}]])]),s("div",null,[t[30]||(t[30]=s("label",{class:"text-xs text-slate-500"},"状态",-1)),r(s("select",{"onUpdate:modelValue":t[5]||(t[5]=e=>a.enabled=e),class:"select select-bordered select-sm w-full"},[...t[29]||(t[29]=[s("option",{value:"1"},"启用",-1),s("option",{value:"0"},"停用",-1)])],512),[[K,a.enabled]])]),s("div",Gt,[t[31]||(t[31]=s("label",{class:"text-xs text-slate-500"},"备注",-1)),r(s("input",{"onUpdate:modelValue":t[6]||(t[6]=e=>a.remark=e),class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[_,a.remark]])])]),r(s("div",Rt,[s("div",Ft,[t[32]||(t[32]=s("div",{class:"text-sm font-semibold text-slate-600"},"菜单权限",-1)),s("div",qt,[s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[7]||(t[7]=e=>i.access=B(G).slice())},"管理员默认"),s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[8]||(t[8]=e=>i.access=B(ut).slice())},"全选"),s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[9]||(t[9]=e=>i.access=[])},"清空")])]),t[33]||(t[33]=s("p",{class:"text-xs text-slate-400 mb-3"},"管理员默认开放除「SaaS 管理 / 系统管理」以外的全部菜单(权限留空时按默认生效);代理/运营需显式勾选。",-1)),(o(!0),l(v,null,g(B(rt),e=>(o(),l("div",{key:e.label,class:"mb-2.5"},[s("div",zt,[m(u(e.label),1),e.restricted?(o(),l("span",Ht,"(管理员默认不开放)")):L("",!0)]),s("div",Jt,[(o(!0),l(v,null,g(e.items,d=>(o(),l("label",{key:d.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[10]||(t[10]=w=>i.access=w),type:"checkbox",value:d.id},null,8,Kt),[[j,i.access]]),m(u(d.label),1)]))),128))])]))),128))],512),[[C,a.identity!==1]]),r(s("div",Qt,[t[37]||(t[37]=s("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[m("作用域绑定 "),s("span",{class:"text-xs text-slate-400 font-normal"},"(代理/运营生效;限制仪表盘数据范围)")],-1)),s("div",Wt,[t[34]||(t[34]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定应用 "),s("span",{class:"text-slate-300"},"(仪表盘只显示这些应用数据;不勾=不限)")],-1)),s("div",Xt,[E.value.length?(o(!0),l(v,{key:0},g(E.value,e=>(o(),l("label",{key:e.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[11]||(t[11]=d=>i.apps=d),type:"checkbox",value:e.name},null,8,Yt),[[j,i.apps]]),m(u(e.name||"应用#"+e.id),1)]))),128)):(o(),l("span",Zt,"无注册应用"))])]),s("div",ts,[t[35]||(t[35]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定区域 "),s("span",{class:"text-slate-300"},"(不勾=不限)")],-1)),s("div",ss,[(o(),l(v,null,g(Y,e=>s("label",{key:e[0],class:"chk"},[r(s("input",{"onUpdate:modelValue":t[12]||(t[12]=d=>i.regions=d),type:"checkbox",value:e[0]},null,8,es),[[j,i.regions]]),m(u(e[1]),1)])),64))])]),s("div",null,[t[36]||(t[36]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定产品 "),s("span",{class:"text-slate-300"},"(按厂家分组;仪表盘只显示这些产品数据;不勾=不限)")],-1)),s("div",ns,[P.value?(o(),l("span",ls,"加载产品中...")):h.value.length?(o(!0),l(v,{key:2},g(h.value,e=>(o(),l("div",{key:e.fid,class:"mb-2 last:mb-0"},[s("div",as,"🏭 "+u(e.label),1),s("div",is,[(o(!0),l(v,null,g(e.products,d=>(o(),l("label",{key:d.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[13]||(t[13]=w=>i.products=w),type:"checkbox",value:String(d.id)},null,8,ds),[[j,i.products]]),m(u((d.devicename||"产品")+" #"+d.id),1)]))),128))])]))),128)):(o(),l("span",os,"无产品"))])])],512),[[C,a.identity===3||a.identity===4]]),s("div",us,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[14]||(t[14]=e=>T())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:I.value,onClick:t[15]||(t[15]=e=>tt())},"保存",8,rs)])])],512),[[C,V.value==="form"]]),s("dialog",{ref_key:"topupModal",ref:O,class:"modal"},[s("div",ps,[t[43]||(t[43]=s("h3",{class:"font-bold text-lg mb-1"},"充值 / 调整资源点",-1)),s("p",cs,[t[38]||(t[38]=m("代理:",-1)),s("span",ms,u(p.name),1),t[39]||(t[39]=m("。填增量(可填负数下调),当前余额:",-1)),s("span",bs,u(p.cur),1)]),s("div",xs,[s("div",null,[t[40]||(t[40]=s("label",{class:"text-xs text-slate-500"},"VIP天数",-1)),r(s("input",{"onUpdate:modelValue":t[16]||(t[16]=e=>p.vipday=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.vipday,void 0,{number:!0}]])]),s("div",null,[t[41]||(t[41]=s("label",{class:"text-xs text-slate-500"},"翻译分钟",-1)),r(s("input",{"onUpdate:modelValue":t[17]||(t[17]=e=>p.trademin=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.trademin,void 0,{number:!0}]])]),s("div",null,[t[42]||(t[42]=s("label",{class:"text-xs text-slate-500"},"会议分钟",-1)),r(s("input",{"onUpdate:modelValue":t[18]||(t[18]=e=>p.meetmin=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.meetmin,void 0,{number:!0}]])])]),s("div",vs,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[19]||(t[19]=e=>J())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",onClick:t[20]||(t[20]=e=>lt())},"确认")])]),t[44]||(t[44]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512)]))}}),hs=ct(fs,[["__scopeId","data-v-06dca20b"]]);export{hs as default}; +import{g as at,E as it,B as dt,c as l,p as r,H as C,a as s,l as L,F as v,r as g,t as u,v as _,q as K,G as B,J as G,K as ut,M as rt,d as m,x as b,y as R,o,n as pt,s as j,_ as ct}from"./Dv-LAQo6.js";import{u as mt}from"./mz7Huk5H.js";import{u as bt}from"./D7SVvy69.js";import"./D0vUT4uH.js";const xt={class:"flex items-center justify-between mb-4"},vt={class:"bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden"},ft={class:"table table-sm"},yt={key:0},gt={key:1},kt={class:"font-mono"},wt={class:"font-medium"},_t={key:0,class:"text-green-600 text-xs"},ht={key:1,class:"text-slate-400 text-xs"},Ct={key:0,class:"text-xs text-slate-500"},St={key:1,class:"text-xs text-slate-300"},Vt={key:0,class:"text-xs text-slate-500"},Ut={key:1,class:"text-xs text-slate-300"},Et={key:2,class:"text-xs text-slate-300"},It={key:3,class:"text-[11px] text-emerald-600 mt-0.5"},$t={class:"text-xs text-slate-500"},Mt={class:"flex gap-1 justify-end"},Nt=["onClick"],At=["onClick"],Lt=["onClick"],jt=["onClick"],Dt={class:"flex items-center gap-3 mb-5"},Pt={class:"text-lg font-semibold text-slate-800"},Tt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Ot={class:"grid grid-cols-2 gap-3"},Bt=["disabled"],Gt={class:"col-span-2"},Rt={class:"mt-4 border-t border-slate-100 pt-4"},Ft={class:"flex items-center justify-between mb-1"},qt={class:"flex gap-1"},zt={class:"text-xs text-slate-500 mb-1.5"},Ht={key:0,class:"text-amber-500 ml-1"},Jt={class:"flex flex-wrap gap-2"},Kt=["value"],Qt={class:"mt-4 border-t border-slate-100 pt-4"},Wt={class:"mb-3"},Xt={class:"flex flex-wrap gap-2"},Yt=["value"],Zt={key:1,class:"text-xs text-slate-300"},ts={class:"mb-3"},ss={class:"flex flex-wrap gap-2"},es=["value"],ns={class:"max-h-56 overflow-y-auto pr-1 border border-slate-100 rounded-lg p-2"},ls={key:0,class:"text-xs text-slate-300"},os={key:1,class:"text-xs text-slate-300"},as={class:"text-[11px] font-semibold text-slate-500 mb-1 sticky top-0 bg-white py-0.5"},is={class:"flex flex-wrap gap-2"},ds=["value"],us={class:"flex gap-3 justify-end mt-6"},rs=["disabled"],ps={class:"modal-box max-w-md"},cs={class:"text-xs text-slate-400 mb-3"},ms={class:"font-medium text-slate-600"},bs={class:"text-emerald-600"},xs={class:"grid grid-cols-3 gap-3"},vs={class:"modal-action"},fs=at({__name:"accounts",setup(ys){const{webApi:F,consoleApi:f}=mt(),{success:S,error:k,warn:Q}=bt(),W={1:"超管",2:"管理员",3:"代理",4:"运营"},X={1:"badge-error",2:"badge-primary",3:"badge-warning",4:"badge-info"},Y=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],V=b("list"),U=b([]),E=b([]),D=b(!1),I=b(!1),y=b(0),a=R({username:"",password:"",identity:2,enabled:"1",remark:""}),i=R({access:[],apps:[],regions:[],products:[]}),h=b([]),P=b(!1);function x(n){return(n||"").split(",").map(t=>t.trim()).filter(t=>t)}function $(n){return n.join(",")}function q(n){const t=[];return n.apps&&t.push("应用:"+x(n.apps).length),n.regions&&t.push("区域:"+x(n.regions).length),n.products&&t.push("产品:"+x(n.products).length),n.access&&t.push("页面:"+x(n.access).length),t}async function M(){D.value=!0;try{try{E.value=await f("apps/list",{})??[]}catch{E.value=[]}const n=await f("accounts/list",{});U.value=n??[]}catch(n){k(n?.message??"获取账号列表失败"),U.value=[]}finally{D.value=!1}}async function Z(){P.value=!0,h.value=[];try{const[n,t]=await Promise.all([F("getbrands",{}),F("getproducts",{})]),e=n?.brands??[],d=t?.products??[],w={};e.forEach(c=>{w[c.id]=c.brand||"品牌商#"+c.id});const N={};d.forEach(c=>{const A=String(c.brandid||0);(N[A]=N[A]||[]).push(c)});const ot=Object.keys(N).sort((c,A)=>(parseInt(c)||0)-(parseInt(A)||0));h.value=ot.map(c=>({fid:c,label:w[c]||(parseInt(c)?"品牌商#"+c:"未分组"),products:N[c]??[]}))}catch{h.value=[]}finally{P.value=!1}}function z(n){y.value=n?n.id:0,a.username=n&&n.username||"",a.password="",a.identity=n?n.identity:2,a.enabled=n&&!n.enabled?"0":"1",a.remark=n&&n.remark||"",i.access=x(n?.access),a.identity===2&&!i.access.length&&(i.access=G.slice()),i.apps=x(n?.apps),i.regions=x(n?.regions),i.products=x(n?.products),Z(),V.value="form"}it(()=>a.identity,n=>{n===2&&i.access.length===0&&(i.access=G.slice())});function T(){V.value="list",M()}async function tt(){const n=a.identity,t={identity:n,enabled:a.enabled==="1",remark:a.remark.trim(),access:"",apps:"",regions:"",products:""};n!==1&&(t.access=$(i.access)),(n===3||n===4)&&(t.apps=$(i.apps),t.regions=$(i.regions),t.products=$(i.products)),I.value=!0;try{if(y.value)t.id=y.value,await f("accounts/update",t);else{if(t.username=a.username.trim(),t.password=a.password,!t.username||!t.password){k("用户名和密码必填"),I.value=!1;return}await f("accounts/add",t)}S("已保存"),T()}catch(e){k(e?.message??"保存失败")}finally{I.value=!1}}async function st(n,t){const e=window.prompt("为账号【"+t+"】设置新密码:");if(e)try{await f("accounts/resetpwd",{id:n,password:e}),S("密码已重置")}catch(d){k(d?.message??"失败")}}function et(n,t){window.confirm("确认删除账号【"+t+"】?该操作不可恢复。")&&f("accounts/del",{id:n}).then(()=>{S("已删除"),M()}).catch(e=>k(e?.message??"失败"))}const O=b(null),H=b(0),p=R({name:"",cur:"",vipday:0,trademin:0,meetmin:0});function nt(n){H.value=n.id,p.name=n.username||"#"+n.id,p.cur="VIP"+(n.balance_vipday||0)+"天 · 翻译"+(n.balance_trademin||0)+"分 · 会议"+(n.balance_meetmin||0)+"分",p.vipday=0,p.trademin=0,p.meetmin=0,O.value?.showModal()}function J(){O.value?.close()}async function lt(){const n=Number(p.vipday)||0,t=Number(p.trademin)||0,e=Number(p.meetmin)||0;if(!n&&!t&&!e){Q("请至少填写一项");return}try{await f("accounts/topup",{account_id:H.value,vipday:n,trademin:t,meetmin:e}),S("余额已更新"),J(),M()}catch(d){k(d?.message??"操作失败")}}return dt(M),(n,t)=>(o(),l("div",null,[r(s("div",null,[s("div",xt,[t[21]||(t[21]=s("div",null,[s("h2",{class:"text-lg font-bold text-slate-700"},"后台账号"),s("p",{class:"text-xs text-slate-400 mt-0.5"},"超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。")],-1)),s("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=e=>z())},"+ 新建账号")]),s("div",vt,[s("table",ft,[t[24]||(t[24]=s("thead",null,[s("tr",{class:"text-slate-500"},[s("th",null,"ID"),s("th",null,"用户名"),s("th",null,"角色"),s("th",null,"状态"),s("th",null,"绑定作用域"),s("th",null,"备注"),s("th",{class:"text-right"},"操作")])],-1)),s("tbody",null,[D.value?(o(),l("tr",yt,[...t[22]||(t[22]=[s("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"加载中...",-1)])])):U.value.length?L("",!0):(o(),l("tr",gt,[...t[23]||(t[23]=[s("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无账号(引导超管不在此列)",-1)])])),(o(!0),l(v,null,g(U.value,e=>(o(),l("tr",{key:e.id},[s("td",kt,u(e.id),1),s("td",wt,u(e.username||""),1),s("td",null,[s("span",{class:pt(["badge badge-sm",X[e.identity]||""])},u(W[e.identity]||e.identity),3)]),s("td",null,[e.enabled?(o(),l("span",_t,"启用")):(o(),l("span",ht,"停用"))]),s("td",null,[e.identity===3||e.identity===4?(o(),l(v,{key:0},[q(e).length?(o(),l("span",Ct,u(q(e).join(" · ")),1)):(o(),l("span",St,"未绑定(不限)"))],64)):e.identity===2?(o(),l(v,{key:1},[e.access?(o(),l("span",Vt,"菜单:"+u(x(e.access).length),1)):(o(),l("span",Ut,"默认(除SaaS/系统管理)"))],64)):(o(),l("span",Et,"全部权限")),e.identity===3?(o(),l("div",It," 余额 VIP"+u(e.balance_vipday||0)+"天 · 翻译"+u(e.balance_trademin||0)+"分 · 会议"+u(e.balance_meetmin||0)+"分 ",1)):L("",!0)]),s("td",$t,u(e.remark||""),1),s("td",null,[s("div",Mt,[e.identity===3?(o(),l("button",{key:0,class:"btn btn-ghost btn-xs text-emerald-600",onClick:d=>nt(e)},"充值",8,Nt)):L("",!0),s("button",{class:"btn btn-ghost btn-xs",onClick:d=>z(e)},"编辑",8,At),s("button",{class:"btn btn-ghost btn-xs text-amber-600",onClick:d=>st(e.id,e.username)},"改密",8,Lt),s("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:d=>et(e.id,e.username)},"删除",8,jt)])])]))),128))])])])],512),[[C,V.value==="list"]]),r(s("div",null,[s("div",Dt,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[1]||(t[1]=e=>T())},"← 返回列表"),s("h2",Pt,u(y.value?"编辑账号 #"+y.value:"新建账号"),1)]),s("div",Tt,[s("div",Ot,[s("div",null,[t[25]||(t[25]=s("label",{class:"text-xs text-slate-500"},"用户名",-1)),r(s("input",{"onUpdate:modelValue":t[2]||(t[2]=e=>a.username=e),disabled:!!y.value,class:"input input-bordered input-sm w-full",placeholder:"登录用户名"},null,8,Bt),[[_,a.username]])]),r(s("div",null,[t[26]||(t[26]=s("label",{class:"text-xs text-slate-500"},"密码",-1)),r(s("input",{"onUpdate:modelValue":t[3]||(t[3]=e=>a.password=e),type:"password",class:"input input-bordered input-sm w-full",placeholder:"登录密码"},null,512),[[_,a.password]])],512),[[C,!y.value]]),s("div",null,[t[28]||(t[28]=s("label",{class:"text-xs text-slate-500"},"角色",-1)),r(s("select",{"onUpdate:modelValue":t[4]||(t[4]=e=>a.identity=e),class:"select select-bordered select-sm w-full"},[...t[27]||(t[27]=[s("option",{value:2},"管理员(默认除 SaaS/系统管理外全部)",-1),s("option",{value:3},"代理(外部,按绑定限制)",-1),s("option",{value:4},"运营(内部,按绑定限制)",-1),s("option",{value:1},"超管(全部权限)",-1)])],512),[[K,a.identity,void 0,{number:!0}]])]),s("div",null,[t[30]||(t[30]=s("label",{class:"text-xs text-slate-500"},"状态",-1)),r(s("select",{"onUpdate:modelValue":t[5]||(t[5]=e=>a.enabled=e),class:"select select-bordered select-sm w-full"},[...t[29]||(t[29]=[s("option",{value:"1"},"启用",-1),s("option",{value:"0"},"停用",-1)])],512),[[K,a.enabled]])]),s("div",Gt,[t[31]||(t[31]=s("label",{class:"text-xs text-slate-500"},"备注",-1)),r(s("input",{"onUpdate:modelValue":t[6]||(t[6]=e=>a.remark=e),class:"input input-bordered input-sm w-full",placeholder:"可选"},null,512),[[_,a.remark]])])]),r(s("div",Rt,[s("div",Ft,[t[32]||(t[32]=s("div",{class:"text-sm font-semibold text-slate-600"},"菜单权限",-1)),s("div",qt,[s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[7]||(t[7]=e=>i.access=B(G).slice())},"管理员默认"),s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[8]||(t[8]=e=>i.access=B(ut).slice())},"全选"),s("button",{type:"button",class:"btn btn-ghost btn-xs",onClick:t[9]||(t[9]=e=>i.access=[])},"清空")])]),t[33]||(t[33]=s("p",{class:"text-xs text-slate-400 mb-3"},"管理员默认开放除「SaaS 管理 / 系统管理」以外的全部菜单(权限留空时按默认生效);代理/运营需显式勾选。",-1)),(o(!0),l(v,null,g(B(rt),e=>(o(),l("div",{key:e.label,class:"mb-2.5"},[s("div",zt,[m(u(e.label),1),e.restricted?(o(),l("span",Ht,"(管理员默认不开放)")):L("",!0)]),s("div",Jt,[(o(!0),l(v,null,g(e.items,d=>(o(),l("label",{key:d.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[10]||(t[10]=w=>i.access=w),type:"checkbox",value:d.id},null,8,Kt),[[j,i.access]]),m(u(d.label),1)]))),128))])]))),128))],512),[[C,a.identity!==1]]),r(s("div",Qt,[t[37]||(t[37]=s("div",{class:"text-sm font-semibold text-slate-600 mb-2"},[m("作用域绑定 "),s("span",{class:"text-xs text-slate-400 font-normal"},"(代理/运营生效;限制仪表盘数据范围)")],-1)),s("div",Wt,[t[34]||(t[34]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定应用 "),s("span",{class:"text-slate-300"},"(仪表盘只显示这些应用数据;不勾=不限)")],-1)),s("div",Xt,[E.value.length?(o(!0),l(v,{key:0},g(E.value,e=>(o(),l("label",{key:e.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[11]||(t[11]=d=>i.apps=d),type:"checkbox",value:e.name},null,8,Yt),[[j,i.apps]]),m(u(e.name||"应用#"+e.id),1)]))),128)):(o(),l("span",Zt,"无注册应用"))])]),s("div",ts,[t[35]||(t[35]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定区域 "),s("span",{class:"text-slate-300"},"(不勾=不限)")],-1)),s("div",ss,[(o(),l(v,null,g(Y,e=>s("label",{key:e[0],class:"chk"},[r(s("input",{"onUpdate:modelValue":t[12]||(t[12]=d=>i.regions=d),type:"checkbox",value:e[0]},null,8,es),[[j,i.regions]]),m(u(e[1]),1)])),64))])]),s("div",null,[t[36]||(t[36]=s("div",{class:"text-xs text-slate-500 mb-1.5"},[m("绑定产品 "),s("span",{class:"text-slate-300"},"(按厂家分组;仪表盘只显示这些产品数据;不勾=不限)")],-1)),s("div",ns,[P.value?(o(),l("span",ls,"加载产品中...")):h.value.length?(o(!0),l(v,{key:2},g(h.value,e=>(o(),l("div",{key:e.fid,class:"mb-2 last:mb-0"},[s("div",as,"🏭 "+u(e.label),1),s("div",is,[(o(!0),l(v,null,g(e.products,d=>(o(),l("label",{key:d.id,class:"chk"},[r(s("input",{"onUpdate:modelValue":t[13]||(t[13]=w=>i.products=w),type:"checkbox",value:String(d.id)},null,8,ds),[[j,i.products]]),m(u((d.devicename||"产品")+" #"+d.id),1)]))),128))])]))),128)):(o(),l("span",os,"无产品"))])])],512),[[C,a.identity===3||a.identity===4]]),s("div",us,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[14]||(t[14]=e=>T())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",disabled:I.value,onClick:t[15]||(t[15]=e=>tt())},"保存",8,rs)])])],512),[[C,V.value==="form"]]),s("dialog",{ref_key:"topupModal",ref:O,class:"modal"},[s("div",ps,[t[43]||(t[43]=s("h3",{class:"font-bold text-lg mb-1"},"充值 / 调整资源点",-1)),s("p",cs,[t[38]||(t[38]=m("代理:",-1)),s("span",ms,u(p.name),1),t[39]||(t[39]=m("。填增量(可填负数下调),当前余额:",-1)),s("span",bs,u(p.cur),1)]),s("div",xs,[s("div",null,[t[40]||(t[40]=s("label",{class:"text-xs text-slate-500"},"VIP天数",-1)),r(s("input",{"onUpdate:modelValue":t[16]||(t[16]=e=>p.vipday=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.vipday,void 0,{number:!0}]])]),s("div",null,[t[41]||(t[41]=s("label",{class:"text-xs text-slate-500"},"翻译分钟",-1)),r(s("input",{"onUpdate:modelValue":t[17]||(t[17]=e=>p.trademin=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.trademin,void 0,{number:!0}]])]),s("div",null,[t[42]||(t[42]=s("label",{class:"text-xs text-slate-500"},"会议分钟",-1)),r(s("input",{"onUpdate:modelValue":t[18]||(t[18]=e=>p.meetmin=e),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,p.meetmin,void 0,{number:!0}]])])]),s("div",vs,[s("button",{class:"btn btn-ghost btn-sm",onClick:t[19]||(t[19]=e=>J())},"取消"),s("button",{class:"btn btn-primary btn-sm text-white",onClick:t[20]||(t[20]=e=>lt())},"确认")])]),t[44]||(t[44]=s("form",{method:"dialog",class:"modal-backdrop"},[s("button",null,"close")],-1))],512)]))}}),hs=ct(fs,[["__scopeId","data-v-06dca20b"]]);export{hs as default}; diff --git a/apps/admin/.output/public/_nuxt/D0tNFWGx.js b/apps/admin/.output/public/_nuxt/D0tNFWGx.js new file mode 100644 index 00000000..34eedea6 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/D0tNFWGx.js @@ -0,0 +1 @@ +import{g as oe,B as ne,c as n,a as t,p as r,q as y,F as u,r as p,l as v,H as ae,t as d,d as E,v as _,b as z,s as D,m as I,x as g,y as ie,z as L,o as a,L as N,n as de,_ as ce}from"./Dv-LAQo6.js";import{u as re}from"./mz7Huk5H.js";import{u as ue}from"./D7SVvy69.js";import{L as q}from"./ChQPCk92.js";import{_ as F}from"./CZJGstC3.js";import"./D0vUT4uH.js";const pe={class:"flex items-center justify-between mb-5 flex-wrap gap-3"},me={class:"flex items-center gap-3"},ve=["value"],_e={key:0,class:"text-center py-20 text-slate-300"},be={class:"flex items-center gap-2 mb-3"},ge={class:"text-xs text-slate-400"},fe={class:"text-xs text-slate-400"},xe={class:"agent-grid"},ye=["onClick"],ke={class:"flex items-start justify-between gap-2"},Te={class:"min-w-0"},he={class:"font-semibold text-sm text-slate-800 truncate"},we={class:"text-[11px] text-slate-400 mt-0.5 truncate"},Se={class:"flex items-center gap-1 flex-shrink-0"},Ae={key:0,class:"badge badge-success badge-xs"},Ve={key:1,class:"badge badge-ghost badge-xs"},Ce=["onClick"],Ue={key:0,class:"text-xs text-slate-500 mt-2 line-clamp-2"},Le={class:"flex flex-wrap items-center gap-1.5 mt-3"},Ne={key:1,class:"text-[11px] text-slate-400 mt-2 truncate"},Me={class:"ag-box"},Oe={class:"flex items-center justify-between mb-4"},Be={class:"flex items-center gap-3"},$e={class:"text-base font-semibold text-slate-800"},je={class:"scope-chip"},Ee={class:"ed-section"},ze={class:"type-row"},De=["disabled","onClick"],Ie={class:"ttab-title"},qe={class:"ttab-desc"},Fe={key:0,class:"ed-tip"},Pe={class:"ed-section"},Ge={class:"grid grid-cols-2 gap-3"},Je=["disabled"],He={class:"mt-3"},Re={class:"grid grid-cols-3 gap-3 mt-3"},Xe={class:"ed-section"},Ye={class:"slot-row"},Ke={class:"slot-item"},Qe={class:"ed-label inline"},We=["onUpdate:modelValue"],Ze={value:"",disabled:""},et=["value"],tt={key:0,class:"slot-arrow"},st={class:"ed-section"},lt={class:"grid grid-cols-2 gap-3"},ot={class:"mt-3"},nt={key:0,class:"text-xs text-slate-300 py-2"},at=["onUpdate:modelValue"],it=["value"],dt=["onUpdate:modelValue"],ct=["onUpdate:modelValue"],rt=["onClick"],ut={key:0,class:"ed-section"},pt={class:"mt-3"},mt={class:"flex items-center gap-2 text-sm cursor-pointer"},vt={class:"ed-footer"},_t={class:"flex items-center gap-2 text-sm cursor-pointer"},bt={class:"flex gap-2"},gt=["disabled"],P=1,G=2,ft=3,xt=4,yt=5,kt=7,Tt=oe({__name:"agents",setup(ht){const M=[{value:"chat",label:"对话",icon:"💬",hint:"STT → LLM → TTS 三段拼接",color:"#b45309",bg:"#fef9c3"},{value:"translate",label:"翻译",icon:"🧩",hint:"STT → MT → TTS 三段拼接",color:"#059669",bg:"#dcfce7"},{value:"sts-chat",label:"端到端对话",icon:"⚡",hint:"单个 STS 服务直接完成语音对话",color:"#be185d",bg:"#fce7f3"},{value:"ast-translate",label:"端到端翻译",icon:"🚀",hint:"单个 AST 服务直接完成语音翻译",color:"#c2410c",bg:"#fff7ed"}],J={chat:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cat:P,color:"#1664ff"},{key:"llm_svc_id",slot:"LLM",label:"大语言模型",cat:yt,color:"#b45309"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cat:G,color:"#7c3aed"}],translate:[{key:"stt_svc_id",slot:"STT",label:"语音识别",cat:P,color:"#1664ff"},{key:"mt_svc_id",slot:"MT",label:"机器翻译",cat:ft,color:"#059669"},{key:"tts_svc_id",slot:"TTS",label:"语音合成",cat:G,color:"#7c3aed"}],"sts-chat":[{key:"sts_svc_id",slot:"STS",label:"端到端语音对话",cat:kt,color:"#be185d"}],"ast-translate":[{key:"ast_svc_id",slot:"AST",label:"端到端语音翻译",cat:xt,color:"#f97316"}]};function f(o){return J[o]??[]}const{webApi:k,consoleApi:H}=re(),{success:O,error:x}=ue(),b=g(""),A=g([]),T=g([]),h=g([]),w=g(!1),m=g(!1),V=g(!1);function C(){return{app_name:"",id:"",name:"",type:"translate",description:"",avatar_url:"",enable:!0,stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:"",system_prompt:"",gender:0,greeting_enabled:!1,greeting_text:"",support_langs:"",default_lang:"",voice_map:[],sort:0}}const l=ie(C()),R=L(()=>l.type==="chat"||l.type==="sts-chat"),B=L(()=>{const o=(l.support_langs||"").split(",").map(e=>e.trim()).filter(Boolean);return o.length?q.filter(e=>o.includes(e.code)):q}),X=L(()=>M.map(o=>({...o,type:o.value,items:T.value.filter(e=>e.type===o.value).sort((e,s)=>(s.sort||0)-(e.sort||0)||(e.name||"").localeCompare(s.name||""))})).filter(o=>o.items.length));async function Y(){try{const o=await H("products/list",{});A.value=(o??[]).map(e=>e.name).filter(Boolean)}catch{A.value=[]}}async function K(){try{const o=await k("getsvcconfigs",{app_name:b.value});h.value=o?.items??[]}catch{h.value=[]}}async function U(){try{const o=await k("getagents",{app_name:b.value});T.value=(o?.items??[]).map(e=>({...e,voice_map:e.voice_map??[]}))}catch(o){x(o?.message??"加载失败"),T.value=[]}}async function $(){await Promise.all([K(),U()])}function j(o){return h.value.filter(e=>e.enable&&(e.categories||"").split(",").map(Number).includes(o))}function Q(o){if(!o)return"未配置";const e=h.value.find(s=>s.id===o);return e?e.name:o}function W(o){return f(o.type).map(e=>({slot:e.slot,color:e.color,id:o[e.key]}))}function Z(){Object.assign(l,C()),m.value=!1,w.value=!0}function ee(o){Object.assign(l,C(),o,{voice_map:(o.voice_map??[]).map(e=>({...e}))}),m.value=!0,w.value=!0}function S(){w.value=!1}function te(){l.voice_map.push({language:l.default_lang||"",gender:0,voice:""})}async function se(){if(!l.id.trim()||!l.name.trim()){x("Agent ID 和 名称 必填");return}for(const o of f(l.type))if(!(l[o.key]||"").trim()){x(`${o.slot} ${o.label} 必选`);return}V.value=!0;try{const o={...JSON.parse(JSON.stringify(l)),app_name:b.value,id:l.id.trim(),name:l.name.trim(),stt_svc_id:"",llm_svc_id:"",tts_svc_id:"",mt_svc_id:"",sts_svc_id:"",ast_svc_id:""};for(const e of f(l.type))o[e.key]=l[e.key];o.voice_map=l.voice_map.filter(e=>e.language&&e.voice),await k(m.value?"updateagent":"addagent",o),O("保存成功"),S(),await U()}catch(o){x(o?.message??"保存失败")}finally{V.value=!1}}function le(o){window.confirm(`确定删除 Agent「${o.name||o.id}」吗?引用它的通话翻译规则会失效。`)&&k("delagent",{app_name:b.value,id:o.id}).then(()=>{O("已删除"),U()}).catch(e=>x(e?.message??"删除失败"))}return ne(async()=>{await Y(),await $()}),(o,e)=>(a(),n("div",null,[t("div",pe,[e[15]||(e[15]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"Agent 配置"),t("p",{class:"text-xs text-slate-400 mt-1"}," 把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。 ")],-1)),t("div",me,[e[14]||(e[14]=t("span",{class:"text-sm text-slate-500"},"作用域",-1)),r(t("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>b.value=s),class:"select select-bordered select-sm",onChange:$},[e[13]||(e[13]=t("option",{value:""},"全局默认",-1)),(a(!0),n(u,null,p(A.value,s=>(a(),n("option",{key:s,value:s},d(s),9,ve))),128))],544),[[y,b.value]]),t("button",{class:"btn btn-primary btn-sm text-white",onClick:Z},"+ 新建 Agent")])]),T.value.length?v("",!0):(a(),n("div",_e,[...e[16]||(e[16]=[t("div",{class:"text-5xl mb-3"},"🤖",-1),t("p",{class:"text-sm"},"当前作用域下还没有 Agent",-1),t("p",{class:"text-xs mt-1"},"先在「第三方服务配置」里配好服务,再来把它们组装成 Agent",-1)])])),(a(!0),n(u,null,p(X.value,s=>(a(),n("div",{key:s.type,class:"mb-6"},[t("div",be,[t("span",{class:"type-tag",style:N({background:s.bg,color:s.color})},d(s.icon)+" "+d(s.label),5),t("span",ge,d(s.hint),1),e[17]||(e[17]=t("span",{class:"text-xs text-slate-300"},"·",-1)),t("span",fe,d(s.items.length)+" 个",1)]),t("div",xe,[(a(!0),n(u,null,p(s.items,c=>(a(),n("div",{key:c.id,class:"agent-card",onClick:i=>ee(c)},[t("div",ke,[t("div",Te,[t("div",he,d(c.name||c.id),1),t("div",we,d(c.id),1)]),t("div",Se,[c.enable?(a(),n("span",Ae,"启用")):(a(),n("span",Ve,"停用")),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:I(i=>le(c),["stop"])},"删除",8,Ce)])]),c.description?(a(),n("p",Ue,d(c.description),1)):v("",!0),t("div",Le,[(a(!0),n(u,null,p(W(c),i=>(a(),n("span",{key:i.slot,class:"svc-pill",style:N({background:i.color})},d(i.slot)+": "+d(Q(i.id)),5))),128))]),c.support_langs?(a(),n("div",Ne," 支持语言:"+d(c.support_langs),1)):v("",!0)],8,ye))),128))])]))),128)),r(t("div",{class:"ag-overlay",onClick:I(S,["self"])},[t("div",Me,[t("div",Oe,[t("div",Be,[t("h3",$e,d(m.value?"编辑 Agent":"新建 Agent"),1),t("span",je,d(b.value||"全局默认"),1)]),t("button",{class:"btn btn-ghost btn-xs",onClick:S},"✕ 关闭")]),t("section",Ee,[e[18]||(e[18]=t("div",{class:"ed-section-title"},"类型",-1)),t("div",ze,[(a(),n(u,null,p(M,s=>t("button",{key:s.value,type:"button",class:de(["ttab",{on:l.type===s.value,locked:m.value&&l.type!==s.value}]),disabled:m.value,onClick:c=>l.type=s.value},[t("span",Ie,d(s.icon)+" "+d(s.label),1),t("span",qe,d(s.hint),1)],10,De)),64))]),m.value?(a(),n("p",Fe,"类型创建后不可更改;需要换类型请新建一个 Agent。")):v("",!0)]),t("section",Pe,[e[26]||(e[26]=t("div",{class:"ed-section-title"},"基本信息",-1)),t("div",Ge,[t("div",null,[e[19]||(e[19]=t("span",{class:"ed-label"},[E("Agent ID "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>l.id=s),disabled:m.value,class:"input input-bordered input-sm w-full",placeholder:"如 trans-cn-en(作用域内唯一,创建后不可改)"},null,8,Je),[[_,l.id]])]),t("div",null,[e[20]||(e[20]=t("span",{class:"ed-label"},[E("名称 "),t("i",{class:"req"},"*")],-1)),r(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>l.name=s),class:"input input-bordered input-sm w-full",placeholder:"展示名,如 中英实时翻译"},null,512),[[_,l.name]])])]),t("div",He,[e[21]||(e[21]=t("span",{class:"ed-label"},"描述",-1)),r(t("input",{"onUpdate:modelValue":e[3]||(e[3]=s=>l.description=s),class:"input input-bordered input-sm w-full",placeholder:"这个 Agent 用在什么场景"},null,512),[[_,l.description]])]),t("div",Re,[t("div",null,[e[22]||(e[22]=t("span",{class:"ed-label"},"头像 URL",-1)),r(t("input",{"onUpdate:modelValue":e[4]||(e[4]=s=>l.avatar_url=s),class:"input input-bordered input-sm w-full",placeholder:"可留空"},null,512),[[_,l.avatar_url]])]),t("div",null,[e[23]||(e[23]=t("span",{class:"ed-label"},"排序(越大越靠前)",-1)),r(t("input",{"onUpdate:modelValue":e[5]||(e[5]=s=>l.sort=s),type:"number",class:"input input-bordered input-sm w-full"},null,512),[[_,l.sort,void 0,{number:!0}]])]),t("div",null,[e[25]||(e[25]=t("span",{class:"ed-label"},"音色性别偏好",-1)),r(t("select",{"onUpdate:modelValue":e[6]||(e[6]=s=>l.gender=s),class:"select select-bordered select-sm w-full"},[...e[24]||(e[24]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],512),[[y,l.gender,void 0,{number:!0}]])])])]),t("section",Xe,[e[27]||(e[27]=t("div",{class:"ed-section-title"},"服务编排",-1)),t("div",Ye,[(a(!0),n(u,null,p(f(l.type),(s,c)=>(a(),n(u,{key:s.key},[t("div",Ke,[t("span",{class:"stage-tag",style:N({background:s.color})},d(s.slot),5),t("span",Qe,d(s.label),1),r(t("select",{"onUpdate:modelValue":i=>l[s.key]=i,class:"select select-bordered select-sm w-full"},[t("option",Ze,d(j(s.cat).length?"请选择服务":"(无可用服务,请先去第三方服务配置里添加)"),1),(a(!0),n(u,null,p(j(s.cat),i=>(a(),n("option",{key:i.id,value:i.id},d(i.name),9,et))),128))],8,We),[[y,l[s.key]]])]),cl.support_langs=s),multiple:""},null,8,["modelValue"])]),t("div",null,[e[29]||(e[29]=t("span",{class:"ed-label"},"默认语言",-1)),z(F,{modelValue:l.default_lang,"onUpdate:modelValue":e[8]||(e[8]=s=>l.default_lang=s),options:B.value},null,8,["modelValue","options"])])]),t("div",ot,[t("div",{class:"flex items-center justify-between mb-1"},[e[30]||(e[30]=t("span",{class:"ed-label mb-0"},"音色覆盖(不填则用 TTS 服务自带默认音色)",-1)),t("button",{class:"btn btn-ghost btn-xs",onClick:te},"+ 添加一行")]),l.voice_map.length?v("",!0):(a(),n("div",nt,"未设置音色覆盖")),(a(!0),n(u,null,p(l.voice_map,(s,c)=>(a(),n("div",{key:c,class:"voice-row"},[r(t("select",{"onUpdate:modelValue":i=>s.language=i,class:"select select-bordered select-xs"},[e[31]||(e[31]=t("option",{value:""},"(语言)",-1)),(a(!0),n(u,null,p(B.value,i=>(a(),n("option",{key:i.code,value:i.code},d(i.code)+" · "+d(i.name),9,it))),128))],8,at),[[y,s.language]]),r(t("select",{"onUpdate:modelValue":i=>s.gender=i,class:"select select-bordered select-xs"},[...e[32]||(e[32]=[t("option",{value:0},"不限",-1),t("option",{value:1},"男",-1),t("option",{value:2},"女",-1)])],8,dt),[[y,s.gender,void 0,{number:!0}]]),r(t("input",{"onUpdate:modelValue":i=>s.voice=i,class:"input input-bordered input-xs flex-1",placeholder:"音色名,如 zh-CN-XiaoxiaoNeural"},null,8,ct),[[_,s.voice]]),t("button",{class:"btn btn-ghost btn-xs text-error",onClick:i=>l.voice_map.splice(c,1)},"删除",8,rt)]))),128))])]),R.value?(a(),n("section",ut,[e[36]||(e[36]=t("div",{class:"ed-section-title"},"对话设定",-1)),t("div",null,[e[34]||(e[34]=t("span",{class:"ed-label"},"系统提示词",-1)),r(t("textarea",{"onUpdate:modelValue":e[9]||(e[9]=s=>l.system_prompt=s),class:"textarea textarea-bordered w-full text-xs",rows:"3",placeholder:"定义这个智能体的人设与行为"},null,512),[[_,l.system_prompt]])]),t("div",pt,[t("label",mt,[r(t("input",{"onUpdate:modelValue":e[10]||(e[10]=s=>l.greeting_enabled=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[D,l.greeting_enabled]]),e[35]||(e[35]=t("span",null,"开场白",-1))]),l.greeting_enabled?r((a(),n("input",{key:0,"onUpdate:modelValue":e[11]||(e[11]=s=>l.greeting_text=s),class:"input input-bordered input-sm w-full mt-2",placeholder:"接通后先说的一句话"},null,512)),[[_,l.greeting_text]]):v("",!0)])])):v("",!0),t("div",vt,[t("label",_t,[r(t("input",{"onUpdate:modelValue":e[12]||(e[12]=s=>l.enable=s),type:"checkbox",class:"checkbox checkbox-sm checkbox-primary"},null,512),[[D,l.enable]]),e[37]||(e[37]=t("span",null,"启用",-1))]),t("div",bt,[t("button",{class:"btn btn-ghost btn-sm",onClick:S},"取消"),t("button",{class:"btn btn-primary btn-sm text-white",disabled:V.value,onClick:se},"保存",8,gt)])])])],512),[[ae,w.value]])]))}}),Lt=ce(Tt,[["__scopeId","data-v-463df649"]]);export{Lt as default}; diff --git a/apps/admin/.output/public/_nuxt/42htcooJ.js b/apps/admin/.output/public/_nuxt/D0vUT4uH.js similarity index 91% rename from apps/admin/.output/public/_nuxt/42htcooJ.js rename to apps/admin/.output/public/_nuxt/D0vUT4uH.js index 83eed87c..047488ab 100644 --- a/apps/admin/.output/public/_nuxt/42htcooJ.js +++ b/apps/admin/.output/public/_nuxt/D0vUT4uH.js @@ -1 +1 @@ -import{e as f,a9 as p,aa as c,z as r}from"./CCjf5Io-.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"./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}; diff --git a/apps/admin/.output/public/_nuxt/D1efUY0c.js b/apps/admin/.output/public/_nuxt/D1efUY0c.js new file mode 100644 index 00000000..12677112 --- /dev/null +++ b/apps/admin/.output/public/_nuxt/D1efUY0c.js @@ -0,0 +1 @@ +import{g as q,B as O,c as i,p as d,H as $,a as t,F as w,r as V,q as R,v as f,l as T,t as r,m as z,x as p,y as H,z as A,o as u}from"./Dv-LAQo6.js";import{u as G}from"./mz7Huk5H.js";import{u as I}from"./D7SVvy69.js";import"./D0vUT4uH.js";const J={class:"flex items-center justify-between mb-5"},K=["disabled"],P={class:"flex items-center gap-3 mb-4"},Q=["value"],W={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"},X={key:1,class:"bg-white rounded-xl shadow-sm border border-slate-100"},Y={class:"overflow-x-auto"},Z={class:"table"},tt={key:0},et={key:1},st={class:"bg-slate-100/80"},lt={colspan:"4",class:"py-2"},ot={class:"font-semibold text-slate-600 text-sm"},nt={class:"text-xs text-slate-400 ml-2"},at={class:"font-mono text-sm font-medium"},it=["title"],ut={class:"text-sm text-slate-400"},dt={class:"text-right"},rt={class:"inline-flex gap-1"},pt=["onClick"],mt=["onClick"],ct={class:"flex items-center gap-3 mb-5"},vt={class:"text-lg font-semibold text-slate-800"},bt={class:"text-xs text-slate-400"},ft={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},xt={class:"form-control mb-4"},yt={class:"form-control mb-4"},gt={class:"form-control mb-4"},wt={class:"form-control mb-6"},_t={class:"flex gap-3"},ht=["disabled"],Ut=q({__name:"appconfig",setup(kt){const{consoleApi:c}=G(),{success:S,error:v}=I(),x=p("list"),m=p([]),a=p(0),b=p([]),_=p(!1),h=p(!1),y=p(!1),k=p(""),o=H({id:0,group:"",key:"",value:"",description:""}),B=A(()=>{const s=m.value.find(e=>e.id===a.value);return s?s.name||s.app_name:""}),U=A(()=>{const s=k.value.trim().toLowerCase();return s?b.value.filter(e=>((e.group||"")+(e.key||"")).toLowerCase().includes(s)):b.value}),M=A(()=>{const s={};return U.value.forEach(l=>{const n=l.group||"";(s[n]=s[n]||[]).push(l)}),Object.keys(s).sort((l,n)=>l===""?-1:n===""?1:l({key:l,label:l||"未分组",items:s[l]}))});async function D(){try{const s=await c("apps/list",{});m.value=s??[],!a.value&&m.value.length&&(a.value=m.value[0].id,await g())}catch(s){v(s?.message??"获取应用列表失败"),m.value=[]}}async function g(){if(!a.value){b.value=[];return}_.value=!0;try{const s=await c("appcfg/list",{app_id:a.value});b.value=s?.items??[]}catch(s){v(s?.message??"获取配置失败"),b.value=[]}finally{_.value=!1}}function E(){g()}function C(){x.value="list",g()}function L(s){s?(y.value=!0,o.id=s.id||0,o.group=s.group||"",o.key=s.key||"",o.value=s.value||"",o.description=s.description||""):(y.value=!1,o.id=0,o.group="",o.key="",o.value="",o.description=""),x.value="form"}async function F(){if(!a.value){v("请先选择应用");return}h.value=!0;try{const s={app_id:a.value,group:o.group.trim(),key:o.key.trim(),value:o.value,description:o.description.trim()};y.value?(s.id=Number(o.id),await c("appcfg/update",s)):await c("appcfg/add",s),S("保存成功"),C()}catch(s){v(s?.message??"保存失败")}finally{h.value=!1}}function N(s){window.confirm("确定删除该配置项吗?")&&c("appcfg/del",{app_id:a.value,ids:[s.id]}).then(()=>{S("删除成功"),g()}).catch(e=>v(e?.message??"删除失败"))}return O(D),(s,e)=>(u(),i("div",null,[d(t("div",null,[t("div",J,[e[9]||(e[9]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"应用环境配置"),t("p",{class:"text-xs text-slate-400 mt-1"},"应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",disabled:!a.value,onClick:e[0]||(e[0]=l=>L())},"+ 新增配置",8,K)]),t("div",P,[e[11]||(e[11]=t("span",{class:"text-sm text-slate-500"},"应用",-1)),d(t("select",{"onUpdate:modelValue":e[1]||(e[1]=l=>a.value=l),class:"select select-bordered select-sm min-w-48",onChange:E},[e[10]||(e[10]=t("option",{value:0,disabled:""},"请选择应用",-1)),(u(!0),i(w,null,V(m.value,l=>(u(),i("option",{key:l.id,value:l.id},r(l.name||l.app_name),9,Q))),128))],544),[[R,a.value,void 0,{number:!0}]]),d(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>k.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[f,k.value]])]),a.value?(u(),i("div",X,[t("div",Y,[t("table",Z,[e[15]||(e[15]=t("thead",null,[t("tr",null,[t("th",null,"键"),t("th",null,"值"),t("th",null,"描述"),t("th",{class:"text-right"},"操作")])],-1)),t("tbody",null,[_.value?(u(),i("tr",tt,[...e[13]||(e[13]=[t("td",{colspan:"4",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):U.value.length?T("",!0):(u(),i("tr",et,[...e[14]||(e[14]=[t("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(u(!0),i(w,null,V(M.value,l=>(u(),i(w,{key:l.key},[t("tr",st,[t("td",lt,[t("span",ot,"▸ "+r(l.label),1),t("span",nt,r(l.items.length)+" 项",1)])]),(u(!0),i(w,null,V(l.items,n=>(u(),i("tr",{key:n.id,class:"hover"},[t("td",at,r(n.key||""),1),t("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:n.value||""},r(n.value||""),9,it),t("td",ut,r(n.description||""),1),t("td",dt,[t("div",rt,[t("button",{class:"btn btn-ghost btn-xs",onClick:j=>L(n)},"编辑",8,pt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:j=>N(n)},"删除",8,mt)])])]))),128))],64))),128))])])])])):(u(),i("div",W,[...e[12]||(e[12]=[t("div",{class:"text-4xl mb-2"},"🗂️",-1),t("p",{class:"text-sm"},"请先在上方选择一个应用",-1)])]))],512),[[$,x.value==="list"]]),d(t("div",null,[t("div",ct,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[3]||(e[3]=l=>C())},"← 返回列表"),t("h2",vt,r(y.value?"编辑配置":"新增配置"),1),t("span",bt,"应用:"+r(B.value),1)]),t("div",ft,[t("form",{onSubmit:z(F,["prevent"])},[t("div",xt,[e[16]||(e[16]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"分组 (group)")],-1)),d(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>o.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 music / oss / other"},null,512),[[f,o.group]])]),t("div",yt,[e[17]||(e[17]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"键 (key) *")],-1)),d(t("input",{"onUpdate:modelValue":e[5]||(e[5]=l=>o.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 oss_access_key"},null,512),[[f,o.key]])]),t("div",gt,[e[18]||(e[18]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"值 (value)")],-1)),d(t("textarea",{"onUpdate:modelValue":e[6]||(e[6]=l=>o.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[f,o.value]])]),t("div",wt,[e[19]||(e[19]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),d(t("input",{"onUpdate:modelValue":e[7]||(e[7]=l=>o.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[f,o.description]])]),t("div",_t,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[8]||(e[8]=l=>C())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:h.value},"保存",8,ht)])],32)])],512),[[$,x.value==="form"]])]))}});export{Ut as default}; diff --git a/apps/admin/.output/public/_nuxt/DTVGNZEd.js b/apps/admin/.output/public/_nuxt/D7SVvy69.js similarity index 83% rename from apps/admin/.output/public/_nuxt/DTVGNZEd.js rename to apps/admin/.output/public/_nuxt/D7SVvy69.js index ee28fe0c..71cedf46 100644 --- a/apps/admin/.output/public/_nuxt/DTVGNZEd.js +++ b/apps/admin/.output/public/_nuxt/D7SVvy69.js @@ -1 +1 @@ -import{a as u}from"./42htcooJ.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"./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}; diff --git a/apps/admin/.output/public/_nuxt/DA9Dlh7r.js b/apps/admin/.output/public/_nuxt/DA9Dlh7r.js deleted file mode 100644 index 216fc490..00000000 --- a/apps/admin/.output/public/_nuxt/DA9Dlh7r.js +++ /dev/null @@ -1 +0,0 @@ -import{g as A,B as H,c as o,p as c,H as S,a as t,l as U,F as g,r as h,t as d,m as D,v as N,q as I,N as P,x as r,y as G,o as a,d as J}from"./CCjf5Io-.js";import{u as O}from"./C-6Qe-lq.js";import{u as Q}from"./DTVGNZEd.js";import"./42htcooJ.js";const R={class:"flex items-center justify-between mb-5"},W={class:"bg-white rounded-xl shadow-sm border border-slate-100"},X={class:"overflow-x-auto"},Y={class:"table table-zebra"},Z={key:0},tt={key:1},et={class:"font-mono text-sm"},st={class:"font-medium"},nt={class:"badge badge-ghost badge-sm"},lt={class:"text-sm"},ot={key:1,class:"text-slate-300"},at={class:"text-sm text-slate-500"},it={class:"flex gap-1"},dt=["onClick"],rt=["onClick"],ut={class:"flex items-center gap-3 mb-5"},ct={class:"text-lg font-semibold text-slate-800"},mt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},vt={class:"form-control mb-4"},bt={class:"form-control mb-4"},pt=["value"],ft={class:"form-control mb-4"},xt={class:"form-control mb-6"},gt={class:"space-y-2"},ht={key:0,class:"text-xs text-slate-400"},yt={class:"badge badge-lg gap-1 bg-slate-100 border-slate-200"},_t=["onClick"],wt={class:"flex gap-2 mt-2"},kt=["onKeydown"],Ct={class:"flex gap-3"},Bt=["disabled"],St=A({__name:"factory",setup(Nt){const{webApi:b}=O(),{success:V,error:y,warn:L}=Q(),p=r("list"),f=r([]),x=r([]),_=r(!1),w=r(!1),m=r(!1),i=r([]),v=r(""),l=G({id:0,brand:"",providerid:0,description:""});function j(s){return s?Number(s).toString(16).toUpperCase():""}function k(s){return(s||"").split(",").map(e=>e.trim()).filter(Boolean)}function F(s){if(!s)return"-";const e=x.value.find(n=>n.id===s);return e?e.name:"方案商#"+s}async function K(){try{const s=await b("getsolutionproviders",{});x.value=s?.providers??[]}catch{x.value=[]}}async function C(){_.value=!0;try{await K();const s=await b("getbrands",{});f.value=s?.brands??[]}catch(s){y(s?.message??"获取品牌商列表失败"),f.value=[]}finally{_.value=!1}}function B(){p.value="list",C()}function $(s){s?(m.value=!0,l.id=s.id,l.brand=s.brand||"",l.providerid=s.providerid||0,l.description=s.description||"",i.value=k(s.contactmails)):(m.value=!1,l.id=0,l.brand="",l.providerid=0,l.description="",i.value=[]),v.value="",p.value="form"}function M(){const s=v.value.trim();if(s){if(i.value.includes(s)){L("邮箱已存在");return}i.value.push(s),v.value=""}}function T(s){i.value.splice(s,1)}async function q(){w.value=!0;try{const s={brand:{brand:l.brand,providerid:Number(l.providerid)||0,description:l.description,contactmails:i.value.join(",")}};m.value&&(s.brand.id=Number(l.id)),await b(m.value?"updatebrand":"addbrand",s),V("保存成功"),B()}catch(s){y(s?.message??"保存失败")}finally{w.value=!1}}function z(s){window.confirm(`确定删除品牌商 "${s.brand}" 吗?`)&&b("delbrand",{id:s.id}).then(()=>{V("删除成功"),C()}).catch(e=>y(e?.message??"删除失败"))}return H(C),(s,e)=>(a(),o("div",null,[c(t("div",null,[t("div",R,[e[7]||(e[7]=t("h2",{class:"text-lg font-semibold text-slate-800"},"品牌商列表",-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:e[0]||(e[0]=n=>$())},"+ 新增品牌商")]),t("div",W,[t("div",X,[t("table",Y,[e[10]||(e[10]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"品牌名称"),t("th",null,"归属方案商"),t("th",null,"联系邮箱"),t("th",null,"产品"),t("th",null,"操作")])],-1)),t("tbody",null,[_.value?(a(),o("tr",Z,[...e[8]||(e[8]=[t("td",{colspan:"6",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):f.value.length?U("",!0):(a(),o("tr",tt,[...e[9]||(e[9]=[t("td",{colspan:"6",class:"text-center text-slate-400 py-8"},"暂无数据",-1)])])),(a(!0),o(g,null,h(f.value,n=>(a(),o("tr",{key:n.id},[t("td",et,d(j(n.id)),1),t("td",st,d(n.brand),1),t("td",null,[t("span",nt,d(F(n.providerid)),1)]),t("td",lt,[k(n.contactmails).length?(a(!0),o(g,{key:0},h(k(n.contactmails),(u,E)=>(a(),o("span",{key:E,class:"badge badge-ghost badge-sm mr-1"},d(u),1))),128)):(a(),o("span",ot,"-"))]),t("td",at,d(n.productlists||""),1),t("td",null,[t("div",it,[t("button",{class:"btn btn-ghost btn-xs",onClick:u=>$(n)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:u=>z(n)},"删除",8,rt)])])]))),128))])])])])],512),[[S,p.value==="list"]]),c(t("div",null,[t("div",ut,[t("button",{class:"btn btn-ghost btn-sm",onClick:e[1]||(e[1]=n=>B())},"← 返回列表"),t("h2",ct,d(m.value?"编辑品牌商":"新增品牌商"),1)]),t("div",mt,[t("form",{onSubmit:D(q,["prevent"])},[t("div",vt,[e[11]||(e[11]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"品牌名称 *")],-1)),c(t("input",{"onUpdate:modelValue":e[2]||(e[2]=n=>l.brand=n),type:"text",class:"input input-bordered w-full",required:""},null,512),[[N,l.brand]])]),t("div",bt,[e[13]||(e[13]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"归属方案商")],-1)),c(t("select",{"onUpdate:modelValue":e[3]||(e[3]=n=>l.providerid=n),class:"select select-bordered w-full"},[e[12]||(e[12]=t("option",{value:0},"请选择方案商",-1)),(a(!0),o(g,null,h(x.value,n=>(a(),o("option",{key:n.id,value:n.id},d(n.name),9,pt))),128))],512),[[I,l.providerid,void 0,{number:!0}]])]),t("div",ft,[e[14]||(e[14]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"描述")],-1)),c(t("textarea",{"onUpdate:modelValue":e[4]||(e[4]=n=>l.description=n),class:"textarea textarea-bordered w-full",rows:"3"},null,512),[[N,l.description]])]),t("div",xt,[e[16]||(e[16]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"联系邮箱")],-1)),t("div",gt,[i.value.length?U("",!0):(a(),o("p",ht,"暂无邮箱")),(a(!0),o(g,null,h(i.value,(n,u)=>(a(),o("div",{key:u,class:"flex items-center gap-2"},[t("span",yt,[e[15]||(e[15]=t("svg",{class:"h-3 w-3 text-slate-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)),J(" "+d(n),1)]),t("button",{type:"button",class:"btn btn-ghost btn-xs text-red-400 hover:text-red-600",onClick:E=>T(u)},"×",8,_t)]))),128))]),t("div",wt,[c(t("input",{"onUpdate:modelValue":e[5]||(e[5]=n=>v.value=n),type:"email",class:"input input-bordered input-sm flex-1",placeholder:"输入邮箱地址",onKeydown:P(D(M,["prevent"]),["enter"])},null,40,kt),[[N,v.value]]),t("button",{type:"button",class:"btn btn-outline btn-sm btn-primary",onClick:M},"添加")])]),t("div",Ct,[t("button",{type:"button",class:"btn btn-ghost",onClick:e[6]||(e[6]=n=>B())},"取消"),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:w.value},"保存",8,Bt)])],32)])],512),[[S,p.value==="form"]])]))}});export{St as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/1800ei7D.js b/apps/admin/.output/public/_nuxt/DCtqoj8h.js similarity index 93% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/1800ei7D.js rename to apps/admin/.output/public/_nuxt/DCtqoj8h.js index acb51632..9029428a 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/1800ei7D.js +++ b/apps/admin/.output/public/_nuxt/DCtqoj8h.js @@ -1 +1 @@ -import{g as wt,j as xt,B as Dt,c as o,a,p as L,q,F as _,r as v,t as r,z as m,y as K,x as p,o as l,O as A,n as Q,l as X,_ as Ct}from"./CCjf5Io-.js";import{u as At}from"./C-6Qe-lq.js";import"./42htcooJ.js";const Mt={class:"panel p-4 mb-5"},St={class:"flex flex-wrap items-end gap-3"},Bt={class:"form-control"},Nt=["value"],Lt={class:"form-control"},qt=["value"],zt={class:"form-control"},Ot=["value"],Rt={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},Vt={class:"body"},Ht={class:"lbl"},Tt={class:"val"},It={class:"today-wrap mb-8"},Ut={class:"sec-title hero",style:{"margin-bottom":"16px"}},Gt={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},Pt={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},jt={class:"today-card-top"},Yt={class:"lbl"},Wt={class:"val"},Jt={class:"foot"},Zt={key:0,class:"delta up"},$t={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},Kt={class:"panel-head"},Qt=["stroke"],Xt=["d"],te={class:"font-semibold text-slate-700 text-sm"},ee={key:0,class:"ml-auto text-xs text-slate-400"},se={key:1,class:"ml-auto flex items-center gap-1"},ae=["onClick"],ne={class:"px-5 py-4"},oe={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},le={class:"stat-label"},re={class:"stat-val"},ie={key:0,style:{height:"170px","margin-top":"1rem"}},ce=wt({__name:"dashboard",setup(de){const k=xt(),{webApi:z,consoleApi:tt}=At(),O=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],et={new_user_count:["👥","#EEF2FF","#6366F1"],active_user_count:["🟢","#ECFDF5","#10B981"],bind_device_count:["📱","#E0F2FE","#0EA5E9"],qr_active_count:["🔳","#FCE7F3","#EC4899"],order_paid_count:["🧾","#FEF3C7","#F59E0B"],order_paid_amount:["💰","#FEE2E2","#EF4444"],pay_user_count:["⭐","#FFF7ED","#F97316"],meet_second:["🎙️","#CFFAFE","#22D3EE"],trade_second:["🌐","#F3E8FF","#8B5CF6"]},R=[["new_user_count","累计用户",!1],["bind_device_count","累计绑定设备",!1],["qr_active_count","累计二维码激活",!1],["order_paid_count","累计支付订单",!1],["order_paid_amount","累计支付金额",!0],["meet_second","累计会议时长",!1],["trade_second","累计翻译时长",!1]],V=[["new_user_count","新增用户",!1],["active_user_count","活跃用户",!1],["qr_active_count","二维码激活",!1],["order_paid_count","支付订单",!1],["order_paid_amount","支付金额",!0],["pay_user_count","付费用户",!1],["meet_second","会议时长",!1,!0],["trade_second","翻译时长",!1,!0]],E=[{key:"user",title:"用户增长",color:"#6366F1",tint:"#EEF2FF",icon:"M17 20h5v-2a4 4 0 00-3-3.87M9 20H4v-2a4 4 0 013-3.87m6-1.13a4 4 0 10-4-4 4 4 0 004 4z",stats:[["new_user_count","新增用户"],["active_user_count","活跃用户"],["login_user_count","登录用户"],["login_count","登录次数"]],lines:[["new_user_count","新增用户","#6366F1"],["active_user_count","活跃用户","#34D399"]]},{key:"device",title:"设备激活绑定",color:"#0EA5E9",tint:"#E0F2FE",icon:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z",stats:[["active_device_count","已激活"],["bind_device_count","已绑定"]],lines:[["active_device_count","已激活","#0EA5E9"],["bind_device_count","已绑定","#818CF8"]]},{key:"qrcode",title:"二维码激活",color:"#EC4899",tint:"#FCE7F3",icon:"M12 4v1m6 11h2m-6 0h-1v4m-6-4H5m14 0h-2m-6-7H5m0 0V5m0 4v6m14-6V5h-4M5 5h4M5 19h4m6 0h4v-4M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6z",stats:[["qr_active_count","二维码激活次数"]],lines:[["qr_active_count","二维码激活","#EC4899"]]},{key:"order",title:"订单支付",color:"#F59E0B",tint:"#FEF3C7",icon:"M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z",stats:[["order_create_count","创建订单"],["order_paid_count","支付订单"],["order_failed_count","失败订单"],["pay_user_count","付费用户"],["order_paid_amount","支付金额",!0],["order_create_amount","创建金额",!0]],lines:[["order_paid_count","支付订单","#F59E0B"],["order_create_count","创建订单","#FCD34D"]]},{key:"meeting",title:"会议",color:"#22D3EE",tint:"#CFFAFE",icon:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",stats:[["meet_count","会议次数"],["meet_second","会议时长",!1,!0],["grant_meet_second","发放会议时长",!1,!0]],lines:[["meet_count","会议次数","#22D3EE"],["meet_second","会议时长(秒)","#0EA5E9"]]},{key:"translate",title:"翻译",color:"#8B5CF6",tint:"#F3E8FF",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",stats:[["trade_count","翻译次数"],["trade_second","翻译时长",!1,!0],["trade_words","翻译字数"],["grant_trade_second","发放翻译时长",!1,!0]],lines:[["trade_count","翻译次数","#8B5CF6"],["trade_second","翻译时长(秒)","#A78BFA"]]}],f=m(()=>k.identity===3),st=m(()=>k.apps),H=m(()=>k.regions),T=m(()=>k.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),I=["new_user_count","active_user_count","qr_active_count"],at=m(()=>f.value?R.filter(t=>!I.includes(t[0])):R),nt=m(()=>f.value?V.filter(t=>!I.includes(t[0])):V),U=m(()=>f.value?E.filter(t=>t.key!=="user"&&t.key!=="qrcode"):E),ot=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],i=K({app:"",region:"",product:""}),F=p([]),M=p([]),lt=m(()=>f.value&&H.value.length?O.filter(t=>H.value.includes(t[0])).map(t=>({value:t[0],label:t[1]})):O.map(t=>({value:t[0],label:t[1]}))),G=p({}),P=p({}),S=p({}),j=p({}),Y=p("实时"),B=p({}),w=K({});E.forEach(t=>{w[t.key]=30});function x(t){const e=t.getFullYear(),s=("0"+(t.getMonth()+1)).slice(-2),n=("0"+t.getDate()).slice(-2);return parseInt(e+s+n)}function rt(t){if(!t)return{start:0,end:0};const e=new Date,s=new Date;return s.setDate(s.getDate()-(t-1)),{start:x(s),end:x(e)}}function it(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function ct(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),s=Math.floor(t%3600/60),n=t%60;return e>0?e+"时"+s+"分":s>0?s+"分"+n+"秒":n+"秒"}function N(t,e,s){return s?ct(t):it(t,e)}function dt(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function ut(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function g(t){return et[t]||["📊","#f1f5f9","#94a3b8"]}function _t(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?P.value:G.value,s=t[0]==="meet_second"||t[0]==="trade_second";return N(e[t[0]],t[2],s)}function vt(t){return N(S.value[t[0]],t[2],!!t[3])}function b(t){const e=ut(S.value[t[0]],j.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const s=e>0?"up":e<0?"down":"flat",n=e>0?"▲":e<0?"▼":"—";return{type:s,arrow:n,abs:Math.abs(e).toFixed(1)}}function mt(t,e){return N((B.value[t.key]||{})[e[0]],e[2],e[3])}function D(){const t={};return i.app!==""&&(t.app_id=i.app),i.region!==""&&(t.region=i.region),i.product!==""&&(t.product_id=parseInt(String(i.product))),t}function W(){const t={};return i.product!==""&&(t.product_id=parseInt(String(i.product))),t}async function y(t,e){try{return{code:0,data:await z(t,e)??{}}}catch{return null}}async function pt(){const t=await y("getstatssummary",D());G.value=t&&t.code===0&&t.data?t.data:{};const e=await y("getstatssummary",W());P.value=e&&e.code===0&&e.data?e.data:{}}async function ft(){const t=x(new Date),e=new Date;e.setDate(e.getDate()-1);const s=x(e),n=D();n.start_day=t,n.end_day=t;const d=D();d.start_day=s,d.end_day=s;const u=await y("getstatssummary",n);S.value=u&&u.code===0&&u.data?u.data:{};const c=await y("getstatssummary",d);j.value=c&&c.code===0&&c.data?c.data:{};const C=new Date,Et=("0"+(C.getMonth()+1)).slice(-2),Ft=("0"+C.getDate()).slice(-2);Y.value=Et+"-"+Ft+" 实时"}async function J(t){let e;if(t.key==="device")e=W();else{const c=rt(w[t.key]);e=D(),e.start_day=c.start,e.end_day=c.end}const s=await y("getstatssummary",e),n=s&&s.code===0&&s.data?s.data:{};if(B.value={...B.value,[t.key]:n},t.key==="device")return;const d=await y("getstatstrend",e),u=d&&d.code===0?d.data||[]:[];bt(t,u)}function yt(t,e){w[t]=e;const s=E.find(n=>n.key===t);s&&J(s)}function Z(){pt(),ft(),U.value.forEach(t=>J(t))}const $={},h={};function gt(t,e){e&&($[t]=e)}function bt(t,e){const s=window.Chart,n=$[t.key];if(!s||!n)return;const d=e.map(c=>dt(c.stat_day)),u=t.lines.map(c=>({label:c[1],data:e.map(C=>Number(C[c[0]])||0),borderColor:c[2],backgroundColor:c[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if(h[t.key]){h[t.key].data.labels=d,h[t.key].data.datasets=u,h[t.key].update();return}h[t.key]=new s(n,{type:"line",data:{labels:d,datasets:u},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{boxWidth:10,padding:12,font:{size:11}}}},scales:{x:{ticks:{maxTicksLimit:8,font:{size:10},color:"#94a3b8"},grid:{display:!1}},y:{beginAtZero:!0,ticks:{precision:0,maxTicksLimit:5,font:{size:10},color:"#94a3b8"},grid:{color:"#f1f5f9"}}},interaction:{mode:"index",intersect:!1}}})}async function ht(){if(f.value)F.value=st.value.map(t=>({value:t,label:t}));else try{const t=await tt("apps/list",{}),e=Array.isArray(t)?t:[];F.value=e.map(s=>({value:s.name||"",label:s.name||"应用#"+s.id}))}catch{F.value=[]}try{const t=await z("getproducts",{});let e=t&&t.products?t.products:[];f.value&&T.value.length&&(e=e.filter(s=>T.value.includes(s.id))),M.value=e.map(s=>({value:s.id,label:(s.devicename||"产品#"+s.id)+" (#"+s.id+")"}))}catch{M.value=[]}}function kt(){return new Promise(t=>{if(window.Chart)return t();const e=document.createElement("script");e.src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js",e.onload=()=>t(),e.onerror=()=>t(),document.head.appendChild(e)})}return Dt(async()=>{await kt(),await ht(),Z()}),(t,e)=>(l(),o("div",null,[a("div",Mt,[a("div",St,[a("div",Bt,[e[4]||(e[4]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),L(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>i.app=s),class:"select select-bordered select-sm w-40"},[e[3]||(e[3]=a("option",{value:""},"全部应用",-1)),(l(!0),o(_,null,v(F.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,Nt))),128))],512),[[q,i.app]])]),a("div",Lt,[e[6]||(e[6]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),L(a("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.region=s),class:"select select-bordered select-sm w-32"},[e[5]||(e[5]=a("option",{value:""},"全部区域",-1)),(l(!0),o(_,null,v(lt.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,qt))),128))],512),[[q,i.region]])]),a("div",zt,[e[8]||(e[8]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),L(a("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>i.product=s),class:"select select-bordered select-sm w-48"},[e[7]||(e[7]=a("option",{value:""},"全部产品",-1)),(l(!0),o(_,null,v(M.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,Ot))),128))],512),[[q,i.product]])]),a("button",{class:"btn btn-primary btn-sm text-white",onClick:Z},"查询"),e[9]||(e[9]=a("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[14]||(e[14]=a("div",{class:"sec-title muted"},[a("span",{class:"bar",style:{background:"#cbd5e1"}}),a("h2",null,"累计数据"),a("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),a("div",Rt,[(l(!0),o(_,null,v(at.value,s=>(l(),o("div",{key:s[0],class:"cum-card"},[a("span",{class:"ico",style:A({background:g(s[0])[1]})},r(g(s[0])[0]),5),a("div",Vt,[a("div",Ht,r(s[1]),1),a("div",Tt,r(_t(s)),1)])]))),128))]),a("div",It,[a("div",Ut,[e[10]||(e[10]=a("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[11]||(e[11]=a("h2",null,"今日数据",-1)),a("span",Gt,r(Y.value),1),e[12]||(e[12]=a("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),a("div",Pt,[(l(!0),o(_,null,v(nt.value,s=>(l(),o("div",{key:s[0],class:"today-card"},[a("span",{class:"accent",style:A({background:g(s[0])[2]})},null,4),a("div",jt,[a("span",Yt,r(s[1]),1),a("span",{class:"ico",style:A({background:g(s[0])[1]})},r(g(s[0])[0]),5)]),a("div",Wt,r(vt(s)),1),a("div",Jt,[b(s).type==="new"?(l(),o("span",Zt,"新")):b(s).type!=="none"?(l(),o("span",{key:1,class:Q(["delta",b(s).type])},r(b(s).arrow)+" "+r(b(s).abs)+"%",3)):X("",!0),e[13]||(e[13]=a("span",null,"较昨日",-1))])]))),128))])]),e[15]||(e[15]=a("div",{class:"sec-title"},[a("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),a("h2",null,"趋势分析"),a("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),a("div",$t,[(l(!0),o(_,null,v(U.value,s=>(l(),o("div",{key:s.key,class:"panel"},[a("div",Kt,[a("span",{class:"panel-dot",style:A({background:s.tint})},[(l(),o("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:s.color},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:s.icon},null,8,Xt)],8,Qt))],4),a("span",te,r(s.title),1),s.key==="device"?(l(),o("span",ee,"当前累计 · 无日期维度")):(l(),o("div",se,[(l(),o(_,null,v(ot,n=>a("button",{key:n[0],class:Q(["tbtn",{"tbtn-on":n[0]===w[s.key]}]),onClick:d=>yt(s.key,Number(n[0]))},r(n[1]),11,ae)),64))]))]),a("div",ne,[a("div",oe,[(l(!0),o(_,null,v(s.stats,n=>(l(),o("div",{key:n[0],class:"stat-box"},[a("div",le,r(n[1]),1),a("div",re,r(mt(s,n)),1)]))),128))]),s.key!=="device"?(l(),o("div",ie,[a("canvas",{ref_for:!0,ref:n=>gt(s.key,n)},null,512)])):X("",!0)])]))),128))])]))}}),me=Ct(ce,[["__scopeId","data-v-7dbe8712"]]);export{me as default}; +import{g as wt,j as xt,B as Dt,c as o,a,p as L,q,F as _,r as v,t as r,z as m,y as K,x as p,o as l,L as A,n as Q,l as X,_ as Ct}from"./Dv-LAQo6.js";import{u as At}from"./mz7Huk5H.js";import"./D0vUT4uH.js";const Mt={class:"panel p-4 mb-5"},St={class:"flex flex-wrap items-end gap-3"},Bt={class:"form-control"},Nt=["value"],Lt={class:"form-control"},qt=["value"],zt={class:"form-control"},Rt=["value"],Vt={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},Ot={class:"body"},Ht={class:"lbl"},Tt={class:"val"},It={class:"today-wrap mb-8"},Ut={class:"sec-title hero",style:{"margin-bottom":"16px"}},Gt={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},Pt={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},jt={class:"today-card-top"},Yt={class:"lbl"},Wt={class:"val"},Jt={class:"foot"},Zt={key:0,class:"delta up"},$t={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},Kt={class:"panel-head"},Qt=["stroke"],Xt=["d"],te={class:"font-semibold text-slate-700 text-sm"},ee={key:0,class:"ml-auto text-xs text-slate-400"},se={key:1,class:"ml-auto flex items-center gap-1"},ae=["onClick"],ne={class:"px-5 py-4"},oe={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},le={class:"stat-label"},re={class:"stat-val"},ie={key:0,style:{height:"170px","margin-top":"1rem"}},ce=wt({__name:"dashboard",setup(de){const k=xt(),{webApi:z,consoleApi:tt}=At(),R=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],et={new_user_count:["👥","#EEF2FF","#6366F1"],active_user_count:["🟢","#ECFDF5","#10B981"],bind_device_count:["📱","#E0F2FE","#0EA5E9"],qr_active_count:["🔳","#FCE7F3","#EC4899"],order_paid_count:["🧾","#FEF3C7","#F59E0B"],order_paid_amount:["💰","#FEE2E2","#EF4444"],pay_user_count:["⭐","#FFF7ED","#F97316"],meet_second:["🎙️","#CFFAFE","#22D3EE"],trade_second:["🌐","#F3E8FF","#8B5CF6"]},V=[["new_user_count","累计用户",!1],["bind_device_count","累计绑定设备",!1],["qr_active_count","累计二维码激活",!1],["order_paid_count","累计支付订单",!1],["order_paid_amount","累计支付金额",!0],["meet_second","累计会议时长",!1],["trade_second","累计翻译时长",!1]],O=[["new_user_count","新增用户",!1],["active_user_count","活跃用户",!1],["qr_active_count","二维码激活",!1],["order_paid_count","支付订单",!1],["order_paid_amount","支付金额",!0],["pay_user_count","付费用户",!1],["meet_second","会议时长",!1,!0],["trade_second","翻译时长",!1,!0]],E=[{key:"user",title:"用户增长",color:"#6366F1",tint:"#EEF2FF",icon:"M17 20h5v-2a4 4 0 00-3-3.87M9 20H4v-2a4 4 0 013-3.87m6-1.13a4 4 0 10-4-4 4 4 0 004 4z",stats:[["new_user_count","新增用户"],["active_user_count","活跃用户"],["login_user_count","登录用户"],["login_count","登录次数"]],lines:[["new_user_count","新增用户","#6366F1"],["active_user_count","活跃用户","#34D399"]]},{key:"device",title:"设备激活绑定",color:"#0EA5E9",tint:"#E0F2FE",icon:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z",stats:[["active_device_count","已激活"],["bind_device_count","已绑定"]],lines:[["active_device_count","已激活","#0EA5E9"],["bind_device_count","已绑定","#818CF8"]]},{key:"qrcode",title:"二维码激活",color:"#EC4899",tint:"#FCE7F3",icon:"M12 4v1m6 11h2m-6 0h-1v4m-6-4H5m14 0h-2m-6-7H5m0 0V5m0 4v6m14-6V5h-4M5 5h4M5 19h4m6 0h4v-4M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6z",stats:[["qr_active_count","二维码激活次数"]],lines:[["qr_active_count","二维码激活","#EC4899"]]},{key:"order",title:"订单支付",color:"#F59E0B",tint:"#FEF3C7",icon:"M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z",stats:[["order_create_count","创建订单"],["order_paid_count","支付订单"],["order_failed_count","失败订单"],["pay_user_count","付费用户"],["order_paid_amount","支付金额",!0],["order_create_amount","创建金额",!0]],lines:[["order_paid_count","支付订单","#F59E0B"],["order_create_count","创建订单","#FCD34D"]]},{key:"meeting",title:"会议",color:"#22D3EE",tint:"#CFFAFE",icon:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",stats:[["meet_count","会议次数"],["meet_second","会议时长",!1,!0],["grant_meet_second","发放会议时长",!1,!0]],lines:[["meet_count","会议次数","#22D3EE"],["meet_second","会议时长(秒)","#0EA5E9"]]},{key:"translate",title:"翻译",color:"#8B5CF6",tint:"#F3E8FF",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",stats:[["trade_count","翻译次数"],["trade_second","翻译时长",!1,!0],["trade_words","翻译字数"],["grant_trade_second","发放翻译时长",!1,!0]],lines:[["trade_count","翻译次数","#8B5CF6"],["trade_second","翻译时长(秒)","#A78BFA"]]}],f=m(()=>k.identity===3),st=m(()=>k.apps),H=m(()=>k.regions),T=m(()=>k.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),I=["new_user_count","active_user_count","qr_active_count"],at=m(()=>f.value?V.filter(t=>!I.includes(t[0])):V),nt=m(()=>f.value?O.filter(t=>!I.includes(t[0])):O),U=m(()=>f.value?E.filter(t=>t.key!=="user"&&t.key!=="qrcode"):E),ot=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],i=K({app:"",region:"",product:""}),F=p([]),M=p([]),lt=m(()=>f.value&&H.value.length?R.filter(t=>H.value.includes(t[0])).map(t=>({value:t[0],label:t[1]})):R.map(t=>({value:t[0],label:t[1]}))),G=p({}),P=p({}),S=p({}),j=p({}),Y=p("实时"),B=p({}),w=K({});E.forEach(t=>{w[t.key]=30});function x(t){const e=t.getFullYear(),s=("0"+(t.getMonth()+1)).slice(-2),n=("0"+t.getDate()).slice(-2);return parseInt(e+s+n)}function rt(t){if(!t)return{start:0,end:0};const e=new Date,s=new Date;return s.setDate(s.getDate()-(t-1)),{start:x(s),end:x(e)}}function it(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function ct(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),s=Math.floor(t%3600/60),n=t%60;return e>0?e+"时"+s+"分":s>0?s+"分"+n+"秒":n+"秒"}function N(t,e,s){return s?ct(t):it(t,e)}function dt(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function ut(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function g(t){return et[t]||["📊","#f1f5f9","#94a3b8"]}function _t(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?P.value:G.value,s=t[0]==="meet_second"||t[0]==="trade_second";return N(e[t[0]],t[2],s)}function vt(t){return N(S.value[t[0]],t[2],!!t[3])}function b(t){const e=ut(S.value[t[0]],j.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const s=e>0?"up":e<0?"down":"flat",n=e>0?"▲":e<0?"▼":"—";return{type:s,arrow:n,abs:Math.abs(e).toFixed(1)}}function mt(t,e){return N((B.value[t.key]||{})[e[0]],e[2],e[3])}function D(){const t={};return i.app!==""&&(t.app_id=i.app),i.region!==""&&(t.region=i.region),i.product!==""&&(t.product_id=parseInt(String(i.product))),t}function W(){const t={};return i.product!==""&&(t.product_id=parseInt(String(i.product))),t}async function y(t,e){try{return{code:0,data:await z(t,e)??{}}}catch{return null}}async function pt(){const t=await y("getstatssummary",D());G.value=t&&t.code===0&&t.data?t.data:{};const e=await y("getstatssummary",W());P.value=e&&e.code===0&&e.data?e.data:{}}async function ft(){const t=x(new Date),e=new Date;e.setDate(e.getDate()-1);const s=x(e),n=D();n.start_day=t,n.end_day=t;const d=D();d.start_day=s,d.end_day=s;const u=await y("getstatssummary",n);S.value=u&&u.code===0&&u.data?u.data:{};const c=await y("getstatssummary",d);j.value=c&&c.code===0&&c.data?c.data:{};const C=new Date,Et=("0"+(C.getMonth()+1)).slice(-2),Ft=("0"+C.getDate()).slice(-2);Y.value=Et+"-"+Ft+" 实时"}async function J(t){let e;if(t.key==="device")e=W();else{const c=rt(w[t.key]);e=D(),e.start_day=c.start,e.end_day=c.end}const s=await y("getstatssummary",e),n=s&&s.code===0&&s.data?s.data:{};if(B.value={...B.value,[t.key]:n},t.key==="device")return;const d=await y("getstatstrend",e),u=d&&d.code===0?d.data||[]:[];bt(t,u)}function yt(t,e){w[t]=e;const s=E.find(n=>n.key===t);s&&J(s)}function Z(){pt(),ft(),U.value.forEach(t=>J(t))}const $={},h={};function gt(t,e){e&&($[t]=e)}function bt(t,e){const s=window.Chart,n=$[t.key];if(!s||!n)return;const d=e.map(c=>dt(c.stat_day)),u=t.lines.map(c=>({label:c[1],data:e.map(C=>Number(C[c[0]])||0),borderColor:c[2],backgroundColor:c[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if(h[t.key]){h[t.key].data.labels=d,h[t.key].data.datasets=u,h[t.key].update();return}h[t.key]=new s(n,{type:"line",data:{labels:d,datasets:u},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{boxWidth:10,padding:12,font:{size:11}}}},scales:{x:{ticks:{maxTicksLimit:8,font:{size:10},color:"#94a3b8"},grid:{display:!1}},y:{beginAtZero:!0,ticks:{precision:0,maxTicksLimit:5,font:{size:10},color:"#94a3b8"},grid:{color:"#f1f5f9"}}},interaction:{mode:"index",intersect:!1}}})}async function ht(){if(f.value)F.value=st.value.map(t=>({value:t,label:t}));else try{const t=await tt("apps/list",{}),e=Array.isArray(t)?t:[];F.value=e.map(s=>({value:s.name||"",label:s.name||"应用#"+s.id}))}catch{F.value=[]}try{const t=await z("getproducts",{});let e=t&&t.products?t.products:[];f.value&&T.value.length&&(e=e.filter(s=>T.value.includes(s.id))),M.value=e.map(s=>({value:s.id,label:(s.devicename||"产品#"+s.id)+" (#"+s.id+")"}))}catch{M.value=[]}}function kt(){return new Promise(t=>{if(window.Chart)return t();const e=document.createElement("script");e.src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js",e.onload=()=>t(),e.onerror=()=>t(),document.head.appendChild(e)})}return Dt(async()=>{await kt(),await ht(),Z()}),(t,e)=>(l(),o("div",null,[a("div",Mt,[a("div",St,[a("div",Bt,[e[4]||(e[4]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),L(a("select",{"onUpdate:modelValue":e[0]||(e[0]=s=>i.app=s),class:"select select-bordered select-sm w-40"},[e[3]||(e[3]=a("option",{value:""},"全部应用",-1)),(l(!0),o(_,null,v(F.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,Nt))),128))],512),[[q,i.app]])]),a("div",Lt,[e[6]||(e[6]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),L(a("select",{"onUpdate:modelValue":e[1]||(e[1]=s=>i.region=s),class:"select select-bordered select-sm w-32"},[e[5]||(e[5]=a("option",{value:""},"全部区域",-1)),(l(!0),o(_,null,v(lt.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,qt))),128))],512),[[q,i.region]])]),a("div",zt,[e[8]||(e[8]=a("label",{class:"label py-1"},[a("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),L(a("select",{"onUpdate:modelValue":e[2]||(e[2]=s=>i.product=s),class:"select select-bordered select-sm w-48"},[e[7]||(e[7]=a("option",{value:""},"全部产品",-1)),(l(!0),o(_,null,v(M.value,s=>(l(),o("option",{key:s.value,value:s.value},r(s.label),9,Rt))),128))],512),[[q,i.product]])]),a("button",{class:"btn btn-primary btn-sm text-white",onClick:Z},"查询"),e[9]||(e[9]=a("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[14]||(e[14]=a("div",{class:"sec-title muted"},[a("span",{class:"bar",style:{background:"#cbd5e1"}}),a("h2",null,"累计数据"),a("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),a("div",Vt,[(l(!0),o(_,null,v(at.value,s=>(l(),o("div",{key:s[0],class:"cum-card"},[a("span",{class:"ico",style:A({background:g(s[0])[1]})},r(g(s[0])[0]),5),a("div",Ot,[a("div",Ht,r(s[1]),1),a("div",Tt,r(_t(s)),1)])]))),128))]),a("div",It,[a("div",Ut,[e[10]||(e[10]=a("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[11]||(e[11]=a("h2",null,"今日数据",-1)),a("span",Gt,r(Y.value),1),e[12]||(e[12]=a("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),a("div",Pt,[(l(!0),o(_,null,v(nt.value,s=>(l(),o("div",{key:s[0],class:"today-card"},[a("span",{class:"accent",style:A({background:g(s[0])[2]})},null,4),a("div",jt,[a("span",Yt,r(s[1]),1),a("span",{class:"ico",style:A({background:g(s[0])[1]})},r(g(s[0])[0]),5)]),a("div",Wt,r(vt(s)),1),a("div",Jt,[b(s).type==="new"?(l(),o("span",Zt,"新")):b(s).type!=="none"?(l(),o("span",{key:1,class:Q(["delta",b(s).type])},r(b(s).arrow)+" "+r(b(s).abs)+"%",3)):X("",!0),e[13]||(e[13]=a("span",null,"较昨日",-1))])]))),128))])]),e[15]||(e[15]=a("div",{class:"sec-title"},[a("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),a("h2",null,"趋势分析"),a("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),a("div",$t,[(l(!0),o(_,null,v(U.value,s=>(l(),o("div",{key:s.key,class:"panel"},[a("div",Kt,[a("span",{class:"panel-dot",style:A({background:s.tint})},[(l(),o("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:s.color},[a("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:s.icon},null,8,Xt)],8,Qt))],4),a("span",te,r(s.title),1),s.key==="device"?(l(),o("span",ee,"当前累计 · 无日期维度")):(l(),o("div",se,[(l(),o(_,null,v(ot,n=>a("button",{key:n[0],class:Q(["tbtn",{"tbtn-on":n[0]===w[s.key]}]),onClick:d=>yt(s.key,Number(n[0]))},r(n[1]),11,ae)),64))]))]),a("div",ne,[a("div",oe,[(l(!0),o(_,null,v(s.stats,n=>(l(),o("div",{key:n[0],class:"stat-box"},[a("div",le,r(n[1]),1),a("div",re,r(mt(s,n)),1)]))),128))]),s.key!=="device"?(l(),o("div",ie,[a("canvas",{ref_for:!0,ref:n=>gt(s.key,n)},null,512)])):X("",!0)])]))),128))])]))}}),me=Ct(ce,[["__scopeId","data-v-7dbe8712"]]);export{me as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgtG1GpI.js b/apps/admin/.output/public/_nuxt/DiInGhGc.js similarity index 98% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgtG1GpI.js rename to apps/admin/.output/public/_nuxt/DiInGhGc.js index f313e5a8..7f66c461 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DgtG1GpI.js +++ b/apps/admin/.output/public/_nuxt/DiInGhGc.js @@ -1 +1 @@ -import{g as M,B as P,c as r,p as n,H as V,a as t,l as R,F as H,r as I,t as i,m as z,v as a,s as L,x as b,y as E,z as O,o as u,n as T,d as q}from"./CCjf5Io-.js";import{u as G}from"./C-6Qe-lq.js";import{u as K}from"./DTVGNZEd.js";import"./42htcooJ.js";const Y={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Q={class:"overflow-x-auto"},W={class:"table table-zebra text-sm"},X={key:0},Z={key:1},tt={class:"font-mono"},st={class:"font-medium"},et={class:"font-mono text-xs text-slate-500"},lt={class:"text-xs text-slate-500"},ot={key:0,class:"text-green-600"},nt={key:1,class:"text-slate-400"},at={class:"flex gap-1"},dt=["onClick"],it=["onClick"],rt={class:"flex items-center gap-3 mb-5"},ut={class:"text-lg font-semibold text-slate-800"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},mt={class:"grid grid-cols-2 gap-4"},bt={class:"form-control"},ft={class:"form-control"},ct={class:"grid grid-cols-3 gap-4"},xt={class:"form-control col-span-2"},vt={class:"form-control"},gt={class:"form-control mt-4"},yt={class:"form-control mt-4"},_t={class:"grid grid-cols-2 gap-4"},kt={class:"form-control"},wt={class:"form-control"},ht={class:"form-control"},St={class:"form-control"},Vt={class:"grid grid-cols-2 gap-4"},Ut={class:"form-control"},Ct={class:"form-control"},Ht={class:"grid grid-cols-2 gap-4 mt-4"},It={class:"form-control"},Et={class:"form-control"},Tt={class:"form-control mt-4"},Dt={class:"flex items-center gap-2 mt-4"},Nt={class:"flex items-center gap-2 cursor-pointer"},$t={class:"mt-4 text-sm space-y-0.5"},jt={class:"flex gap-3 mt-6"},At=["disabled"],Bt=["disabled"],Lt=M({__name:"environments",setup(Ft){const{consoleApi:c}=G(),{success:_,error:m}=K(),x=b("list"),v=b([]),k=b(!1),g=b(!1),f=b(!1),y=b(!1),d=E({show:!1,ok:!1,ssh_ok:!1,ssh_msg:"",etcd_ok:!1,etcd_msg:"",redis_ok:!1,redis_msg:"",nats_ok:!1,nats_msg:""}),D=O(()=>[{key:"ssh",label:"SSH 部署机",ok:d.ssh_ok,msg:d.ssh_msg},{key:"etcd",label:"ETCD",ok:d.etcd_ok,msg:d.etcd_msg},{key:"redis",label:"Redis",ok:d.redis_ok,msg:d.redis_msg},{key:"nats",label:"NATS",ok:d.nats_ok,msg:d.nats_msg}]);function w(){return{id:0,name:"",code:"",remark:"",enabled:!0,ssh_host:"",ssh_port:22,ssh_user:"root",ssh_private_key:"",registry:"",registry_user:"",registry_pass:"",docker_network:"1panel-network",etcd_servers:"",redis_addr:"",redis_pwd:"",nats_url:""}}const l=E(w());function U(o){Object.assign(l,w(),o)}function N(o){return o.ssh_host?`${o.ssh_user||"root"}@${o.ssh_host}:${o.ssh_port||22}`:"-"}function $(o){return o.registry||"-"}async function h(){k.value=!0;try{const o=await c("envs/list",{});v.value=o??[]}catch(o){m(o?.message??"获取环境列表失败"),v.value=[]}finally{k.value=!1}}function p(){f.value=!1,d.show=!1}function S(){x.value="list",h()}function C(o){o?(g.value=!0,U(o)):(g.value=!1,U(w())),p(),x.value="form"}async function j(){if(!l.ssh_host.trim()){m("请先填 SSH 主机");return}y.value=!0;try{const o=await c("envs/test",{...l});Object.assign(d,o,{show:!0}),f.value=!!o.ok,f.value?_("SSH 握手成功,可以保存"):m("SSH 未通过,请检查主机/私钥/用户")}catch(o){m(o?.message??"测试失败")}finally{y.value=!1}}async function A(){if(!f.value){m("请先「测试连接」通过再保存");return}const o={...l};let s="envs/add";g.value&&l.id?(o.id=Number(l.id),s="envs/update"):delete o.id;try{await c(s,o),_("保存成功"),S()}catch(e){m(e?.message??"失败")}}function B(o){window.confirm(`删除环境 #${o} ?(该环境下若有应用关联将被拒绝)`)&&c("envs/del",{id:o}).then(()=>{_("已删除"),h()}).catch(s=>m(s?.message??"失败"))}return P(h),(o,s)=>(u(),r("div",null,[n(t("div",null,[t("div",Y,[s[19]||(s[19]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"环境节点(部署服务器)"),t("p",{class:"text-sm text-slate-400 mt-1"},"部署服务器节点(如 上海 / 日本 / 新加坡):远端 IP、SSH 登录账号与私钥、私有镜像仓库、区域共享基础设施。应用管理里「部署到目标环境」从这里选择、两边对应;下一期即可从页面直接更新服务/部署应用。密钥加密存储,不回显明文。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:s[0]||(s[0]=e=>C())},"+ 新增节点")]),t("div",J,[t("div",Q,[t("table",W,[s[22]||(s[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"名称"),t("th",null,"区域码"),t("th",null,"SSH 目标"),t("th",null,"镜像仓库"),t("th",null,"启用"),t("th",null,"操作")])],-1)),t("tbody",null,[k.value?(u(),r("tr",X,[...s[20]||(s[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):v.value.length?R("",!0):(u(),r("tr",Z,[...s[21]||(s[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无环境",-1)])])),(u(!0),r(H,null,I(v.value,e=>(u(),r("tr",{key:e.id},[t("td",tt,i(e.id),1),t("td",st,i(e.name||""),1),t("td",null,i(e.code||""),1),t("td",et,i(N(e)),1),t("td",lt,i($(e)),1),t("td",null,[e.enabled?(u(),r("span",ot,"是")):(u(),r("span",nt,"否"))]),t("td",null,[t("div",at,[t("button",{class:"btn btn-ghost btn-xs",onClick:F=>C(e)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:F=>B(e.id)},"删除",8,it)])])]))),128))])])])])],512),[[V,x.value==="list"]]),n(t("div",null,[t("div",rt,[t("button",{class:"btn btn-ghost btn-sm",onClick:s[1]||(s[1]=e=>S())},"← 返回"),t("h2",ut,i(g.value?"编辑节点":"新增节点"),1)]),t("div",pt,[t("form",{onSubmit:z(A,["prevent"])},[t("div",mt,[t("div",bt,[s[23]||(s[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"名称 *")],-1)),n(t("input",{"onUpdate:modelValue":s[2]||(s[2]=e=>l.name=e),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 上海生产"},null,512),[[a,l.name]])]),t("div",ft,[s[24]||(s[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"区域码")],-1)),n(t("input",{"onUpdate:modelValue":s[3]||(s[3]=e=>l.code=e),type:"text",class:"input input-bordered w-full",list:"env-code-list",placeholder:"shanghai / japan / singapore"},null,512),[[a,l.code]]),s[25]||(s[25]=t("datalist",{id:"env-code-list"},[t("option",{value:"shanghai"}),t("option",{value:"japan"}),t("option",{value:"singapore"})],-1))])]),s[41]||(s[41]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"SSH 部署目标",-1)),t("div",ct,[t("div",xt,[s[26]||(s[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 主机")],-1)),n(t("input",{"onUpdate:modelValue":s[4]||(s[4]=e=>l.ssh_host=e),type:"text",class:"input input-bordered w-full",placeholder:"139.224.212.237",onInput:p},null,544),[[a,l.ssh_host]])]),t("div",vt,[s[27]||(s[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"端口")],-1)),n(t("input",{"onUpdate:modelValue":s[5]||(s[5]=e=>l.ssh_port=e),type:"number",class:"input input-bordered w-full",placeholder:"22",onInput:p},null,544),[[a,l.ssh_port,void 0,{number:!0}]])])]),t("div",gt,[s[28]||(s[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 用户")],-1)),n(t("input",{"onUpdate:modelValue":s[6]||(s[6]=e=>l.ssh_user=e),type:"text",class:"input input-bordered w-full",placeholder:"root",onInput:p},null,544),[[a,l.ssh_user]])]),t("div",yt,[s[29]||(s[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 私钥 (PEM)")],-1)),n(t("textarea",{"onUpdate:modelValue":s[7]||(s[7]=e=>l.ssh_private_key=e),class:"textarea textarea-bordered w-full font-mono text-xs h-28",placeholder:"-----BEGIN OPENSSH PRIVATE KEY-----",onInput:p},null,544),[[a,l.ssh_private_key]]),s[30]||(s[30]=t("span",{class:"text-xs text-slate-400 mt-1"},"加密存储;编辑时显示 [encrypted] 表示不改,如需更换直接粘贴新私钥。",-1))]),s[42]||(s[42]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"私有镜像仓库 + Docker 网络",-1)),t("div",_t,[t("div",kt,[s[31]||(s[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库地址")],-1)),n(t("input",{"onUpdate:modelValue":s[8]||(s[8]=e=>l.registry=e),type:"text",class:"input input-bordered w-full",placeholder:"docker-registry.ideapsound.com"},null,512),[[a,l.registry]])]),t("div",wt,[s[32]||(s[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Docker 网络")],-1)),n(t("input",{"onUpdate:modelValue":s[9]||(s[9]=e=>l.docker_network=e),type:"text",class:"input input-bordered w-full",placeholder:"1panel-network"},null,512),[[a,l.docker_network]])]),t("div",ht,[s[33]||(s[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库账号")],-1)),n(t("input",{"onUpdate:modelValue":s[10]||(s[10]=e=>l.registry_user=e),type:"text",class:"input input-bordered w-full",autocomplete:"off"},null,512),[[a,l.registry_user]])]),t("div",St,[s[34]||(s[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库密码")],-1)),n(t("input",{"onUpdate:modelValue":s[11]||(s[11]=e=>l.registry_pass=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.registry_pass]])])]),s[43]||(s[43]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"节点共享集群服务",-1)),s[44]||(s[44]=t("p",{class:"text-xs text-slate-400 -mt-2 mb-2"},"该服务器上各应用共用的地址。各应用自己的部署目录、业务库 DSN、镜像、redis 库号等,在「应用管理 → 部署到目标环境」里按应用填。",-1)),t("div",Vt,[t("div",Ut,[s[35]||(s[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"ETCD")],-1)),n(t("input",{"onUpdate:modelValue":s[12]||(s[12]=e=>l.etcd_servers=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"etcd:2379",onInput:p},null,544),[[a,l.etcd_servers]])]),t("div",Ct,[s[36]||(s[36]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"NATS")],-1)),n(t("input",{"onUpdate:modelValue":s[13]||(s[13]=e=>l.nats_url=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"nats://nats:4222",onInput:p},null,544),[[a,l.nats_url]])])]),t("div",Ht,[t("div",It,[s[37]||(s[37]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 地址")],-1)),n(t("input",{"onUpdate:modelValue":s[14]||(s[14]=e=>l.redis_addr=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"redis:6379",onInput:p},null,544),[[a,l.redis_addr]])]),t("div",Et,[s[38]||(s[38]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 密码")],-1)),n(t("input",{"onUpdate:modelValue":s[15]||(s[15]=e=>l.redis_pwd=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.redis_pwd]])])]),t("div",Tt,[s[39]||(s[39]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),n(t("input",{"onUpdate:modelValue":s[16]||(s[16]=e=>l.remark=e),type:"text",class:"input input-bordered w-full"},null,512),[[a,l.remark]])]),t("div",Dt,[t("label",Nt,[n(t("input",{"onUpdate:modelValue":s[17]||(s[17]=e=>l.enabled=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[L,l.enabled]]),s[40]||(s[40]=t("span",{class:"text-sm"},"启用",-1))])]),n(t("div",$t,[(u(!0),r(H,null,I(D.value,e=>(u(),r("div",{key:e.key,class:T(e.ok?"text-green-700":"text-red-600")},[t("span",{class:T(e.ok?"text-green-600":"text-red-500")},i(e.ok?"✓":"✗"),3),q(" "+i(e.label)+":"+i(e.msg),1)],2))),128))],512),[[V,d.show]]),t("div",jt,[t("button",{type:"button",class:"btn btn-ghost",onClick:s[18]||(s[18]=e=>S())},"取消"),t("button",{type:"button",class:"btn btn-outline",disabled:y.value,onClick:j},i(y.value?"测试中...":"测试连接"),9,At),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:!f.value},"保存",8,Bt)]),s[45]||(s[45]=t("p",{class:"text-xs text-slate-400 mt-2"},"需先「测试连接」(SSH 握手成功即可保存;基础设施逐项仅作提示)。",-1))],32)])],512),[[V,x.value==="form"]])]))}});export{Lt as default}; +import{g as M,B as P,c as r,p as n,H as V,a as t,l as R,F as H,r as I,t as i,m as z,v as a,s as L,x as b,y as E,z as O,o as u,n as T,d as q}from"./Dv-LAQo6.js";import{u as G}from"./mz7Huk5H.js";import{u as K}from"./D7SVvy69.js";import"./D0vUT4uH.js";const Y={class:"flex items-center justify-between mb-5"},J={class:"bg-white rounded-xl shadow-sm border border-slate-100"},Q={class:"overflow-x-auto"},W={class:"table table-zebra text-sm"},X={key:0},Z={key:1},tt={class:"font-mono"},st={class:"font-medium"},et={class:"font-mono text-xs text-slate-500"},lt={class:"text-xs text-slate-500"},ot={key:0,class:"text-green-600"},nt={key:1,class:"text-slate-400"},at={class:"flex gap-1"},dt=["onClick"],it=["onClick"],rt={class:"flex items-center gap-3 mb-5"},ut={class:"text-lg font-semibold text-slate-800"},pt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-3xl"},mt={class:"grid grid-cols-2 gap-4"},bt={class:"form-control"},ft={class:"form-control"},ct={class:"grid grid-cols-3 gap-4"},xt={class:"form-control col-span-2"},vt={class:"form-control"},gt={class:"form-control mt-4"},yt={class:"form-control mt-4"},_t={class:"grid grid-cols-2 gap-4"},kt={class:"form-control"},wt={class:"form-control"},ht={class:"form-control"},St={class:"form-control"},Vt={class:"grid grid-cols-2 gap-4"},Ut={class:"form-control"},Ct={class:"form-control"},Ht={class:"grid grid-cols-2 gap-4 mt-4"},It={class:"form-control"},Et={class:"form-control"},Tt={class:"form-control mt-4"},Dt={class:"flex items-center gap-2 mt-4"},Nt={class:"flex items-center gap-2 cursor-pointer"},$t={class:"mt-4 text-sm space-y-0.5"},jt={class:"flex gap-3 mt-6"},At=["disabled"],Bt=["disabled"],Lt=M({__name:"environments",setup(Ft){const{consoleApi:c}=G(),{success:_,error:m}=K(),x=b("list"),v=b([]),k=b(!1),g=b(!1),f=b(!1),y=b(!1),d=E({show:!1,ok:!1,ssh_ok:!1,ssh_msg:"",etcd_ok:!1,etcd_msg:"",redis_ok:!1,redis_msg:"",nats_ok:!1,nats_msg:""}),D=O(()=>[{key:"ssh",label:"SSH 部署机",ok:d.ssh_ok,msg:d.ssh_msg},{key:"etcd",label:"ETCD",ok:d.etcd_ok,msg:d.etcd_msg},{key:"redis",label:"Redis",ok:d.redis_ok,msg:d.redis_msg},{key:"nats",label:"NATS",ok:d.nats_ok,msg:d.nats_msg}]);function w(){return{id:0,name:"",code:"",remark:"",enabled:!0,ssh_host:"",ssh_port:22,ssh_user:"root",ssh_private_key:"",registry:"",registry_user:"",registry_pass:"",docker_network:"1panel-network",etcd_servers:"",redis_addr:"",redis_pwd:"",nats_url:""}}const l=E(w());function U(o){Object.assign(l,w(),o)}function N(o){return o.ssh_host?`${o.ssh_user||"root"}@${o.ssh_host}:${o.ssh_port||22}`:"-"}function $(o){return o.registry||"-"}async function h(){k.value=!0;try{const o=await c("envs/list",{});v.value=o??[]}catch(o){m(o?.message??"获取环境列表失败"),v.value=[]}finally{k.value=!1}}function p(){f.value=!1,d.show=!1}function S(){x.value="list",h()}function C(o){o?(g.value=!0,U(o)):(g.value=!1,U(w())),p(),x.value="form"}async function j(){if(!l.ssh_host.trim()){m("请先填 SSH 主机");return}y.value=!0;try{const o=await c("envs/test",{...l});Object.assign(d,o,{show:!0}),f.value=!!o.ok,f.value?_("SSH 握手成功,可以保存"):m("SSH 未通过,请检查主机/私钥/用户")}catch(o){m(o?.message??"测试失败")}finally{y.value=!1}}async function A(){if(!f.value){m("请先「测试连接」通过再保存");return}const o={...l};let s="envs/add";g.value&&l.id?(o.id=Number(l.id),s="envs/update"):delete o.id;try{await c(s,o),_("保存成功"),S()}catch(e){m(e?.message??"失败")}}function B(o){window.confirm(`删除环境 #${o} ?(该环境下若有应用关联将被拒绝)`)&&c("envs/del",{id:o}).then(()=>{_("已删除"),h()}).catch(s=>m(s?.message??"失败"))}return P(h),(o,s)=>(u(),r("div",null,[n(t("div",null,[t("div",Y,[s[19]||(s[19]=t("div",null,[t("h2",{class:"text-lg font-semibold text-slate-800"},"环境节点(部署服务器)"),t("p",{class:"text-sm text-slate-400 mt-1"},"部署服务器节点(如 上海 / 日本 / 新加坡):远端 IP、SSH 登录账号与私钥、私有镜像仓库、区域共享基础设施。应用管理里「部署到目标环境」从这里选择、两边对应;下一期即可从页面直接更新服务/部署应用。密钥加密存储,不回显明文。")],-1)),t("button",{class:"btn btn-primary btn-sm text-white",onClick:s[0]||(s[0]=e=>C())},"+ 新增节点")]),t("div",J,[t("div",Q,[t("table",W,[s[22]||(s[22]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"名称"),t("th",null,"区域码"),t("th",null,"SSH 目标"),t("th",null,"镜像仓库"),t("th",null,"启用"),t("th",null,"操作")])],-1)),t("tbody",null,[k.value?(u(),r("tr",X,[...s[20]||(s[20]=[t("td",{colspan:"7",class:"text-center py-8"},[t("span",{class:"loading loading-spinner loading-sm"})],-1)])])):v.value.length?R("",!0):(u(),r("tr",Z,[...s[21]||(s[21]=[t("td",{colspan:"7",class:"text-center text-slate-400 py-8"},"暂无环境",-1)])])),(u(!0),r(H,null,I(v.value,e=>(u(),r("tr",{key:e.id},[t("td",tt,i(e.id),1),t("td",st,i(e.name||""),1),t("td",null,i(e.code||""),1),t("td",et,i(N(e)),1),t("td",lt,i($(e)),1),t("td",null,[e.enabled?(u(),r("span",ot,"是")):(u(),r("span",nt,"否"))]),t("td",null,[t("div",at,[t("button",{class:"btn btn-ghost btn-xs",onClick:F=>C(e)},"编辑",8,dt),t("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:F=>B(e.id)},"删除",8,it)])])]))),128))])])])])],512),[[V,x.value==="list"]]),n(t("div",null,[t("div",rt,[t("button",{class:"btn btn-ghost btn-sm",onClick:s[1]||(s[1]=e=>S())},"← 返回"),t("h2",ut,i(g.value?"编辑节点":"新增节点"),1)]),t("div",pt,[t("form",{onSubmit:z(A,["prevent"])},[t("div",mt,[t("div",bt,[s[23]||(s[23]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"名称 *")],-1)),n(t("input",{"onUpdate:modelValue":s[2]||(s[2]=e=>l.name=e),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 上海生产"},null,512),[[a,l.name]])]),t("div",ft,[s[24]||(s[24]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"区域码")],-1)),n(t("input",{"onUpdate:modelValue":s[3]||(s[3]=e=>l.code=e),type:"text",class:"input input-bordered w-full",list:"env-code-list",placeholder:"shanghai / japan / singapore"},null,512),[[a,l.code]]),s[25]||(s[25]=t("datalist",{id:"env-code-list"},[t("option",{value:"shanghai"}),t("option",{value:"japan"}),t("option",{value:"singapore"})],-1))])]),s[41]||(s[41]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"SSH 部署目标",-1)),t("div",ct,[t("div",xt,[s[26]||(s[26]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 主机")],-1)),n(t("input",{"onUpdate:modelValue":s[4]||(s[4]=e=>l.ssh_host=e),type:"text",class:"input input-bordered w-full",placeholder:"139.224.212.237",onInput:p},null,544),[[a,l.ssh_host]])]),t("div",vt,[s[27]||(s[27]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"端口")],-1)),n(t("input",{"onUpdate:modelValue":s[5]||(s[5]=e=>l.ssh_port=e),type:"number",class:"input input-bordered w-full",placeholder:"22",onInput:p},null,544),[[a,l.ssh_port,void 0,{number:!0}]])])]),t("div",gt,[s[28]||(s[28]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 用户")],-1)),n(t("input",{"onUpdate:modelValue":s[6]||(s[6]=e=>l.ssh_user=e),type:"text",class:"input input-bordered w-full",placeholder:"root",onInput:p},null,544),[[a,l.ssh_user]])]),t("div",yt,[s[29]||(s[29]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"SSH 私钥 (PEM)")],-1)),n(t("textarea",{"onUpdate:modelValue":s[7]||(s[7]=e=>l.ssh_private_key=e),class:"textarea textarea-bordered w-full font-mono text-xs h-28",placeholder:"-----BEGIN OPENSSH PRIVATE KEY-----",onInput:p},null,544),[[a,l.ssh_private_key]]),s[30]||(s[30]=t("span",{class:"text-xs text-slate-400 mt-1"},"加密存储;编辑时显示 [encrypted] 表示不改,如需更换直接粘贴新私钥。",-1))]),s[42]||(s[42]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"私有镜像仓库 + Docker 网络",-1)),t("div",_t,[t("div",kt,[s[31]||(s[31]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库地址")],-1)),n(t("input",{"onUpdate:modelValue":s[8]||(s[8]=e=>l.registry=e),type:"text",class:"input input-bordered w-full",placeholder:"docker-registry.ideapsound.com"},null,512),[[a,l.registry]])]),t("div",wt,[s[32]||(s[32]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Docker 网络")],-1)),n(t("input",{"onUpdate:modelValue":s[9]||(s[9]=e=>l.docker_network=e),type:"text",class:"input input-bordered w-full",placeholder:"1panel-network"},null,512),[[a,l.docker_network]])]),t("div",ht,[s[33]||(s[33]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库账号")],-1)),n(t("input",{"onUpdate:modelValue":s[10]||(s[10]=e=>l.registry_user=e),type:"text",class:"input input-bordered w-full",autocomplete:"off"},null,512),[[a,l.registry_user]])]),t("div",St,[s[34]||(s[34]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"仓库密码")],-1)),n(t("input",{"onUpdate:modelValue":s[11]||(s[11]=e=>l.registry_pass=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.registry_pass]])])]),s[43]||(s[43]=t("div",{class:"divider text-xs text-slate-400 mt-6"},"节点共享集群服务",-1)),s[44]||(s[44]=t("p",{class:"text-xs text-slate-400 -mt-2 mb-2"},"该服务器上各应用共用的地址。各应用自己的部署目录、业务库 DSN、镜像、redis 库号等,在「应用管理 → 部署到目标环境」里按应用填。",-1)),t("div",Vt,[t("div",Ut,[s[35]||(s[35]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"ETCD")],-1)),n(t("input",{"onUpdate:modelValue":s[12]||(s[12]=e=>l.etcd_servers=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"etcd:2379",onInput:p},null,544),[[a,l.etcd_servers]])]),t("div",Ct,[s[36]||(s[36]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"NATS")],-1)),n(t("input",{"onUpdate:modelValue":s[13]||(s[13]=e=>l.nats_url=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"nats://nats:4222",onInput:p},null,544),[[a,l.nats_url]])])]),t("div",Ht,[t("div",It,[s[37]||(s[37]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 地址")],-1)),n(t("input",{"onUpdate:modelValue":s[14]||(s[14]=e=>l.redis_addr=e),type:"text",class:"input input-bordered w-full font-mono text-xs",placeholder:"redis:6379",onInput:p},null,544),[[a,l.redis_addr]])]),t("div",Et,[s[38]||(s[38]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"Redis 密码")],-1)),n(t("input",{"onUpdate:modelValue":s[15]||(s[15]=e=>l.redis_pwd=e),type:"password",class:"input input-bordered w-full",autocomplete:"new-password",placeholder:"[encrypted]"},null,512),[[a,l.redis_pwd]])])]),t("div",Tt,[s[39]||(s[39]=t("label",{class:"label"},[t("span",{class:"label-text font-medium"},"备注")],-1)),n(t("input",{"onUpdate:modelValue":s[16]||(s[16]=e=>l.remark=e),type:"text",class:"input input-bordered w-full"},null,512),[[a,l.remark]])]),t("div",Dt,[t("label",Nt,[n(t("input",{"onUpdate:modelValue":s[17]||(s[17]=e=>l.enabled=e),type:"checkbox",class:"toggle toggle-primary toggle-sm"},null,512),[[L,l.enabled]]),s[40]||(s[40]=t("span",{class:"text-sm"},"启用",-1))])]),n(t("div",$t,[(u(!0),r(H,null,I(D.value,e=>(u(),r("div",{key:e.key,class:T(e.ok?"text-green-700":"text-red-600")},[t("span",{class:T(e.ok?"text-green-600":"text-red-500")},i(e.ok?"✓":"✗"),3),q(" "+i(e.label)+":"+i(e.msg),1)],2))),128))],512),[[V,d.show]]),t("div",jt,[t("button",{type:"button",class:"btn btn-ghost",onClick:s[18]||(s[18]=e=>S())},"取消"),t("button",{type:"button",class:"btn btn-outline",disabled:y.value,onClick:j},i(y.value?"测试中...":"测试连接"),9,At),t("button",{type:"submit",class:"btn btn-primary text-white",disabled:!f.value},"保存",8,Bt)]),s[45]||(s[45]=t("p",{class:"text-xs text-slate-400 mt-2"},"需先「测试连接」(SSH 握手成功即可保存;基础设施逐项仅作提示)。",-1))],32)])],512),[[V,x.value==="form"]])]))}});export{Lt as default}; diff --git a/apps/admin/.output/public/_nuxt/Dm8P2zvb.js b/apps/admin/.output/public/_nuxt/Dm8P2zvb.js deleted file mode 100644 index 23fd0669..00000000 --- a/apps/admin/.output/public/_nuxt/Dm8P2zvb.js +++ /dev/null @@ -1 +0,0 @@ -import{L as Ye,l as Ze}from"./ChQPCk92.js";import{g as Me,o as n,c as o,F as p,a as e,r as g,d as L,t as i,l as h,n as F,z as R,_ as Ae,B as et,p as r,q as re,m as Se,O as I,v as y,s as B,H as $e,x,y as Te,I as D,C as se}from"./CCjf5Io-.js";import{u as tt}from"./C-6Qe-lq.js";import{u as lt}from"./DTVGNZEd.js";import"./42htcooJ.js";const st={class:"lang-select"},nt={class:"lang-chip-name"},ot=["onClick"],at={key:0,class:"lang-empty"},it={key:0,class:"lang-dd"},dt={class:"lang-dd-sum"},ut={class:"lang-dd-panel"},ct=["checked","onChange"],rt={class:"lang-opt-code"},pt={class:"lang-opt-name"},vt=["value","disabled"],bt=["value"],mt=Me({__name:"LangSelect",props:{modelValue:{},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},options:{default:void 0}},emits:["update:modelValue"],setup(N,{emit:E}){const U=N,w=E,Y=R(()=>U.options&&U.options.length?U.options:Ye),V=R(()=>(U.modelValue||"").split(",").map(T=>T.trim()).filter(Boolean));function S(T){return Ze(T)}function $(T){if(U.disabled)return;const A=V.value.slice(),b=A.indexOf(T);b>=0?A.splice(b,1):A.push(T),w("update:modelValue",A.join(","))}function G(T){w("update:modelValue",T.target.value)}return(T,A)=>(n(),o("div",st,[N.multiple?(n(),o(p,{key:0},[e("div",{class:F(["lang-chips",{"lang-disabled":N.disabled}])},[(n(!0),o(p,null,g(V.value,b=>(n(),o("span",{key:b,class:"lang-chip"},[L(i(b),1),e("span",nt,i(S(b)),1),e("button",{type:"button",class:"lang-x",onClick:J=>$(b)},"×",8,ot)]))),128)),V.value.length?h("",!0):(n(),o("span",at,"未选择语言"))],2),N.disabled?h("",!0):(n(),o("details",it,[e("summary",dt,"+ 选择语言(已选 "+i(V.value.length)+")",1),e("div",ut,[(n(!0),o(p,null,g(Y.value,b=>(n(),o("label",{key:b.code,class:"lang-opt"},[e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:V.value.includes(b.code),onChange:J=>$(b.code)},null,40,ct),e("span",rt,i(b.code),1),e("span",pt,i(b.name),1)]))),128))])]))],64)):(n(),o("select",{key:1,class:"select select-bordered select-sm w-full text-xs",value:N.modelValue,disabled:N.disabled,onChange:G},[A[0]||(A[0]=e("option",{value:""},"(未设置)",-1)),(n(!0),o(p,null,g(Y.value,b=>(n(),o("option",{key:b.code,value:b.code},i(b.code)+" · "+i(b.name),9,bt))),128))],40,vt))]))}}),xt=Object.assign(Ae(mt,[["__scopeId","data-v-4903af59"]]),{__name:"LangSelect"}),yt={key:0,class:"mb-4 rounded-lg px-4 py-3 text-sm",style:{background:"#fffbeb",border:"1px solid #fde68a",color:"#92400e"}},_t={class:"flex items-center justify-between mb-5"},ht={class:"flex items-center gap-3"},gt=["value"],kt=["value"],ft={key:1,class:"rounded-lg px-3 py-2 mb-4 text-xs",style:{background:"#fefce8",border:"1px solid #fde047",color:"#854d0e"}},wt={key:2,class:"flex flex-col gap-6"},Vt={class:"flex items-center gap-2 mb-3"},Ct={class:"text-sm font-semibold text-slate-700"},Ut={class:"text-xs text-slate-400"},St={class:"svc-grid"},$t=["onClick"],Tt={class:"flex items-start gap-3"},Mt={style:{"min-width":"0",flex:"1"}},At={class:"flex items-center gap-2"},zt={class:"font-semibold text-slate-800 text-sm truncate"},Lt=["title"],Ft={class:"text-xs text-slate-500 mt-2 line-clamp-2",style:{"min-height":"32px"}},jt={class:"flex flex-wrap items-center gap-1 mt-2"},Dt={key:0,class:"provider-chip"},Nt={class:"field-count"},Ot={key:1,class:"lock-badge"},It=["onClick"],Bt={class:"text-xs text-slate-400 mt-1"},Rt={key:3,class:"bg-white rounded-2xl border border-slate-100 shadow-sm text-center text-slate-300 py-20"},Et={class:"svc-box"},Ht={class:"flex items-center justify-between mb-5"},Gt={class:"flex items-center gap-3"},Jt={class:"text-base font-semibold text-slate-800"},Pt={class:"text-xs text-slate-400 mt-0.5"},qt={key:0},Kt={class:"flex gap-2"},Qt={class:"grid grid-cols-2 gap-4 mb-4"},Wt={class:"form-control"},Xt={class:"form-control"},Yt={class:"form-control mb-4"},Zt={class:"mb-4"},el={class:"text-xs text-slate-500 ml-2"},tl={key:0,class:"text-xs text-slate-400 py-4 text-center"},ll={key:1,class:"overflow-x-auto"},sl={class:"table text-xs"},nl=["onUpdate:modelValue","title"],ol=["onUpdate:modelValue"],al={class:"text-center"},il=["onUpdate:modelValue"],dl={class:"relative"},ul=["type","onUpdate:modelValue"],cl=["onClick"],rl=["onUpdate:modelValue"],pl=["onClick"],vl={class:"wizard-steps mb-5"},bl={key:0},ml={key:0},xl={class:"type-grid"},yl=["onClick"],_l={class:"text-sm text-slate-700 mt-2"},hl={class:"flex items-center justify-between mb-3"},gl={class:"text-sm text-slate-500"},kl={class:"type-grid"},fl=["onClick"],wl={class:"provider-chip"},Vl={class:"text-sm text-slate-700 mt-2"},Cl={class:"text-[11px] text-slate-400 mt-0.5"},Ul={key:0,class:"text-xs text-slate-400 mt-2"},Sl={class:"flex items-center justify-between mb-3"},$l={class:"flex items-center gap-2"},Tl={key:0,class:"provider-chip"},Ml={class:"flex gap-2"},Al={class:"grid grid-cols-2 gap-4 mb-4"},zl={class:"form-control"},Ll={class:"form-control"},Fl={class:"grid grid-cols-2 gap-4 mb-4"},jl={class:"form-control"},Dl={class:"form-control"},Nl={class:"form-control mb-4"},Ol={key:0,class:"text-xs text-slate-400 py-4 text-center"},Il={key:1,class:"overflow-x-auto"},Bl={class:"table text-xs"},Rl=["onUpdate:modelValue","title"],El=["onUpdate:modelValue"],Hl={class:"text-center"},Gl=["onUpdate:modelValue"],Jl={class:"relative"},Pl=["type","onUpdate:modelValue"],ql=["onClick"],Kl=["onUpdate:modelValue"],Ql=["onClick"],Wl={key:0,class:"text-center py-10 text-slate-400"},Xl={class:"flex items-center justify-between mb-5"},Yl={class:"flex items-center gap-3"},Zl={class:"text-base font-semibold text-slate-800"},es={class:"badge badge-warning badge-sm mt-0.5"},ts={class:"flex gap-2"},ls={class:"rounded-lg px-3 py-2 mb-4 text-xs",style:{background:"#fefce8",border:"1px solid #fde047",color:"#854d0e"}},ss={class:"overflow-x-auto"},ns={class:"table text-xs"},os=["title"],as={class:"text-slate-500"},is={class:"text-center"},ds={key:0,class:"disabled-badge"},us={key:1,class:"override-badge"},cs={key:2,class:"inherit-badge"},rs={class:"text-center"},ps=["onUpdate:modelValue"],vs={class:"relative"},bs=["type","onUpdate:modelValue","disabled"],ms=["onClick"],xs=["onUpdate:modelValue","disabled","placeholder"],ys={key:0},_s={class:"divider text-xs text-slate-400 my-3"},hs={key:0,class:"text-xs text-slate-400 py-2 text-center"},gs={key:1,class:"overflow-x-auto"},ks={class:"table text-xs"},fs=["onUpdate:modelValue","title"],ws=["onUpdate:modelValue"],Vs={class:"text-center"},Cs=["onUpdate:modelValue"],Us={class:"relative"},Ss=["type","onUpdate:modelValue"],$s=["onClick"],Ts=["onUpdate:modelValue"],Ms=["onClick"],As={class:"modal-overlay",style:{"z-index":"120"}},zs={class:"sync-box"},Ls={class:"flex items-start gap-3 mb-4"},Fs={style:{width:"42px",height:"42px",background:"linear-gradient(135deg,#4f46e5,#7c3aed)","border-radius":"13px",display:"flex","align-items":"center","justify-content":"center","flex-shrink":"0"}},js={style:{width:"20px",height:"20px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},Ds={class:"text-xs text-slate-400 mt-1"},Ns=["innerHTML"],Os={class:"flex items-center justify-between mb-1"},Is={class:"flex gap-2"},Bs={class:"sync-region-grid"},Rs=["onClick"],Es=["checked","onClick"],Hs={class:"modal-overlay",style:{"z-index":"130"}},Gs={class:"tpl-box"},Js={class:"flex items-center justify-between mb-4"},Ps={class:"flex gap-2"},qs={class:"tpl-list"},Ks={class:"text-xs font-semibold text-slate-500 mb-1"},Qs={style:{"min-width":"0",flex:"1"}},Ws={class:"flex items-center gap-2"},Xs={class:"font-semibold text-sm text-slate-800 truncate"},Ys={class:"provider-chip"},Zs={key:0,class:"badge badge-xs badge-ghost"},en={class:"text-xs text-slate-400 mt-0.5"},tn={class:"flex gap-1"},ln=["onClick"],sn=["onClick"],nn={key:0,class:"text-xs text-slate-400 text-center py-6"},on={class:"flex items-center justify-between mb-4"},an={class:"text-base font-semibold text-slate-800"},dn={class:"flex gap-2"},un={class:"grid grid-cols-2 gap-3 mb-3"},cn={class:"form-control"},rn=["disabled"],pn={class:"form-control"},vn=["value"],bn={class:"form-control"},mn={class:"form-control"},xn={class:"form-control mb-3"},yn={class:"overflow-x-auto",style:{"max-height":"34vh"}},_n={class:"table text-xs"},hn=["onUpdate:modelValue","title"],gn=["onUpdate:modelValue"],kn={class:"text-center"},fn=["onUpdate:modelValue"],wn=["onUpdate:modelValue"],Vn=["onClick"],Cn={key:0},Un=Me({__name:"serviceconfig",setup(N){const E=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}],U=[{v:1,label:"STT 语音识别",short:"STT",color:"#0369a1",bg:"#dbeafe"},{v:8,label:"录音文件识别",short:"录音识别",color:"#0e7490",bg:"#cffafe"},{v:2,label:"TTS 语音合成",short:"TTS",color:"#7c3aed",bg:"#ede9fe"},{v:3,label:"MT 机器翻译",short:"MT",color:"#059669",bg:"#dcfce7"},{v:4,label:"AST 端到端翻译",short:"AST",color:"#c2410c",bg:"#fff7ed"},{v:5,label:"LLM 文本大模型",short:"文本LLM",color:"#b45309",bg:"#fef9c3"},{v:9,label:"多媒体大模型",short:"多媒体LLM",color:"#9333ea",bg:"#f3e8ff"},{v:7,label:"STS 端到端对话",short:"STS",color:"#be185d",bg:"#fce7f3"},{v:6,label:"存储 OSS/COS",short:"存储",color:"#475569",bg:"#f1f5f9"}],{webApi:w,consoleApi:Y}=tt(),{success:V,error:S}=lt(),$=x(""),G=x([]);async function T(){try{const s=await Y("products/list",{});G.value=(s??[]).map(l=>l.name).filter(Boolean)}catch{G.value=[]}}function A(){M(),te()}function b(s){return U.find(l=>l.v===s)||{short:"?",color:"#999",bg:"#eee",v:0,label:""}}function J(s){return(s||"").split(",").map(l=>parseInt(l)||0).filter(l=>l>0)}function pe(s){return(s.fields||[]).filter(l=>l.encrypted).length}const ne=x(!0),P=x([]),v=x(null),C=x(0),Z=x(!1),H=x("default"),u=Te({id:"",name:"",provider:"",description:"",enable:!1}),_=x(0),f=x([]),q=x(""),k=x(1),K=x([]),O=x([]),oe=x(!1),Q=x([]),ee=R(()=>{const s=E.find(l=>l.value===C.value);return s?s.label:"区域"+C.value}),ve=R(()=>{const s=U.map(c=>({...c,items:P.value.filter(t=>J(t.categories).includes(c.v))})).filter(c=>c.items.length),l=P.value.filter(c=>!J(c.categories).length);return l.length&&s.push({v:0,label:"未分类",short:"未分类",color:"#64748b",bg:"#f1f5f9",items:l}),s}),ze=R(()=>U.map(s=>({cat:s.v,label:s.label,items:Q.value.filter(l=>l.category===s.v)})).filter(s=>s.items.length));async function te(){try{const s=await w("getsvcconfigs",{app_name:$.value});P.value=s?.items??[],ne.value=!0}catch{ne.value=!1,P.value=[];return}if(v.value){const s=P.value.find(l=>l.id===v.value.id);s&&(v.value=s)}}async function le(){try{const s=await w("getsvctemplates",{});Q.value=s?.items??[]}catch{Q.value=[]}}function Le(){M()}function Fe(s){s&&(v.value=s,Z.value=!0,C.value===0?je():Ne())}function M(){Z.value=!1,v.value=null}function je(){const s=v.value;u.id=s.id,u.name=s.name||"",u.provider=s.provider||"",u.description=s.description||"",u.enable=!!s.enable,_.value=J(s.categories)[0]||0,f.value=JSON.parse(JSON.stringify(s.fields||[])).map(l=>({...l,_show:!1})),H.value="default"}function ae(s=0){v.value=null,u.id="",u.name="",u.provider="",u.description="",u.enable=!1,_.value=s,f.value=[],q.value="",k.value=s?2:1,H.value="new",Z.value=!0}const be=R(()=>Q.value.filter(s=>s.category===_.value));function De(s){_.value!==s&&(_.value=s,q.value="",u.provider="",f.value=[]),k.value=2}function me(s){s?(q.value=s.id,u.provider=s.provider||"",u.name||(u.name=s.name||""),u.id||(u.id=s.id||""),u.description||(u.description=s.description||""),f.value=(s.fields||[]).map(l=>({key:l.key,description:l.description,type:l.type||"",encrypted:!!l.encrypted,def_value:l.def_value||"",sort:l.sort,_show:!1}))):(q.value="",u.provider="",f.value=[]),k.value=3}function xe(){f.value.push({key:"",description:"",encrypted:!1,def_value:"",sort:f.value.length,_show:!1})}function ye(s){f.value.splice(s,1),f.value.forEach((l,c)=>{l.sort=c})}async function Ne(){const s=v.value;oe.value=!0,H.value="region";try{const c=(await w("getsvcregionoverride",{app_name:$.value,svc_id:s.id,region:C.value}))?.fields??[];K.value=c.filter(t=>!t.region_only).map(t=>({key:t.key,description:t.description,type:t.type||"",encrypted:!!t.encrypted,is_overridden:!!t.is_overridden,disabled:!!t.disabled,value:t.value||"",_input:t.encrypted?"":t.is_overridden&&t.value||"",_show:!1})),O.value=c.filter(t=>t.region_only).map(t=>({key:t.key,description:t.description,encrypted:!!t.encrypted,_input:t.encrypted?"":t.value||"",_show:!1}))}catch(l){S(l?.message??"加载区域分叉失败"),K.value=[],O.value=[]}finally{oe.value=!1}}function Oe(){O.value.push({key:"",description:"",encrypted:!1,_input:"",_show:!1})}function Ie(s){O.value.splice(s,1)}function Be(s){const l={name:u.name||"",provider:u.provider||"",description:u.description||"",categories:_.value?String(_.value):"",enable:u.enable||!1,fields:f.value.map(c=>({key:c.key,description:c.description,type:c.type||"",encrypted:c.encrypted,def_value:c.def_value,sort:c.sort}))};return s?l.id=u.id||"":l.id=v.value.id,l.app_name=$.value,l}function Re(){const s={},l=[];K.value.forEach(t=>{s[t.key]=t._input||"",t.disabled&&l.push(t.key)});const c=O.value.filter(t=>(t.key||"").trim()).map((t,d)=>({key:t.key.trim(),description:t.description,encrypted:t.encrypted,def_value:t._input||"",sort:d}));return{overrides:s,disabled_keys:l,extra_fields:c}}async function _e(s){const l=s||!v.value;if(C.value===0){const c=Be(l);if(!c.id||!c.name)return S("服务ID 和名称 必填"),!1;const t=l?"addsvcconfig":"updatesvcconfig";try{const d=await w(t,c);return v.value=d,await te(),V("保存成功"),!0}catch(d){return S(d?.message??"保存失败"),!1}}else{const{overrides:c,disabled_keys:t,extra_fields:d}=Re();try{return await w("savesvcregionoverride",{app_name:$.value,svc_id:v.value.id,region:C.value,overrides:c,disabled_keys:t,extra_fields:d}),V("区域分叉已保存"),!0}catch(a){return S(a?.message??"保存失败"),!1}}}async function Ee(){if(v.value&&window.confirm("确定删除服务「"+v.value.name+"」及其所有区域分叉?")){try{await w("delsvcconfig",{app_name:$.value,id:v.value.id})}catch(s){S(s?.message??"删除失败");return}M(),V("已删除"),await te()}}const ie=x(!1),de=x(!1),he=x(""),ge=x(""),j=x([]),ke=R(()=>E.filter(s=>s.value!==C.value));function ue(s){de.value=s;const l=v.value?v.value.name:u.name||"新服务",c=C.value===0;he.value=c?"「"+l+"」默认配置将保存,可同步推送到其他区域。":"「"+l+"」在当前区域的字段分叉将保存,可同步到其他区域。",ge.value=c?"✦ 同步内容:各字段默认值推送为目标区域「覆盖值」,目标区域原有分叉将被替换。":"✦ 同步内容:当前区域的值覆盖 / 区域专属字段 / 停用字段整体复制到目标区域。",j.value=[],ie.value=!0}function fe(s){const l=j.value.indexOf(s);l>=0?j.value.splice(l,1):j.value.push(s)}function we(s){j.value=s?ke.value.map(l=>l.value):[]}function Ve(){ie.value=!1}async function He(){Ve(),await _e(de.value)&&M()}async function Ge(){const s=j.value.slice();if(Ve(),!await _e(de.value))return;const c=v.value?v.value.id:null;if(!s.length||!c){M();return}let t=0;try{t=(await w("syncsvctoregins",{app_name:$.value,svc_id:c,src_region:C.value,target_regions:s}))?.synced??0}catch(a){S(a?.message??"同步失败");return}const d=s.map(a=>{const Ue=E.find(Xe=>Xe.value===a);return Ue?Ue.label:"区域"+a});V("已保存并同步到:"+d.join("、")+"("+t+" 个)"),M()}const ce=x(!1),W=x("list"),X=x(!1),m=Te({id:"",category:2,provider:"",name:"",description:""}),z=x([]);function Je(){W.value="list",ce.value=!0,le()}function Pe(){ce.value=!1}function Ce(s){s?(X.value=!0,m.id=s.id,m.category=s.category||2,m.provider=s.provider||"",m.name=s.name||"",m.description=s.description||"",z.value=(s.fields||[]).map(l=>({key:l.key,description:l.description,type:l.type||"",encrypted:!!l.encrypted,def_value:l.def_value||"",sort:l.sort}))):(X.value=!1,m.id="",m.category=2,m.provider="",m.name="",m.description="",z.value=[]),W.value="form"}function qe(){z.value.push({key:"",description:"",encrypted:!1,def_value:"",sort:z.value.length})}function Ke(s){z.value.splice(s,1),z.value.forEach((l,c)=>{l.sort=c})}async function Qe(){if(!m.id.trim()||!m.name.trim()||!m.provider.trim()){S("模板ID / 展示名 / 服务商标识 必填");return}const s={id:m.id.trim(),category:Number(m.category)||0,provider:m.provider.trim(),name:m.name.trim(),description:m.description.trim(),fields:z.value.map((l,c)=>({key:l.key,description:l.description,type:l.type||"",encrypted:l.encrypted,def_value:l.def_value,sort:c}))};try{await w(X.value?"updatesvctemplate":"addsvctemplate",s)}catch(l){S(l?.message??"保存失败");return}V("模板已保存"),await le(),W.value="list"}async function We(s){if(window.confirm("确定删除模板「"+s.name+"」?"+(s.builtin?"(内置模板下次启动会被重新补回)":""))){try{await w("delsvctemplate",{id:s.id})}catch(l){S(l?.message??"删除失败");return}V("已删除"),await le()}}return et(()=>{T(),te(),le()}),(s,l)=>{const c=xt;return n(),o("div",null,[ne.value?h("",!0):(n(),o("div",yt," ⚠ 「第三方服务配置」后端接口暂不可用(连接失败),请检查 console 服务是否运行。 ")),e("div",_t,[l[30]||(l[30]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"第三方服务配置"),e("p",{class:"text-xs text-slate-400 mt-1"},[L("按服务类型分组管理已接入的第三方服务(火山引擎、阿里云、Azure 等)。默认展示"),e("b",null,"全局默认"),L("配置,可切换到具体应用;区域默认"),e("b",null,"中国"),L(",切换区域后点击卡片可为该区域覆盖字段值。")])],-1)),e("div",ht,[r(e("select",{"onUpdate:modelValue":l[0]||(l[0]=t=>$.value=t),class:"select select-bordered select-sm",onChange:A},[l[28]||(l[28]=e("option",{value:""},"全局默认",-1)),(n(!0),o(p,null,g(G.value,t=>(n(),o("option",{key:t,value:t},"应用:"+i(t),9,gt))),128))],544),[[re,$.value]]),r(e("select",{"onUpdate:modelValue":l[1]||(l[1]=t=>C.value=t),class:"select select-bordered select-sm",onChange:Le},[l[29]||(l[29]=e("option",{value:0},"默认(全区域)",-1)),(n(),o(p,null,g(E,t=>e("option",{key:t.value,value:t.value},i(t.label),9,kt)),64))],544),[[re,C.value,void 0,{number:!0}]]),e("button",{class:"btn btn-ghost btn-sm",onClick:Je},"服务商模板"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:ae},"+ 添加服务")])]),C.value!==0?(n(),o("div",ft," ✦ 当前处于「"+i(ee.value)+"」区域视图:点击服务卡片编辑该区域的字段分叉(覆盖值 / 停用字段 / 区域专属字段)。要改服务本身的默认配置,请切回「默认(全区域)」。 ",1)):h("",!0),ve.value.length?(n(),o("div",wt,[(n(!0),o(p,null,g(ve.value,t=>(n(),o("section",{key:t.v},[e("div",Vt,[e("span",{class:"cat-chip",style:I({color:t.color,background:t.bg})},i(t.short),5),e("h3",Ct,i(t.label),1),e("span",Ut,i(t.items.length)+" 个服务",1),l[31]||(l[31]=e("div",{class:"flex-1 h-px bg-slate-100 ml-2"},null,-1))]),e("div",St,[(n(!0),o(p,null,g(t.items,d=>(n(),o("div",{key:d.id,class:"svc-card",onClick:a=>Fe(d)},[e("div",Tt,[e("div",{class:"svc-logo",style:I({background:d.color||"#6366f1"})},i(d.icon||(d.name||"").charAt(0)),5),e("div",Mt,[e("div",At,[e("span",zt,i(d.name),1),e("span",{class:F(["badge badge-xs",d.enable?"badge-success":"badge-ghost"])},i(d.enable?"启用":"停用"),3)]),e("p",{class:"text-[11px] text-slate-400 font-mono truncate mt-0.5",title:d.id},i(d.id),9,Lt)])]),e("p",Ft,i(d.description||"—"),1),e("div",jt,[d.provider?(n(),o("span",Dt,i(d.provider),1)):h("",!0),e("span",Nt,i((d.fields||[]).length)+" 字段",1),pe(d)?(n(),o("span",Ot,"🔒"+i(pe(d)),1)):h("",!0)])],8,$t))),128)),e("div",{class:"svc-card add-card",onClick:d=>ae(t.v)},[l[32]||(l[32]=e("span",{class:"text-2xl text-slate-300"},"+",-1)),e("span",Bt,"添加"+i(t.short)+"服务",1)],8,It)])]))),128))])):(n(),o("div",Rt,[l[33]||(l[33]=e("div",{class:"text-5xl mb-3"},"⚙️",-1)),l[34]||(l[34]=e("p",{class:"text-sm mb-4"},"尚未配置任何第三方服务",-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[2]||(l[2]=t=>ae())},"+ 添加服务")])),Z.value?(n(),o("div",{key:4,class:"modal-overlay",onClick:Se(M,["self"])},[e("div",Et,[H.value==="default"&&v.value?(n(),o(p,{key:0},[e("div",Ht,[e("div",Gt,[e("div",{class:"svc-logo",style:I({background:v.value.color||"#6366f1",width:"44px",height:"44px",fontSize:"20px"})},i(v.value.icon||(v.value.name||"").charAt(0)),5),e("div",null,[e("h3",Jt,i(v.value.name),1),e("p",Pt,[L(i(v.value.id),1),u.provider?(n(),o("span",qt," · 服务商 "+i(u.provider),1)):h("",!0)])])]),e("div",Kt,[e("button",{class:"btn btn-error btn-sm btn-outline",onClick:Ee},"删除服务"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[3]||(l[3]=t=>ue(!1))},"保存"),e("button",{class:"btn btn-ghost btn-sm",onClick:M},"关闭")])]),l[42]||(l[42]=e("div",{class:"divider text-xs text-slate-400 my-3"},"基本信息",-1)),e("div",Qt,[e("div",Wt,[l[35]||(l[35]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务名称 *")],-1)),r(e("input",{"onUpdate:modelValue":l[4]||(l[4]=t=>u.name=t),class:"input input-bordered"},null,512),[[y,u.name]])]),e("div",Xt,[l[36]||(l[36]=e("label",{class:"label"},[e("span",{class:"label-text"},"启用")],-1)),r(e("input",{"onUpdate:modelValue":l[5]||(l[5]=t=>u.enable=t),type:"checkbox",class:"toggle toggle-primary mt-3"},null,512),[[B,u.enable]])])]),e("div",Yt,[l[37]||(l[37]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务描述")],-1)),r(e("input",{"onUpdate:modelValue":l[6]||(l[6]=t=>u.description=t),class:"input input-bordered"},null,512),[[y,u.description]])]),e("div",Zt,[l[38]||(l[38]=e("p",{class:"text-sm font-medium text-slate-700 mb-2"},"服务类型",-1)),_.value?(n(),o("span",{key:0,class:"cat-chip",style:I({color:b(_.value).color,background:b(_.value).bg})},i(b(_.value).short),5)):h("",!0),e("span",el,i(_.value?b(_.value).label:"未设置"),1),l[39]||(l[39]=e("span",{class:"text-[11px] text-slate-400 ml-2"},"(类型在创建时确定,不可更改)",-1))]),l[43]||(l[43]=e("div",{class:"divider text-xs text-slate-400 my-3"},"配置字段(全区域共用)",-1)),e("div",null,[f.value.length?(n(),o("div",ll,[e("table",sl,[l[41]||(l[41]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(n(!0),o(p,null,g(f.value,(t,d)=>(n(),o("tr",{key:d},[e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.key=a,placeholder:"key",title:t.key},null,8,nl),[[y,t.key]])]),e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.description=a,placeholder:"用途描述"},null,8,ol),[[y,t.description]])]),e("td",al,[r(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":a=>t.encrypted=a},null,8,il),[[B,t.encrypted]])]),e("td",null,[t.type==="langs"?(n(),D(c,{key:0,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(n(),D(c,{key:1,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a},null,8,["modelValue","onUpdate:modelValue"])):t.encrypted?(n(),o(p,{key:2},[e("div",dl,[r(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":a=>t.def_value=a,placeholder:"留空保留原值"},null,8,ul),[[se,t.def_value]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:a=>t._show=!t._show},i(t._show?"隐藏":"显示"),9,cl)]),l[40]||(l[40]=e("span",{class:"lock-badge ml-1"},"🔒 加密",-1))],64)):r((n(),o("input",{key:3,class:"field-input","onUpdate:modelValue":a=>t.def_value=a},null,8,rl)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:a=>ye(d)},"×",8,pl)])]))),128))])])])):(n(),o("p",tl,"尚无字段,点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:xe},"+ 添加字段")])],64)):H.value==="new"?(n(),o(p,{key:1},[e("div",{class:"flex items-center justify-between mb-4"},[l[44]||(l[44]=e("h3",{class:"text-base font-semibold text-slate-800"},"新增第三方服务",-1)),e("button",{class:"btn btn-ghost btn-sm",onClick:M},"取消")]),e("div",vl,[e("div",{class:F(["wstep",{on:k.value>=1,cur:k.value===1}]),onClick:l[7]||(l[7]=t=>k.value=1)},[l[45]||(l[45]=L("① 服务类型",-1)),_.value?(n(),o("span",bl," · "+i(b(_.value).short),1)):h("",!0)],2),l[47]||(l[47]=e("div",{class:"wline"},null,-1)),e("div",{class:F(["wstep",{on:k.value>=2,cur:k.value===2,disabled:!_.value}]),onClick:l[8]||(l[8]=t=>_.value&&(k.value=2))},[l[46]||(l[46]=L("② 服务商",-1)),u.provider?(n(),o("span",ml," · "+i(u.provider),1)):h("",!0)],2),l[48]||(l[48]=e("div",{class:"wline"},null,-1)),e("div",{class:F(["wstep",{on:k.value>=3,cur:k.value===3,disabled:k.value<3}])},"③ 配置",2)]),k.value===1?(n(),o(p,{key:0},[l[49]||(l[49]=e("p",{class:"text-sm text-slate-500 mb-3"},"请选择要接入的服务类型(每个服务归属单一类型,独立配置):",-1)),e("div",xl,[(n(),o(p,null,g(U,t=>e("div",{key:t.v,class:F(["type-card",{on:_.value===t.v}]),onClick:d=>De(t.v)},[e("span",{class:"cat-chip",style:I({color:t.color,background:t.bg})},i(t.short),5),e("span",_l,i(t.label),1)],10,yl)),64))])],64)):k.value===2?(n(),o(p,{key:1},[e("div",hl,[e("p",gl,"为「"+i(b(_.value).label)+"」选择服务商:",1),e("button",{class:"btn btn-ghost btn-xs",onClick:l[9]||(l[9]=t=>k.value=1)},"← 上一步")]),e("div",kl,[(n(!0),o(p,null,g(be.value,t=>(n(),o("div",{key:t.id,class:F(["type-card",{on:q.value===t.id}]),onClick:d=>me(t)},[e("span",wl,i(t.provider),1),e("span",Vl,i(t.name),1),e("span",Cl,i((t.fields||[]).length)+" 字段",1)],10,fl))),128)),e("div",{class:"type-card",onClick:l[10]||(l[10]=t=>me(null))},[...l[50]||(l[50]=[e("span",{class:"provider-chip",style:{background:"#f1f5f9",color:"#475569"}},"自定义",-1),e("span",{class:"text-sm text-slate-700 mt-2"},"空白自定义",-1),e("span",{class:"text-[11px] text-slate-400 mt-0.5"},"手动添加字段",-1)])])]),be.value.length?h("",!0):(n(),o("p",Ul,"该类型暂无内置模板,可选「空白自定义」,或到「服务商模板」新增。"))],64)):(n(),o(p,{key:2},[e("div",Sl,[e("div",$l,[e("span",{class:"cat-chip",style:I({color:b(_.value).color,background:b(_.value).bg})},i(b(_.value).short),5),u.provider?(n(),o("span",Tl,i(u.provider),1)):h("",!0)]),e("div",Ml,[e("button",{class:"btn btn-ghost btn-xs",onClick:l[11]||(l[11]=t=>k.value=2)},"← 上一步"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[12]||(l[12]=t=>ue(!0))},"创建")])]),e("div",Al,[e("div",zl,[l[51]||(l[51]=e("label",{class:"label"},[e("span",{class:"label-text"},[L("服务ID * "),e("span",{class:"text-slate-400 text-xs"},"(唯一,如 tts_azure)")])],-1)),r(e("input",{"onUpdate:modelValue":l[13]||(l[13]=t=>u.id=t),class:"input input-bordered font-mono",placeholder:"tts_azure"},null,512),[[y,u.id]])]),e("div",Ll,[l[52]||(l[52]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务名称 *")],-1)),r(e("input",{"onUpdate:modelValue":l[14]||(l[14]=t=>u.name=t),class:"input input-bordered",placeholder:"微软 Azure TTS"},null,512),[[y,u.name]])])]),e("div",Fl,[e("div",jl,[l[53]||(l[53]=e("label",{class:"label"},[e("span",{class:"label-text"},[L("服务商标识 "),e("span",{class:"text-slate-400 text-xs"},"(如 azure/alibaba)")])],-1)),r(e("input",{"onUpdate:modelValue":l[15]||(l[15]=t=>u.provider=t),class:"input input-bordered font-mono",placeholder:"azure"},null,512),[[y,u.provider]])]),e("div",Dl,[l[54]||(l[54]=e("label",{class:"label"},[e("span",{class:"label-text"},"启用")],-1)),r(e("input",{"onUpdate:modelValue":l[16]||(l[16]=t=>u.enable=t),type:"checkbox",class:"toggle toggle-primary mt-3"},null,512),[[B,u.enable]])])]),e("div",Nl,[l[55]||(l[55]=e("label",{class:"label"},[e("span",{class:"label-text"},"服务描述")],-1)),r(e("input",{"onUpdate:modelValue":l[17]||(l[17]=t=>u.description=t),class:"input input-bordered",placeholder:"简述该服务的用途"},null,512),[[y,u.description]])]),l[58]||(l[58]=e("div",{class:"divider text-xs text-slate-400 my-3"},"配置字段",-1)),e("div",null,[f.value.length?(n(),o("div",Il,[e("table",Bl,[l[57]||(l[57]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(n(!0),o(p,null,g(f.value,(t,d)=>(n(),o("tr",{key:d},[e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.key=a,placeholder:"key",title:t.key},null,8,Rl),[[y,t.key]])]),e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.description=a,placeholder:"用途描述"},null,8,El),[[y,t.description]])]),e("td",Hl,[r(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":a=>t.encrypted=a},null,8,Gl),[[B,t.encrypted]])]),e("td",null,[t.type==="langs"?(n(),D(c,{key:0,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(n(),D(c,{key:1,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a},null,8,["modelValue","onUpdate:modelValue"])):t.encrypted?(n(),o(p,{key:2},[e("div",Jl,[r(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":a=>t.def_value=a,placeholder:"留空保留原值"},null,8,Pl),[[se,t.def_value]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:a=>t._show=!t._show},i(t._show?"隐藏":"显示"),9,ql)]),l[56]||(l[56]=e("span",{class:"lock-badge ml-1"},"🔒 加密",-1))],64)):r((n(),o("input",{key:3,class:"field-input","onUpdate:modelValue":a=>t.def_value=a},null,8,Kl)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:a=>ye(d)},"×",8,Ql)])]))),128))])])])):(n(),o("p",Ol,"尚无字段,选模板自动带出或点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:xe},"+ 添加字段")])],64))],64)):H.value==="region"&&v.value?(n(),o(p,{key:2},[oe.value?(n(),o("div",Wl,"加载中...")):(n(),o(p,{key:1},[e("div",Xl,[e("div",Yl,[e("div",{class:"svc-logo",style:I({background:v.value.color||"#6366f1",width:"44px",height:"44px",fontSize:"20px"})},i(v.value.icon||(v.value.name||"").charAt(0)),5),e("div",null,[e("h3",Zl,i(v.value.name),1),e("span",es,i(ee.value)+" 分叉模式",1)])]),e("div",ts,[e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[18]||(l[18]=t=>ue(!1))},"保存分叉"),e("button",{class:"btn btn-ghost btn-sm",onClick:M},"关闭")])]),e("div",ls," ✦ 当前编辑「"+i(ee.value)+"」的字段分叉:默认字段可覆盖值或勾选「不适用」停用;也可新增本区域专属字段。留空的覆盖字段继承默认值,加密字段留空保留已存储密文。 ",1),l[64]||(l[64]=e("p",{class:"text-sm font-medium text-slate-700 mb-2"},"默认字段",-1)),e("div",ss,[e("table",ns,[l[61]||(l[61]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-24 text-center"},"状态"),e("th",{class:"w-20 text-center"},"本区域不适用"),e("th",null,"有效值")])],-1)),e("tbody",null,[(n(!0),o(p,null,g(K.value,(t,d)=>(n(),o("tr",{key:d,class:F({"opacity-50":t.disabled})},[e("td",{class:"font-mono text-slate-700 break-all",title:t.key},i(t.key),9,os),e("td",as,i(t.description),1),e("td",is,[t.disabled?(n(),o("span",ds,"停用")):t.is_overridden?(n(),o("span",us,"覆盖")):(n(),o("span",cs,"继承"))]),e("td",rs,[r(e("input",{type:"checkbox",class:"checkbox checkbox-xs","onUpdate:modelValue":a=>t.disabled=a},null,8,ps),[[B,t.disabled]])]),e("td",null,[t.type==="langs"?(n(),D(c,{key:0,modelValue:t._input,"onUpdate:modelValue":a=>t._input=a,multiple:!0,disabled:t.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"])):t.type==="lang"?(n(),D(c,{key:1,modelValue:t._input,"onUpdate:modelValue":a=>t._input=a,disabled:t.disabled},null,8,["modelValue","onUpdate:modelValue","disabled"])):t.encrypted?(n(),o(p,{key:2},[e("div",vs,[r(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":a=>t._input=a,disabled:t.disabled,placeholder:"留空继承默认"},null,8,bs),[[se,t._input]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:a=>t._show=!t._show},i(t._show?"隐藏":"显示"),9,ms)]),l[59]||(l[59]=e("span",{class:"lock-badge ml-1"},"🔒",-1))],64)):r((n(),o("input",{key:3,class:"field-input","onUpdate:modelValue":a=>t._input=a,disabled:t.disabled,placeholder:"留空继承:"+(t.value||"")},null,8,xs)),[[y,t._input]])])],2))),128)),K.value.length?h("",!0):(n(),o("tr",ys,[...l[60]||(l[60]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-3"},"该服务尚无默认字段",-1)])]))])])]),e("div",_s,i(ee.value)+" 专属字段",1),e("div",null,[O.value.length?(n(),o("div",gs,[e("table",ks,[l[63]||(l[63]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(n(!0),o(p,null,g(O.value,(t,d)=>(n(),o("tr",{key:d},[e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.key=a,placeholder:"key",title:t.key},null,8,fs),[[y,t.key]])]),e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.description=a,placeholder:"用途描述"},null,8,ws),[[y,t.description]])]),e("td",Vs,[r(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":a=>t.encrypted=a},null,8,Cs),[[B,t.encrypted]])]),e("td",null,[t.encrypted?(n(),o(p,{key:0},[e("div",Us,[r(e("input",{type:t._show?"text":"password",class:"field-input pr-14","onUpdate:modelValue":a=>t._input=a,placeholder:"留空保留原值"},null,8,Ss),[[se,t._input]]),e("button",{type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-slate-400 hover:text-slate-700",onClick:a=>t._show=!t._show},i(t._show?"隐藏":"显示"),9,$s)]),l[62]||(l[62]=e("span",{class:"lock-badge ml-1"},"🔒",-1))],64)):r((n(),o("input",{key:1,class:"field-input","onUpdate:modelValue":a=>t._input=a},null,8,Ts)),[[y,t._input]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:a=>Ie(d)},"×",8,Ms)])]))),128))])])])):(n(),o("p",hs,"尚无区域专属字段,点击下方添加")),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:Oe},"+ 添加区域专属字段")])],64))],64)):h("",!0)])])):h("",!0),r(e("div",As,[e("div",zs,[e("div",Ls,[e("div",Fs,[(n(),o("svg",js,[...l[65]||(l[65]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"},null,-1)])]))]),e("div",null,[l[66]||(l[66]=e("h3",{class:"text-base font-semibold text-slate-800"},"同步到其他区域",-1)),e("p",Ds,i(he.value),1)])]),e("div",{class:"text-xs px-3 py-2 rounded-lg mb-3",style:{background:"#f0fdf4",border:"1px solid #bbf7d0",color:"#15803d"},innerHTML:ge.value},null,8,Ns),e("div",Os,[l[67]||(l[67]=e("span",{class:"text-xs font-semibold text-slate-500"},"选择目标区域",-1)),e("div",Is,[e("button",{class:"btn btn-ghost btn-xs",onClick:l[19]||(l[19]=t=>we(!0))},"全选"),e("button",{class:"btn btn-ghost btn-xs",onClick:l[20]||(l[20]=t=>we(!1))},"清空")])]),e("div",Bs,[(n(!0),o(p,null,g(ke.value,t=>(n(),o("label",{key:t.value,class:F(["sync-region-item",{checked:j.value.includes(t.value)}]),onClick:d=>fe(t.value)},[e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary",checked:j.value.includes(t.value),onClick:Se(d=>fe(t.value),["stop"])},null,8,Es),e("span",null,i(t.label),1)],10,Rs))),128))]),l[68]||(l[68]=e("p",{class:"text-[11px] text-slate-400 mb-5"},"⚠ 已勾选区域将被当前配置(值覆盖 / 区域专属字段 / 停用字段)整体替换;加密字段密文一并同步。",-1)),e("div",{class:"flex gap-3 justify-end"},[e("button",{class:"btn btn-ghost",onClick:He},"仅保存当前区域"),e("button",{class:"btn btn-primary text-white",onClick:Ge},"保存并同步")])])],512),[[$e,ie.value]]),r(e("div",Hs,[e("div",Gs,[W.value==="list"?(n(),o(p,{key:0},[e("div",Js,[l[69]||(l[69]=e("div",null,[e("h3",{class:"text-base font-semibold text-slate-800"},"服务商模板"),e("p",{class:"text-xs text-slate-400 mt-1"},"模板是字段预设,新增服务时可一键带出。内置模板可编辑;删除后重启会被重新补回。")],-1)),e("div",Ps,[e("button",{class:"btn btn-primary btn-sm text-white",onClick:l[21]||(l[21]=t=>Ce())},"+ 新增模板"),e("button",{class:"btn btn-ghost btn-sm",onClick:Pe},"关闭")])]),e("div",qs,[(n(!0),o(p,null,g(ze.value,t=>(n(),o("div",{key:t.cat,class:"mb-3"},[e("p",Ks,i(t.label),1),(n(!0),o(p,null,g(t.items,d=>(n(),o("div",{key:d.id,class:"tpl-row"},[e("div",Qs,[e("div",Ws,[e("span",Xs,i(d.name),1),e("span",Ys,i(d.provider),1),d.builtin?(n(),o("span",Zs,"内置")):h("",!0)]),e("p",en,i(d.id)+" · "+i((d.fields||[]).length)+" 字段",1)]),e("div",tn,[e("button",{class:"btn btn-ghost btn-xs",onClick:a=>Ce(d)},"编辑",8,ln),e("button",{class:"btn btn-ghost btn-xs text-error",onClick:a=>We(d)},"删除",8,sn)])]))),128))]))),128)),Q.value.length?h("",!0):(n(),o("p",nn,"暂无模板"))])],64)):(n(),o(p,{key:1},[e("div",on,[e("h3",an,i(X.value?"编辑模板":"新增模板"),1),e("div",dn,[e("button",{class:"btn btn-ghost btn-sm",onClick:l[22]||(l[22]=t=>W.value="list")},"返回"),e("button",{class:"btn btn-primary btn-sm text-white",onClick:Qe},"保存")])]),e("div",un,[e("div",cn,[l[70]||(l[70]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"模板ID *")],-1)),r(e("input",{"onUpdate:modelValue":l[23]||(l[23]=t=>m.id=t),disabled:X.value,class:"input input-bordered input-sm font-mono",placeholder:"tts_azure"},null,8,rn),[[y,m.id]])]),e("div",pn,[l[71]||(l[71]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"类别 *")],-1)),r(e("select",{"onUpdate:modelValue":l[24]||(l[24]=t=>m.category=t),class:"select select-bordered select-sm"},[(n(),o(p,null,g(U,t=>e("option",{key:t.v,value:t.v},i(t.label),9,vn)),64))],512),[[re,m.category,void 0,{number:!0}]])]),e("div",bn,[l[72]||(l[72]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"服务商标识 *")],-1)),r(e("input",{"onUpdate:modelValue":l[25]||(l[25]=t=>m.provider=t),class:"input input-bordered input-sm font-mono",placeholder:"azure"},null,512),[[y,m.provider]])]),e("div",mn,[l[73]||(l[73]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"展示名 *")],-1)),r(e("input",{"onUpdate:modelValue":l[26]||(l[26]=t=>m.name=t),class:"input input-bordered input-sm",placeholder:"微软 Azure TTS"},null,512),[[y,m.name]])])]),e("div",xn,[l[74]||(l[74]=e("label",{class:"label"},[e("span",{class:"label-text text-xs"},"描述")],-1)),r(e("input",{"onUpdate:modelValue":l[27]||(l[27]=t=>m.description=t),class:"input input-bordered input-sm"},null,512),[[y,m.description]])]),l[77]||(l[77]=e("p",{class:"text-sm font-medium text-slate-700 mb-1"},"字段",-1)),e("div",yn,[e("table",_n,[l[76]||(l[76]=e("thead",null,[e("tr",null,[e("th",{class:"w-44"},"字段名"),e("th",null,"字段描述"),e("th",{class:"w-16 text-center"},"加密"),e("th",null,"默认/提示值"),e("th",{class:"w-12"})])],-1)),e("tbody",null,[(n(!0),o(p,null,g(z.value,(t,d)=>(n(),o("tr",{key:d},[e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.key=a,placeholder:"key",title:t.key},null,8,hn),[[y,t.key]])]),e("td",null,[r(e("input",{class:"field-input","onUpdate:modelValue":a=>t.description=a,placeholder:"用途描述"},null,8,gn),[[y,t.description]])]),e("td",kn,[r(e("input",{type:"checkbox",class:"checkbox checkbox-xs checkbox-primary","onUpdate:modelValue":a=>t.encrypted=a},null,8,fn),[[B,t.encrypted]])]),e("td",null,[t.type==="langs"?(n(),D(c,{key:0,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a,multiple:!0},null,8,["modelValue","onUpdate:modelValue"])):t.type==="lang"?(n(),D(c,{key:1,modelValue:t.def_value,"onUpdate:modelValue":a=>t.def_value=a},null,8,["modelValue","onUpdate:modelValue"])):r((n(),o("input",{key:2,class:"field-input","onUpdate:modelValue":a=>t.def_value=a,placeholder:"可留空"},null,8,wn)),[[y,t.def_value]])]),e("td",null,[e("button",{class:"btn btn-ghost btn-xs text-error",onClick:a=>Ke(d)},"×",8,Vn)])]))),128)),z.value.length?h("",!0):(n(),o("tr",Cn,[...l[75]||(l[75]=[e("td",{colspan:"5",class:"text-center text-slate-400 py-2"},"尚无字段",-1)])]))])])]),e("button",{class:"btn btn-ghost btn-sm mt-2 text-primary",onClick:qe},"+ 添加字段")],64))])],512),[[$e,ce.value]])])}}}),zn=Ae(Un,[["__scopeId","data-v-63b09b5b"]]);export{zn as default}; diff --git a/apps/admin/.output/public/_nuxt/CCjf5Io-.js b/apps/admin/.output/public/_nuxt/Dv-LAQo6.js similarity index 74% rename from apps/admin/.output/public/_nuxt/CCjf5Io-.js rename to apps/admin/.output/public/_nuxt/Dv-LAQo6.js index a9cfbf53..5967d943 100644 --- a/apps/admin/.output/public/_nuxt/CCjf5Io-.js +++ b/apps/admin/.output/public/_nuxt/Dv-LAQo6.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./vrAtns1A.js","./C-6Qe-lq.js","./42htcooJ.js","./DTVGNZEd.js","./_name_.DZJkgavl.css","./C8IUv0mA.js","./accounts.vxGnCxY1.css","./-Au2A1Cv.js","./index.BXNugdH5.css","./-jnCp83s.js","./calltranslate.B6r4Q8-j.css","./BhbTh2Nc.js","./1800ei7D.js","./dashboard.bI0rfjl_.css","./swrhJgBy.js","./DgtG1GpI.js","./DA9Dlh7r.js","./BFMExc8z.js","./DzMPECf6.js","./DKuebVMC.js","./ChQPCk92.js","./meetingsvc.Cnu-3MbB.css","./B7QETiRo.js","./1A4O2es5.js","./D3KKJ_NK.js","./Dm8P2zvb.js","./serviceconfig.C7KF_6ms.css","./CCes3qcB.js","./statlog.C1q_3yEh.css","./C0cd7Vyx.js","./systemconfig.MaL8_AEr.css","./JlX4SqFM.js","./CFPPaSCZ.js","./index.4nAkFRy2.css","./CWpRLpao.js","./CA44cC15.js","./default.miyQHb0v.css","./S5V4LTkJ.js","./b15UHpcb.js","./error-404.Dm-MYrAh.css","./SwS86oeZ.js","./error-500.DM8oqBl3.css"])))=>i.map(i=>d[i]); -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function po(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const fe={},_n=[],pt=()=>{},Ca=()=>!1,lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wr=e=>e.startsWith("onUpdate:"),Te=Object.assign,go=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},uu=Object.prototype.hasOwnProperty,ie=(e,t)=>uu.call(e,t),G=Array.isArray,bn=e=>In(e)==="[object Map]",Mn=e=>In(e)==="[object Set]",Jo=e=>In(e)==="[object Date]",fu=e=>In(e)==="[object RegExp]",Y=e=>typeof e=="function",he=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",Aa=e=>(se(e)||Y(e))&&Y(e.then)&&Y(e.catch),Pa=Object.prototype.toString,In=e=>Pa.call(e),du=e=>In(e).slice(8,-1),mo=e=>In(e)==="[object Object]",qr=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),zr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},hu=/-\w/g,Le=zr(e=>e.replace(hu,t=>t.slice(1).toUpperCase())),pu=/\B([A-Z])/g,Kt=zr(e=>e.replace(pu,"-$1").toLowerCase()),Gr=zr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=zr(e=>e?`on${Gr(e)}`:""),dt=(e,t)=>!Object.is(e,t),vn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ka=e=>{const t=he(e)?Number(e):NaN;return isNaN(t)?e:t};let Xo;const Xr=()=>Xo||(Xo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Yr(e){if(G(e)){const t={};for(let n=0;n{if(n){const r=n.split(mu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Qr(e){let t="";if(he(e))t=e;else if(G(e))for(let n=0;nBt(n,t))}const Ma=e=>!!(e&&e.__v_isRef===!0),Su=e=>he(e)?e:e==null?"":G(e)||se(e)&&(e.toString===Pa||!Y(e.toString))?Ma(e)?Su(e.value):JSON.stringify(e,Ia,2):String(e),Ia=(e,t)=>Ma(t)?Ia(e,t.value):bn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[hs(r,o)+" =>"]=s,n),{})}:Mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:Ue(t)?hs(t):se(t)&&!G(t)&&!mo(t)?String(t):t,hs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class La{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Ee&&(Ee.active?(this.parent=Ee,this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Ee===this)Ee=this.prevScope;else{let t=Ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(zn){let t=zn;for(zn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;qn;){let t=qn;for(qn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function ja(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Fa(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),wo(r),Tu(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ba(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ba(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tr)||(e.globalVersion=tr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ds(e))))return;e.flags|=2;const t=e.dep,n=de,r=tt;de=e,tt=!0;try{ja(e);const s=e.fn(e._value);(t.version===0||dt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{de=n,tt=r,Fa(e),e.flags&=-3}}function wo(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)wo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Tu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let tt=!0;const Ua=[];function At(){Ua.push(tt),tt=!1}function Pt(){const e=Ua.pop();tt=e===void 0?!0:e}function Yo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=de;de=void 0;try{t()}finally{de=n}}}let tr=0;class Ru{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Eo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!de||!tt||de===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==de)n=this.activeLink=new Ru(de,this),de.deps?(n.prevDep=de.depsTail,de.depsTail.nextDep=n,de.depsTail=n):de.deps=de.depsTail=n,Va(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=de.depsTail,n.nextDep=void 0,de.depsTail.nextDep=n,de.depsTail=n,de.deps===n&&(de.deps=r)}return n}trigger(t){this.version++,tr++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{vo()}}}function Va(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Va(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ar=new WeakMap,tn=Symbol(""),Hs=Symbol(""),nr=Symbol("");function xe(e,t,n){if(tt&&de){let r=Ar.get(e);r||Ar.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Eo),s.map=r,s.key=n),s.track()}}function Et(e,t,n,r,s,o){const i=Ar.get(e);if(!i){tr++;return}const a=l=>{l&&l.trigger()};if(bo(),t==="clear")i.forEach(a);else{const l=G(e),f=l&&qr(n);if(l&&n==="length"){const c=Number(r);i.forEach((u,h)=>{(h==="length"||h===nr||!Ue(h)&&h>=c)&&a(u)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),f&&a(i.get(nr)),t){case"add":l?f&&a(i.get("length")):(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"delete":l||(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"set":bn(e)&&a(i.get(tn));break}}vo()}function Cu(e,t){const n=Ar.get(e);return n&&n.get(t)}function un(e){const t=ne(e);return t===e?t:(xe(t,"iterate",nr),Be(e)?t:t.map(rt))}function es(e){return xe(e=ne(e),"iterate",nr),e}function ut(e,t){return mt(e)?Tn(gt(e)?rt(t):t):rt(t)}const Au={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,e=>ut(this,e))},concat(...e){return un(this).concat(...e.map(t=>G(t)?un(t):t))},entries(){return gs(this,"entries",e=>(e[1]=ut(this,e[1]),e))},every(e,t){return yt(this,"every",e,t,void 0,arguments)},filter(e,t){return yt(this,"filter",e,t,n=>n.map(r=>ut(this,r)),arguments)},find(e,t){return yt(this,"find",e,t,n=>ut(this,n),arguments)},findIndex(e,t){return yt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return yt(this,"findLast",e,t,n=>ut(this,n),arguments)},findLastIndex(e,t){return yt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return yt(this,"forEach",e,t,void 0,arguments)},includes(...e){return ms(this,"includes",e)},indexOf(...e){return ms(this,"indexOf",e)},join(e){return un(this).join(e)},lastIndexOf(...e){return ms(this,"lastIndexOf",e)},map(e,t){return yt(this,"map",e,t,void 0,arguments)},pop(){return $n(this,"pop")},push(...e){return $n(this,"push",e)},reduce(e,...t){return Qo(this,"reduce",e,t)},reduceRight(e,...t){return Qo(this,"reduceRight",e,t)},shift(){return $n(this,"shift")},some(e,t){return yt(this,"some",e,t,void 0,arguments)},splice(...e){return $n(this,"splice",e)},toReversed(){return un(this).toReversed()},toSorted(e){return un(this).toSorted(e)},toSpliced(...e){return un(this).toSpliced(...e)},unshift(...e){return $n(this,"unshift",e)},values(){return gs(this,"values",e=>ut(this,e))}};function gs(e,t,n){const r=es(e),s=r[t]();return r!==e&&!Be(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Pu=Array.prototype;function yt(e,t,n,r,s,o){const i=es(e),a=i!==e&&!Be(e),l=i[t];if(l!==Pu[t]){const u=l.apply(e,o);return a?rt(u):u}let f=n;i!==e&&(a?f=function(u,h){return n.call(this,ut(e,u),h,e)}:n.length>2&&(f=function(u,h){return n.call(this,u,h,e)}));const c=l.call(i,f,r);return a&&s?s(c):c}function Qo(e,t,n,r){const s=es(e),o=s!==e&&!Be(e);let i=n,a=!1;s!==e&&(o?(a=r.length===0,i=function(f,c,u){return a&&(a=!1,f=ut(e,f)),n.call(this,f,ut(e,c),u,e)}):n.length>3&&(i=function(f,c,u){return n.call(this,f,c,u,e)}));const l=s[t](i,...r);return a?ut(e,l):l}function ms(e,t,n){const r=ne(e);xe(r,"iterate",nr);const s=r[t](...n);return(s===-1||s===!1)&&ts(n[0])?(n[0]=ne(n[0]),r[t](...n)):s}function $n(e,t,n=[]){At(),bo();const r=ne(e)[t].apply(e,n);return vo(),Pt(),r}const xu=po("__proto__,__v_isRef,__isVue"),Ka=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function ku(e){Ue(e)||(e=String(e));const t=ne(this);return xe(t,"has",e),t.hasOwnProperty(e)}class Wa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Fu:Ja:o?Ga:za).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=G(t);if(!s){let l;if(i&&(l=Au[n]))return l;if(n==="hasOwnProperty")return ku}const a=Reflect.get(t,n,pe(t)?t:r);if((Ue(n)?Ka.has(n):xu(n))||(s||xe(t,"get",n),o))return a;if(pe(a)){const l=i&&qr(n)?a:a.value;return s&&se(l)?Ns(l):l}return se(a)?s?Ns(a):ot(a):a}}class qa extends Wa{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=G(t)&&qr(n);if(!this._isShallow){const f=mt(o);if(!Be(r)&&!mt(r)&&(o=ne(o),r=ne(r)),!i&&pe(o)&&!pe(r))return f||(o.value=r),!0}const a=i?Number(n)e,hr=e=>Reflect.getPrototypeOf(e);function Du(e,t,n){return function(...r){const s=this.__v_raw,o=ne(s),i=bn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,f=s[e](...r),c=n?$s:t?Tn:rt;return!t&&xe(o,"iterate",l?Hs:tn),Te(Object.create(f),{next(){const{value:u,done:h}=f.next();return h?{value:u,done:h}:{value:a?[c(u[0]),c(u[1])]:c(u),done:h}}})}}function pr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Hu(e,t){const n={get(s){const o=this.__v_raw,i=ne(o),a=ne(s);e||(dt(s,a)&&xe(i,"get",s),xe(i,"get",a));const{has:l}=hr(i),f=t?$s:e?Tn:rt;if(l.call(i,s))return f(o.get(s));if(l.call(i,a))return f(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&xe(ne(s),"iterate",tn),s.size},has(s){const o=this.__v_raw,i=ne(o),a=ne(s);return e||(dt(s,a)&&xe(i,"has",s),xe(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=ne(a),f=t?$s:e?Tn:rt;return!e&&xe(l,"iterate",tn),a.forEach((c,u)=>s.call(o,f(c),f(u),i))}};return Te(n,e?{add:pr("add"),set:pr("set"),delete:pr("delete"),clear:pr("clear")}:{add(s){const o=ne(this),i=hr(o),a=ne(s),l=!t&&!Be(s)&&!mt(s)?a:s;return i.has.call(o,l)||dt(s,l)&&i.has.call(o,s)||dt(a,l)&&i.has.call(o,a)||(o.add(l),Et(o,"add",l,l)),this},set(s,o){!t&&!Be(o)&&!mt(o)&&(o=ne(o));const i=ne(this),{has:a,get:l}=hr(i);let f=a.call(i,s);f||(s=ne(s),f=a.call(i,s));const c=l.call(i,s);return i.set(s,o),f?dt(o,c)&&Et(i,"set",s,o):Et(i,"add",s,o),this},delete(s){const o=ne(this),{has:i,get:a}=hr(o);let l=i.call(o,s);l||(s=ne(s),l=i.call(o,s)),a&&a.call(o,s);const f=o.delete(s);return l&&Et(o,"delete",s,void 0),f},clear(){const s=ne(this),o=s.size!==0,i=s.clear();return o&&Et(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Du(s,e,t)}),n}function So(e,t){const n=Hu(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(ie(n,s)&&s in r?n:r,s,o)}const $u={get:So(!1,!1)},Nu={get:So(!1,!0)},ju={get:So(!0,!1)};const za=new WeakMap,Ga=new WeakMap,Ja=new WeakMap,Fu=new WeakMap;function Bu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ot(e){return mt(e)?e:To(e,!1,Mu,$u,za)}function Ze(e){return To(e,!1,Lu,Nu,Ga)}function Ns(e){return To(e,!0,Iu,ju,Ja)}function To(e,t,n,r,s){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Bu(du(e));if(i===0)return e;const a=new Proxy(e,i===2?r:n);return s.set(e,a),a}function gt(e){return mt(e)?gt(e.__v_raw):!!(e&&e.__v_isReactive)}function mt(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function ts(e){return e?!!e.__v_raw:!1}function ne(e){const t=e&&e.__v_raw;return t?ne(t):e}function Ro(e){return!ie(e,"__v_skip")&&Object.isExtensible(e)&&xa(e,"__v_skip",!0),e}const rt=e=>se(e)?ot(e):e,Tn=e=>se(e)?Ns(e):e;function pe(e){return e?e.__v_isRef===!0:!1}function nt(e){return Xa(e,!1)}function Ut(e){return Xa(e,!0)}function Xa(e,t){return pe(e)?e:new Uu(e,t)}class Uu{constructor(t,n){this.dep=new Eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ne(t),this._value=n?t:rt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Be(t)||mt(t);t=r?t:ne(t),dt(t,n)&&(this._rawValue=t,this._value=r?t:rt(t),this.dep.trigger())}}function ae(e){return pe(e)?e.value:e}function ft(e){return Y(e)?e():ae(e)}const Vu={get:(e,t,n)=>t==="__v_raw"?e:ae(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return pe(s)&&!pe(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Ya(e){return gt(e)?e:new Proxy(e,Vu)}function Ku(e){const t=G(e)?new Array(e.length):{};for(const n in e)t[n]=Za(e,n);return t}class Wu{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=Ue(n)?n:String(n),this._raw=ne(t);let s=!0,o=t;if(!G(t)||Ue(this._key)||!qr(this._key))do s=!ts(o)||Be(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=ae(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&pe(this._raw[this._key])){const n=this._object[this._key];if(pe(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Cu(this._raw,this._key)}}class qu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Qa(e,t,n){return pe(e)?e:Y(e)?new qu(e):se(e)&&arguments.length>1?Za(e,t,n):nt(e)}function Za(e,t,n){return new Wu(e,t,n)}class zu{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&de!==this)return Na(this,!0),!0}get value(){const t=this.dep.track();return Ba(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Gu(e,t,n=!1){let r,s;return Y(e)?r=e:(r=e.get,s=e.set),new zu(r,s,n)}const gr={},Pr=new WeakMap;let Qt;function Ju(e,t=!1,n=Qt){if(n){let r=Pr.get(n);r||Pr.set(n,r=[]),r.push(e)}}function Xu(e,t,n=fe){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,f=_=>s?_:Be(_)||s===!1||s===0?St(_,1):St(_);let c,u,h,d,m=!1,y=!1;if(pe(e)?(u=()=>e.value,m=Be(e)):gt(e)?(u=()=>f(e),m=!0):G(e)?(y=!0,m=e.some(_=>gt(_)||Be(_)),u=()=>e.map(_=>{if(pe(_))return _.value;if(gt(_))return f(_);if(Y(_))return l?l(_,2):_()})):Y(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){At();try{h()}finally{Pt()}}const _=Qt;Qt=c;try{return l?l(e,3,[d]):e(d)}finally{Qt=_}}:u=pt,t&&s){const _=u,w=s===!0?1/0:s;u=()=>St(_(),w)}const C=Zr(),E=()=>{c.stop(),C&&C.active&&go(C.effects,c)};if(o&&t){const _=t;t=(...w)=>{const k=_(...w);return E(),k}}let v=y?new Array(e.length).fill(gr):gr;const p=_=>{if(!(!(c.flags&1)||!c.dirty&&!_))if(t){const w=c.run();if(_||s||m||(y?w.some((k,P)=>dt(k,v[P])):dt(w,v))){h&&h();const k=Qt;Qt=c;try{const P=[w,v===gr?void 0:y&&v[0]===gr?[]:v,d];v=w,l?l(t,3,P):t(...P)}finally{Qt=k}}}else c.run()};return a&&a(p),c=new Ha(u),c.scheduler=i?()=>i(p,!1):p,d=_=>Ju(_,!1,c),h=c.onStop=()=>{const _=Pr.get(c);if(_){if(l)l(_,4);else for(const w of _)w();Pr.delete(c)}},t?r?p(!0):v=c.run():i?i(p.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function St(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,pe(e))St(e.value,t,n);else if(G(e))for(let r=0;r{St(r,t,n)});else if(mo(e)){for(const r in e)St(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&St(e[r],t,n)}return e}function cr(e,t,n,r){try{return r?e(...r):e()}catch(s){Ln(s,t,n)}}function Xe(e,t,n,r){if(Y(e)){const s=cr(e,t,n,r);return s&&Aa(s)&&s.catch(o=>{Ln(o,t,n)}),s}if(G(e)){const s=[];for(let o=0;o>>1,s=Ie[r],o=sr(s);o=sr(n)?Ie.push(e):Ie.splice(Qu(t),0,e),e.flags|=1,tl()}}function tl(){xr||(xr=el.then(nl))}function rr(e){G(e)?wn.push(...e):Ht&&e.id===-1?Ht.splice(hn+1,0,e):e.flags&1||(wn.push(e),e.flags|=1),tl()}function Zo(e,t,n=lt+1){for(;nsr(n)-sr(r));if(wn.length=0,Ht){Ht.push(...t);return}for(Ht=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function nl(e){try{for(lt=0;lt{r._d&&$r(-1);const o=Or(t);let i;try{i=e(...s)}finally{Or(o),r._d&&$r(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function t_(e,t){if(Pe===null)return e;const n=as(Pe),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&Y(t)?t.call(r&&r.proxy):t}}function ns(){return!!(an()||nn)}const Zu=Symbol.for("v-scx"),ef=()=>Ce(Zu);function tf(e,t){return Po(e,null,t)}function Rt(e,t,n){return Po(e,t,n)}function Po(e,t,n=fe){const{immediate:r,deep:s,flush:o,once:i}=n,a=Te({},n),l=t&&r||!t&&o!=="post";let f;if(An){if(o==="sync"){const d=ef();f=d.__watcherHandles||(d.__watcherHandles=[])}else if(!l){const d=()=>{};return d.stop=pt,d.resume=pt,d.pause=pt,d}}const c=Ae;a.call=(d,m,y)=>Xe(d,c,m,y);let u=!1;o==="post"?a.scheduler=d=>{Se(d,c&&c.suspense)}:o!=="sync"&&(u=!0,a.scheduler=(d,m)=>{m?d():Co(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const h=Xu(e,t,a);return An&&(f?f.push(h):l&&h()),h}function nf(e,t,n){const r=this.proxy,s=he(e)?e.includes(".")?sl(r,e):()=>r[e]:e.bind(r,r);let o;Y(t)?o=t:(o=t.handler,n=t);const i=dr(this),a=Po(s,o.bind(r),n);return i(),a}function sl(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,ze=Symbol("_leaveCb"),Nn=Symbol("_enterCb");function sf(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ko(()=>{e.isMounted=!0}),fr(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],il={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We},al=e=>{const t=e.subTree;return t.component?al(t.component):t},of={name:"BaseTransition",props:il,setup(e,{slots:t}){const n=an(),r=sf();return()=>{const s=t.default&&ul(t.default(),!0),o=s&&s.length?ll(s):n.subTree?Zf():void 0;if(!o)return;const i=ne(e),{mode:a}=i;if(r.isLeaving)return ys(o);const l=ei(o);if(!l)return ys(o);let f=js(l,i,r,n,u=>f=u);l.type!==be&&Rn(l,f);let c=n.subTree&&ei(n.subTree);if(c&&c.type!==be&&!et(c,l)&&al(n).type!==be){let u=js(c,i,r,n);if(Rn(c,u),a==="out-in"&&l.type!==be)return r.isLeaving=!0,u.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,c=void 0},ys(o);a==="in-out"&&l.type!==be?u.delayLeave=(h,d,m)=>{const y=cl(r,c);y[String(c.key)]=c,h[ze]=()=>{d(),h[ze]=void 0,delete f.delayedLeave,c=void 0},f.delayedLeave=()=>{m(),delete f.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function ll(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==be){t=n;break}}return t}const af=of;function cl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function js(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:h,onLeave:d,onAfterLeave:m,onLeaveCancelled:y,onBeforeAppear:C,onAppear:E,onAfterAppear:v,onAppearCancelled:p}=t,_=String(e.key),w=cl(n,e),k=(R,T)=>{R&&Xe(R,r,9,T)},P=(R,T)=>{const $=T[1];k(R,T),G(R)?R.every(L=>L.length<=1)&&$():R.length<=1&&$()},D={mode:i,persisted:a,beforeEnter(R){let T=l;if(!n.isMounted)if(o)T=C||l;else return;R[ze]&&R[ze](!0);const $=w[_];$&&et(e,$)&&$.el[ze]&&$.el[ze](),k(T,[R])},enter(R){if(w[_]===e)return;let T=f,$=c,L=u;if(!n.isMounted)if(o)T=E||f,$=v||c,L=p||u;else return;let W=!1;R[Nn]=te=>{W||(W=!0,te?k(L,[R]):k($,[R]),D.delayedLeave&&D.delayedLeave(),R[Nn]=void 0)};const Z=R[Nn].bind(null,!1);T?P(T,[R,Z]):Z()},leave(R,T){const $=String(e.key);if(R[Nn]&&R[Nn](!0),n.isUnmounting)return T();k(h,[R]);let L=!1;R[ze]=Z=>{L||(L=!0,T(),Z?k(y,[R]):k(m,[R]),R[ze]=void 0,w[$]===e&&delete w[$])};const W=R[ze].bind(null,!1);w[$]=e,d?P(d,[R,W]):W()},clone(R){const T=js(R,t,n,r,s);return s&&s(T),T}};return D}function ys(e){if(ur(e))return e=kt(e),e.children=null,e}function ei(e){if(!ur(e))return ol(e.type)&&e.children?ll(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Y(n.default))return n.default()}}function Rn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Rn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ul(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oEn(y,t&&(G(t)?t[C]:t),n,r,s));return}if(Ct(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&En(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?as(r.component):r.el,i=s?null:o,{i:a,r:l}=e,f=t&&t.r,c=a.refs===fe?a.refs={}:a.refs,u=a.setupState,h=ne(u),d=u===fe?Ca:y=>ti(c,y)?!1:ie(h,y),m=(y,C)=>!(C&&ti(c,C));if(f!=null&&f!==l){if(ni(t),he(f))c[f]=null,d(f)&&(u[f]=null);else if(pe(f)){const y=t;m(f,y.k)&&(f.value=null),y.k&&(c[y.k]=null)}}if(Y(l))cr(l,a,12,[i,c]);else{const y=he(l),C=pe(l);if(y||C){const E=()=>{if(e.f){const v=y?d(l)?u[l]:c[l]:m()||!e.k?l.value:c[e.k];if(s)G(v)&&go(v,o);else if(G(v))v.includes(o)||v.push(o);else if(y)c[l]=[o],d(l)&&(u[l]=c[l]);else{const p=[o];m(l,e.k)&&(l.value=p),e.k&&(c[e.k]=p)}}else y?(c[l]=i,d(l)&&(u[l]=i)):C&&(m(l,e.k)&&(l.value=i),e.k&&(c[e.k]=i))};if(i){const v=()=>{E(),Mr.delete(e)};v.id=-1,Mr.set(e,v),Se(v,n)}else ni(e),E()}}}function ni(e){const t=Mr.get(e);t&&(t.flags|=8,Mr.delete(e))}let ri=!1;const fn=()=>{ri||(console.error("Hydration completed but contains mismatches."),ri=!0)},lf=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cf=e=>e.namespaceURI.includes("MathML"),mr=e=>{if(e.nodeType===1){if(lf(e))return"svg";if(cf(e))return"mathml"}},mn=e=>e.nodeType===8;function uf(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:a,insert:l,createComment:f}}=e,c=(p,_)=>{if(!_.hasChildNodes()){n(null,p,_),kr(),_._vnode=p;return}u(_.firstChild,p,null,null,null),kr(),_._vnode=p},u=(p,_,w,k,P,D=!1)=>{D=D||!!_.dynamicChildren;const R=mn(p)&&p.data==="[",T=()=>y(p,_,w,k,P,R),{type:$,ref:L,shapeFlag:W,patchFlag:Z}=_;let te=p.nodeType;_.el=p,Z===-2&&(D=!1,_.dynamicChildren=null);let F=null;switch($){case rn:te!==3?_.children===""?(l(_.el=s(""),i(p),p),F=p):F=T():(p.data!==_.children&&(fn(),p.data=_.children),F=o(p));break;case be:v(p)?(F=o(p),E(_.el=p.content.firstChild,p,w)):te!==8||R?F=T():F=o(p);break;case Jn:if(R&&(p=o(p),te=p.nodeType),te===1||te===3){F=p;const q=!_.children.length;for(let V=0;V<_.staticCount;V++)q&&(_.children+=F.nodeType===1?F.outerHTML:F.data),V===_.staticCount-1&&(_.anchor=F),F=o(F);return R?o(F):F}else T();break;case ke:R?F=m(p,_,w,k,P,D):F=T();break;default:if(W&1)(te!==1||_.type.toLowerCase()!==p.tagName.toLowerCase())&&!v(p)?F=T():F=h(p,_,w,k,P,D);else if(W&6){_.slotScopeIds=P;const q=i(p);if(R?F=C(p):mn(p)&&p.data==="teleport start"?F=C(p,p.data,"teleport end"):F=o(p),t(_,q,null,w,k,mr(q),D),Ct(_)&&!_.type.__asyncResolved){let V;R?(V=ye(ke),V.anchor=F?F.previousSibling:q.lastChild):V=p.nodeType===3?ql(""):ye("div"),V.el=p,_.component.subTree=V}}else W&64?te!==8?F=T():F=_.type.hydrate(p,_,w,k,P,D,e,d):W&128&&(F=_.type.hydrate(p,_,w,k,mr(i(p)),P,D,e,u))}return L!=null&&En(L,null,k,_),F},h=(p,_,w,k,P,D)=>{D=D||!!_.dynamicChildren;const{type:R,props:T,patchFlag:$,shapeFlag:L,dirs:W,transition:Z}=_,te=R==="input"||R==="option";if(te||$!==-1){W&&ct(_,null,w,"created");let F=!1;if(v(p)){F=Dl(null,Z)&&w&&w.vnode.props&&w.vnode.props.appear;const V=p.content.firstChild;if(F){const le=V.getAttribute("class");le&&(V.$cls=le),Z.beforeEnter(V)}E(V,p,w),_.el=p=V}if(L&16&&!(T&&(T.innerHTML||T.textContent))){let V=d(p.firstChild,_,p,w,k,P,D);for(V&&!yr(p,1)&&fn();V;){const le=V;V=V.nextSibling,a(le)}}else if(L&8){let V=_.children;V[0]===` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./YYaFY5m9.js","./mz7Huk5H.js","./D0vUT4uH.js","./D7SVvy69.js","./_name_.B5yFMG3g.css","./CzRv6c7P.js","./accounts.vxGnCxY1.css","./D0tNFWGx.js","./ChQPCk92.js","./CZJGstC3.js","./LangSelect.Dkm6e8RK.css","./agents.-kjpROzC.css","./D1efUY0c.js","./CmHlPuQb.js","./index.BXNugdH5.css","./BWhTtyw-.js","./calltranslate.CJXjjd14.css","./0WNSFMX1.js","./channels.4kXMd4_X.css","./Ge7z-opa.js","./DCtqoj8h.js","./dashboard.bI0rfjl_.css","./CyIH3Sn4.js","./DiInGhGc.js","./CSQN7OHo.js","./BfiStvNk.js","./BOVc_R-F.js","./meetingsvc.Cnu-3MbB.css","./BSFY2Kep.js","./N6ePFfck.js","./CTIvguo-.js","./BPgWG32Q.js","./serviceconfig.D1-cnJwZ.css","./BSpPV7NB.js","./statlog.C1q_3yEh.css","./CEsBRmS9.js","./systemconfig.MaL8_AEr.css","./CFXePYDs.js","./CSir_6Sc.js","./index.4nAkFRy2.css","./HFcFZ41D.js","./OcSe_OeH.js","./default.miyQHb0v.css","./BtEuBlBw.js","./xRPLHwov.js","./error-404.Dm-MYrAh.css","./RjO_r9CD.js","./error-500.DM8oqBl3.css"])))=>i.map(i=>d[i]); +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function po(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const de={},_n=[],pt=()=>{},Ca=()=>!1,lr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Wr=e=>e.startsWith("onUpdate:"),Te=Object.assign,go=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},uu=Object.prototype.hasOwnProperty,ie=(e,t)=>uu.call(e,t),G=Array.isArray,bn=e=>In(e)==="[object Map]",Mn=e=>In(e)==="[object Set]",Jo=e=>In(e)==="[object Date]",fu=e=>In(e)==="[object RegExp]",Y=e=>typeof e=="function",pe=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",Aa=e=>(se(e)||Y(e))&&Y(e.then)&&Y(e.catch),Pa=Object.prototype.toString,In=e=>Pa.call(e),du=e=>In(e).slice(8,-1),mo=e=>In(e)==="[object Object]",qr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,en=po(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),zr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},hu=/-\w/g,Le=zr(e=>e.replace(hu,t=>t.slice(1).toUpperCase())),pu=/\B([A-Z])/g,Kt=zr(e=>e.replace(pu,"-$1").toLowerCase()),Gr=zr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ds=zr(e=>e?`on${Gr(e)}`:""),dt=(e,t)=>!Object.is(e,t),vn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Jr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ka=e=>{const t=pe(e)?Number(e):NaN;return isNaN(t)?e:t};let Xo;const Xr=()=>Xo||(Xo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Yr(e){if(G(e)){const t={};for(let n=0;n{if(n){const r=n.split(mu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Qr(e){let t="";if(pe(e))t=e;else if(G(e))for(let n=0;nBt(n,t))}const Ma=e=>!!(e&&e.__v_isRef===!0),Su=e=>pe(e)?e:e==null?"":G(e)||se(e)&&(e.toString===Pa||!Y(e.toString))?Ma(e)?Su(e.value):JSON.stringify(e,Ia,2):String(e),Ia=(e,t)=>Ma(t)?Ia(e,t.value):bn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[hs(r,o)+" =>"]=s,n),{})}:Mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>hs(n))}:Ue(t)?hs(t):se(t)&&!G(t)&&!mo(t)?String(t):t,hs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let Ee;class La{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Ee&&(Ee.active?(this.parent=Ee,this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0){if(Ee===this)Ee=this.prevScope;else{let t=Ee;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(zn){let t=zn;for(zn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;qn;){let t=qn;for(qn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function ja(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Fa(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),wo(r),Tu(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ba(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ba(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tr)||(e.globalVersion=tr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ds(e))))return;e.flags|=2;const t=e.dep,n=he,r=tt;he=e,tt=!0;try{ja(e);const s=e.fn(e._value);(t.version===0||dt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{he=n,tt=r,Fa(e),e.flags&=-3}}function wo(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)wo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Tu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let tt=!0;const Ua=[];function At(){Ua.push(tt),tt=!1}function Pt(){const e=Ua.pop();tt=e===void 0?!0:e}function Yo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=he;he=void 0;try{t()}finally{he=n}}}let tr=0;class Ru{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Eo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!he||!tt||he===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==he)n=this.activeLink=new Ru(he,this),he.deps?(n.prevDep=he.depsTail,he.depsTail.nextDep=n,he.depsTail=n):he.deps=he.depsTail=n,Va(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=he.depsTail,n.nextDep=void 0,he.depsTail.nextDep=n,he.depsTail=n,he.deps===n&&(he.deps=r)}return n}trigger(t){this.version++,tr++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{vo()}}}function Va(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Va(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ar=new WeakMap,tn=Symbol(""),Hs=Symbol(""),nr=Symbol("");function xe(e,t,n){if(tt&&he){let r=Ar.get(e);r||Ar.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Eo),s.map=r,s.key=n),s.track()}}function Et(e,t,n,r,s,o){const i=Ar.get(e);if(!i){tr++;return}const a=l=>{l&&l.trigger()};if(bo(),t==="clear")i.forEach(a);else{const l=G(e),f=l&&qr(n);if(l&&n==="length"){const c=Number(r);i.forEach((u,h)=>{(h==="length"||h===nr||!Ue(h)&&h>=c)&&a(u)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),f&&a(i.get(nr)),t){case"add":l?f&&a(i.get("length")):(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"delete":l||(a(i.get(tn)),bn(e)&&a(i.get(Hs)));break;case"set":bn(e)&&a(i.get(tn));break}}vo()}function Cu(e,t){const n=Ar.get(e);return n&&n.get(t)}function un(e){const t=ne(e);return t===e?t:(xe(t,"iterate",nr),Be(e)?t:t.map(rt))}function es(e){return xe(e=ne(e),"iterate",nr),e}function ut(e,t){return mt(e)?Tn(gt(e)?rt(t):t):rt(t)}const Au={__proto__:null,[Symbol.iterator](){return gs(this,Symbol.iterator,e=>ut(this,e))},concat(...e){return un(this).concat(...e.map(t=>G(t)?un(t):t))},entries(){return gs(this,"entries",e=>(e[1]=ut(this,e[1]),e))},every(e,t){return yt(this,"every",e,t,void 0,arguments)},filter(e,t){return yt(this,"filter",e,t,n=>n.map(r=>ut(this,r)),arguments)},find(e,t){return yt(this,"find",e,t,n=>ut(this,n),arguments)},findIndex(e,t){return yt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return yt(this,"findLast",e,t,n=>ut(this,n),arguments)},findLastIndex(e,t){return yt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return yt(this,"forEach",e,t,void 0,arguments)},includes(...e){return ms(this,"includes",e)},indexOf(...e){return ms(this,"indexOf",e)},join(e){return un(this).join(e)},lastIndexOf(...e){return ms(this,"lastIndexOf",e)},map(e,t){return yt(this,"map",e,t,void 0,arguments)},pop(){return $n(this,"pop")},push(...e){return $n(this,"push",e)},reduce(e,...t){return Qo(this,"reduce",e,t)},reduceRight(e,...t){return Qo(this,"reduceRight",e,t)},shift(){return $n(this,"shift")},some(e,t){return yt(this,"some",e,t,void 0,arguments)},splice(...e){return $n(this,"splice",e)},toReversed(){return un(this).toReversed()},toSorted(e){return un(this).toSorted(e)},toSpliced(...e){return un(this).toSpliced(...e)},unshift(...e){return $n(this,"unshift",e)},values(){return gs(this,"values",e=>ut(this,e))}};function gs(e,t,n){const r=es(e),s=r[t]();return r!==e&&!Be(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Pu=Array.prototype;function yt(e,t,n,r,s,o){const i=es(e),a=i!==e&&!Be(e),l=i[t];if(l!==Pu[t]){const u=l.apply(e,o);return a?rt(u):u}let f=n;i!==e&&(a?f=function(u,h){return n.call(this,ut(e,u),h,e)}:n.length>2&&(f=function(u,h){return n.call(this,u,h,e)}));const c=l.call(i,f,r);return a&&s?s(c):c}function Qo(e,t,n,r){const s=es(e),o=s!==e&&!Be(e);let i=n,a=!1;s!==e&&(o?(a=r.length===0,i=function(f,c,u){return a&&(a=!1,f=ut(e,f)),n.call(this,f,ut(e,c),u,e)}):n.length>3&&(i=function(f,c,u){return n.call(this,f,c,u,e)}));const l=s[t](i,...r);return a?ut(e,l):l}function ms(e,t,n){const r=ne(e);xe(r,"iterate",nr);const s=r[t](...n);return(s===-1||s===!1)&&ts(n[0])?(n[0]=ne(n[0]),r[t](...n)):s}function $n(e,t,n=[]){At(),bo();const r=ne(e)[t].apply(e,n);return vo(),Pt(),r}const xu=po("__proto__,__v_isRef,__isVue"),Ka=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function ku(e){Ue(e)||(e=String(e));const t=ne(this);return xe(t,"has",e),t.hasOwnProperty(e)}class Wa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Fu:Ja:o?Ga:za).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=G(t);if(!s){let l;if(i&&(l=Au[n]))return l;if(n==="hasOwnProperty")return ku}const a=Reflect.get(t,n,ge(t)?t:r);if((Ue(n)?Ka.has(n):xu(n))||(s||xe(t,"get",n),o))return a;if(ge(a)){const l=i&&qr(n)?a:a.value;return s&&se(l)?Ns(l):l}return se(a)?s?Ns(a):ot(a):a}}class qa extends Wa{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=G(t)&&qr(n);if(!this._isShallow){const f=mt(o);if(!Be(r)&&!mt(r)&&(o=ne(o),r=ne(r)),!i&&ge(o)&&!ge(r))return f||(o.value=r),!0}const a=i?Number(n)e,hr=e=>Reflect.getPrototypeOf(e);function Du(e,t,n){return function(...r){const s=this.__v_raw,o=ne(s),i=bn(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,f=s[e](...r),c=n?$s:t?Tn:rt;return!t&&xe(o,"iterate",l?Hs:tn),Te(Object.create(f),{next(){const{value:u,done:h}=f.next();return h?{value:u,done:h}:{value:a?[c(u[0]),c(u[1])]:c(u),done:h}}})}}function pr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Hu(e,t){const n={get(s){const o=this.__v_raw,i=ne(o),a=ne(s);e||(dt(s,a)&&xe(i,"get",s),xe(i,"get",a));const{has:l}=hr(i),f=t?$s:e?Tn:rt;if(l.call(i,s))return f(o.get(s));if(l.call(i,a))return f(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&xe(ne(s),"iterate",tn),s.size},has(s){const o=this.__v_raw,i=ne(o),a=ne(s);return e||(dt(s,a)&&xe(i,"has",s),xe(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,l=ne(a),f=t?$s:e?Tn:rt;return!e&&xe(l,"iterate",tn),a.forEach((c,u)=>s.call(o,f(c),f(u),i))}};return Te(n,e?{add:pr("add"),set:pr("set"),delete:pr("delete"),clear:pr("clear")}:{add(s){const o=ne(this),i=hr(o),a=ne(s),l=!t&&!Be(s)&&!mt(s)?a:s;return i.has.call(o,l)||dt(s,l)&&i.has.call(o,s)||dt(a,l)&&i.has.call(o,a)||(o.add(l),Et(o,"add",l,l)),this},set(s,o){!t&&!Be(o)&&!mt(o)&&(o=ne(o));const i=ne(this),{has:a,get:l}=hr(i);let f=a.call(i,s);f||(s=ne(s),f=a.call(i,s));const c=l.call(i,s);return i.set(s,o),f?dt(o,c)&&Et(i,"set",s,o):Et(i,"add",s,o),this},delete(s){const o=ne(this),{has:i,get:a}=hr(o);let l=i.call(o,s);l||(s=ne(s),l=i.call(o,s)),a&&a.call(o,s);const f=o.delete(s);return l&&Et(o,"delete",s,void 0),f},clear(){const s=ne(this),o=s.size!==0,i=s.clear();return o&&Et(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Du(s,e,t)}),n}function So(e,t){const n=Hu(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(ie(n,s)&&s in r?n:r,s,o)}const $u={get:So(!1,!1)},Nu={get:So(!1,!0)},ju={get:So(!0,!1)};const za=new WeakMap,Ga=new WeakMap,Ja=new WeakMap,Fu=new WeakMap;function Bu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ot(e){return mt(e)?e:To(e,!1,Mu,$u,za)}function Ze(e){return To(e,!1,Lu,Nu,Ga)}function Ns(e){return To(e,!0,Iu,ju,Ja)}function To(e,t,n,r,s){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Bu(du(e));if(i===0)return e;const a=new Proxy(e,i===2?r:n);return s.set(e,a),a}function gt(e){return mt(e)?gt(e.__v_raw):!!(e&&e.__v_isReactive)}function mt(e){return!!(e&&e.__v_isReadonly)}function Be(e){return!!(e&&e.__v_isShallow)}function ts(e){return e?!!e.__v_raw:!1}function ne(e){const t=e&&e.__v_raw;return t?ne(t):e}function Ro(e){return!ie(e,"__v_skip")&&Object.isExtensible(e)&&xa(e,"__v_skip",!0),e}const rt=e=>se(e)?ot(e):e,Tn=e=>se(e)?Ns(e):e;function ge(e){return e?e.__v_isRef===!0:!1}function nt(e){return Xa(e,!1)}function Ut(e){return Xa(e,!0)}function Xa(e,t){return ge(e)?e:new Uu(e,t)}class Uu{constructor(t,n){this.dep=new Eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ne(t),this._value=n?t:rt(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Be(t)||mt(t);t=r?t:ne(t),dt(t,n)&&(this._rawValue=t,this._value=r?t:rt(t),this.dep.trigger())}}function ae(e){return ge(e)?e.value:e}function ft(e){return Y(e)?e():ae(e)}const Vu={get:(e,t,n)=>t==="__v_raw"?e:ae(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ge(s)&&!ge(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Ya(e){return gt(e)?e:new Proxy(e,Vu)}function Ku(e){const t=G(e)?new Array(e.length):{};for(const n in e)t[n]=Za(e,n);return t}class Wu{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=Ue(n)?n:String(n),this._raw=ne(t);let s=!0,o=t;if(!G(t)||Ue(this._key)||!qr(this._key))do s=!ts(o)||Be(o);while(s&&(o=o.__v_raw));this._shallow=s}get value(){let t=this._object[this._key];return this._shallow&&(t=ae(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ge(this._raw[this._key])){const n=this._object[this._key];if(ge(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Cu(this._raw,this._key)}}class qu{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Qa(e,t,n){return ge(e)?e:Y(e)?new qu(e):se(e)&&arguments.length>1?Za(e,t,n):nt(e)}function Za(e,t,n){return new Wu(e,t,n)}class zu{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&he!==this)return Na(this,!0),!0}get value(){const t=this.dep.track();return Ba(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Gu(e,t,n=!1){let r,s;return Y(e)?r=e:(r=e.get,s=e.set),new zu(r,s,n)}const gr={},Pr=new WeakMap;let Qt;function Ju(e,t=!1,n=Qt){if(n){let r=Pr.get(n);r||Pr.set(n,r=[]),r.push(e)}}function Xu(e,t,n=de){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:a,call:l}=n,f=_=>s?_:Be(_)||s===!1||s===0?St(_,1):St(_);let c,u,h,d,m=!1,y=!1;if(ge(e)?(u=()=>e.value,m=Be(e)):gt(e)?(u=()=>f(e),m=!0):G(e)?(y=!0,m=e.some(_=>gt(_)||Be(_)),u=()=>e.map(_=>{if(ge(_))return _.value;if(gt(_))return f(_);if(Y(_))return l?l(_,2):_()})):Y(e)?t?u=l?()=>l(e,2):e:u=()=>{if(h){At();try{h()}finally{Pt()}}const _=Qt;Qt=c;try{return l?l(e,3,[d]):e(d)}finally{Qt=_}}:u=pt,t&&s){const _=u,w=s===!0?1/0:s;u=()=>St(_(),w)}const C=Zr(),E=()=>{c.stop(),C&&C.active&&go(C.effects,c)};if(o&&t){const _=t;t=(...w)=>{const k=_(...w);return E(),k}}let v=y?new Array(e.length).fill(gr):gr;const p=_=>{if(!(!(c.flags&1)||!c.dirty&&!_))if(t){const w=c.run();if(_||s||m||(y?w.some((k,P)=>dt(k,v[P])):dt(w,v))){h&&h();const k=Qt;Qt=c;try{const P=[w,v===gr?void 0:y&&v[0]===gr?[]:v,d];v=w,l?l(t,3,P):t(...P)}finally{Qt=k}}}else c.run()};return a&&a(p),c=new Ha(u),c.scheduler=i?()=>i(p,!1):p,d=_=>Ju(_,!1,c),h=c.onStop=()=>{const _=Pr.get(c);if(_){if(l)l(_,4);else for(const w of _)w();Pr.delete(c)}},t?r?p(!0):v=c.run():i?i(p.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function St(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ge(e))St(e.value,t,n);else if(G(e))for(let r=0;r{St(r,t,n)});else if(mo(e)){for(const r in e)St(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&St(e[r],t,n)}return e}function cr(e,t,n,r){try{return r?e(...r):e()}catch(s){Ln(s,t,n)}}function Xe(e,t,n,r){if(Y(e)){const s=cr(e,t,n,r);return s&&Aa(s)&&s.catch(o=>{Ln(o,t,n)}),s}if(G(e)){const s=[];for(let o=0;o>>1,s=Ie[r],o=sr(s);o=sr(n)?Ie.push(e):Ie.splice(Qu(t),0,e),e.flags|=1,tl()}}function tl(){xr||(xr=el.then(nl))}function rr(e){G(e)?wn.push(...e):Ht&&e.id===-1?Ht.splice(hn+1,0,e):e.flags&1||(wn.push(e),e.flags|=1),tl()}function Zo(e,t,n=lt+1){for(;nsr(n)-sr(r));if(wn.length=0,Ht){Ht.push(...t);return}for(Ht=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function nl(e){try{for(lt=0;lt{r._d&&$r(-1);const o=Or(t);let i;try{i=e(...s)}finally{Or(o),r._d&&$r(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function s_(e,t){if(Pe===null)return e;const n=as(Pe),r=e.dirs||(e.dirs=[]);for(let s=0;s1)return n&&Y(t)?t.call(r&&r.proxy):t}}function ns(){return!!(an()||nn)}const Zu=Symbol.for("v-scx"),ef=()=>Ce(Zu);function tf(e,t){return Po(e,null,t)}function Rt(e,t,n){return Po(e,t,n)}function Po(e,t,n=de){const{immediate:r,deep:s,flush:o,once:i}=n,a=Te({},n),l=t&&r||!t&&o!=="post";let f;if(An){if(o==="sync"){const d=ef();f=d.__watcherHandles||(d.__watcherHandles=[])}else if(!l){const d=()=>{};return d.stop=pt,d.resume=pt,d.pause=pt,d}}const c=Ae;a.call=(d,m,y)=>Xe(d,c,m,y);let u=!1;o==="post"?a.scheduler=d=>{Se(d,c&&c.suspense)}:o!=="sync"&&(u=!0,a.scheduler=(d,m)=>{m?d():Co(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const h=Xu(e,t,a);return An&&(f?f.push(h):l&&h()),h}function nf(e,t,n){const r=this.proxy,s=pe(e)?e.includes(".")?sl(r,e):()=>r[e]:e.bind(r,r);let o;Y(t)?o=t:(o=t.handler,n=t);const i=dr(this),a=Po(s,o.bind(r),n);return i(),a}function sl(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,ze=Symbol("_leaveCb"),Nn=Symbol("_enterCb");function sf(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ko(()=>{e.isMounted=!0}),fr(()=>{e.isUnmounting=!0}),e}const We=[Function,Array],il={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:We,onEnter:We,onAfterEnter:We,onEnterCancelled:We,onBeforeLeave:We,onLeave:We,onAfterLeave:We,onLeaveCancelled:We,onBeforeAppear:We,onAppear:We,onAfterAppear:We,onAppearCancelled:We},al=e=>{const t=e.subTree;return t.component?al(t.component):t},of={name:"BaseTransition",props:il,setup(e,{slots:t}){const n=an(),r=sf();return()=>{const s=t.default&&ul(t.default(),!0),o=s&&s.length?ll(s):n.subTree?Zf():void 0;if(!o)return;const i=ne(e),{mode:a}=i;if(r.isLeaving)return ys(o);const l=ei(o);if(!l)return ys(o);let f=js(l,i,r,n,u=>f=u);l.type!==be&&Rn(l,f);let c=n.subTree&&ei(n.subTree);if(c&&c.type!==be&&!et(c,l)&&al(n).type!==be){let u=js(c,i,r,n);if(Rn(c,u),a==="out-in"&&l.type!==be)return r.isLeaving=!0,u.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,c=void 0},ys(o);a==="in-out"&&l.type!==be?u.delayLeave=(h,d,m)=>{const y=cl(r,c);y[String(c.key)]=c,h[ze]=()=>{d(),h[ze]=void 0,delete f.delayedLeave,c=void 0},f.delayedLeave=()=>{m(),delete f.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function ll(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==be){t=n;break}}return t}const af=of;function cl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function js(e,t,n,r,s){const{appear:o,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:h,onLeave:d,onAfterLeave:m,onLeaveCancelled:y,onBeforeAppear:C,onAppear:E,onAfterAppear:v,onAppearCancelled:p}=t,_=String(e.key),w=cl(n,e),k=(R,T)=>{R&&Xe(R,r,9,T)},P=(R,T)=>{const $=T[1];k(R,T),G(R)?R.every(L=>L.length<=1)&&$():R.length<=1&&$()},D={mode:i,persisted:a,beforeEnter(R){let T=l;if(!n.isMounted)if(o)T=C||l;else return;R[ze]&&R[ze](!0);const $=w[_];$&&et(e,$)&&$.el[ze]&&$.el[ze](),k(T,[R])},enter(R){if(w[_]===e)return;let T=f,$=c,L=u;if(!n.isMounted)if(o)T=E||f,$=v||c,L=p||u;else return;let W=!1;R[Nn]=te=>{W||(W=!0,te?k(L,[R]):k($,[R]),D.delayedLeave&&D.delayedLeave(),R[Nn]=void 0)};const Z=R[Nn].bind(null,!1);T?P(T,[R,Z]):Z()},leave(R,T){const $=String(e.key);if(R[Nn]&&R[Nn](!0),n.isUnmounting)return T();k(h,[R]);let L=!1;R[ze]=Z=>{L||(L=!0,T(),Z?k(y,[R]):k(m,[R]),R[ze]=void 0,w[$]===e&&delete w[$])};const W=R[ze].bind(null,!1);w[$]=e,d?P(d,[R,W]):W()},clone(R){const T=js(R,t,n,r,s);return s&&s(T),T}};return D}function ys(e){if(ur(e))return e=kt(e),e.children=null,e}function ei(e){if(!ur(e))return ol(e.type)&&e.children?ll(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Y(n.default))return n.default()}}function Rn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Rn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ul(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;oEn(y,t&&(G(t)?t[C]:t),n,r,s));return}if(Ct(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&En(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?as(r.component):r.el,i=s?null:o,{i:a,r:l}=e,f=t&&t.r,c=a.refs===de?a.refs={}:a.refs,u=a.setupState,h=ne(u),d=u===de?Ca:y=>ti(c,y)?!1:ie(h,y),m=(y,C)=>!(C&&ti(c,C));if(f!=null&&f!==l){if(ni(t),pe(f))c[f]=null,d(f)&&(u[f]=null);else if(ge(f)){const y=t;m(f,y.k)&&(f.value=null),y.k&&(c[y.k]=null)}}if(Y(l))cr(l,a,12,[i,c]);else{const y=pe(l),C=ge(l);if(y||C){const E=()=>{if(e.f){const v=y?d(l)?u[l]:c[l]:m()||!e.k?l.value:c[e.k];if(s)G(v)&&go(v,o);else if(G(v))v.includes(o)||v.push(o);else if(y)c[l]=[o],d(l)&&(u[l]=c[l]);else{const p=[o];m(l,e.k)&&(l.value=p),e.k&&(c[e.k]=p)}}else y?(c[l]=i,d(l)&&(u[l]=i)):C&&(m(l,e.k)&&(l.value=i),e.k&&(c[e.k]=i))};if(i){const v=()=>{E(),Mr.delete(e)};v.id=-1,Mr.set(e,v),Se(v,n)}else ni(e),E()}}}function ni(e){const t=Mr.get(e);t&&(t.flags|=8,Mr.delete(e))}let ri=!1;const fn=()=>{ri||(console.error("Hydration completed but contains mismatches."),ri=!0)},lf=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cf=e=>e.namespaceURI.includes("MathML"),mr=e=>{if(e.nodeType===1){if(lf(e))return"svg";if(cf(e))return"mathml"}},mn=e=>e.nodeType===8;function uf(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:a,insert:l,createComment:f}}=e,c=(p,_)=>{if(!_.hasChildNodes()){n(null,p,_),kr(),_._vnode=p;return}u(_.firstChild,p,null,null,null),kr(),_._vnode=p},u=(p,_,w,k,P,D=!1)=>{D=D||!!_.dynamicChildren;const R=mn(p)&&p.data==="[",T=()=>y(p,_,w,k,P,R),{type:$,ref:L,shapeFlag:W,patchFlag:Z}=_;let te=p.nodeType;_.el=p,Z===-2&&(D=!1,_.dynamicChildren=null);let F=null;switch($){case rn:te!==3?_.children===""?(l(_.el=s(""),i(p),p),F=p):F=T():(p.data!==_.children&&(fn(),p.data=_.children),F=o(p));break;case be:v(p)?(F=o(p),E(_.el=p.content.firstChild,p,w)):te!==8||R?F=T():F=o(p);break;case Jn:if(R&&(p=o(p),te=p.nodeType),te===1||te===3){F=p;const q=!_.children.length;for(let V=0;V<_.staticCount;V++)q&&(_.children+=F.nodeType===1?F.outerHTML:F.data),V===_.staticCount-1&&(_.anchor=F),F=o(F);return R?o(F):F}else T();break;case ke:R?F=m(p,_,w,k,P,D):F=T();break;default:if(W&1)(te!==1||_.type.toLowerCase()!==p.tagName.toLowerCase())&&!v(p)?F=T():F=h(p,_,w,k,P,D);else if(W&6){_.slotScopeIds=P;const q=i(p);if(R?F=C(p):mn(p)&&p.data==="teleport start"?F=C(p,p.data,"teleport end"):F=o(p),t(_,q,null,w,k,mr(q),D),Ct(_)&&!_.type.__asyncResolved){let V;R?(V=ye(ke),V.anchor=F?F.previousSibling:q.lastChild):V=p.nodeType===3?ql(""):ye("div"),V.el=p,_.component.subTree=V}}else W&64?te!==8?F=T():F=_.type.hydrate(p,_,w,k,P,D,e,d):W&128&&(F=_.type.hydrate(p,_,w,k,mr(i(p)),P,D,e,u))}return L!=null&&En(L,null,k,_),F},h=(p,_,w,k,P,D)=>{D=D||!!_.dynamicChildren;const{type:R,props:T,patchFlag:$,shapeFlag:L,dirs:W,transition:Z}=_,te=R==="input"||R==="option";if(te||$!==-1){W&&ct(_,null,w,"created");let F=!1;if(v(p)){F=Dl(null,Z)&&w&&w.vnode.props&&w.vnode.props.appear;const V=p.content.firstChild;if(F){const le=V.getAttribute("class");le&&(V.$cls=le),Z.beforeEnter(V)}E(V,p,w),_.el=p=V}if(L&16&&!(T&&(T.innerHTML||T.textContent))){let V=d(p.firstChild,_,p,w,k,P,D);for(V&&!yr(p,1)&&fn();V;){const le=V;V=V.nextSibling,a(le)}}else if(L&8){let V=_.children;V[0]===` `&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(V=V.slice(1));const{textContent:le}=p;le!==V&&le!==V.replace(/\r\n|\r/g,` -`)&&(yr(p,0)||fn(),p.textContent=_.children)}if(T){if(te||!D||$&48){const V=p.tagName.includes("-");for(const le in T)(te&&(le.endsWith("value")||le==="indeterminate")||lr(le)&&!en(le)||le[0]==="."||V&&!en(le))&&r(p,le,null,T[le],void 0,w)}else if(T.onClick)r(p,"onClick",null,T.onClick,void 0,w);else if($&4&>(T.style))for(const V in T.style)T.style[V]}let q;(q=T&&T.onVnodeBeforeMount)&&He(q,w,_),W&&ct(_,null,w,"beforeMount"),((q=T&&T.onVnodeMounted)||W||F)&&Fl(()=>{q&&He(q,w,_),F&&Z.enter(p),W&&ct(_,null,w,"mounted")},k)}return p.nextSibling},d=(p,_,w,k,P,D,R)=>{R=R||!!_.dynamicChildren;const T=_.children,$=T.length;let L=!1;for(let W=0;W<$;W++){const Z=R?T[W]:T[W]=Fe(T[W]),te=Z.type===rn;p?(te&&!R&&W+1<$&&Fe(T[W+1]).type===rn&&(l(s(p.data.slice(Z.children.length)),w,o(p)),p.data=Z.children),p=u(p,Z,k,P,D,R)):te&&!Z.children?l(Z.el=s(""),w):(L||(L=!0,yr(w,1)||fn()),n(null,Z,w,null,k,P,mr(w),D))}return p},m=(p,_,w,k,P,D)=>{const{slotScopeIds:R}=_;R&&(P=P?P.concat(R):R);const T=i(p),$=d(o(p),_,T,w,k,P,D);return $&&mn($)&&$.data==="]"?o(_.anchor=$):(fn(),l(_.anchor=f("]"),T,$),$)},y=(p,_,w,k,P,D)=>{if(yr(p.parentElement,1)||fn(),_.el=null,D){const $=C(p);for(;;){const L=o(p);if(L&&L!==$)a(L);else break}}const R=o(p),T=i(p);return a(p),n(null,_,T,R,w,k,mr(T),P),w&&(w.vnode.el=_.el,is(w,_.el)),R},C=(p,_="[",w="]")=>{let k=0;for(;p;)if(p=o(p),p&&mn(p)&&(p.data===_&&k++,p.data===w)){if(k===0)return o(p);k--}return p},E=(p,_,w)=>{const k=_.parentNode;k&&k.replaceChild(p,_);let P=w;for(;P;)P.vnode.el===_&&(P.vnode.el=P.subTree.el=p),P=P.parent},v=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[c,u]}const si="data-allow-mismatch",ff={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function yr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(si);)e=e.parentElement;const n=e&&e.getAttribute(si);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(ff[t])}}Xr().requestIdleCallback;Xr().cancelIdleCallback;function df(e,t){if(mn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(mn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Ct=e=>!!e.type.__asyncLoader;function Ir(e){Y(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:l}=e;let f=null,c,u=0;const h=()=>(u++,f=null,d()),d=()=>{let m;return f||(m=f=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((C,E)=>{l(y,()=>C(h()),()=>E(y),u+1)});throw y}).then(y=>m!==f&&f?f:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return Wt({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(m,y,C){let E=!1;(y.bu||(y.bu=[])).push(()=>E=!0);const v=()=>{E||C()},p=o?()=>{const _=o(v,w=>df(m,w));_&&(y.bum||(y.bum=[])).push(_)}:v;c?p():d().then(()=>!y.isUnmounted&&p())},get __asyncResolved(){return c},setup(){const m=Ae;if(xo(m),c)return()=>_r(c,m);const y=w=>{f=null,Ln(w,m,13,!r)};if(a&&m.suspense||An)return d().then(w=>()=>_r(w,m)).catch(w=>(y(w),()=>r?ye(r,{error:w}):null));const C=nt(!1),E=nt(),v=nt(!!s);let p,_;return ss(()=>{p!=null&&clearTimeout(p),_!=null&&clearTimeout(_)}),s&&(_=setTimeout(()=>{m.isUnmounted||(v.value=!1)},s)),i!=null&&(p=setTimeout(()=>{if(!m.isUnmounted&&!C.value&&!E.value){const w=new Error(`Async component timed out after ${i}ms.`);y(w),E.value=w}},i)),d().then(()=>{m.isUnmounted||(C.value=!0,m.parent&&ur(m.parent.vnode)&&m.parent.update())}).catch(w=>{if(m.isUnmounted){f=null;return}y(w),E.value=w}),()=>{if(C.value&&c)return _r(c,m);if(E.value&&r)return ye(r,{error:E.value});if(n&&!v.value)return _r(n,m)}}})}function _r(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ye(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const ur=e=>e.type.__isKeepAlive,hf={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=an(),r=n.ctx;if(!r.renderer)return()=>{const v=t.default&&t.default();return v&&v.length===1?v[0]:v};const s=new Map,o=new Set;let i=null;const a=n.suspense,{renderer:{p:l,m:f,um:c,o:{createElement:u}}}=r,h=u("div");r.activate=(v,p,_,w,k)=>{const P=v.component;f(v,p,_,0,a),l(P.vnode,v,p,_,P,a,w,v.slotScopeIds,k),Se(()=>{P.isDeactivated=!1,P.a&&vn(P.a);const D=v.props&&v.props.onVnodeMounted;D&&He(D,P.parent,v)},a)},r.deactivate=v=>{const p=v.component;Dr(p.m),Dr(p.a),f(v,h,null,1,a),Se(()=>{p.da&&vn(p.da);const _=v.props&&v.props.onVnodeUnmounted;_&&He(_,p.parent,v),p.isDeactivated=!0},a)};function d(v){_s(v),c(v,n,a,!0)}function m(v){s.forEach((p,_)=>{const w=Gs(Ct(p)?p.type.__asyncResolved||{}:p.type);w&&!v(w)&&y(_)})}function y(v){const p=s.get(v);p&&(!i||!et(p,i))?d(p):i&&_s(i),s.delete(v),o.delete(v)}Rt(()=>[e.include,e.exclude],([v,p])=>{v&&m(_=>Vn(v,_)),p&&m(_=>!Vn(p,_))},{flush:"post",deep:!0});let C=null;const E=()=>{C!=null&&(Hr(n.subTree.type)?Se(()=>{s.set(C,br(n.subTree))},n.subTree.suspense):s.set(C,br(n.subTree)))};return ko(E),gl(E),fr(()=>{s.forEach(v=>{const{subTree:p,suspense:_}=n,w=br(p);if(v.type===w.type&&v.key===w.key){_s(w);const k=w.component.da;k&&Se(k,_);return}d(v)})}),()=>{if(C=null,!t.default)return i=null;const v=t.default(),p=v[0];if(v.length>1)return i=null,v;if(!sn(p)||!(p.shapeFlag&4)&&!(p.shapeFlag&128))return i=null,p;let _=br(p);if(_.type===be)return i=null,_;const w=_.type,k=Gs(Ct(_)?_.type.__asyncResolved||{}:w),{include:P,exclude:D,max:R}=e;if(P&&(!k||!Vn(P,k))||D&&k&&Vn(D,k))return _.shapeFlag&=-257,i=_,p;const T=_.key==null?w:_.key,$=s.get(T);return _.el&&(_=kt(_),p.shapeFlag&128&&(p.ssContent=_)),C=T,$?(_.el=$.el,_.component=$.component,_.transition&&Rn(_,_.transition),_.shapeFlag|=512,o.delete(T),o.add(T)):(o.add(T),R&&o.size>parseInt(R,10)&&y(o.values().next().value)),_.shapeFlag|=256,i=_,Hr(p.type)?p:_}}},pf=hf;function Vn(e,t){return G(e)?e.some(n=>Vn(n,t)):he(e)?e.split(",").includes(t):fu(e)?(e.lastIndex=0,e.test(t)):!1}function fl(e,t){hl(e,"a",t)}function dl(e,t){hl(e,"da",t)}function hl(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(rs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ur(s.parent.vnode)&&gf(r,t,n,s),s=s.parent}}function gf(e,t,n,r){const s=rs(t,e,r,!0);ss(()=>{go(r[t],s)},n)}function _s(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function br(e){return e.shapeFlag&128?e.ssContent:e}function rs(e,t,n=Ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{At();const a=dr(n),l=Xe(t,n,e,i);return a(),Pt(),l});return r?s.unshift(o):s.push(o),o}}const Ot=e=>(t,n=Ae)=>{(!An||e==="sp")&&rs(e,(...r)=>t(...r),n)},pl=Ot("bm"),ko=Ot("m"),mf=Ot("bu"),gl=Ot("u"),fr=Ot("bum"),ss=Ot("um"),yf=Ot("sp"),_f=Ot("rtg"),bf=Ot("rtc");function ml(e,t=Ae){rs("ec",e,t)}const yl="components";function n_(e,t){return bl(yl,e,!0,t)||e}const _l=Symbol.for("v-ndc");function vf(e){return he(e)?bl(yl,e,!1)||e:e||_l}function bl(e,t,n=!0,r=!1){const s=Pe||Ae;if(s){const o=s.type;{const a=Gs(o,!1);if(a&&(a===t||a===Le(t)||a===Gr(Le(t))))return o}const i=oi(s[e]||o[e],t)||oi(s.appContext[e],t);return!i&&r?o:i}}function oi(e,t){return e&&(e[t]||e[Le(t)]||e[Gr(Le(t))])}function r_(e,t,n,r){let s;const o=n,i=G(e);if(i||he(e)){const a=i&>(e);let l=!1,f=!1;a&&(l=!Be(e),f=mt(e),e=es(e)),s=new Array(e.length);for(let c=0,u=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,f=a.length;l0;return Ge(),ht(ke,null,[ye("slot",n,r)],f?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),Ge();const i=o&&vl(o(n)),a=n.key||i&&i.key,l=ht(ke,{key:(a&&!Ue(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||[],i&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function vl(e){return e.some(t=>sn(t)?!(t.type===be||t.type===ke&&!vl(t.children)):!0)?e:null}const Fs=e=>e?Gl(e)?as(e):Fs(e.parent):null,Gn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fs(e.parent),$root:e=>Fs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>El(e),$forceUpdate:e=>e.f||(e.f=()=>{Co(e.update)}),$nextTick:e=>e.n||(e.n=xt.bind(e.proxy)),$watch:e=>nf.bind(e)}),bs=(e,t)=>e!==fe&&!e.__isScriptSetup&&ie(e,t),wf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(bs(r,t))return i[t]=1,r[t];if(s!==fe&&ie(s,t))return i[t]=2,s[t];if(ie(o,t))return i[t]=3,o[t];if(n!==fe&&ie(n,t))return i[t]=4,n[t];Bs&&(i[t]=0)}}const f=Gn[t];let c,u;if(f)return t==="$attrs"&&xe(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==fe&&ie(n,t))return i[t]=4,n[t];if(u=l.config.globalProperties,ie(u,t))return u[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return bs(s,t)?(s[t]=n,!0):r!==fe&&ie(r,t)?(r[t]=n,!0):ie(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},a){let l;return!!(n[a]||e!==fe&&a[0]!=="$"&&ie(e,a)||bs(t,a)||ie(o,a)||ie(r,a)||ie(Gn,a)||ie(s.config.globalProperties,a)||(l=i.__cssModules)&&l[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ie(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ii(e){return G(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Bs=!0;function Ef(e){const t=El(e),n=e.proxy,r=e.ctx;Bs=!1,t.beforeCreate&&ai(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:f,created:c,beforeMount:u,mounted:h,beforeUpdate:d,updated:m,activated:y,deactivated:C,beforeDestroy:E,beforeUnmount:v,destroyed:p,unmounted:_,render:w,renderTracked:k,renderTriggered:P,errorCaptured:D,serverPrefetch:R,expose:T,inheritAttrs:$,components:L,directives:W,filters:Z}=t;if(f&&Sf(f,r,null),i)for(const q in i){const V=i[q];Y(V)&&(r[q]=V.bind(n))}if(s){const q=s.call(n,n);se(q)&&(e.data=ot(q))}if(Bs=!0,o)for(const q in o){const V=o[q],le=Y(V)?V.bind(n,n):Y(V.get)?V.get.bind(n,n):pt,Mt=!Y(V)&&Y(V.set)?V.set.bind(n):pt,it=Re({get:le,set:Mt});Object.defineProperty(r,q,{enumerable:!0,configurable:!0,get:()=>it.value,set:De=>it.value=De})}if(a)for(const q in a)wl(a[q],r,n,q);if(l){const q=Y(l)?l.call(n):l;Reflect.ownKeys(q).forEach(V=>{jt(V,q[V])})}c&&ai(c,e,"c");function F(q,V){G(V)?V.forEach(le=>q(le.bind(n))):V&&q(V.bind(n))}if(F(pl,u),F(ko,h),F(mf,d),F(gl,m),F(fl,y),F(dl,C),F(ml,D),F(bf,k),F(_f,P),F(fr,v),F(ss,_),F(yf,R),G(T))if(T.length){const q=e.exposed||(e.exposed={});T.forEach(V=>{Object.defineProperty(q,V,{get:()=>n[V],set:le=>n[V]=le,enumerable:!0})})}else e.exposed||(e.exposed={});w&&e.render===pt&&(e.render=w),$!=null&&(e.inheritAttrs=$),L&&(e.components=L),W&&(e.directives=W),R&&xo(e)}function Sf(e,t,n=pt){G(e)&&(e=Us(e));for(const r in e){const s=e[r];let o;se(s)?"default"in s?o=Ce(s.from||r,s.default,!0):o=Ce(s.from||r):o=Ce(s),pe(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ai(e,t,n){Xe(G(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function wl(e,t,n,r){let s=r.includes(".")?sl(n,r):()=>n[r];if(he(e)){const o=t[e];Y(o)&&Rt(s,o)}else if(Y(e))Rt(s,e.bind(n));else if(se(e))if(G(e))e.forEach(o=>wl(o,t,n,r));else{const o=Y(e.handler)?e.handler.bind(n):t[e.handler];Y(o)&&Rt(s,o,e)}}function El(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(f=>Lr(l,f,i,!0)),Lr(l,t,i)),se(t)&&o.set(t,l),l}function Lr(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Lr(e,o,n,!0),s&&s.forEach(i=>Lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Tf[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Tf={data:li,props:ci,emits:ci,methods:Kn,computed:Kn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Kn,directives:Kn,watch:Cf,provide:li,inject:Rf};function li(e,t){return t?e?function(){return Te(Y(e)?e.call(this,this):e,Y(t)?t.call(this,this):t)}:t:e}function Rf(e,t){return Kn(Us(e),Us(t))}function Us(e){if(G(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Kt(t)}Modifiers`];function kf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||fe;let s=n;const o=t.startsWith("update:"),i=o&&xf(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>he(c)?c.trim():c)),i.number&&(s=n.map(Jr)));let a,l=r[a=ds(t)]||r[a=ds(Le(t))];!l&&o&&(l=r[a=ds(Kt(t))]),l&&Xe(l,e,6,s);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Xe(f,e,6,s)}}const Of=new WeakMap;function Tl(e,t,n=!1){const r=n?Of:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!Y(e)){const l=f=>{const c=Tl(f,t,!0);c&&(a=!0,Te(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(se(e)&&r.set(e,null),null):(G(o)?o.forEach(l=>i[l]=null):Te(i,o),se(e)&&r.set(e,i),i)}function os(e,t){return!e||!lr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ie(e,t[0].toLowerCase()+t.slice(1))||ie(e,Kt(t))||ie(e,t))}function vs(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:f,renderCache:c,props:u,data:h,setupState:d,ctx:m,inheritAttrs:y}=e,C=Or(e);let E,v;try{if(n.shapeFlag&4){const _=s||r,w=_;E=Fe(f.call(w,_,c,u,d,h,m)),v=a}else{const _=t;E=Fe(_.length>1?_(u,{attrs:a,slots:i,emit:l}):_(u,null)),v=t.props?a:If(a)}}catch(_){Xn.length=0,Ln(_,e,1),E=ye(be)}let p=E;if(v&&y!==!1){const _=Object.keys(v),{shapeFlag:w}=p;_.length&&w&7&&(o&&_.some(Wr)&&(v=Lf(v,o)),p=kt(p,v,!1,!0))}return n.dirs&&(p=kt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Rn(p,n.transition),E=p,Or(C),E}function Mf(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||lr(n))&&((t||(t={}))[n]=e[n]);return t},Lf=(e,t)=>{const n={};for(const r in e)(!Wr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Df(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ui(r,i,f):!!i;if(l&8){const c=t.dynamicProps;for(let u=0;uObject.create(Cl),Pl=e=>Object.getPrototypeOf(e)===Cl;function Hf(e,t,n,r=!1){const s={},o=Al();e.propsDefaults=Object.create(null),xl(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ze(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function $f(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=ne(s),[l]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,d]=kl(u,t,!0);Te(i,h),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return se(e)&&r.set(e,_n),_n;if(G(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Mo=e=>G(e)?e.map(Fe):[Fe(e)],jf=(e,t,n)=>{if(t._n)return t;const r=Ao((...s)=>Mo(t(...s)),n);return r._c=!1,r},Ol=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Oo(s))continue;const o=e[s];if(Y(o))t[s]=jf(s,o,r);else if(o!=null){const i=Mo(o);t[s]=()=>i}}},Ml=(e,t)=>{const n=Mo(t);e.slots.default=()=>n},Il=(e,t,n)=>{for(const r in t)(n||!Oo(r))&&(e[r]=t[r])},Ff=(e,t,n)=>{const r=e.slots=Al();if(e.vnode.shapeFlag&32){const s=t._;s?(Il(r,t,n),n&&xa(r,"_",s,!0)):Ol(t,r)}else t&&Ml(e,t)},Bf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=fe;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:Il(s,t,n):(o=!t.$stable,Ol(t,s)),i=t}else t&&(Ml(e,t),i={default:1});if(o)for(const a in s)!Oo(a)&&i[a]==null&&delete s[a]},Se=Fl;function Uf(e){return Ll(e)}function Vf(e){return Ll(e,uf)}function Ll(e,t){const n=Xr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:f,setElementText:c,parentNode:u,nextSibling:h,setScopeId:d=pt,insertStaticContent:m}=e,y=(g,b,S,M=null,A=null,O=null,j=void 0,N=null,H=!!b.dynamicChildren)=>{if(g===b)return;g&&!et(g,b)&&(M=x(g),De(g,A,O,!0),g=null),b.patchFlag===-2&&(H=!1,b.dynamicChildren=null);const{type:I,ref:X,shapeFlag:U}=b;switch(I){case rn:C(g,b,S,M);break;case be:E(g,b,S,M);break;case Jn:g==null&&v(b,S,M,j);break;case ke:L(g,b,S,M,A,O,j,N,H);break;default:U&1?w(g,b,S,M,A,O,j,N,H):U&6?W(g,b,S,M,A,O,j,N,H):(U&64||U&128)&&I.process(g,b,S,M,A,O,j,N,H,J)}X!=null&&A?En(X,g&&g.ref,O,b||g,!b):X==null&&g&&g.ref!=null&&En(g.ref,null,O,g,!0)},C=(g,b,S,M)=>{if(g==null)r(b.el=a(b.children),S,M);else{const A=b.el=g.el;b.children!==g.children&&f(A,b.children)}},E=(g,b,S,M)=>{g==null?r(b.el=l(b.children||""),S,M):b.el=g.el},v=(g,b,S,M)=>{[g.el,g.anchor]=m(g.children,b,S,M,g.el,g.anchor)},p=({el:g,anchor:b},S,M)=>{let A;for(;g&&g!==b;)A=h(g),r(g,S,M),g=A;r(b,S,M)},_=({el:g,anchor:b})=>{let S;for(;g&&g!==b;)S=h(g),s(g),g=S;s(b)},w=(g,b,S,M,A,O,j,N,H)=>{if(b.type==="svg"?j="svg":b.type==="math"&&(j="mathml"),g==null)k(b,S,M,A,O,j,N,H);else{const I=g.el&&g.el._isVueCE?g.el:null;try{I&&I._beginPatch(),R(g,b,A,O,j,N,H)}finally{I&&I._endPatch()}}},k=(g,b,S,M,A,O,j,N)=>{let H,I;const{props:X,shapeFlag:U,transition:z,dirs:Q}=g;if(H=g.el=i(g.type,O,X&&X.is,X),U&8?c(H,g.children):U&16&&D(g.children,H,null,M,A,ws(g,O),j,N),Q&&ct(g,null,M,"created"),P(H,g,g.scopeId,j,M),X){for(const ue in X)ue!=="value"&&!en(ue)&&o(H,ue,null,X[ue],O,M);"value"in X&&o(H,"value",null,X.value,O),(I=X.onVnodeBeforeMount)&&He(I,M,g)}Q&&ct(g,null,M,"beforeMount");const re=Dl(A,z);re&&z.beforeEnter(H),r(H,b,S),((I=X&&X.onVnodeMounted)||re||Q)&&Se(()=>{I&&He(I,M,g),re&&z.enter(H),Q&&ct(g,null,M,"mounted")},A)},P=(g,b,S,M,A)=>{if(S&&d(g,S),M)for(let O=0;O{for(let I=H;I{const N=b.el=g.el;let{patchFlag:H,dynamicChildren:I,dirs:X}=b;H|=g.patchFlag&16;const U=g.props||fe,z=b.props||fe;let Q;if(S&&zt(S,!1),(Q=z.onVnodeBeforeUpdate)&&He(Q,S,b,g),X&&ct(b,g,S,"beforeUpdate"),S&&zt(S,!0),(U.innerHTML&&z.innerHTML==null||U.textContent&&z.textContent==null)&&c(N,""),I?T(g.dynamicChildren,I,N,S,M,ws(b,A),O):j||V(g,b,N,null,S,M,ws(b,A),O,!1),H>0){if(H&16)$(N,U,z,S,A);else if(H&2&&U.class!==z.class&&o(N,"class",null,z.class,A),H&4&&o(N,"style",U.style,z.style,A),H&8){const re=b.dynamicProps;for(let ue=0;ue{Q&&He(Q,S,b,g),X&&ct(b,g,S,"updated")},M)},T=(g,b,S,M,A,O,j)=>{for(let N=0;N{if(b!==S){if(b!==fe)for(const O in b)!en(O)&&!(O in S)&&o(g,O,b[O],null,A,M);for(const O in S){if(en(O))continue;const j=S[O],N=b[O];j!==N&&O!=="value"&&o(g,O,N,j,A,M)}"value"in S&&o(g,"value",b.value,S.value,A)}},L=(g,b,S,M,A,O,j,N,H)=>{const I=b.el=g?g.el:a(""),X=b.anchor=g?g.anchor:a("");let{patchFlag:U,dynamicChildren:z,slotScopeIds:Q}=b;Q&&(N=N?N.concat(Q):Q),g==null?(r(I,S,M),r(X,S,M),D(b.children||[],S,X,A,O,j,N,H)):U>0&&U&64&&z&&g.dynamicChildren&&g.dynamicChildren.length===z.length?(T(g.dynamicChildren,z,S,A,O,j,N),(b.key!=null||A&&b===A.subTree)&&Hl(g,b,!0)):V(g,b,S,X,A,O,j,N,H)},W=(g,b,S,M,A,O,j,N,H)=>{b.slotScopeIds=N,g==null?b.shapeFlag&512?A.ctx.activate(b,S,M,j,H):Z(b,S,M,A,O,j,H):te(g,b,H)},Z=(g,b,S,M,A,O,j)=>{const N=g.component=nd(g,M,A);if(ur(g)&&(N.ctx.renderer=J),rd(N,!1,j),N.asyncDep){if(A&&A.registerDep(N,F,j),!g.el){const H=N.subTree=ye(be);E(null,H,b,S),g.placeholder=H.el}}else F(N,g,b,S,A,O,j)},te=(g,b,S)=>{const M=b.component=g.component;if(Df(g,b,S))if(M.asyncDep&&!M.asyncResolved){q(M,b,S);return}else M.next=b,M.update();else b.el=g.el,M.vnode=b},F=(g,b,S,M,A,O,j)=>{const N=()=>{if(g.isMounted){let{next:U,bu:z,u:Q,parent:re,vnode:ue}=g;{const Ne=$l(g);if(Ne){U&&(U.el=ue.el,q(g,U,j)),Ne.asyncDep.then(()=>{Se(()=>{g.isUnmounted||I()},A)});return}}let ce=U,_e;zt(g,!1),U?(U.el=ue.el,q(g,U,j)):U=ue,z&&vn(z),(_e=U.props&&U.props.onVnodeBeforeUpdate)&&He(_e,re,U,ue),zt(g,!0);const we=vs(g),Qe=g.subTree;g.subTree=we,y(Qe,we,u(Qe.el),x(Qe),g,A,O),U.el=we.el,ce===null&&is(g,we.el),Q&&Se(Q,A),(_e=U.props&&U.props.onVnodeUpdated)&&Se(()=>He(_e,re,U,ue),A)}else{let U;const{el:z,props:Q}=b,{bm:re,m:ue,parent:ce,root:_e,type:we}=g,Qe=Ct(b);if(zt(g,!1),re&&vn(re),!Qe&&(U=Q&&Q.onVnodeBeforeMount)&&He(U,ce,b),zt(g,!0),z&&ge){const Ne=()=>{g.subTree=vs(g),ge(z,g.subTree,g,A,null)};Qe&&we.__asyncHydrate?we.__asyncHydrate(z,g,Ne):Ne()}else{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(we,g.parent?g.parent.type:void 0);const Ne=g.subTree=vs(g);y(null,Ne,S,M,g,A,O),b.el=Ne.el}if(ue&&Se(ue,A),!Qe&&(U=Q&&Q.onVnodeMounted)){const Ne=b;Se(()=>He(U,ce,Ne),A)}(b.shapeFlag&256||ce&&Ct(ce.vnode)&&ce.vnode.shapeFlag&256)&&g.a&&Se(g.a,A),g.isMounted=!0,b=S=M=null}};g.scope.on();const H=g.effect=new Ha(N);g.scope.off();const I=g.update=H.run.bind(H),X=g.job=H.runIfDirty.bind(H);X.i=g,X.id=g.uid,H.scheduler=()=>Co(X),zt(g,!0),I()},q=(g,b,S)=>{b.component=g;const M=g.vnode.props;g.vnode=b,g.next=null,$f(g,b.props,M,S),Bf(g,b.children,S),At(),Zo(g),Pt()},V=(g,b,S,M,A,O,j,N,H=!1)=>{const I=g&&g.children,X=g?g.shapeFlag:0,U=b.children,{patchFlag:z,shapeFlag:Q}=b;if(z>0){if(z&128){Mt(I,U,S,M,A,O,j,N,H);return}else if(z&256){le(I,U,S,M,A,O,j,N,H);return}}Q&8?(X&16&&Ke(I,A,O),U!==I&&c(S,U)):X&16?Q&16?Mt(I,U,S,M,A,O,j,N,H):Ke(I,A,O,!0):(X&8&&c(S,""),Q&16&&D(U,S,M,A,O,j,N,H))},le=(g,b,S,M,A,O,j,N,H)=>{g=g||_n,b=b||_n;const I=g.length,X=b.length,U=Math.min(I,X);let z;for(z=0;zX?Ke(g,A,O,!0,!1,U):D(b,S,M,A,O,j,N,H,U)},Mt=(g,b,S,M,A,O,j,N,H)=>{let I=0;const X=b.length;let U=g.length-1,z=X-1;for(;I<=U&&I<=z;){const Q=g[I],re=b[I]=H?wt(b[I]):Fe(b[I]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;I++}for(;I<=U&&I<=z;){const Q=g[U],re=b[z]=H?wt(b[z]):Fe(b[z]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;U--,z--}if(I>U){if(I<=z){const Q=z+1,re=Qz)for(;I<=U;)De(g[I],A,O,!0),I++;else{const Q=I,re=I,ue=new Map;for(I=re;I<=z;I++){const je=b[I]=H?wt(b[I]):Fe(b[I]);je.key!=null&&ue.set(je.key,I)}let ce,_e=0;const we=z-re+1;let Qe=!1,Ne=0;const Hn=new Array(we);for(I=0;I=we){De(je,A,O,!0);continue}let at;if(je.key!=null)at=ue.get(je.key);else for(ce=re;ce<=z;ce++)if(Hn[ce-re]===0&&et(je,b[ce])){at=ce;break}at===void 0?De(je,A,O,!0):(Hn[at-re]=I+1,at>=Ne?Ne=at:Qe=!0,y(je,b[at],S,null,A,O,j,N,H),_e++)}const qo=Qe?Kf(Hn):_n;for(ce=qo.length-1,I=we-1;I>=0;I--){const je=re+I,at=b[je],zo=b[je+1],Go=je+1{const{el:O,type:j,transition:N,children:H,shapeFlag:I}=g;if(I&6){it(g.component.subTree,b,S,M);return}if(I&128){g.suspense.move(b,S,M);return}if(I&64){j.move(g,b,S,J);return}if(j===ke){r(O,b,S);for(let U=0;UN.enter(O),A));else{const{leave:U,delayLeave:z,afterLeave:Q}=N,re=()=>{g.ctx.isUnmounted?s(O):r(O,b,S)},ue=()=>{const ce=O._isLeaving||!!O[ze];O._isLeaving&&O[ze](!0),N.persisted&&!ce?re():U(O,()=>{re(),Q&&Q()})};z?z(O,re,ue):ue()}else r(O,b,S)},De=(g,b,S,M=!1,A=!1)=>{const{type:O,props:j,ref:N,children:H,dynamicChildren:I,shapeFlag:X,patchFlag:U,dirs:z,cacheIndex:Q,memo:re}=g;if(U===-2&&(A=!1),N!=null&&(At(),En(N,null,S,g,!0),Pt()),Q!=null&&(b.renderCache[Q]=void 0),X&256){b.ctx.deactivate(g);return}const ue=X&1&&z,ce=!Ct(g);let _e;if(ce&&(_e=j&&j.onVnodeBeforeUnmount)&&He(_e,b,g),X&6)qt(g.component,S,M);else{if(X&128){g.suspense.unmount(S,M);return}ue&&ct(g,null,b,"beforeUnmount"),X&64?g.type.remove(g,b,S,J,M):I&&!I.hasOnce&&(O!==ke||U>0&&U&64)?Ke(I,b,S,!1,!0):(O===ke&&U&384||!A&&X&16)&&Ke(H,b,S),M&&ln(g)}const we=re!=null&&Q==null;(ce&&(_e=j&&j.onVnodeUnmounted)||ue||we)&&Se(()=>{_e&&He(_e,b,g),ue&&ct(g,null,b,"unmounted"),we&&(g.el=null)},S)},ln=g=>{const{type:b,el:S,anchor:M,transition:A}=g;if(b===ke){cn(S,M);return}if(b===Jn){_(g);return}const O=()=>{s(S),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(g.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:N}=A,H=()=>j(S,O);N?N(g.el,O,H):H()}else O()},cn=(g,b)=>{let S;for(;g!==b;)S=h(g),s(g),g=S;s(b)},qt=(g,b,S)=>{const{bum:M,scope:A,job:O,subTree:j,um:N,m:H,a:I}=g;Dr(H),Dr(I),M&&vn(M),A.stop(),O&&(O.flags|=8,De(j,g,b,S)),N&&Se(N,b),Se(()=>{g.isUnmounted=!0},b)},Ke=(g,b,S,M=!1,A=!1,O=0)=>{for(let j=O;j{if(g.shapeFlag&6)return x(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const b=h(g.anchor||g.el),S=b&&b[rf];return S?h(S):b};let K=!1;const B=(g,b,S)=>{let M;g==null?b._vnode&&(De(b._vnode,null,null,!0),M=b._vnode.component):y(b._vnode||null,g,b,null,null,null,S),b._vnode=g,K||(K=!0,Zo(M),kr(),K=!1)},J={p:y,um:De,m:it,r:ln,mt:Z,mc:D,pc:V,pbc:T,n:x,o:e};let ee,ge;return t&&([ee,ge]=t(J)),{render:B,hydrate:ee,createApp:Pf(B,ee)}}function ws({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function zt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Dl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Hl(e,t,n=!1){const r=e.children,s=t.children;if(G(r)&&G(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function $l(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$l(t)}function Dr(e){if(e)for(let t=0;te.__isSuspense;let Ks=0;const Wf={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,a,l,f){if(e==null)qf(t,n,r,s,o,i,a,l,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}zf(e,t,n,r,s,i,a,l,f)}},hydrate:Gf,normalize:Jf},Io=Wf;function or(e,t){const n=e.props&&e.props[t];Y(n)&&n()}function qf(e,t,n,r,s,o,i,a,l){const{p:f,o:{createElement:c}}=l,u=c("div"),h=e.suspense=jl(e,s,r,t,u,n,o,i,a,l);f(null,h.pendingBranch=e.ssContent,u,null,r,h,o,i),h.deps>0?(or(e,"onPending"),or(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Sn(h,e.ssFallback)):h.resolve(!1,!0)}function zf(e,t,n,r,s,o,i,a,{p:l,um:f,o:{createElement:c}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,d=t.ssFallback,{activeBranch:m,pendingBranch:y,isInFallback:C,isHydrating:E}=u;if(y)u.pendingBranch=h,et(y,h)?(l(y,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():C&&(E||(l(m,d,n,r,s,null,o,i,a),Sn(u,d)))):(u.pendingId=Ks++,E?(u.isHydrating=!1,u.activeBranch=y):f(y,s,u),u.deps=0,u.effects.length=0,u.hiddenContainer=c("div"),C?(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():(l(m,d,n,r,s,null,o,i,a),Sn(u,d))):m&&et(m,h)?(l(m,h,n,r,s,u,o,i,a),u.resolve(!0)):(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0&&u.resolve()));else if(m&&et(m,h))l(m,h,n,r,s,u,o,i,a),Sn(u,h);else if(or(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=Ks++,l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0)u.resolve();else{const{timeout:v,pendingId:p}=u;v>0?setTimeout(()=>{u.pendingId===p&&u.fallback(d)},v):v===0&&u.fallback(d)}}function jl(e,t,n,r,s,o,i,a,l,f,c=!1){const{p:u,m:h,um:d,n:m,o:{parentNode:y,remove:C}}=f;let E;const v=Xf(e);v&&t&&t.pendingBranch&&(E=t.pendingId,t.deps++);const p=e.props?ka(e.props.timeout):void 0,_=o,w={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:Ks++,timeout:typeof p=="number"?p:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(k=!1,P=!1){const{vnode:D,activeBranch:R,pendingBranch:T,pendingId:$,effects:L,parentComponent:W,container:Z,isInFallback:te}=w;let F=!1;if(w.isHydrating)w.isHydrating=!1;else if(!k){F=R&&T.transition&&T.transition.mode==="out-in";let le=!1;F&&(R.transition.afterLeave=()=>{$===w.pendingId&&(h(T,Z,o===_&&!le?m(R):o,0),rr(L),te&&D.ssFallback&&(D.ssFallback.el=null))}),R&&!w.isFallbackMountPending&&(y(R.el)===Z&&(o=m(R),le=!0),d(R,W,w,!0),!F&&te&&D.ssFallback&&Se(()=>D.ssFallback.el=null,w)),F||h(T,Z,o,0)}w.isFallbackMountPending=!1,Sn(w,T),w.pendingBranch=null,w.isInFallback=!1;let q=w.parent,V=!1;for(;q;){if(q.pendingBranch){q.effects.push(...L),V=!0;break}q=q.parent}!V&&!F&&rr(L),w.effects=[],v&&t&&t.pendingBranch&&E===t.pendingId&&(t.deps--,t.deps===0&&!P&&t.resolve()),or(D,"onResolve")},fallback(k){if(!w.pendingBranch)return;const{vnode:P,activeBranch:D,parentComponent:R,container:T,namespace:$}=w;or(P,"onFallback");const L=m(D),W=()=>{w.isFallbackMountPending=!1,w.isInFallback&&(u(null,k,T,L,R,null,$,a,l),Sn(w,k))},Z=k.transition&&k.transition.mode==="out-in";Z&&(w.isFallbackMountPending=!0,D.transition.afterLeave=W),w.isInFallback=!0,d(D,R,null,!0),Z||W()},move(k,P,D){w.activeBranch&&h(w.activeBranch,k,P,D),w.container=k},next(){return w.activeBranch&&m(w.activeBranch)},registerDep(k,P,D){const R=!!w.pendingBranch;R&&w.deps++;const T=k.vnode.el;k.asyncDep.catch($=>{Ln($,k,0)}).then($=>{if(k.isUnmounted||w.isUnmounted||w.pendingId!==k.suspenseId)return;qs(),k.asyncResolved=!0;const{vnode:L}=k;zs(k,$),T&&(L.el=T);const W=!T&&k.subTree.el;P(k,L,y(T||k.subTree.el),T?null:m(k.subTree),w,i,D),W&&(L.placeholder=null,C(W)),is(k,L.el),R&&--w.deps===0&&w.resolve()})},unmount(k,P){w.isUnmounted=!0,w.activeBranch&&d(w.activeBranch,n,k,P),w.pendingBranch&&d(w.pendingBranch,n,k,P)}};return w}function Gf(e,t,n,r,s,o,i,a,l){const f=t.suspense=jl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,a,!0),c=l(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),c}function Jf(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=di(r?n.default:n),e.ssFallback=r?di(n.fallback):ye(be)}function di(e){let t;if(Y(e)){const n=Cn&&e._c;n&&(e._d=!1,Ge()),e=e(),n&&(e._d=!0,t=$e,Bl())}return G(e)&&(e=Mf(e)),e=Fe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Fl(e,t){t&&t.pendingBranch?G(e)?t.effects.push(...e):t.effects.push(e):rr(e)}function Sn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,is(r,s))}function Xf(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ke=Symbol.for("v-fgt"),rn=Symbol.for("v-txt"),be=Symbol.for("v-cmt"),Jn=Symbol.for("v-stc"),Xn=[];let $e=null;function Ge(e=!1){Xn.push($e=e?null:[])}function Bl(){Xn.pop(),$e=Xn[Xn.length-1]||null}let Cn=1;function $r(e,t=!1){Cn+=e,e<0&&$e&&t&&($e.hasOnce=!0)}function Ul(e){return e.dynamicChildren=Cn>0?$e||_n:null,Bl(),Cn>0&&$e&&$e.push(e),e}function Yf(e,t,n,r,s,o){return Ul(Kl(e,t,n,r,s,o,!0))}function ht(e,t,n,r,s){return Ul(ye(e,t,n,r,s,!0))}function sn(e){return e?e.__v_isVNode===!0:!1}function et(e,t){return e.type===t.type&&e.key===t.key}const Vl=({key:e})=>e??null,Rr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?he(e)||pe(e)||Y(e)?{i:Pe,r:e,k:t,f:!!n}:e:null);function Kl(e,t=null,n=null,r=0,s=null,o=e===ke?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vl(t),ref:t&&Rr(t),scopeId:rl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Pe};return a?(Lo(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=he(n)?8:16),Cn>0&&!i&&$e&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&$e.push(l),l}const ye=Qf;function Qf(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===_l)&&(e=be),sn(e)){const a=kt(e,t,!0);return n&&Lo(a,n),Cn>0&&!o&&$e&&(a.shapeFlag&6?$e[$e.indexOf(e)]=a:$e.push(a)),a.patchFlag=-2,a}if(ad(e)&&(e=e.__vccOpts),t){t=Wl(t);let{class:a,style:l}=t;a&&!he(a)&&(t.class=Qr(a)),se(l)&&(ts(l)&&!G(l)&&(l=Te({},l)),t.style=Yr(l))}const i=he(e)?1:Hr(e)?128:ol(e)?64:se(e)?4:Y(e)?2:0;return Kl(e,t,n,r,s,i,o,!0)}function Wl(e){return e?ts(e)||Pl(e)?Te({},e):e:null}function kt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,f=t?zl(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Vl(f),ref:t&&t.ref?n&&o?G(o)?o.concat(Rr(t)):[o,Rr(t)]:Rr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&kt(e.ssContent),ssFallback:e.ssFallback&&kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Rn(c,l.clone(c)),c}function ql(e=" ",t=0){return ye(rn,null,e,t)}function o_(e,t){const n=ye(Jn,null,e);return n.staticCount=t,n}function Zf(e="",t=!1){return t?(Ge(),ht(be,null,e)):ye(be,null,e)}function Fe(e){return e==null||typeof e=="boolean"?ye(be):G(e)?ye(ke,null,e.slice()):sn(e)?wt(e):ye(rn,null,String(e))}function wt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:kt(e)}function Lo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(G(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Lo(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Pl(t)?t._ctx=Pe:s===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Y(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[ql(t)]):n=8);e.children=t,e.shapeFlag|=n}function zl(...e){const t={};for(let n=0;nAe||Pe;let Nr,Ws;{const e=Xr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Nr=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),Ws=t("__VUE_SSR_SETTERS__",n=>An=n)}const dr=e=>{const t=Ae;return Nr(e),e.scope.on(),()=>{e.scope.off(),Nr(t)}},qs=()=>{Ae&&Ae.scope.off(),Nr(null)};function Gl(e){return e.vnode.shapeFlag&4}let An=!1;function rd(e,t=!1,n=!1){t&&Ws(t);const{props:r,children:s}=e.vnode,o=Gl(e);Hf(e,r,o,t),Ff(e,s,n||t);const i=o?sd(e,t):void 0;return t&&Ws(!1),i}function sd(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,wf);const{setup:r}=n;if(r){At();const s=e.setupContext=r.length>1?id(e):null,o=dr(e),i=cr(r,e,0,[e.props,s]),a=Aa(i);if(Pt(),o(),(a||e.sp)&&!Ct(e)&&xo(e),a){if(i.then(qs,qs),t)return i.then(l=>{zs(e,l)}).catch(l=>{Ln(l,e,0)});e.asyncDep=i}else zs(e,i)}else Jl(e)}function zs(e,t,n){Y(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Ya(t)),Jl(e)}function Jl(e,t,n){const r=e.type;e.render||(e.render=r.render||pt);{const s=dr(e);At();try{Ef(e)}finally{Pt(),s()}}}const od={get(e,t){return xe(e,"get",""),e[t]}};function id(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,od),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ya(Ro(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}})):e.proxy}function Gs(e,t=!0){return Y(e)?e.displayName||e.name:e.name||t&&e.__name}function ad(e){return Y(e)&&"__vccOpts"in e}const Re=(e,t)=>Gu(e,t,An);function Oe(e,t,n){try{$r(-1);const r=arguments.length;return r===2?se(t)&&!G(t)?sn(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&sn(n)&&(n=[n]),ye(e,t,n))}finally{$r(1)}}const ld="3.5.38";let Js;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{Js=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const Xl=Js?e=>Js.createHTML(e):e=>e,cd="http://www.w3.org/2000/svg",ud="http://www.w3.org/1998/Math/MathML",vt=typeof document<"u"?document:null,pi=vt&&vt.createElement("template"),fd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?vt.createElementNS(cd,e):t==="mathml"?vt.createElementNS(ud,e):n?vt.createElement(e,{is:n}):vt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>vt.createTextNode(e),createComment:e=>vt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{pi.innerHTML=Xl(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=pi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},It="transition",jn="animation",ir=Symbol("_vtc"),Yl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},dd=Te({},il,Yl),hd=e=>(e.displayName="Transition",e.props=dd,e),pd=hd((e,{slots:t})=>Oe(af,gd(e),t)),Gt=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},gi=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function gd(e){const t={};for(const L in e)L in Yl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:f=i,appearToClass:c=a,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=md(s),y=m&&m[0],C=m&&m[1],{onBeforeEnter:E,onEnter:v,onEnterCancelled:p,onLeave:_,onLeaveCancelled:w,onBeforeAppear:k=E,onAppear:P=v,onAppearCancelled:D=p}=t,R=(L,W,Z,te)=>{L._enterCancelled=te,Jt(L,W?c:a),Jt(L,W?f:i),Z&&Z()},T=(L,W)=>{L._isLeaving=!1,Jt(L,u),Jt(L,d),Jt(L,h),W&&W()},$=L=>(W,Z)=>{const te=L?P:v,F=()=>R(W,L,Z);Gt(te,[W,F]),mi(()=>{Jt(W,L?l:o),_t(W,L?c:a),gi(te)||yi(W,r,y,F)})};return Te(t,{onBeforeEnter(L){Gt(E,[L]),_t(L,o),_t(L,i)},onBeforeAppear(L){Gt(k,[L]),_t(L,l),_t(L,f)},onEnter:$(!1),onAppear:$(!0),onLeave(L,W){L._isLeaving=!0;const Z=()=>T(L,W);_t(L,u),L._enterCancelled?(_t(L,h),vi(L)):(vi(L),_t(L,h)),mi(()=>{L._isLeaving&&(Jt(L,u),_t(L,d),gi(_)||yi(L,r,C,Z))}),Gt(_,[L,Z])},onEnterCancelled(L){R(L,!1,void 0,!0),Gt(p,[L])},onAppearCancelled(L){R(L,!0,void 0,!0),Gt(D,[L])},onLeaveCancelled(L){T(L),Gt(w,[L])}})}function md(e){if(e==null)return null;if(se(e))return[Es(e.enter),Es(e.leave)];{const t=Es(e);return[t,t]}}function Es(e){return ka(e)}function _t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ir]||(e[ir]=new Set)).add(t)}function Jt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[ir];n&&(n.delete(t),n.size||(e[ir]=void 0))}function mi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let yd=0;function yi(e,t,n,r){const s=e._endId=++yd,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=_d(e,t);if(!i)return r();const f=i+"end";let c=0;const u=()=>{e.removeEventListener(f,h),o()},h=d=>{d.target===e&&++c>=l&&u()};setTimeout(()=>{c(n[m]||"").split(", "),s=r(`${It}Delay`),o=r(`${It}Duration`),i=_i(s,o),a=r(`${jn}Delay`),l=r(`${jn}Duration`),f=_i(a,l);let c=null,u=0,h=0;t===It?i>0&&(c=It,u=i,h=o.length):t===jn?f>0&&(c=jn,u=f,h=l.length):(u=Math.max(i,f),c=u>0?i>f?It:jn:null,h=c?c===It?o.length:l.length:0);const d=c===It&&/\b(?:transform|all)(?:,|$)/.test(r(`${It}Property`).toString());return{type:c,timeout:u,propCount:h,hasTransform:d}}function _i(e,t){for(;e.lengthbi(n)+bi(e[r])))}function bi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vi(e){return(e?e.ownerDocument:document).body.offsetHeight}function bd(e,t,n){const r=e[ir];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),Ql=Symbol("_vsh"),i_={name:"show",beforeMount(e,{value:t},{transition:n}){e[jr]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Fn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Fn(e,!0),r.enter(e)):r.leave(e,()=>{Fn(e,!1)}):Fn(e,t))},beforeUnmount(e,{value:t}){Fn(e,t)}};function Fn(e,t){e.style.display=t?e[jr]:"none",e[Ql]=!t}const vd=Symbol(""),wd=/(?:^|;)\s*display\s*:/;function Ed(e,t,n){const r=e.style,s=he(n);let o=!1;if(n&&!s){if(t)if(he(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Wn(r,a,"")}else for(const i in t)n[i]==null&&Wn(r,i,"");for(const i in n){i==="display"&&(o=!0);const a=n[i];a!=null?Td(e,i,!he(t)&&t?t[i]:void 0,a)||Wn(r,i,a):Wn(r,i,"")}}else if(s){if(t!==n){const i=r[vd];i&&(n+=";"+i),r.cssText=n,o=wd.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=o?r.display:"",e[Ql]&&(r.display="none"))}const wi=/\s*!important$/;function Wn(e,t,n){if(G(n))n.forEach(r=>Wn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Sd(e,t);wi.test(n)?e.setProperty(Kt(r),n.replace(wi,""),"important"):e[r]=n}}const Ei=["Webkit","Moz","ms"],Ss={};function Sd(e,t){const n=Ss[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return Ss[t]=r;r=Gr(r);for(let s=0;sTs||(Pd.then(()=>Ts=0),Ts=Date.now());function kd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(G(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),a=[r];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Od=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?bd(e,r,i):t==="style"?Ed(e,n,r):lr(t)?Wr(t)||Cd(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Md(e,t,r,i))?(Ri(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ti(e,t,r,i,o,t!=="value")):e._isVueCE&&(Id(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!he(r)))?Ri(e,Le(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ti(e,t,r,i))};function Md(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pi(t)&&Y(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Pi(t)&&he(n)?!1:t in e}function Id(e,t){const n=e._def.props;if(!n)return!1;const r=Le(t);return Array.isArray(n)?n.some(s=>Le(s)===r):Object.keys(n).some(s=>Le(s)===r)}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return G(t)?n=>vn(t,n):t};function Ld(e){e.target.composing=!0}function xi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Je=Symbol("_assign");function ki(e,t,n){return t&&(e=e.trim()),n&&(e=Jr(e)),e}const Oi={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Je]=Vt(s);const o=r||s.props&&s.props.type==="number";Tt(e,t?"change":"input",i=>{i.target.composing||e[Je](ki(e.value,n,o))}),(n||o)&&Tt(e,"change",()=>{e.value=ki(e.value,n,o)}),t||(Tt(e,"compositionstart",Ld),Tt(e,"compositionend",xi),Tt(e,"change",xi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Je]=Vt(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Jr(e.value):e.value,l=t??"";if(a===l)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l)}},Dd={deep:!0,created(e,t,n){e[Je]=Vt(n),Tt(e,"change",()=>{const r=e._modelValue,s=Pn(e),o=e.checked,i=e[Je];if(G(r)){const a=yo(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const f=[...r];f.splice(a,1),i(f)}}else if(Mn(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(Zl(e,o))})},mounted:Mi,beforeUpdate(e,t,n){e[Je]=Vt(n),Mi(e,t,n)}};function Mi(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(G(t))s=yo(t,r.props.value)>-1;else if(Mn(t))s=t.has(r.props.value);else{if(t===n)return;s=Bt(t,Zl(e,!0))}e.checked!==s&&(e.checked=s)}const Hd={created(e,{value:t},n){e.checked=Bt(t,n.props.value),e[Je]=Vt(n),Tt(e,"change",()=>{e[Je](Pn(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Je]=Vt(r),t!==n&&(e.checked=Bt(t,r.props.value))}},$d={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Mn(t);Tt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Jr(Pn(i)):Pn(i));e[Je](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,xt(()=>{e._assigning=!1})}),e[Je]=Vt(r)},mounted(e,{value:t}){Ii(e,t)},beforeUpdate(e,t,n){e[Je]=Vt(n)},updated(e,{value:t}){e._assigning||Ii(e,t)}};function Ii(e,t){const n=e.multiple,r=G(t);if(!(n&&!r&&!Mn(t))){for(let s=0,o=e.options.length;sString(f)===String(a)):i.selected=yo(t,a)>-1}else i.selected=t.has(a);else if(Bt(Pn(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Pn(e){return"_value"in e?e._value:e.value}function Zl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const a_={created(e,t,n){vr(e,t,n,null,"created")},mounted(e,t,n){vr(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){vr(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){vr(e,t,n,r,"updated")}};function Nd(e,t){switch(e){case"SELECT":return $d;case"TEXTAREA":return Oi;default:switch(t){case"checkbox":return Dd;case"radio":return Hd;default:return Oi}}}function vr(e,t,n,r,s){const i=Nd(e.tagName,n.props&&n.props.type)[s];i&&i(e,t,n,r)}const jd=["ctrl","shift","alt","meta"],Fd={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jd.some(n=>e[`${n}Key`]&&!t.includes(n))},l_=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;const o=Kt(s.key);if(t.some(i=>i===o||Bd[i]===o))return e(s)}))},ec=Te({patchProp:Od},fd);let Yn,Li=!1;function Ud(){return Yn||(Yn=Uf(ec))}function Vd(){return Yn=Li?Yn:Vf(ec),Li=!0,Yn}const Kd=((...e)=>{const t=Ud().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=nc(r);if(!s)return;const o=t._component;!Y(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,tc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t}),Wd=((...e)=>{const t=Vd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=nc(r);if(s)return n(s,!0,tc(s))},t});function tc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function nc(e){return he(e)?document.querySelector(e):e}const qd=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,zd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Gd=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Jd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){Xd(e);return}return t}function Xd(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Yd(e,t={}){if(typeof e!="string")return e;if(e[0]==='"'&&e[e.length-1]==='"'&&e.indexOf("\\")===-1)return e.slice(1,-1);const n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case"true":return!0;case"false":return!1;case"undefined":return;case"null":return null;case"nan":return Number.NaN;case"infinity":return Number.POSITIVE_INFINITY;case"-infinity":return Number.NEGATIVE_INFINITY}if(!Gd.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(qd.test(e)||zd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,Jd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const rc=/#/g,sc=/&/g,Qd=/\//g,Zd=/=/g,eh=/\?/g,ls=/\+/g,th=/%5e/gi,nh=/%60/gi,rh=/%7c/gi,sh=/%20/gi,oh=/%2f/gi,ih=/%252f/gi;function oc(e){return encodeURI(""+e).replace(rh,"|")}function Xs(e){return oc(typeof e=="string"?e:JSON.stringify(e)).replace(ls,"%2B").replace(sh,"+").replace(rc,"%23").replace(sc,"%26").replace(nh,"`").replace(th,"^").replace(Qd,"%2F")}function Rs(e){return Xs(e).replace(Zd,"%3D")}function ah(e){return oc(e).replace(rc,"%23").replace(eh,"%3F").replace(ih,"%2F").replace(sc,"%26").replace(ls,"%2B")}function ar(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function lh(e){return ar(e.replace(oh,"%252F"))}function ch(e){return ar(e.replace(ls," "))}function uh(e){return ar(e.replace(ls," "))}function ic(e=""){const t=Object.create(null);e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=ch(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=uh(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function fh(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Rs(e)}=${Xs(n)}`).join("&"):`${Rs(e)}=${Xs(t)}`:Rs(e)}function dh(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>fh(t,e[t])).filter(Boolean).join("&")}const hh=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,ph=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,gh=/^([/\\]\s*){2,}[^/\\]/,mh=/^[\s\0]*(blob|data|javascript|vbscript):$/i,yh=/\/$|\/\?|\/#/,_h=/^\.?\//;function Dn(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?hh.test(e):ph.test(e)||(t.acceptRelative?gh.test(e):!1)}function Ys(e){return!!e&&mh.test(e)}function Qs(e="",t){return t?yh.test(e):e.endsWith("/")}function Fr(e="",t){if(!t)return(Qs(e)?e.slice(0,-1):e)||"/";if(!Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s!==-1&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function bh(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s!==-1&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function vh(e,t){if(lc(t)||Dn(e))return e;const n=Fr(t);if(e.startsWith(n)){const r=e[n.length];if(!r||r==="/"||r==="?")return e}return cc(n,e)}function Di(e,t){if(lc(t))return e;const n=Fr(t);if(!e.startsWith(n))return e;const r=e[n.length];return r&&r!=="/"&&r!=="?"?e:"/"+e.slice(n.length).replace(/^\/+/,"")}function ac(e,t){const n=Do(e),r={...ic(n.search),...t};return n.search=dh(r),Eh(n)}function lc(e){return!e||e==="/"}function wh(e){return e&&e!=="/"}function cc(e,...t){let n=e||"";for(const r of t.filter(s=>wh(s)))if(n){const s=r.replace(_h,"");n=bh(n)+s}else n=r;return n}function uc(...e){const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const i of n)if(!(!i||i==="/")){for(const[a,l]of i.split(t).entries())if(!(!l||l===".")){if(l===".."){if(r.length===1&&Dn(r[0]))continue;r.pop(),s--;continue}if(a===1&&r[r.length-1]?.endsWith(":/")){r[r.length-1]+="/"+l;continue}r.push(l),s++}}let o=r.join("/");return s>=0?n[0]?.startsWith("/")&&!o.startsWith("/")?o="/"+o:n[0]?.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,n[n.length-1]?.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function fc(e,t){return ar(Fr(e))===ar(Fr(t))}const dc=Symbol.for("ufo:protocolRelative");function Do(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,u,h=""]=n;return{protocol:u.toLowerCase(),pathname:h,href:u+h,auth:"",host:"",search:"",hash:""}}if(!Dn(e,{acceptRelative:!0}))return Hi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(a=a.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:l,search:f,hash:c}=Hi(a);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:f,hash:c,[dc]:!r}}function Hi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Eh(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[dc]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Sh extends Error{constructor(t,n){super(t,n),this.name="FetchError",n?.cause&&!this.cause&&(this.cause=n.cause)}}function Th(e){const t=e.error?.message||e.error?.toString()||"",n=e.request?.method||e.options?.method||"GET",r=e.request?.url||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Sh(i,e.error?{cause:e.error}:void 0);for(const l of["request","options","response"])Object.defineProperty(a,l,{get(){return e[l]}});for(const[l,f]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,l,{get(){return e.response&&e.response[f]}});return a}const Rh=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function $i(e="GET"){return Rh.has(e.toUpperCase())}function Ch(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Ah=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Ph=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function xh(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Ph.test(t)?"json":t==="text/event-stream"?"stream":Ah.has(t)||t.startsWith("text/")?"text":"blob"}function kh(e,t,n,r){const s=Oh(t?.headers??e?.headers,n?.headers,r);let o;return(n?.query||n?.params||t?.params||t?.query)&&(o={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:o,params:o,headers:s}}function Oh(e,t,n){if(!t)return new n(e);const r=new n(t);if(e)for(const[s,o]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(s,o);return r}async function wr(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const Mh=new Set([408,409,425,429,500,502,503,504]),Ih=new Set([101,204,205,304]);function hc(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=$i(a.options.method)?0:1;const u=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(u):Mh.has(u))){const h=typeof a.options.retryDelay=="function"?a.options.retryDelay(a):a.options.retryDelay||0;return h>0&&await new Promise(d=>setTimeout(d,h)),o(a.request,{...a.options,retry:c-1})}}const f=Th(a);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(l,f={}){const c={request:l,options:kh(l,f,e.defaults,n),response:void 0,error:void 0};if(c.options.method&&(c.options.method=c.options.method.toUpperCase()),c.options.onRequest&&(await wr(c,c.options.onRequest),c.options.headers instanceof n||(c.options.headers=new n(c.options.headers||{}))),typeof c.request=="string"&&(c.options.baseURL&&(c.request=vh(c.request,c.options.baseURL)),c.options.query&&(c.request=ac(c.request,c.options.query),delete c.options.query),"query"in c.options&&delete c.options.query,"params"in c.options&&delete c.options.params),c.options.body&&$i(c.options.method))if(Ch(c.options.body)){const d=c.options.headers.get("content-type");typeof c.options.body!="string"&&(c.options.body=d==="application/x-www-form-urlencoded"?new URLSearchParams(c.options.body).toString():JSON.stringify(c.options.body)),d||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")}else("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half"));let u;if(!c.options.signal&&c.options.timeout){const d=new r;u=setTimeout(()=>{const m=new Error("[TimeoutError]: The operation was aborted due to timeout");m.name="TimeoutError",m.code=23,d.abort(m)},c.options.timeout),c.options.signal=d.signal}try{c.response=await t(c.request,c.options)}catch(d){return c.error=d,c.options.onRequestError&&await wr(c,c.options.onRequestError),await s(c)}finally{u&&clearTimeout(u)}if((c.response.body||c.response._bodyInit)&&!Ih.has(c.response.status)&&c.options.method!=="HEAD"){const d=(c.options.parseResponse?"json":c.options.responseType)||xh(c.response.headers.get("content-type")||"");switch(d){case"json":{const m=await c.response.text(),y=c.options.parseResponse||Yd;c.response._data=y(m);break}case"stream":{c.response._data=c.response.body||c.response._bodyInit;break}default:c.response._data=await c.response[d]()}}return c.options.onResponse&&await wr(c,c.options.onResponse),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await wr(c,c.options.onResponseError),await s(c)):c.response},i=async function(l,f){return(await o(l,f))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={},l={})=>hc({...e,...l,defaults:{...e.defaults,...l.defaults,...a}}),i}const Br=(function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")})(),Lh=Br.fetch?(...e)=>Br.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),Dh=Br.Headers,Hh=Br.AbortController,$h=hc({fetch:Lh,Headers:Dh,AbortController:Hh}),Nh=$h,jh=()=>window?.__NUXT__?.config||window?.useNuxtApp?.().payload?.config,Ho=()=>jh().app,Fh=()=>Ho().baseURL,Bh=()=>Ho().buildAssetsDir,$o=(...e)=>uc(pc(),Bh(),...e),pc=(...e)=>{const t=Ho(),n=t.cdnURL||t.baseURL;return e.length?uc(n,...e):n};globalThis.__buildAssetsURL=$o,globalThis.__publicAssetsURL=pc;globalThis.$fetch||(globalThis.$fetch=Nh.create({baseURL:Fh()}));"global"in globalThis||(globalThis.global=globalThis);function Zs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?Zs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const gc=(()=>{if(console.createTask)return console.createTask;const e={run:t=>t()};return()=>e})();function mc(e,t,n,r){for(let s=n;se[s](...t)):e[s](...t);if(o&&typeof o.then=="function")return Promise.resolve(o).then(()=>mc(e,t,s+1,r))}catch(o){return Promise.reject(o)}}function Uh(e,t,n){if(e.length>0)return mc(e,t,0,gc(n))}function Vh(e,t,n){if(e.length>0){const r=gc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}}function Cs(e,t){for(const n of[...e])n(t)}var Kh=class{_hooks;_before;_after;_deprecatedHooks;_deprecatedMessages;constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!="function")return()=>{};const r=e;let s;for(;this._deprecatedHooks[e];)s=this._deprecatedHooks[e],e=s.to;if(s&&!n.allowDeprecated){let o=s.message;o||(o=`${r} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(o)||(console.warn(o),this._deprecatedMessages.add(o))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&(this.removeHook(e,t),t=void 0)}}hookOnce(e,t){let n,r=(...s)=>(typeof n=="function"&&n(),n=void 0,r=void 0,t(...s));return n=this.hook(e,r),n}removeHook(e,t){const n=this._hooks[e];if(n){const r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&(this._hooks[e]=void 0)}}clearHook(e){this._hooks[e]=void 0}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t=="string"?{to:t}:t;const n=this._hooks[e]||[];this._hooks[e]=void 0;for(const r of n)this.hook(e,r)}deprecateHooks(e){for(const t in e)this.deprecateHook(t,e[t])}addHooks(e){const t=Zs(e),n=Object.keys(t).map(r=>this.hook(r,t[r]));return()=>{for(const r of n)r();n.length=0}}removeHooks(e){const t=Zs(e);for(const n in t)this.removeHook(n,t[n])}removeAllHooks(){this._hooks={}}callHook(e,...t){return this.callHookWith(Uh,e,t)}callHookParallel(e,...t){return this.callHookWith(Vh,e,t)}callHookWith(e,t,n){const r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Cs(this._before,r);const s=e(this._hooks[t]?[...this._hooks[t]]:[],n,t);return s instanceof Promise?s.finally(()=>{this._after&&r&&Cs(this._after,r)}):(this._after&&r&&Cs(this._after,r),s)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function yc(){return new Kh}function Wh(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},f=()=>t===i?l:void 0;eo.add(f);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{eo.delete(f)}}}}function qh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=Wh({...e,...r})),t[n]}}}const Ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Ni="__unctx__",zh=Ur[Ni]||(Ur[Ni]=qh()),Gh=(e,t={})=>zh.get(e,t),ji="__unctx_async_handlers__",eo=Ur[ji]||(Ur[ji]=new Set);function Qn(e){const t=[];for(const s of eo){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Fi=!1,Bi=!1,Jh=!1,Ui={id:"__nuxt-loader"},u_={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},Xh={deep:!1},Yh={},Qh="#__nuxt",_c="nuxt-app",Vi=36e5,Zh="vite:preloadError";function bc(e=_c){return Gh(e,{asyncContext:!1})}const ep="__nuxt_plugin";function tp(e){let t=0;const n={_id:e.id||_c||"nuxt-app",_scope:_o(),provide:void 0,versions:{get nuxt(){return"4.4.8"},get vue(){return n.vueApp.version}},payload:Ze({...e.ssrContext?.payload||{},data:Ze({}),state:ot({}),once:new Set,_errors:Ze({})}),static:{data:{}},runWithContext(s){return n._scope.active&&!Zr()?n._scope.run(()=>Ki(n,s)):Ki(n,s)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Ze({}),_state:Ze({}),_payloadRevivers:{},...e};{const s=window.__NUXT__;if(s)for(const o in s)switch(o){case"data":case"state":case"_errors":Object.assign(n.payload[o],s[o]);break;default:n.payload[o]=s[o]}}n.hooks=yc(),n.hook=n.hooks.hook;{const s=n.hooks.callHook;n.hooks.callHook=(o,...i)=>Promise.resolve().then(()=>s(o,...i))}n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;Er(n,i,o),Er(n.vueApp.config.globalProperties,i,o)},Er(n.vueApp,"$nuxt",n),Er(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(Zh,o=>{n.callHook("app:chunkError",{error:o.payload}),o.payload?.message?.includes("Unable to preload CSS")&&o.preventDefault()}),window.useNuxtApp||=ve;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}function np(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function rp(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function sp(e,t){const n=new Set,r=[],s=[];let o,i=0;async function a(l){const f=l.dependsOn?.filter(c=>t.some(u=>u._name===c)&&!n.has(c))??[];if(f.length>0)r.push([new Set(f),l]);else{const c=rp(e,l).then(async()=>{l._name&&(n.add(l._name),await Promise.all(r.map(async([u,h])=>{u.has(l._name)&&(u.delete(l._name),u.size===0&&(i++,await a(h)))})))}).catch(u=>{if(!l.parallel&&!e.payload.error)throw u;o||=u});l.parallel?s.push(c):await c}}for(const l of t)np(e,l);for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[ep]:!0,_name:t})}const op=Ye;function Ki(e,t,n){const r=()=>t();return bc(e._id).set(e),e.vueApp.runWithContext(r)}function ip(e){let t;return ns()&&(t=an()?.appContext.app.$nuxt),t||=bc(e).tryUse(),t||null}function ve(e){const t=ip(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function No(e){return ve().$config}function Er(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function As(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function to(e,t,n=".",r){if(!As(t))return to(e,{},n,r);const s={...t};for(const o of Object.keys(e)){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:As(i)&&As(s[o])?s[o]=to(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function ap(e){return(...t)=>t.reduce((n,r)=>to(n,r,"",e),{})}const vc=ap();function lp(e,t){try{return t in e}catch{return!1}}class Wi extends Error{static __h3_error__=!0;statusCode=500;fatal=!1;unhandled=!1;statusMessage;data;cause;constructor(t,n={}){super(t,n),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:no(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=wc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}function cp(e){if(typeof e=="string")return new Wi(e);if(up(e))return e;const t=new Wi(e.message??e.statusMessage??"",{cause:e.cause||e});if(lp(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=no(e.statusCode,t.statusCode):e.status&&(t.statusCode=no(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;wc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function up(e){return e?.constructor?.__h3_error__===!0}const fp=/[^\u0009\u0020-\u007E]/g;function wc(e=""){return e.replace(fp,"")}function no(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Ec=Symbol("layout-meta"),on=Symbol("route");import.meta.url.replace(/\/app\/.*$/,"/");const Ve=()=>ve()?.$router,jo=()=>ns()?Ce(on,ve()._route):ve()._route;const dp=()=>{try{if(ve()._processingMiddleware)return!0}catch{return!1}return!1},qi=(e,t)=>{e||="/";const n=typeof e=="string"?e:"path"in e?hp(e):Ve().resolve(e).href;if(t?.open){const{protocol:f}=new URL(n,window.location.href);if(f&&Ys(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`);const{target:c="_blank",windowFeatures:u={}}=t.open,h=[];for(const[d,m]of Object.entries(u))m!==void 0&&h.push(`${d.toLowerCase()}=${m}`);return open(n,c,h.join(", ")),Promise.resolve()}const r=Dn(n,{acceptRelative:!0}),s=t?.external||r;if(s){if(!t?.external)throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:f}=new URL(n,window.location.href);if(f&&Ys(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`)}const o=dp();if(!s&&o){if(t?.replace){if(typeof e=="string"){const{pathname:f,search:c,hash:u}=Do(e);return{path:f,...c&&{query:ic(c)},...u&&{hash:u},replace:!0}}return{...e,replace:!0}}return e}const i=Ve(),a=ve();if(s)return a._scope.stop(),t?.replace?location.replace(n):location.href=n,o?a.isHydrating?new Promise(()=>{}):!1:Promise.resolve();const l=typeof e=="string"?pp(e):e;return t?.replace?i.replace(l):i.push(l)};function hp(e){return ac(e.path||"",e.query||{})+(e.hash||"")}function pp(e){const t=Do(e);return ah(lh(t.pathname))+t.search+t.hash}const Sc="__nuxt_error",cs=()=>Qa(ve().payload,"error"),Zt=e=>{const t=Ft(e);try{const n=cs();ve().hooks.callHook("app:error",t),n.value||=t}catch{throw t}return t},gp=async(e={})=>{const t=ve(),n=cs();t.callHook("app:error:cleared",e),e.redirect&&await Ve().replace(e.redirect),n.value=void 0},Tc=e=>!!e&&typeof e=="object"&&Sc in e,Ft=e=>{typeof e!="string"&&e.statusText&&(e.message??=e.statusText);const t=cp(e);return Object.defineProperty(t,Sc,{value:!0,configurable:!1,writable:!1}),Object.defineProperty(t,"status",{get:()=>t.statusCode,configurable:!0}),Object.defineProperty(t,"statusText",{get:()=>t.statusMessage,configurable:!0}),t};let Rc;const xn=e=>Rc=e,Cc=Symbol();function ro(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function mp(){const e=_o(!0),t=e.run(()=>nt({}));let n=[],r=[];const s=Ro({install(o){xn(s),s._a=o,o.provide(Cc,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Ac=()=>{};function zi(e,t,n,r=Ac){e.add(t);const s=()=>{e.delete(t)&&r()};return!n&&Zr()&&Da(s),s}function dn(e,...t){e.forEach(n=>{n(...t)})}const yp=e=>e(),Gi=Symbol(),Ps=Symbol();function so(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ro(s)&&ro(r)&&e.hasOwnProperty(n)&&!pe(r)&&!gt(r)?e[n]=so(s,r):e[n]=r}return e}const _p=Symbol();function bp(e){return!ro(e)||!Object.prototype.hasOwnProperty.call(e,_p)}const{assign:Dt}=Object;function vp(e){return!!(pe(e)&&e.effect)}function wp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function f(){a||(n.state.value[e]=s?s():{});const c=Ku(n.state.value[e]);return Dt(c,o,Object.keys(i||{}).reduce((u,h)=>(u[h]=Ro(Re(()=>{xn(n);const d=n._s.get(e);return i[h].call(d,d)})),u),{}))}return l=Pc(e,f,t,n,r,!0),l}function Pc(e,t,n={},r,s,o){let i;const a=Dt({actions:{}},n),l={deep:!0};let f,c,u=new Set,h=new Set,d;const m=r.state.value[e];!o&&!m&&(r.state.value[e]={});let y;function C(D){let R;f=c=!1,typeof D=="function"?(D(r.state.value[e]),R={type:Zn.patchFunction,storeId:e,events:d}):(so(r.state.value[e],D),R={type:Zn.patchObject,payload:D,storeId:e,events:d});const T=y=Symbol();xt().then(()=>{y===T&&(f=!0)}),c=!0,dn(u,R,r.state.value[e])}const E=o?function(){const{state:R}=n,T=R?R():{};this.$patch($=>{Dt($,T)})}:Ac;function v(){i.stop(),u.clear(),h.clear(),r._s.delete(e)}const p=(D,R="")=>{if(Gi in D)return D[Ps]=R,D;const T=function(){xn(r);const $=Array.from(arguments),L=new Set,W=new Set;function Z(q){L.add(q)}function te(q){W.add(q)}dn(h,{args:$,name:T[Ps],store:w,after:Z,onError:te});let F;try{F=D.apply(this&&this.$id===e?this:w,$)}catch(q){throw dn(W,q),q}return F instanceof Promise?F.then(q=>(dn(L,q),q)).catch(q=>(dn(W,q),Promise.reject(q))):(dn(L,F),F)};return T[Gi]=!0,T[Ps]=R,T},_={_p:r,$id:e,$onAction:zi.bind(null,h),$patch:C,$reset:E,$subscribe(D,R={}){const T=zi(u,D,R.detached,()=>$()),$=i.run(()=>Rt(()=>r.state.value[e],L=>{(R.flush==="sync"?c:f)&&D({storeId:e,type:Zn.direct,events:d},L)},Dt({},l,R)));return T},$dispose:v},w=ot(_);r._s.set(e,w);const P=(r._a&&r._a.runWithContext||yp)(()=>r._e.run(()=>(i=_o()).run(()=>t({action:p}))));for(const D in P){const R=P[D];if(pe(R)&&!vp(R)||gt(R))o||(m&&bp(R)&&(pe(R)?R.value=m[D]:so(R,m[D])),r.state.value[e][D]=R);else if(typeof R=="function"){const T=p(R,D);P[D]=T,a.actions[D]=R}}return Dt(w,P),Dt(ne(w),P),Object.defineProperty(w,"$state",{get:()=>r.state.value[e],set:D=>{C(R=>{Dt(R,D)})}}),r._p.forEach(D=>{Dt(w,i.run(()=>D({store:w,app:r._a,pinia:r,options:a})))}),m&&o&&n.hydrate&&n.hydrate(w.$state,m),f=!0,c=!0,w}function Ep(e,t,n){let r;const s=typeof t=="function";r=s?n:t;function o(i,a){const l=ns();return i=i||(l?Ce(Cc,null):null),i&&xn(i),i=Rc,i._s.has(e)||(s?Pc(e,t,r,i):wp(e,r,i)),i._s.get(e)}return o.$id=e,o}const Sp=-1,Tp=-2,Rp=-3,Cp=-4,Ap=-5,Pp=-6,xp=-7,xc=2**32-1,oo=xc-1;function kp(e){return!(!Number.isInteger(e)||e<0||e>oo)}function Op(e){return!(!Number.isInteger(e)||e<0||e>xc)}function Mp(e){return Uint8Array.fromBase64(e).buffer}function Ip(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Lp(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let s=0;s=f)throw new Error("Invalid input");c[h]=o(l[u+1])}c.length=f}else{const f=new Array(l.length);r[i]=f;for(let c=0;c`${r}:${String(s)}`).join(",")}`}function Vr(e,t,n){typeof e==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(e=e());const s=t?t(n,e):e;if(Array.isArray(s))return s.map(o=>Vr(o,t));if(s?.constructor===Object){const o={};for(const i of Object.keys(s))o[i]=Vr(s[i],t,i);return o}return s}function Jp(e,t){const n=e==="style"?new Map:new Set;function r(s){if(s==null||s===void 0)return;const o=String(s).trim();if(o)if(e==="style"){const[i,...a]=o.split(":").map(l=>l?l.trim():"");i&&a.length&&n.set(i,a.join(":"))}else o.split(" ").filter(Boolean).forEach(i=>n.add(i))}return typeof t=="string"?e==="style"?t.split(";").forEach(r):r(t):Array.isArray(t)?t.forEach(s=>r(s)):t&&typeof t=="object"&&Object.entries(t).forEach(([s,o])=>{o&&o!=="false"&&(e==="style"?n.set(String(s).trim(),String(o)):r(s))}),n}function Mc(e,t){if(e.props=e.props||{},!t)return e;if(e.tag==="templateParams")return e.props=t,e;const n=io.has(e.tag)||e.tag==="htmlAttrs"||e.tag==="bodyAttrs";return Object.entries(t).forEach(([r,s])=>{if(r==="__proto__"||r==="constructor"||r==="prototype")return;if(s===null){e.props[r]=null;return}if(r==="class"||r==="style"){e.props[r]=Jp(r,s);return}if(Kp.has(r)){if((r==="textContent"||r==="innerHTML")&&typeof s=="object"){let f=t.type;if(t.type||(f="application/json"),!f?.endsWith("json")&&f!=="speculationrules")return;t.type=f,e.props.type=f,e[r]=JSON.stringify(s)}else e[r]=s;return}const o=r.startsWith("data-"),i=n&&!o?r.toLowerCase():r,a=String(s),l=e.tag==="meta"&&i==="content";a==="true"||a===""?e.props[i]=o||l?a:!0:!s&&o&&a==="false"?e.props[i]="false":s!==void 0&&(e.props[i]=s)}),e}function Xp(e,t){const n=typeof t=="object"&&typeof t!="function"?t:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},r=Mc({tag:e,props:{}},n);return r.key&&Fp.has(r.tag)&&(r.props["data-hid"]=r._h=r.key),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Yp(e,t){if(!e)return[];typeof e=="function"&&(e=e());const n=(s,o)=>{for(let i=0;i{if(o!==void 0)for(const i of Array.isArray(o)?o:[o])r.push(Xp(s,i))}),r.flat()}const Ji=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,Xi={base:-10,title:10},Qp={critical:-8,high:-1,low:2},Yi={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},Zp=/@import/,Bn=e=>e===""||e===!0;function eg(e,t){if(typeof t.tagPriority=="number")return t.tagPriority;let n=100;const r=Qp[t.tagPriority]||0,s=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:Yi;if(t.tag in Xi)n=Xi[t.tag];else if(t.tag==="meta"){const o=t.props["http-equiv"]==="content-security-policy"?"content-security-policy":t.props.charset?"charset":t.props.name==="viewport"?"viewport":null;o&&(n=Yi.meta[o])}else if(t.tag==="link"&&t.props.rel)n=s.link[t.props.rel];else if(t.tag==="script"){const o=String(t.props.type);Bn(t.props.async)?n=s.script.async:t.props.src&&!Bn(t.props.defer)&&!Bn(t.props.async)&&o!=="module"&&!o.endsWith("json")||t.innerHTML&&!o.endsWith("json")?n=s.script.sync:(Bn(t.props.defer)&&t.props.src&&!Bn(t.props.async)||o==="module")&&(n=s.script.defer)}else t.tag==="style"&&(n=t.innerHTML&&Zp.test(t.innerHTML)?s.style.imported:s.style.sync);return(n||100)+r}function Qi(e,t){const n=typeof t=="function"?t(e):t,r=n.key||String(e.plugins.size+1);e.plugins.get(r)||(e.plugins.set(r,n),e.hooks.addHooks(n.hooks||{}))}function tg(e={}){const t=yc();t.addHooks(e.hooks||{});const n=!e.document,r=new Map,s=new Map,o=new Set,i={_entryCount:1,plugins:s,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:r,headEntries(){return[...r.values()]},use:a=>Qi(i,a),push(a,l){const f={...l||{}};delete f.head;const c=f._index??i._entryCount++,u={_i:c,input:a,options:f},h={_poll(d=!1){i.dirty=!0,!d&&o.add(c),t.callHook("entries:updated",i)},dispose(){r.delete(c)&&i.invalidate()},patch(d){(!f.mode||f.mode==="server"&&n||f.mode==="client"&&!n)&&(u.input=d,r.set(c,u),h._poll())}};return h.patch(a),h},async resolveTags(){const a={tagMap:new Map,tags:[],entries:[...i.entries.values()]};for(await t.callHook("entries:resolve",a);o.size;){const h=o.values().next().value;o.delete(h);const d=r.get(h);if(d){const m={tags:Yp(d.input,e.propResolvers||[]).map(y=>Object.assign(y,d.options)),entry:d};await t.callHook("entries:normalize",m),d._tags=m.tags.map((y,C)=>(y._w=eg(i,y),y._p=(d._i<<10)+C,y._d=ao(y),y._d||(y._h=Oc(y)),y))}}let l=!1;a.entries.flatMap(h=>(h._tags||[]).map(d=>({...d,props:{...d.props}}))).sort(Ji).reduce((h,d)=>{const m=d._d||d._h;if(!h.has(m))return h.set(m,d);const y=h.get(m);if((d?.tagDuplicateStrategy||(Wp.has(d.tag)?"merge":null)||(d.key&&d.key===y.key?"merge":null))==="merge"){const E={...y.props};Object.entries(d.props).forEach(([v,p])=>E[v]=v==="style"?new Map([...y.props.style||new Map,...p]):v==="class"?new Set([...y.props.class||new Set,...p]):p),h.set(m,{...d,props:E})}else d._p>>10===y._p>>10&&d.tag==="meta"&&kc(m)?(h.set(m,Object.assign([...Array.isArray(y)?y:[y],d],d)),l=!0):(d._w===y._w?d._p>y._p:d?._wQi(i,a)),i.hooks.callHook("init",i),e.init?.forEach(a=>a&&i.push(a)),i}const ng=(e,t)=>pe(t)?ft(t):t,Ic="usehead";function rg(e){return{install(n){n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(Ic,e)}}.install}function sg(){if(ns()){const e=Ce(Ic);if(e)return e}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function f_(e,t={}){const n=t.head||sg();return n.ssr?n.push(e||{},t):og(n,e,t)}function og(e,t,n={}){const r=nt(!1);let s;return tf(()=>{const i=r.value?{}:Vr(t,ng);s?s.patch(i):s=e.push(i,n)}),an()&&(fr(()=>{s.dispose()}),dl(()=>{r.value=!0}),fl(()=>{r.value=!1})),s}const ig=(e,t)=>[],Lc=e=>vc({},...ig("",typeof e=="string"?e.toLowerCase():e).map(t=>t.data).reverse()),ag=Lc;let Cr;function lg(){let e;return e=$fetch($o(`builds/meta/${No().app.buildId}.json`),{responseType:"json"}).then(t=>{if(!t||typeof t!="object"||!Array.isArray(t.prerendered))throw new Error("[nuxt] Received malformed app manifest. Ensure that `builds/meta/*.json` is served as JSON by your hosting/proxy and not rewritten to an HTML fallback.");return t}),Cr=e,e.catch(t=>{Cr===e&&(Cr=void 0),console.error("[nuxt] Error fetching app manifest.",t)}),e}function Dc(){return Cr||lg()}function Hc(e){const t=typeof e=="string"?e:e.path;try{return ag(t.toLowerCase())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function Zi(e,t={}){return null}async function cg(e){return null}let Xt=null;async function ug(){if(Xt)return Xt;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await fg(e.textContent||""),n=e.dataset.src?await cg(e.dataset.src):void 0;return Xt={...t,...n,...window.__NUXT__},Xt.config?.public&&(Xt.config.public=ot(Xt.config.public)),Xt}async function fg(e){return await Np(e,ve()._payloadRevivers)}function $c(e,t){ve()._payloadRevivers[e]=t}const dg=op(()=>{$c("skipHydrate",e=>{})});function ea(e){try{return JSON.parse(e)}catch{return e}}const hg=[["NuxtError",e=>Ft(e)],["EmptyShallowRef",e=>Ut(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["EmptyRef",e=>nt(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["ShallowRef",e=>Ut(e)],["ShallowReactive",e=>Ze(e)],["Ref",e=>nt(e)],["Reactive",e=>ot(e)]],pg=Ye({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[r,s]of hg)$c(r,s);Object.assign(e.payload,([t,n]=Qn(()=>e.runWithContext(ug)),t=await t,n(),t)),delete window.__NUXT__}});async function Fo(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!!r.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async s=>{const o=new Map,i=new Promise(d=>{e.resolveTags().then(m=>{d(m.map(y=>{const C=o.get(y._d)||0,E={tag:y,id:(C?`${y._d}:${C}`:y._d)||y._h,shouldRender:!0};return y._d&&kc(y._d)&&o.set(y._d,C+1),E}))})});let a=e._dom;if(!a){a={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const d of["body","head"]){const m=n[d]?.children;for(const y of m){const C=y.tagName.toLowerCase();if(!io.has(C))continue;const E=Mc({tag:C,props:{}},{innerHTML:y.innerHTML,...y.getAttributeNames().reduce((v,p)=>(v[p]=y.getAttribute(p),v),{})||{}});if(E.key=y.getAttribute("data-hid")||void 0,E._d=ao(E)||Oc(E),a.elMap.has(E._d)){let v=1,p=E._d;for(;a.elMap.has(p);)p=`${E._d}:${v++}`;a.elMap.set(p,y)}else a.elMap.set(E._d,y)}}}a.pendingSideEffects={...a.sideEffects},a.sideEffects={};function l(d,m,y){const C=`${d}:${m}`;a.sideEffects[C]=y,delete a.pendingSideEffects[C]}function f({id:d,$el:m,tag:y}){const C=y.tag.endsWith("Attrs");a.elMap.set(d,m),C||(y.textContent&&y.textContent!==m.textContent&&(m.textContent=y.textContent),y.innerHTML&&y.innerHTML!==m.innerHTML&&(m.innerHTML=y.innerHTML),l(d,"el",()=>{m?.remove(),a.elMap.delete(d)}));for(const E in y.props){if(!Object.prototype.hasOwnProperty.call(y.props,E))continue;const v=y.props[E];if(E.startsWith("on")&&typeof v=="function"){const _=m?.dataset;if(_&&_[`${E}fired`]){const w=E.slice(0,-5);v.call(m,new Event(w.substring(2)))}m.getAttribute(`data-${E}`)!==""&&((y.tag==="bodyAttrs"?n.defaultView:m).addEventListener(E.substring(2),v.bind(m)),m.setAttribute(`data-${E}`,""));continue}const p=`attr:${E}`;if(E==="class"){if(!v)continue;for(const _ of v)C&&l(d,`${p}:${_}`,()=>m.classList.remove(_)),!m.classList.contains(_)&&m.classList.add(_)}else if(E==="style"){if(!v)continue;for(const[_,w]of v)l(d,`${p}:${_}`,()=>{m.style.removeProperty(_)}),m.style.setProperty(_,w)}else v!==!1&&v!==null&&(m.getAttribute(E)!==v&&m.setAttribute(E,v===!0?"":String(v)),C&&l(d,p,()=>m.removeAttribute(E)))}}const c=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0},h=await i;for(const d of h){const{tag:m,shouldRender:y,id:C}=d;if(y){if(m.tag==="title"){n.title=m.textContent,l("title","",()=>n.title=a.title);continue}d.$el=d.$el||a.elMap.get(C),d.$el?f(d):io.has(m.tag)&&c.push(d)}}for(const d of c){const m=d.tag.tagPosition||"head";d.$el=n.createElement(d.tag.tag),f(d),u[m]=u[m]||n.createDocumentFragment(),u[m].appendChild(d.$el)}for(const d of h)await e.hooks.callHook("dom:renderTag",d,n,l);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose);for(const d in a.pendingSideEffects)a.pendingSideEffects[d]();e._dom=a,await e.hooks.callHook("dom:rendered",{renders:h}),s()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function gg(e={}){const t=e.domOptions?.render||Fo;e.document=e.document||(typeof window<"u"?document:void 0);const n=e.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML||!1;return tg({...e,plugins:[...e.plugins||[],{key:"client",hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function mg(e,t){let n=0;return()=>{const r=++n;t(()=>{n===r&&e()})}}function yg(e={}){const t=gg({domOptions:{render:mg(()=>Fo(t),n=>setTimeout(n,0))},...e});return t.install=rg(t),t}const _g={disableDefaults:!0},bg=Ye({name:"nuxt:head",enforce:"pre",setup(e){const t=yg(_g);e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await Fo(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r);const s=t.push.bind(t);t.push=((o,i)=>{const a=s(o,i),l=a.dispose.bind(a);return a.dispose=()=>{const f=e["~transitionPromise"];f?f.then(l):l()},a})}}});const pn=typeof document<"u";function Nc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function vg(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Nc(e.default)}const oe=Object.assign;function xs(e,t){const n={};for(const r in t){const s=t[r];n[r]=st(s)?s.map(e):e(s)}return n}const er=()=>{},st=Array.isArray;function ta(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}const jc=Symbol("");function kn(e,t){return oe(new Error,{type:e,[jc]:!0},t)}function bt(e,t){return e instanceof Error&&jc in e&&(t==null||!!(e.type&t))}const wg=Symbol(""),na=Symbol(""),Bo=Symbol(""),Uo=Symbol(""),lo=Symbol("");function Fc(e){return Ce(Uo)}const Eg={trailing:!0};function Sg(e,t=25,n={}){if(n={...Eg,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,s,o=[],i,a;const l=(u,h)=>(i=Tg(e,u,h),i.finally(()=>{if(i=null,n.trailing&&a&&!s){const d=l(u,a);return a=null,d}}),i),f=function(...u){return n.trailing&&(a=u),i||new Promise(h=>{const d=!s&&n.leading;clearTimeout(s),s=setTimeout(()=>{s=null;const m=n.leading?r:l(this,u);a=null;for(const y of o)y(m);o=[]},t),d?(r=l(this,u),h(r)):o.push(h)})},c=u=>{u&&(clearTimeout(u),s=null)};return f.isPending=()=>!!s,f.cancel=()=>{c(s),o=[],a=null},f.flush=()=>{if(c(s),!a||i)return;const u=a;return a=null,l(this,u)},f}async function Tg(e,t,n){return await e.apply(t,n)}const Bc=/#/g,Rg=/&/g,Cg=/\//g,Ag=/=/g,Pg=/\?/g,Uc=/\+/g,xg=/%5B/g,kg=/%5D/g,Vc=/%5E/g,Og=/%60/g,Kc=/%7B/g,Mg=/%7C/g,Wc=/%7D/g,Ig=/%20/g;function Vo(e){return e==null?"":encodeURI(""+e).replace(Mg,"|").replace(xg,"[").replace(kg,"]")}function Lg(e){return Vo(e).replace(Kc,"{").replace(Wc,"}").replace(Vc,"^")}function co(e){return Vo(e).replace(Uc,"%2B").replace(Ig,"+").replace(Bc,"%23").replace(Rg,"%26").replace(Og,"`").replace(Kc,"{").replace(Wc,"}").replace(Vc,"^")}function Dg(e){return co(e).replace(Ag,"%3D")}function Hg(e){return Vo(e).replace(Bc,"%23").replace(Pg,"%3F")}function $g(e){return Hg(e).replace(Cg,"%2F")}function Kr(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Ng=/\/$/,jg=e=>e.replace(Ng,"");function ks(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(r=t.slice(0,l),o=t.slice(l,a>0?a:t.length),s=e(o.slice(1))),a>=0&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Vg(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:Kr(i)}}function Fg(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ra(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Bg(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&qc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function qc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Ug(e[n],t[n]))return!1;return!0}function Ug(e,t){return st(e)?sa(e,t):st(t)?sa(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function sa(e,t){return st(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Vg(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const qe={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};function Kg(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),jg(e)}const Wg=/^[^#]+#/;function qg(e,t){return e.replace(Wg,"#")+t}function zg(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Gg(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=zg(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function oa(e,t){return(history.state?history.state.position-t:-1)+e}const uo=new Map;function Jg(e,t){uo.set(e,t)}function Xg(e){const t=uo.get(e);return uo.delete(e),t}function Yg(e){return typeof e=="string"||e&&typeof e=="object"}function zc(e){return typeof e=="string"||typeof e=="symbol"}function Qg(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&co(s)):[r&&co(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Zg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=st(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Un(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $t(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const f=h=>{h===!1?l(kn(4,{from:n,to:t})):h instanceof Error?l(h):Yg(h)?l(kn(2,{from:t,to:h})):(i&&r.enterCallbacks[s]===i&&typeof h=="function"&&i.push(h),a())},c=o(()=>e.call(r&&r.instances[s],t,n,f));let u=Promise.resolve(c);e.length<3&&(u=u.then(f)),u.catch(h=>l(h))})}function Os(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Nc(l)){const f=(l.__vccOpts||l)[t];f&&o.push($t(f,n,r,i,a,s))}else{let f=l();o.push(()=>f.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const u=vg(c)?c.default:c;i.mods[a]=c,i.components[a]=u;const h=(u.__vccOpts||u)[t];return h&&$t(h,n,r,i,a,s)()}))}}return o}function em(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(f,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(f=>On(f,l))||s.push(l))}return[n,r,s]}let tm=()=>location.protocol+"//"+location.host;function Gc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,a=s.slice(i);return a[0]!=="/"&&(a="/"+a),ra(a,"")}return ra(n,e)+r+s}function nm(e,t,n,r){let s=[],o=[],i=null;const a=({state:h})=>{const d=Gc(e,location),m=n.value,y=t.value;let C=0;if(h){if(n.value=d,t.value=h,i&&i===m){i=null;return}C=y?h.position-y.position:0}else r(d);s.forEach(E=>{E(n.value,m,{delta:C,type:"pop",direction:C?C>0?"forward":"back":""})})};function l(){i=n.value}function f(h){s.push(h);const d=()=>{const m=s.indexOf(h);m>-1&&s.splice(m,1)};return o.push(d),d}function c(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(oe({},h.state,{scroll:us()}),"")}}function u(){for(const h of o)h();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:f,destroy:u}}function aa(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?us():null}}function rm(e){const{history:t,location:n}=window,r={value:Gc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,f,c){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+l:tm()+e+l;try{t[c?"replaceState":"pushState"](f,"",h),s.value=f}catch(d){console.error(d),n[c?"replace":"assign"](h)}}function i(l,f){o(l,oe({},t.state,aa(s.value.back,l,s.value.forward,!0),f,{position:s.value.position}),!0),r.value=l}function a(l,f){const c=oe({},s.value,t.state,{forward:l,scroll:us()});o(c.current,c,!0),o(l,oe({},aa(r.value,l,null),{position:c.position+1},f),!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function sm(e){e=Kg(e);const t=rm(e),n=nm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=oe({location:"",base:e,go:r,createHref:qg.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}const om={type:0,value:""},im=/[a-zA-Z0-9_]/;function am(e){if(!e)return[[]];if(e==="/")return[[om]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${f}": ${d}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,f="",c="";function u(){f&&(n===0?o.push({type:0,value:f}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:f,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=l}for(;at.length?t.length===1&&t[0]===80?1:-1:0}function Jc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const dm={strict:!1,end:!0,sensitive:!1};function hm(e,t,n){const r=um(am(e.path),n),s=oe(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function pm(e,t){const n=[],r=new Map;t=ta(dm,t);function s(u){return r.get(u)}function o(u,h,d){const m=!d,y=fa(u);y.aliasOf=d&&d.record;const C=ta(t,u),E=[y];if("alias"in u){const _=typeof u.alias=="string"?[u.alias]:u.alias;for(const w of _)E.push(fa(oe({},y,{components:d?d.record.components:y.components,path:w,aliasOf:d?d.record:y})))}let v,p;for(const _ of E){const{path:w}=_;if(h&&w[0]!=="/"){const k=h.record.path,P=k[k.length-1]==="/"?"":"/";_.path=h.record.path+(w&&P+w)}if(v=hm(_,h,C),d?d.alias.push(v):(p=p||v,p!==v&&p.alias.push(v),m&&u.name&&!da(v)&&i(u.name)),Xc(v)&&l(v),y.children){const k=y.children;for(let P=0;P{i(p)}:er}function i(u){if(zc(u)){const h=r.get(u);h&&(r.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&r.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function a(){return n}function l(u){const h=ym(u,n);n.splice(h,0,u),u.record.name&&!da(u)&&r.set(u.record.name,u)}function f(u,h){let d,m={},y,C;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw kn(1,{location:u});C=d.record.name,m=oe(ua(h.params,d.keys.filter(p=>!p.optional).concat(d.parent?d.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),u.params&&ua(u.params,d.keys.map(p=>p.name))),y=d.stringify(m)}else if(u.path!=null)y=u.path,d=n.find(p=>p.re.test(y)),d&&(m=d.parse(y),C=d.record.name,d.keys.forEach(p=>{p.optional&&!m[p.name]&&delete m[p.name]}));else{if(d=h.name?r.get(h.name):n.find(p=>p.re.test(h.path)),!d)throw kn(1,{location:u,currentLocation:h});C=d.record.name,m=oe({},h.params,u.params),y=d.stringify(m)}const E=[];let v=d;for(;v;)E.unshift(v.record),v=v.parent;return{name:C,path:y,params:m,matched:E,meta:mm(E)}}e.forEach(u=>o(u));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function ua(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function fa(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:gm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function gm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function da(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function mm(e){return e.reduce((t,n)=>oe(t,n.meta),{})}function ym(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Jc(e,t[o])<0?r=o:n=o+1}const s=_m(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function _m(e){let t=e;for(;t=t.parent;)if(Xc(t)&&Jc(e,t)===0)return t}function Xc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ha(e){const t=Ce(Bo),n=Ce(Uo),r=Re(()=>{const l=ae(e.to);return t.resolve(l)}),s=Re(()=>{const{matched:l}=r.value,{length:f}=l,c=l[f-1],u=n.matched;if(!c||!u.length)return-1;const h=u.findIndex(On.bind(null,c));if(h>-1)return h;const d=pa(l[f-2]);return f>1&&pa(c)===d&&u[u.length-1].path!==d?u.findIndex(On.bind(null,l[f-2])):h}),o=Re(()=>s.value>-1&&Em(n.params,r.value.params)),i=Re(()=>s.value>-1&&s.value===n.matched.length-1&&qc(n.params,r.value.params));function a(l={}){if(wm(l)){const f=t[ae(e.replace)?"replace":"push"](ae(e.to)).catch(er);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:r,href:Re(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function bm(e){return e.length===1?e[0]:e}const vm=Wt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ha,setup(e,{slots:t}){const n=ot(ha(e)),{options:r}=Ce(Bo),s=Re(()=>({[ga(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ga(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&bm(t.default(n));return e.custom?o:Oe("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}});function wm(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Em(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!st(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function pa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ga=(e,t,n)=>e??t??n,Sm=Wt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ce(lo),s=Re(()=>e.route||r.value),o=Ce(na,0),i=Re(()=>{let f=ae(o);const{matched:c}=s.value;let u;for(;(u=c[f])&&!u.components;)f++;return f}),a=Re(()=>s.value.matched[i.value]);jt(na,Re(()=>i.value+1)),jt(wg,a),jt(lo,s);const l=nt();return Rt(()=>[l.value,a.value,e.name],([f,c,u],[h,d,m])=>{c&&(c.instances[u]=f,d&&d!==c&&f&&f===h&&(c.leaveGuards.size||(c.leaveGuards=d.leaveGuards),c.updateGuards.size||(c.updateGuards=d.updateGuards))),f&&c&&(!d||!On(c,d)||!h)&&(c.enterCallbacks[u]||[]).forEach(y=>y(f))},{flush:"post"}),()=>{const f=s.value,c=e.name,u=a.value,h=u&&u.components[c];if(!h)return ma(n.default,{Component:h,route:f});const d=u.props[c],m=d?d===!0?f.params:typeof d=="function"?d(f):d:null,C=Oe(h,oe({},m,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(u.instances[c]=null)},ref:l}));return ma(n.default,{Component:C,route:f})||C}}});function ma(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Yc=Sm;function Tm(e){const t=pm(e.routes,e),n=e.parseQuery||Qg,r=e.stringifyQuery||ia,s=e.history,o=Un(),i=Un(),a=Un(),l=Ut(qe);let f=qe;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=xs.bind(null,x=>""+x),u=xs.bind(null,$g),h=xs.bind(null,Kr);function d(x,K){let B,J;return zc(x)?(B=t.getRecordMatcher(x),J=K):J=x,t.addRoute(J,B)}function m(x){const K=t.getRecordMatcher(x);K&&t.removeRoute(K)}function y(){return t.getRoutes().map(x=>x.record)}function C(x){return!!t.getRecordMatcher(x)}function E(x,K){if(K=oe({},K||l.value),typeof x=="string"){const b=ks(n,x,K.path),S=t.resolve({path:b.path},K),M=s.createHref(b.fullPath);return oe(b,S,{params:h(S.params),redirectedFrom:void 0,href:M})}let B;if(x.path!=null)B=oe({},x,{path:ks(n,x.path,K.path).path});else{const b=oe({},x.params);for(const S in b)b[S]==null&&delete b[S];B=oe({},x,{params:u(b)}),K.params=u(K.params)}const J=t.resolve(B,K),ee=x.hash||"";J.params=c(h(J.params));const ge=Fg(r,oe({},x,{hash:Lg(ee),path:J.path})),g=s.createHref(ge);return oe({fullPath:ge,hash:ee,query:r===ia?Zg(x.query):x.query||{}},J,{redirectedFrom:void 0,href:g})}function v(x){return typeof x=="string"?ks(n,x,l.value.path):oe({},x)}function p(x,K){if(f!==x)return kn(8,{from:K,to:x})}function _(x){return P(x)}function w(x){return _(oe(v(x),{replace:!0}))}function k(x,K){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:J}=B;let ee=typeof J=="function"?J(x,K):J;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=v(ee):{path:ee},ee.params={}),oe({query:x.query,hash:x.hash,params:ee.path!=null?{}:x.params},ee)}}function P(x,K){const B=f=E(x),J=l.value,ee=x.state,ge=x.force,g=x.replace===!0,b=k(B,J);if(b)return P(oe(v(b),{state:typeof b=="object"?oe({},ee,b.state):ee,force:ge,replace:g}),K||B);const S=B;S.redirectedFrom=K;let M;return!ge&&Bg(r,J,B)&&(M=kn(16,{to:S,from:J}),it(J,J,!0,!1)),(M?Promise.resolve(M):T(S,J)).catch(A=>bt(A)?bt(A,2)?A:Mt(A):V(A,S,J)).then(A=>{if(A){if(bt(A,2))return P(oe({replace:g},v(A.to),{state:typeof A.to=="object"?oe({},ee,A.to.state):ee,force:ge}),K||S)}else A=L(S,J,!0,g,ee);return $(S,J,A),A})}function D(x,K){const B=p(x,K);return B?Promise.reject(B):Promise.resolve()}function R(x){const K=cn.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(x):x()}function T(x,K){let B;const[J,ee,ge]=em(x,K);B=Os(J.reverse(),"beforeRouteLeave",x,K);for(const b of J)b.leaveGuards.forEach(S=>{B.push($t(S,x,K))});const g=D.bind(null,x,K);return B.push(g),Ke(B).then(()=>{B=[];for(const b of o.list())B.push($t(b,x,K));return B.push(g),Ke(B)}).then(()=>{B=Os(ee,"beforeRouteUpdate",x,K);for(const b of ee)b.updateGuards.forEach(S=>{B.push($t(S,x,K))});return B.push(g),Ke(B)}).then(()=>{B=[];for(const b of ge)if(b.beforeEnter)if(st(b.beforeEnter))for(const S of b.beforeEnter)B.push($t(S,x,K));else B.push($t(b.beforeEnter,x,K));return B.push(g),Ke(B)}).then(()=>(x.matched.forEach(b=>b.enterCallbacks={}),B=Os(ge,"beforeRouteEnter",x,K,R),B.push(g),Ke(B))).then(()=>{B=[];for(const b of i.list())B.push($t(b,x,K));return B.push(g),Ke(B)}).catch(b=>bt(b,8)?b:Promise.reject(b))}function $(x,K,B){a.list().forEach(J=>R(()=>J(x,K,B)))}function L(x,K,B,J,ee){const ge=p(x,K);if(ge)return ge;const g=K===qe,b=pn?history.state:{};B&&(J||g?s.replace(x.fullPath,oe({scroll:g&&b&&b.scroll},ee)):s.push(x.fullPath,ee)),l.value=x,it(x,K,B,g),Mt()}let W;function Z(){W||(W=s.listen((x,K,B)=>{if(!qt.listening)return;const J=E(x),ee=k(J,qt.currentRoute.value);if(ee){P(oe(ee,{replace:!0,force:!0}),J).catch(er);return}f=J;const ge=l.value;pn&&Jg(oa(ge.fullPath,B.delta),us()),T(J,ge).catch(g=>bt(g,12)?g:bt(g,2)?(P(oe(v(g.to),{force:!0}),J).then(b=>{bt(b,20)&&!B.delta&&B.type==="pop"&&s.go(-1,!1)}).catch(er),Promise.reject()):(B.delta&&s.go(-B.delta,!1),V(g,J,ge))).then(g=>{g=g||L(J,ge,!1),g&&(B.delta&&!bt(g,8)?s.go(-B.delta,!1):B.type==="pop"&&bt(g,20)&&s.go(-1,!1)),$(J,ge,g)}).catch(er)}))}let te=Un(),F=Un(),q;function V(x,K,B){Mt(x);const J=F.list();return J.length?J.forEach(ee=>ee(x,K,B)):console.error(x),Promise.reject(x)}function le(){return q&&l.value!==qe?Promise.resolve():new Promise((x,K)=>{te.add([x,K])})}function Mt(x){return q||(q=!x,Z(),te.list().forEach(([K,B])=>x?B(x):K()),te.reset()),x}function it(x,K,B,J){const{scrollBehavior:ee}=e;if(!pn||!ee)return Promise.resolve();const ge=!B&&Xg(oa(x.fullPath,0))||(J||!B)&&history.state&&history.state.scroll||null;return xt().then(()=>ee(x,K,ge)).then(g=>g&&Gg(g)).catch(g=>V(g,x,K))}const De=x=>s.go(x);let ln;const cn=new Set,qt={currentRoute:l,listening:!0,addRoute:d,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:y,resolve:E,options:e,push:_,replace:w,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:F.add,isReady:le,install(x){x.component("RouterLink",vm),x.component("RouterView",Yc),x.config.globalProperties.$router=qt,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>ae(l)}),pn&&!ln&&l.value===qe&&(ln=!0,_(s.location).catch(J=>{}));const K={};for(const J in qe)Object.defineProperty(K,J,{get:()=>l.value[J],enumerable:!0});x.provide(Bo,qt),x.provide(Uo,Ze(K)),x.provide(lo,l);const B=x.unmount;cn.add(x),x.unmount=function(){cn.delete(x),cn.size<1&&(f=qe,W&&W(),W=null,l.value=qe,ln=!1,q=!1),B()}}};function Ke(x){return x.reduce((K,B)=>K.then(()=>R(B)),Promise.resolve())}return qt}const Rm=/(:\w+)\([^)]+\)/g,Cm=/(:\w+)[?+*]/g,Am=/:\w+/g,Pm=(e,t)=>t.path.replace(Rm,"$1").replace(Cm,"$1").replace(Am,n=>e.params[n.slice(1)]?.toString()||""),fo=(e,t)=>{const n=e.route.matched.find(s=>s.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Pm(e.route,n));return typeof r=="function"?r(e.route):r},xm=(e,t)=>({default:()=>e?Oe(pf,e===!0?{}:e,t):t});function Qc(e){return Array.isArray(e)?e:[e]}const km="modulepreload",Om=function(e,t){return new URL(e,t).href},ya={},me=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let f=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=a?.nonce||a?.getAttribute("nonce");s=f(n.map(c=>{if(c=Om(c,r),c in ya)return;ya[c]=!0;const u=c.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(r)for(let m=i.length-1;m>=0;m--){const y=i[m];if(y.href===c&&(!u||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":km,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((m,y)=>{d.addEventListener("load",m),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},Mm={title:"应用详情"},Im={title:"后台账号"},Lm={title:"应用中心"},Dm={title:"通话翻译配置"},Hm={title:"公码管理"},$m={title:"数据概览"},Nm={title:"生产管理"},jm={title:"环境节点"},Fm={title:"品牌商管理"},Bm={title:"全局环境配置"},Um={title:"MCP配置"},Vm={title:"会议记录服务"},Km={title:"会议模板"},Wm={title:"产品管理"},qm={title:"方案商管理"},zm={title:"第三方服务配置"},Gm={title:"统计日志"},Jm={title:"系统配置"},Xm={title:"用户查询"},Ym={layout:"auth"},Ms=[{name:"apps-name",path:"/apps/:name()",meta:Mm||{},component:()=>me(()=>import("./vrAtns1A.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)},{name:"accounts",path:"/accounts",meta:Im||{},component:()=>me(()=>import("./C8IUv0mA.js"),__vite__mapDeps([5,1,2,3,6]),import.meta.url)},{name:"apps",path:"/apps",meta:Lm||{},component:()=>me(()=>import("./-Au2A1Cv.js"),__vite__mapDeps([7,1,2,3,8]),import.meta.url)},{name:"calltranslate",path:"/calltranslate",meta:Dm||{},component:()=>me(()=>import("./-jnCp83s.js"),__vite__mapDeps([9,1,2,3,10]),import.meta.url)},{name:"code",path:"/code",meta:Hm||{},component:()=>me(()=>import("./BhbTh2Nc.js"),__vite__mapDeps([11,1,2,3]),import.meta.url)},{name:"dashboard",path:"/dashboard",meta:$m||{},component:()=>me(()=>import("./1800ei7D.js"),__vite__mapDeps([12,1,2,13]),import.meta.url)},{name:"device",path:"/device",meta:Nm||{},component:()=>me(()=>import("./swrhJgBy.js"),__vite__mapDeps([14,1,2,3]),import.meta.url)},{name:"environments",path:"/environments",meta:jm||{},component:()=>me(()=>import("./DgtG1GpI.js"),__vite__mapDeps([15,1,2,3]),import.meta.url)},{name:"factory",path:"/factory",meta:Fm||{},component:()=>me(()=>import("./DA9Dlh7r.js"),__vite__mapDeps([16,1,2,3]),import.meta.url)},{name:"globalconfig",path:"/globalconfig",meta:Bm||{},component:()=>me(()=>import("./BFMExc8z.js"),__vite__mapDeps([17,1,2,3]),import.meta.url)},{name:"mcpconfig",path:"/mcpconfig",meta:Um||{},component:()=>me(()=>import("./DzMPECf6.js"),__vite__mapDeps([18,1,2,3]),import.meta.url)},{name:"meetingsvc",path:"/meetingsvc",meta:Vm||{},component:()=>me(()=>import("./DKuebVMC.js"),__vite__mapDeps([19,1,2,3,20,21]),import.meta.url)},{name:"meettemplates",path:"/meettemplates",meta:Km||{},component:()=>me(()=>import("./B7QETiRo.js"),__vite__mapDeps([22,1,2,3]),import.meta.url)},{name:"product",path:"/product",meta:Wm||{},component:()=>me(()=>import("./1A4O2es5.js"),__vite__mapDeps([23,1,2,3]),import.meta.url)},{name:"provider",path:"/provider",meta:qm||{},component:()=>me(()=>import("./D3KKJ_NK.js"),__vite__mapDeps([24,1,2,3]),import.meta.url)},{name:"serviceconfig",path:"/serviceconfig",meta:zm||{},component:()=>me(()=>import("./Dm8P2zvb.js"),__vite__mapDeps([25,20,1,2,3,26]),import.meta.url)},{name:"statlog",path:"/statlog",meta:Gm||{},component:()=>me(()=>import("./CCes3qcB.js"),__vite__mapDeps([27,1,2,3,28]),import.meta.url)},{name:"systemconfig",path:"/systemconfig",meta:Jm||{},component:()=>me(()=>import("./C0cd7Vyx.js"),__vite__mapDeps([29,3,2,1,30]),import.meta.url)},{name:"users",path:"/users",meta:Xm||{},component:()=>me(()=>import("./JlX4SqFM.js"),__vite__mapDeps([31,1,2,3]),import.meta.url)},{name:"index",path:"/",meta:Ym||{},component:()=>me(()=>import("./CFPPaSCZ.js"),__vite__mapDeps([32,33]),import.meta.url)}],Zc=(e,t)=>({default:()=>e?Oe(pd,e===!0?{}:e,t):t.default?.()}),Qm=/(:\w+)\([^)]+\)/g,Zm=/(:\w+)[?+*]/g,ey=/:\w+/g;function _a(e){const t=e?.meta.key??e.path.replace(Qm,"$1").replace(Zm,"$1").replace(ey,n=>e.params[n.slice(1)]?.toString()||"");return typeof t=="function"?t(e):t}function ty(e,t){return e===t||t===qe?!1:_a(e)!==_a(t)?!0:!e.matched.every((r,s)=>r.components&&r.components.default===t.matched[s]?.components?.default)}function ba(e){return Array.isArray(e)?e:[e]}function eu(e){const t=[];for(const n of e)n&&t.push({...n,onAfterLeave:n.onAfterLeave?ba(n.onAfterLeave):void 0,onBeforeLeave:n.onBeforeLeave?ba(n.onBeforeLeave):void 0});return vc(...t)}const ny={scrollBehavior(e,t,n){const r=ve(),s=Ve().options?.scrollBehaviorType??"auto";return e.path.replace(/\/$/,"")===t.path.replace(/\/$/,"")?t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:tu(e.hash),behavior:s}:!1:(typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop)===!1?!1:t===qe?va(e,t,n,s):new Promise(i=>{const a=()=>{requestAnimationFrame(()=>i(va(e,t,n,s)))};r.hooks.hookOnce("page:loading:end",()=>{const l=r["~transitionPromise"];l?l.then(a):a()})})}};function tu(e){try{const t=document.querySelector(e);if(t)return(Number.parseFloat(getComputedStyle(t).scrollMarginTop)||0)+(Number.parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop)||0)}catch{}return 0}function va(e,t,n,r){return n||(e.hash?{el:e.hash,top:tu(e.hash),behavior:ty(e,t)?r:"instant"}:{left:0,top:0})}const ry={hashMode:!1,scrollBehaviorType:"auto"},Lt={...ry,...ny},sy=async(e,t)=>{let n,r;if(!e.meta?.validate)return;const s=([n,r]=Qn(()=>Promise.resolve(e.meta.validate(e))),n=await n,r(),n);if(s===!0)return;const o=Ft({fatal:!0,status:s&&(s.status||s.statusCode)||404,statusText:s&&(s.statusText||s.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}});return typeof window<"u"&&window.history.pushState({},"",t.fullPath),o},fs=[{label:"数据概览",items:[{id:"dashboard",label:"仪表盘",to:"/dashboard",icon:"M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"}]},{label:"生产管理",items:[{id:"provider",label:"方案商管理",to:"/provider",icon:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},{id:"factory",label:"品牌商管理",to:"/factory",icon:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{id:"product",label:"产品管理",to:"/product",icon:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{id:"code",label:"公码管理",to:"/code",icon:"M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 2h2m-2 4h6m-4-4v4m4-8h2m-2 0v4"},{id:"device",label:"生产管理",to:"/device",icon:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"}]},{label:"用户管理",items:[{id:"user",label:"用户查询",to:"/users",icon:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"}]},{label:"服务配置",items:[{id:"globalconfig",label:"全局环境配置",to:"/globalconfig",icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"},{id:"mcpconfig",label:"MCP配置",to:"/mcpconfig",icon:"M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-3-4h.01M16 16h.01"},{id:"meettemplate",label:"会议模板",to:"/meettemplates",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcconfig",label:"第三方服务配置",to:"/serviceconfig",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"},{id:"meetingsvc",label:"会议记录服务",to:"/meetingsvc",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"calltranslate",label:"通话翻译配置",to:"/calltranslate",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"}]},{label:"SaaS 管理",restricted:!0,items:[{id:"apps",label:"应用中心",to:"/apps",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"environments",label:"环境节点",to:"/environments",icon:"M5 3h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zM5 13h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4a2 2 0 012-2zM7 7h.01M7 17h.01"}]},{label:"系统管理",restricted:!0,items:[{id:"systemconfig",label:"系统配置",to:"/systemconfig",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"},{id:"statlog",label:"统计日志",to:"/statlog",icon:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},{id:"admin",label:"后台账号",to:"/accounts",icon:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"}]}],d_=fs.flatMap(e=>e.items.map(t=>t.id)),oy=fs.filter(e=>!e.restricted).flatMap(e=>e.items.map(t=>t.id));function iy(e){let t=null;for(const n of fs)for(const r of n.items)(e===r.to||e.startsWith(r.to+"/"))&&(!t||r.to.length>t.to.length)&&(t=r);return t}const ay={1:"超管",2:"管理员",3:"代理",4:"运营"},Ko="auth_state";function Sr(e){return e?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Is(e){localStorage.setItem(Ko,JSON.stringify(e))}function ly(){try{const e=localStorage.getItem(Ko);return e?JSON.parse(e):null}catch{return null}}const nu=Ep("auth",{state:()=>({token:"",account:"",identity:0,access:[],apps:[],regions:[],products:[],appbinds:[],currentAppId:0,siteTitle:""}),getters:{isSuperAdmin(){return this.identity===1},isAdmin(){return this.identity===1||this.identity===2},identityLabel(){return ay[this.identity]??""},isLoggedIn(){return!!this.token}},actions:{setLoginData(e){this.token=e.token,this.account=e.account,this.identity=e.identity,this.access=Sr(e.access),this.apps=Sr(e.apps),this.regions=Sr(e.regions),this.products=Sr(e.products),this.appbinds=e.appbinds??[],this.appbinds.length>0&&!this.currentAppId&&(this.currentAppId=this.appbinds[0].id),Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setCurrentApp(e){this.currentAppId=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setSiteTitle(e){this.siteTitle=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},logout(){this.token="",this.account="",this.identity=0,this.access=[],this.apps=[],this.regions=[],this.products=[],this.appbinds=[],this.currentAppId=0,this.siteTitle="",localStorage.removeItem(Ko)},restore(){const e=ly();e&&(this.token=e.token??"",this.account=e.account??"",this.identity=e.identity??0,this.access=e.access??[],this.apps=e.apps??[],this.regions=e.regions??[],this.products=e.products??[],this.appbinds=e.appbinds??[],this.currentAppId=e.currentAppId??0,this.siteTitle=e.siteTitle??"")},hasAccess(e){return this.identity===1?!0:this.identity===2&&this.access.length===0?oy.includes(e):this.access.includes(e)}}}),cy=e=>{const t=nu();if(!t.token)return;const n=iy(e.path);if(!(!n||t.hasAccess(n.id))){for(const r of fs)for(const s of r.items)if(t.hasAccess(s.id))return qi(s.to);return qi("/")}},uy=e=>{const t=Hc({path:e.path});if(t.redirect){const n=t.redirect.includes("#")?t.redirect:t.redirect+e.hash;return Dn(n,{acceptRelative:!0})?(window.location.href=n,!1):n}},fy=[sy,cy,uy],ho={};function dy(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const f=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(f);return c[0]!=="/"&&(c="/"+c),Di(c,"")}const a=Di(r,e),l=!n||fc(a,n)?a:n;return l+(l.includes("?")?"":s)+o}const hy=Ye({name:"nuxt:router",enforce:"pre",async setup(e){let t,n,r=No().app.baseURL;const s=Lt.history?.(r)??sm(r),o=Lt.routes?([t,n]=Qn(()=>Lt.routes(Ms)),t=await t,n(),t??Ms):Ms;let i;const a=Tm({...Lt,scrollBehavior:(E,v,p)=>{if(v===qe){i=p;return}if(Lt.scrollBehavior){if(a.options.scrollBehavior=Lt.scrollBehavior,"scrollRestoration"in window.history){const _=a.beforeEach(()=>{_(),window.history.scrollRestoration="manual"})}return Lt.scrollBehavior(E,qe,i||p)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=Ut(a.currentRoute.value);a.afterEach((E,v)=>{l.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const f=dy(r,window.location,e.payload.path),c=Ut(a.currentRoute.value),u=()=>{c.value=a.currentRoute.value};a.afterEach((E,v)=>{const p=E.matched.at(-1)?.components?.default,_=v.matched.at(-1)?.components?.default;if(p===_){u();return}E.matched.lengthw.components?.default===v.matched[k]?.components?.default)&&u()});const h={sync:u};for(const E in c.value)Object.defineProperty(h,E,{get:()=>c.value[E],enumerable:!0});e._route=Ze(h),e._middleware||={global:[],named:{}};const d=cs();a.afterEach(async(E,v,p)=>{delete e._processingMiddleware,!e.isHydrating&&d.value&&await e.runWithContext(gp),p&&await e.callHook("page:loading:end")});try{[t,n]=Qn(()=>a.isReady()),await t,n()}catch(E){[t,n]=Qn(()=>e.runWithContext(()=>Zt(E))),await t,n()}const m=f!==a.currentRoute.value.fullPath?a.resolve(f):a.currentRoute.value,y=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&fc(a.currentRoute.value.path,e.payload.path);u();const C=e.payload.state._layout;return a.beforeEach(async(E,v)=>{await e.callHook("page:loading:start"),E.meta=ot(E.meta),e.isHydrating&&C&&!mt(E.meta.layout)&&(E.meta.layout=C),e._processingMiddleware=!0;{const p=new Set([...fy,...e._middleware.global]);for(const w of E.matched){const k=w.meta.middleware;if(k)for(const P of Qc(k))p.add(P)}const _=Hc({path:E.path});if(_.appMiddleware)for(const w in _.appMiddleware)_.appMiddleware[w]?p.add(w):p.delete(w);for(const w of p){const k=typeof w=="string"?e._middleware.named[w]||await ho[w]?.().then(P=>P.default||P):w;if(!k)throw new Error(`Unknown route middleware: '${w}'.`);try{const P=await e.runWithContext(()=>k(E,v));if(!e.payload.serverRendered&&e.isHydrating&&(P===!1||P instanceof Error)){const D=P||Ft({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Zt(D)),!1}if(P===!0)continue;if(P===!1)return P;if(P)return Tc(P)&&P.fatal&&await e.runWithContext(()=>Zt(P)),P}catch(P){const D=Ft(P);return D.fatal&&await e.runWithContext(()=>Zt(D)),D}}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")}),a.afterEach(E=>{if(E.matched.length===0&&!d.value)return e.runWithContext(()=>Zt(Ft({status:404,fatal:!1,statusText:`Page not found: ${E.fullPath}`,data:{path:E.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{if("name"in m&&(m.name=void 0),y){const E=a.resolve(e.payload.path);"name"in E&&(E.name=void 0),await a.replace({...E,force:!0}),e.hooks.hookOnce("app:suspense:resolve",async()=>{await a.replace({...m,force:!0})})}else await a.replace({...m,force:!0});a.options.scrollBehavior=Lt.scrollBehavior}catch(E){await e.runWithContext(()=>Zt(E))}}),{provide:{router:a}}}}),wa=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),h_=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Wo=e=>{const t=ve();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{wa(()=>e())}):wa(()=>e())},py=Ye({name:"nuxt:payload",setup(e){const t=new Set;Ve().beforeResolve(async(n,r)=>{if(n.path===r.path)return;const s=await Zi(n.path);if(s){for(const o of t)delete e.static.data[o];for(const o in s.data)o in e.static.data||t.add(o),e.static.data[o]=s.data[o]}}),Wo(()=>{e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await Zi().catch(()=>{console.warn("[nuxt] Error preloading payload for",n)})}),navigator.connection?.effectiveType!=="slow-2g"&&setTimeout(Dc,1e3)})}}),gy=Ye(()=>{const e=Ve();Wo(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),my=Ye(e=>{let t;async function n(){let r;try{r=await Dc()}catch(s){const o=s;if(!("status"in o&&(o.status===404||o.status===403)))throw o}t&&clearTimeout(t),t=setTimeout(n,Vi);try{const s=await $fetch($o("builds/latest.json")+`?${Date.now()}`);s.id!==r?.id&&(e.hooks.callHook("app:manifest:update",s),t&&clearTimeout(t))}catch{}}Wo(()=>{t=setTimeout(n,Vi)})});function yy(e={}){const t=e.path||window.location.pathname,n=new URL(t,window.location.href);if(n.host!==window.location.host)throw new Error(`Cannot navigate to a URL with a different host: '${t}'.`);if(n.protocol&&Ys(n.protocol))throw new Error(`Cannot navigate to a URL with '${n.protocol}' protocol.`);let r={};try{r=JSON.parse(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||r?.path!==t||r?.expires{r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const i=cc(n.app.baseURL,o.fullPath);yy({path:i,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}});function by(e){return typeof e=="string"?`'${e}'`:new vy().serialize(e)}const vy=(function(){class e{#e=new Map;compare(n,r){const s=typeof n,o=typeof r;return s==="string"&&o==="string"?n.localeCompare(r):s==="number"&&o==="number"?n-r:String.prototype.localeCompare.call(this.serialize(n,!0),this.serialize(r,!0))}serialize(n,r){if(n===null)return"null";switch(typeof n){case"string":return r?n:`'${n}'`;case"bigint":return`${n}n`;case"object":return this.$object(n);case"function":return this.$function(n)}return String(n)}serializeObject(n){const r=Object.prototype.toString.call(n);if(r!=="[object Object]")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),n);const s=n.constructor,o=s===Object||s===void 0?"":s.name;if(o!==""&&globalThis[o]===s)return this.serializeBuiltInType(o,n);if(typeof n.toJSON=="function"){const i=n.toJSON();return o+(i!==null&&typeof i=="object"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(o,Object.entries(n))}serializeBuiltInType(n,r){const s=this["$"+n];if(s)return s.call(this,r);if(typeof r?.entries=="function")return this.serializeObjectEntries(n,r.entries());throw new Error(`Cannot serialize ${n}`)}serializeObjectEntries(n,r){const s=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let o=`${n}{`;for(let i=0;ithis.compare(r,s)))}`}$Map(n){return this.serializeObjectEntries("Map",n.entries())}}for(const t of["Error","RegExp","URL"])e.prototype["$"+t]=function(n){return`${t}(${n})`};for(const t of["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join(",")}]`};for(const t of["BigInt64Array","BigUint64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join("n,")}${n.length>0?"n":""}]`};return e})(),wy=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ey=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Sy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Yt=[];class Ty{_data=new yn;_hash=new yn([...wy]);_nDataBytes=0;_minBufferSize=0;finalize(t){t&&this._append(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(t,n){const r=this._hash.words;let s=r[0],o=r[1],i=r[2],a=r[3],l=r[4],f=r[5],c=r[6],u=r[7];for(let h=0;h<64;h++){if(h<16)Yt[h]=t[n+h]|0;else{const p=Yt[h-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,w=Yt[h-2],k=(w<<15|w>>>17)^(w<<13|w>>>19)^w>>>10;Yt[h]=_+Yt[h-7]+k+Yt[h-16]}const d=l&f^~l&c,m=s&o^s&i^o&i,y=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),C=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),E=u+C+d+Ey[h]+Yt[h],v=y+m;u=c,c=f,f=l,l=a+E|0,a=i,i=o,o=s,s=E+v|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0}_append(t){typeof t=="string"&&(t=yn.fromUtf8(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(t){let n,r=this._data.sigBytes/64;t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*16,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>2]|=(n.charCodeAt(o)&255)<<24-o%4*8;return new yn(s,r)}toBase64(){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255,s=this.words[n+1>>>2]>>>24-(n+1)%4*8&255,o=this.words[n+2>>>2]>>>24-(n+2)%4*8&255,i=r<<16|s<<8|o;for(let a=0;a<4&&n*8+a*6>>6*(3-a)&63))}return t.join("")}concat(t){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];this.sigBytes+=t.sigBytes}}function Ry(e){return new Ty().finalize(e).toBase64()}function gn(e){return Ry(by(e))}const Cy=Symbol.for("nuxt:client-only");function ru(e){return Object.defineProperty(function(){throw new Error(`[nuxt] \`${e.name}\` is a compiler macro and cannot be called at runtime.`)},"__nuxt_factory",{enumerable:!1,get:()=>e.factory})}const su=ru({name:"createUseAsyncData",factory(e={}){function t(...n){const r=typeof n[n.length-1]=="string"?n.pop():void 0;Py(n[0],n[1])&&n.unshift(r);let[s,o,i={}]=n,a=!1;const l=pe(s)||typeof s=="function",f=l?Re(()=>ft(s)):{value:s};if(!f.value||typeof f.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a non-empty string.");if(typeof o!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const c=typeof e=="function",u=ve(),h=c?e(i):e;if(!c)for(const p in h)h[p]!==void 0&&i[p]===void 0&&(i[p]=h[p]);if(i.server??=!0,i.default??=ky,i.getCachedData??=iu,i.lazy??=!1,i.immediate??=!0,i.deep??=Xh.deep,i.dedupe??="cancel",c)for(const p in h)h[p]!==void 0&&(i[p]=h[p]);u._asyncData[f.value];function d(){const p={cause:"initial",dedupe:i.dedupe},_=u._asyncData[f.value];return _?._init?u._asyncDataPromises[f.value]&&(p.cachedData=_._initialCachedData):(p.cachedData=i.getCachedData(f.value,u,{cause:"initial"}),u._asyncData[f.value]=Ea(u,f.value,o,i,p.cachedData),u._asyncData[f.value]._initialCachedData=p.cachedData),()=>u._asyncData[f.value].execute(p)}const m=d(),y=u._asyncData[f.value];y._deps++;const C=i.server!==!1&&u.payload.serverRendered;{let p=function(T){const $=u._asyncData[T];$?._deps&&($._deps--,$._deps===0&&$?._off())};const _=an();if(_&&C&&i.immediate&&!_.sp&&(_.sp=[]),_&&!_._nuxtOnBeforeMountCbs){_._nuxtOnBeforeMountCbs=[];const T=_._nuxtOnBeforeMountCbs;pl(()=>{T.forEach($=>{$()}),T.splice(0,T.length)}),ss(()=>T.splice(0,T.length))}const w=_&&(_._nuxtClientOnly||Ce(Cy,!1));C&&u.isHydrating&&(y.error.value||y.data.value!==void 0)?y.status.value=y.error.value?"error":"success":_&&(!w&&u.payload.serverRendered&&u.isHydrating||i.lazy)&&i.immediate?_._nuxtOnBeforeMountCbs.push(m):i.immediate&&y.status.value!=="success"&&m();const k=Zr(),P=()=>{},D=l?Rt(f,(T,$)=>{if((T||$)&&T!==$){a=!0;const L=u._asyncData[$]?.data.value!==void 0,W=u._asyncDataPromises[$]!==void 0,Z={cause:"initial",dedupe:i.dedupe};if(!u._asyncData[T]?._init){let F;$&&L?F=u._asyncData[$].data.value:(F=i.getCachedData(T,u,{cause:"initial"}),Z.cachedData=F),u._asyncData[T]=Ea(u,T,o,i,F)}u._asyncData[T]._deps++,$&&p($),i._keyTriggersExecute!==!1&&(i.immediate||L||W)&&u._asyncData[T].execute(Z),rr(()=>{a=!1})}},{flush:"sync"}):P,R=i.watch?Rt(i.watch,()=>{a||(u._asyncData[f.value]?._execute.isPending()&&rr(()=>{u._asyncData[f.value]?._execute.flush()}),u._asyncData[f.value]?._execute({cause:"watch",dedupe:i.dedupe}))}):P;k&&Da(()=>{D(),R(),p(f.value)})}const E={data:Tr(()=>u._asyncData[f.value]?.data),pending:Tr(()=>u._asyncData[f.value]?.pending),status:Tr(()=>u._asyncData[f.value]?.status),error:Tr(()=>u._asyncData[f.value]?.error),refresh:(...p)=>u._asyncData[f.value]?._init?u._asyncData[f.value].execute(...p):d()(),execute:(...p)=>E.refresh(...p),clear:()=>{const p=u._asyncData[f.value];if(p?._abortController)try{p._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{p._abortController=void 0}ou(u,f.value)}},v=Promise.resolve(u._asyncDataPromises[f.value]).then(()=>E);return Object.assign(v,E),Object.defineProperties(v,{then:{enumerable:!0,value:v.then.bind(v)},catch:{enumerable:!0,value:v.catch.bind(v)},finally:{enumerable:!0,value:v.finally.bind(v)}}),v}return t}}),Ay=su.__nuxt_factory();su.__nuxt_factory({lazy:!0,_functionName:"useLazyAsyncData"});function Tr(e){return Re({get(){return e()?.value},set(t){const n=e();n&&(n.value=t)}})}function Py(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function ou(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=void 0),e._asyncData[t]&&(e._asyncData[t].data.value=ae(e._asyncData[t]._default()),e._asyncData[t].error.value=void 0,e._asyncData[t].status.value="idle",e._asyncData[t]._initialCachedData=void 0),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function xy(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ea(e,t,n,r,s){e.payload._errors[t]??=void 0;const o=r.getCachedData!==iu,i=n,a=r.deep?nt:Ut,l=s!==void 0,f=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(l?s:r.default()),pending:Re(()=>c.status.value==="pending"),error:Qa(e.payload._errors,t),status:Ut("idle"),execute:(...u)=>{const[h,d=void 0]=u,m=h&&d===void 0&&typeof h=="object"?h:{};if(e._asyncDataPromises[t]&&(m.dedupe??r.dedupe)==="defer")return e._asyncDataPromises[t];{const E="cachedData"in m?m.cachedData:r.getCachedData(t,e,{cause:m.cause??"refresh:manual"});if(E!==void 0)return e.payload.data[t]=c.data.value=E,c.error.value=void 0,c.status.value="success",Promise.resolve(E)}c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const y=new AbortController,C=new Promise((E,v)=>{try{const p=m.timeout??r.timeout,_=Oy([c._abortController?.signal,m?.signal],y.signal,p);if(_.aborted){const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"));return}return _.addEventListener("abort",()=>{const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"))},{once:!0,signal:y.signal}),Promise.resolve(i(e,{signal:_})).then(E,v)}catch(p){v(p)}}).then(async E=>{if(e._asyncDataPromises[t]!==C)return;let v=E;r.transform&&(v=await r.transform(E)),r.pick&&(v=xy(v,r.pick)),e.payload.data[t]=v,c.data.value=v,c.error.value=void 0,c.status.value="success"}).catch(E=>{if(e._asyncDataPromises[t]!==C||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&E instanceof DOMException&&E.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=Ft(E),c.data.value=ae(r.default()),c.status.value="error"}).finally(()=>{y.abort(),e._asyncDataPromises[t]===C&&delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=C,e._asyncDataPromises[t]},_execute:Sg((...u)=>c.execute(...u),0,{leading:!0}),_default:r.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{f(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),o||xt(()=>{e._asyncData[t]?._init||(ou(e,t),c.execute=()=>Promise.resolve())})}};return c}const ky=()=>{},iu=(e,t,n)=>{if(t.isHydrating)return t.payload.data[e];if(n.cause!=="refresh:manual"&&n.cause!=="refresh:hook")return t.static.data[e]};function Oy(e,t,n){const r=e.filter(i=>!!i);if(typeof n=="number"&&n>=0){const i=AbortSignal.timeout?.(n);i&&r.push(i)}if(AbortSignal.any)return AbortSignal.any(r);const s=new AbortController;for(const i of r)if(i.aborted){const a=i.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}return s.signal}const o=()=>{const a=r.find(l=>l.aborted)?.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}};for(const i of r)i.addEventListener?.("abort",o,{once:!0,signal:t});return s.signal}function My(e){const t=[ft(e.method)?.toUpperCase()||"GET",ft(e.baseURL)];for(const n of[e.query||e.params]){const r=ft(n);if(!r)continue;const s={};for(const[o,i]of Object.entries(r))s[ft(o)]=ft(i);t.push(s)}if(e.body){const n=ft(e.body);if(!n)t.push(gn(n));else if(n instanceof ArrayBuffer)t.push(gn(Object.fromEntries([...new Uint8Array(n).entries()].map(([r,s])=>[r,s.toString()]))));else if(n instanceof FormData){const r=[];for(const s of n.entries()){const[o,i]=s;r.push([o,i instanceof File?`${i.name}:${i.size}:${i.lastModified}`:i])}t.push(gn(r))}else if(mo(n))t.push(gn(ot(n)));else try{t.push(gn(n))}catch{console.warn("[useFetch] Failed to hash body",n)}}return t}const au=ru({name:"createUseFetch",factory(e={}){function t(n,r,s){const[o={},i]=typeof r=="string"?[{},r]:[r,s],a=typeof e=="function"?e(o):e,{server:l,lazy:f,default:c,transform:u,pick:h,watch:d,immediate:m,getCachedData:y,deep:C,dedupe:E,timeout:v,...p}={...typeof e=="function"?{}:a,...o,...typeof e=="function"?a:{}},_=Re(()=>ft(n)),w=Re(()=>ft(p.key)||"$f"+gn([i,typeof _.value=="string"?_.value:"",...My(p)]));if(!p.baseURL&&typeof _.value=="string"&&_.value[0]==="/"&&_.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const k=ot({...Yh,...p,cache:typeof p.cache=="boolean"?void 0:p.cache}),P={server:l,lazy:f,default:c,transform:u,pick:h,immediate:m,getCachedData:y,deep:C,dedupe:E,timeout:v,watch:d===!1?[]:[...d||[],k]};return d===!1&&(P._keyTriggersExecute=!1),Ay(w,(R,{signal:T})=>(p.$fetch||globalThis.$fetch)(_.value,{signal:T,...k}),P)}return t}});au.__nuxt_factory();au.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});function Iy(e){if(e?.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function Ly(e,t=Ve()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||=new Set,t._routePreloaded.has(n)))return;const s=t._preloadPromises||=[];if(s.length>4)return Promise.all(s).then(()=>Ly(e,t));t._routePreloaded.add(n);for(const o of r){const i=o.components?.default;if(typeof i!="function")continue;const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a),1));s.push(a)}await Promise.all(s)}const Dy=Ye({name:"pinia",setup(e){const t=mp();return e.vueApp.use(t),xn(t),e.payload&&e.payload.pinia&&(t.state.value=e.payload.pinia),{provide:{pinia:t}}},hooks:{"app:rendered"(){const e=ve();e.payload.pinia=ne(e.$pinia).state.value,xn(void 0)}}}),Hy=Ye({name:"nuxt:global-components"}),Nt={auth:Ir(()=>me(()=>import("./VY77fqvj.js"),[],import.meta.url).then(e=>e.default||e)),default:Ir(()=>me(()=>import("./CWpRLpao.js"),__vite__mapDeps([34,35,3,2,36]),import.meta.url).then(e=>e.default||e))},$y=Ye({name:"nuxt:prefetch",setup(e){const t=Ve();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{const r=n?.meta?.layout;r&&typeof Nt[r]=="function"&&await Nt[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Dn(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=Qc(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof ho[i]=="function"&&ho[i]();typeof s=="string"&&s in Nt&&Iy(Nt[s])})}}),Ny=Ye(()=>{nu().restore()}),jy=[dg,pg,bg,hy,py,gy,my,_y,Dy,Hy,$y,Ny],lu=(e="RouteProvider")=>Wt({name:e,props:{route:{type:Object,required:!0},vnode:Object,vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(t){const n=t.renderKey,r=t.route,s={};for(const o in t.route)Object.defineProperty(s,o,{get:()=>n===t.renderKey?t.route[o]:r[o],enumerable:!0});return jt(on,Ze(s)),()=>t.vnode?Oe(t.vnode,{ref:t.vnodeRef}):t.vnode}}),Fy=lu(),Sa=new WeakMap,By=Wt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,slots:n,expose:r}){const s=ve(),o=nt(),i=Ce(on,null);let a;r({pageRef:o});const l=Ce(Ec,null);let f;const c=s.deferHydration();let u=!1,h=!1,d=0;if(s.isHydrating){const y=s.hooks.hookOnce("app:error",c),C=Ve().beforeEach(()=>{y(),C()})}e.pageKey&&Rt(()=>e.pageKey,(y,C)=>{y!==C&&s.callHook("page:loading:start")});let m=!1;{const y=Ve().beforeResolve(()=>{m=!1});fr(()=>{y(),c()})}return()=>Oe(Yc,{name:e.name,route:e.route,...t},{default:y=>{const C=Uy(i,y.route,y.Component),E=i&&i.matched.length===y.route.matched.length;if(!y.Component){if(f&&!E&&!Ls(f))return f;c();return}if(f&&l&&!Ls(f)&&!l.isCurrent(y.route))return f;if(C&&i&&(!l||l?.isCurrent(i)))return(E||f)&&!Ls(f)?f:null;const v=fo(y,e.pageKey),p=Vy(i,y.route,y.Component);!s.isHydrating&&a===v&&!p&&xt(()=>{m||(m=!0,s.callHook("page:loading:end"))}),u&&a!==v&&h&&d++,a=v;const _=!!(e.transition??y.route.meta.pageTransition??Bi),w=_&&eu([e.transition,y.route.meta.pageTransition,Bi,{onAfterLeave(){s["~transitionFinish"]?.(),delete s["~transitionFinish"],delete s["~transitionPromise"],s.callHook("page:transition:finish",y.Component)}}]),k=e.keepalive??y.route.meta.keepalive??Jh;return f=Zc(_&&w,xm(k,Oe(Io,{key:d,suspensible:!0,onPending:()=>{u=!0,_&&!s["~transitionPromise"]&&(s["~transitionPromise"]=new Promise(P=>{s["~transitionFinish"]=P})),s.callHook("page:start",y.Component)},onResolve:async()=>{u=!1,h=!0;try{await xt(),s._route.sync?.(),await s.callHook("page:finish",y.Component),!m&&!p&&(m=!0,await s.callHook("page:loading:end"))}finally{c()}}},{default:()=>{const P={key:v||void 0,vnode:n.default?Ky(n.default,y):y.Component,route:y.route,renderKey:v||void 0,trackRootNodes:_,vnodeRef:o};if(!k)return Oe(Fy,P);const D=y.Component.type,R=D;let T=Sa.get(R);return T||(T=lu(D.name||D.__name),Sa.set(R,T)),Oe(T,P)}}))).default(),f}})}});function Uy(e,t,n){if(!e)return!1;const r=t.matched.findIndex(i=>i.components?.default===n?.type);if(r===-1)return!1;const s=t.matched.slice(0,r).filter(i=>i.components?.default);if(!s.length)return!1;const o=e.matched.filter(i=>i.components?.default);return s.some((i,a)=>i.components?.default!==o[a]?.components?.default)||n&&fo({route:t,Component:n})!==fo({route:e,Component:n})}function Vy(e,t,n){return e?t.matched.findIndex(s=>s.components?.default===n?.type)Oe(Nt[e.name],e.layoutProps,t.slots)}}),qy={name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},zy=Wt({name:"NuxtLayout",inheritAttrs:!1,props:qy,setup(e,t){const n=ve(),r=Ce(on),o=!r||r===jo()?Fc():r,i=Re(()=>{let c=ae(e.name)??o?.meta.layout??cu(o?.path).appLayout??"default";return c&&!(c in Nt)&&e.fallback&&(c=ae(e.fallback)),c}),a=Ut();t.expose({layoutRef:a});const l=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",l),u=Ve().beforeEach(()=>{c(),u()})}let f;return()=>{const u=!!i.value&&i.value in Nt&&!!(o?.meta.layoutTransition??Fi),h=u&&eu([o?.meta.layoutTransition,Fi,{onBeforeLeave(){n["~transitionPromise"]=new Promise(m=>{n["~transitionFinish"]=m})},onAfterLeave(){n["~transitionFinish"]?.(),delete n["~transitionFinish"],delete n["~transitionPromise"]}}]),d=f;return f=i.value,Zc(h,{default:()=>Oe(Io,{suspensible:!0,onResolve:async()=>{await xt(l)}},{default:()=>Oe(Gy,{layoutProps:zl(t.attrs,o.meta.layoutProps??{},{ref:a}),key:i.value||void 0,name:i.value,shouldProvide:!e.name,isRenderingNewLayout:m=>m!==d&&m===i.value,hasTransition:u},t.slots)})}).default()}}}),Gy=Wt({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean},isRenderingNewLayout:{type:Function,required:!0}},setup(e,t){const n=e.name;e.shouldProvide&&jt(Ec,{isCurrent:o=>n===!1||n===(o.meta.layout??cu(o.path).appLayout??"default")});const r=Ce(on);if(r&&r===jo()){const o=Fc(),i={};for(const a in o){const l=a;Object.defineProperty(i,l,{enumerable:!0,get:()=>e.isRenderingNewLayout(e.name)?o[l]:r[l]})}jt(on,Ze(i))}return()=>!n||typeof n=="string"&&!(n in Nt)?t.slots.default?.():Oe(Wy,{key:n,layoutProps:e.layoutProps,name:n},t.slots)}}),Jy=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Xy={};function Yy(e,t){const n=By,r=zy;return Ge(),ht(r,null,{default:Ao(()=>[ye(n)]),_:1})}const Qy=Jy(Xy,[["render",Yy]]),Zy={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error,r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Ir(()=>me(()=>import("./S5V4LTkJ.js"),__vite__mapDeps([37,35,38,39]),import.meta.url)):Ir(()=>me(()=>import("./SwS86oeZ.js"),__vite__mapDeps([40,38,41]),import.meta.url));return(u,h)=>(Ge(),ht(ae(c),bu(Wl({status:ae(r),statusText:ae(o),statusCode:ae(r),statusMessage:ae(o),description:ae(i),stack:ae(a)})),null,16))}},e_={key:0},Ta={__name:"nuxt-root",setup(e){const t=()=>null,n=ve(),r=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",r),u=Ve().beforeEach(()=>{c(),u()})}const s=!1;jt(on,jo()),n.hooks.callHookWith(c=>c.map(u=>u()),"vue:setup",[]);const o=cs(),i=!1,a=/bot\b|chrome-lighthouse|facebookexternalhit|google\b/i;function l(c,u,h){const d=n.vueApp.config.errorHandler;if(d&&!d.__nuxt_default)try{d(c,u,h)}catch(m){console.error("[nuxt] Error in `app.config.errorHandler`",m)}}ml((c,u,h)=>{if(n.hooks.callHook("vue:error",c,u,h)?.catch(d=>console.error("[nuxt] Error in `vue:error` hook",d)),a.test(navigator.userAgent))return n.hooks.callHook("app:error",c),console.error(`[nuxt] Not rendering error page for bot with user agent \`${navigator.userAgent}\`:`,c),!1;if(Tc(c)&&(c.fatal||c.unhandled))return n.runWithContext(()=>Zt(c)),l(c,u,h),!1});const f=!1;return(c,u)=>(Ge(),ht(Io,{onResolve:ae(r)},{default:Ao(()=>[ae(i)?(Ge(),Yf("div",e_)):ae(o)?(Ge(),ht(ae(Zy),{key:1,error:ae(o)},null,8,["error"])):ae(f)?(Ge(),ht(ae(t),{key:2,context:ae(f)},null,8,["context"])):ae(s)?(Ge(),ht(vf(ae(s)),{key:3})):(Ge(),ht(ae(Qy),{key:4}))]),_:1},8,["onResolve"]))}};let Ra;{let e;Ra=async function(){if(e)return e;const n=!!(window.__NUXT__?.serverRendered??document.getElementById("__NUXT_DATA__")?.dataset.ssr==="true"),r=n?Wd(Ta):Kd(Ta),s=tp({vueApp:r});async function o(i){await s.callHook("app:error",i),s.payload.error||=Ft(i)}o.__nuxt_default=!0,r.config.errorHandler=o,s.hook("app:suspense:resolve",()=>{r.config.errorHandler===o&&(r.config.errorHandler=void 0)}),!n&&Ui.id&&s.hook("app:suspense:resolve",()=>{document.getElementById(Ui.id)?.remove()});try{await sp(s,jy)}catch(i){o(i)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Qh),await s.hooks.callHook("app:mounted",r),await xt()}catch(i){o(i)}return r},e=Ra().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{hp as $,xt as A,ko as B,a_ as C,jo as D,Rt as E,ke as F,ae as G,i_ as H,ht as I,oy as J,d_ as K,o_ as L,fs as M,c_ as N,Yr as O,fr as P,s_ as Q,Wo as R,wa as S,pd as T,h_ as U,Oe as V,n_ as W,ic as X,pp as Y,Ut as Z,Jy as _,Kl as a,Ly as a0,qi as a1,cc as a2,Dn as a3,Ys as a4,No as a5,bh as a6,Fr as a7,u_ as a8,Qa as a9,pe as aa,ye as b,Yf as c,ql as d,ve as e,Ic as f,Wt as g,ns as h,Ce as i,nu as j,Ve as k,Zf as l,l_ as m,Qr as n,Ge as o,t_ as p,$d as q,r_ as r,Dd as s,Su as t,f_ as u,Oi as v,Ao as w,nt as x,ot as y,Re as z}; +`)&&(yr(p,0)||fn(),p.textContent=_.children)}if(T){if(te||!D||$&48){const V=p.tagName.includes("-");for(const le in T)(te&&(le.endsWith("value")||le==="indeterminate")||lr(le)&&!en(le)||le[0]==="."||V&&!en(le))&&r(p,le,null,T[le],void 0,w)}else if(T.onClick)r(p,"onClick",null,T.onClick,void 0,w);else if($&4&>(T.style))for(const V in T.style)T.style[V]}let q;(q=T&&T.onVnodeBeforeMount)&&He(q,w,_),W&&ct(_,null,w,"beforeMount"),((q=T&&T.onVnodeMounted)||W||F)&&Fl(()=>{q&&He(q,w,_),F&&Z.enter(p),W&&ct(_,null,w,"mounted")},k)}return p.nextSibling},d=(p,_,w,k,P,D,R)=>{R=R||!!_.dynamicChildren;const T=_.children,$=T.length;let L=!1;for(let W=0;W<$;W++){const Z=R?T[W]:T[W]=Fe(T[W]),te=Z.type===rn;p?(te&&!R&&W+1<$&&Fe(T[W+1]).type===rn&&(l(s(p.data.slice(Z.children.length)),w,o(p)),p.data=Z.children),p=u(p,Z,k,P,D,R)):te&&!Z.children?l(Z.el=s(""),w):(L||(L=!0,yr(w,1)||fn()),n(null,Z,w,null,k,P,mr(w),D))}return p},m=(p,_,w,k,P,D)=>{const{slotScopeIds:R}=_;R&&(P=P?P.concat(R):R);const T=i(p),$=d(o(p),_,T,w,k,P,D);return $&&mn($)&&$.data==="]"?o(_.anchor=$):(fn(),l(_.anchor=f("]"),T,$),$)},y=(p,_,w,k,P,D)=>{if(yr(p.parentElement,1)||fn(),_.el=null,D){const $=C(p);for(;;){const L=o(p);if(L&&L!==$)a(L);else break}}const R=o(p),T=i(p);return a(p),n(null,_,T,R,w,k,mr(T),P),w&&(w.vnode.el=_.el,is(w,_.el)),R},C=(p,_="[",w="]")=>{let k=0;for(;p;)if(p=o(p),p&&mn(p)&&(p.data===_&&k++,p.data===w)){if(k===0)return o(p);k--}return p},E=(p,_,w)=>{const k=_.parentNode;k&&k.replaceChild(p,_);let P=w;for(;P;)P.vnode.el===_&&(P.vnode.el=P.subTree.el=p),P=P.parent},v=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[c,u]}const si="data-allow-mismatch",ff={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function yr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(si);)e=e.parentElement;const n=e&&e.getAttribute(si);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:r.includes(ff[t])}}Xr().requestIdleCallback;Xr().cancelIdleCallback;function df(e,t){if(mn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(mn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Ct=e=>!!e.type.__asyncLoader;function Ir(e){Y(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:a=!0,onError:l}=e;let f=null,c,u=0;const h=()=>(u++,f=null,d()),d=()=>{let m;return f||(m=f=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((C,E)=>{l(y,()=>C(h()),()=>E(y),u+1)});throw y}).then(y=>m!==f&&f?f:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return Wt({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(m,y,C){let E=!1;(y.bu||(y.bu=[])).push(()=>E=!0);const v=()=>{E||C()},p=o?()=>{const _=o(v,w=>df(m,w));_&&(y.bum||(y.bum=[])).push(_)}:v;c?p():d().then(()=>!y.isUnmounted&&p())},get __asyncResolved(){return c},setup(){const m=Ae;if(xo(m),c)return()=>_r(c,m);const y=w=>{f=null,Ln(w,m,13,!r)};if(a&&m.suspense||An)return d().then(w=>()=>_r(w,m)).catch(w=>(y(w),()=>r?ye(r,{error:w}):null));const C=nt(!1),E=nt(),v=nt(!!s);let p,_;return ss(()=>{p!=null&&clearTimeout(p),_!=null&&clearTimeout(_)}),s&&(_=setTimeout(()=>{m.isUnmounted||(v.value=!1)},s)),i!=null&&(p=setTimeout(()=>{if(!m.isUnmounted&&!C.value&&!E.value){const w=new Error(`Async component timed out after ${i}ms.`);y(w),E.value=w}},i)),d().then(()=>{m.isUnmounted||(C.value=!0,m.parent&&ur(m.parent.vnode)&&m.parent.update())}).catch(w=>{if(m.isUnmounted){f=null;return}y(w),E.value=w}),()=>{if(C.value&&c)return _r(c,m);if(E.value&&r)return ye(r,{error:E.value});if(n&&!v.value)return _r(n,m)}}})}function _r(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=ye(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const ur=e=>e.type.__isKeepAlive,hf={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=an(),r=n.ctx;if(!r.renderer)return()=>{const v=t.default&&t.default();return v&&v.length===1?v[0]:v};const s=new Map,o=new Set;let i=null;const a=n.suspense,{renderer:{p:l,m:f,um:c,o:{createElement:u}}}=r,h=u("div");r.activate=(v,p,_,w,k)=>{const P=v.component;f(v,p,_,0,a),l(P.vnode,v,p,_,P,a,w,v.slotScopeIds,k),Se(()=>{P.isDeactivated=!1,P.a&&vn(P.a);const D=v.props&&v.props.onVnodeMounted;D&&He(D,P.parent,v)},a)},r.deactivate=v=>{const p=v.component;Dr(p.m),Dr(p.a),f(v,h,null,1,a),Se(()=>{p.da&&vn(p.da);const _=v.props&&v.props.onVnodeUnmounted;_&&He(_,p.parent,v),p.isDeactivated=!0},a)};function d(v){_s(v),c(v,n,a,!0)}function m(v){s.forEach((p,_)=>{const w=Gs(Ct(p)?p.type.__asyncResolved||{}:p.type);w&&!v(w)&&y(_)})}function y(v){const p=s.get(v);p&&(!i||!et(p,i))?d(p):i&&_s(i),s.delete(v),o.delete(v)}Rt(()=>[e.include,e.exclude],([v,p])=>{v&&m(_=>Vn(v,_)),p&&m(_=>!Vn(p,_))},{flush:"post",deep:!0});let C=null;const E=()=>{C!=null&&(Hr(n.subTree.type)?Se(()=>{s.set(C,br(n.subTree))},n.subTree.suspense):s.set(C,br(n.subTree)))};return ko(E),gl(E),fr(()=>{s.forEach(v=>{const{subTree:p,suspense:_}=n,w=br(p);if(v.type===w.type&&v.key===w.key){_s(w);const k=w.component.da;k&&Se(k,_);return}d(v)})}),()=>{if(C=null,!t.default)return i=null;const v=t.default(),p=v[0];if(v.length>1)return i=null,v;if(!sn(p)||!(p.shapeFlag&4)&&!(p.shapeFlag&128))return i=null,p;let _=br(p);if(_.type===be)return i=null,_;const w=_.type,k=Gs(Ct(_)?_.type.__asyncResolved||{}:w),{include:P,exclude:D,max:R}=e;if(P&&(!k||!Vn(P,k))||D&&k&&Vn(D,k))return _.shapeFlag&=-257,i=_,p;const T=_.key==null?w:_.key,$=s.get(T);return _.el&&(_=kt(_),p.shapeFlag&128&&(p.ssContent=_)),C=T,$?(_.el=$.el,_.component=$.component,_.transition&&Rn(_,_.transition),_.shapeFlag|=512,o.delete(T),o.add(T)):(o.add(T),R&&o.size>parseInt(R,10)&&y(o.values().next().value)),_.shapeFlag|=256,i=_,Hr(p.type)?p:_}}},pf=hf;function Vn(e,t){return G(e)?e.some(n=>Vn(n,t)):pe(e)?e.split(",").includes(t):fu(e)?(e.lastIndex=0,e.test(t)):!1}function fl(e,t){hl(e,"a",t)}function dl(e,t){hl(e,"da",t)}function hl(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(rs(t,r,n),n){let s=n.parent;for(;s&&s.parent;)ur(s.parent.vnode)&&gf(r,t,n,s),s=s.parent}}function gf(e,t,n,r){const s=rs(t,e,r,!0);ss(()=>{go(r[t],s)},n)}function _s(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function br(e){return e.shapeFlag&128?e.ssContent:e}function rs(e,t,n=Ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{At();const a=dr(n),l=Xe(t,n,e,i);return a(),Pt(),l});return r?s.unshift(o):s.push(o),o}}const Ot=e=>(t,n=Ae)=>{(!An||e==="sp")&&rs(e,(...r)=>t(...r),n)},pl=Ot("bm"),ko=Ot("m"),mf=Ot("bu"),gl=Ot("u"),fr=Ot("bum"),ss=Ot("um"),yf=Ot("sp"),_f=Ot("rtg"),bf=Ot("rtc");function ml(e,t=Ae){rs("ec",e,t)}const yl="components";function o_(e,t){return bl(yl,e,!0,t)||e}const _l=Symbol.for("v-ndc");function vf(e){return pe(e)?bl(yl,e,!1)||e:e||_l}function bl(e,t,n=!0,r=!1){const s=Pe||Ae;if(s){const o=s.type;{const a=Gs(o,!1);if(a&&(a===t||a===Le(t)||a===Gr(Le(t))))return o}const i=oi(s[e]||o[e],t)||oi(s.appContext[e],t);return!i&&r?o:i}}function oi(e,t){return e&&(e[t]||e[Le(t)]||e[Gr(Le(t))])}function i_(e,t,n,r){let s;const o=n,i=G(e);if(i||pe(e)){const a=i&>(e);let l=!1,f=!1;a&&(l=!Be(e),f=mt(e),e=es(e)),s=new Array(e.length);for(let c=0,u=e.length;ct(a,l,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let l=0,f=a.length;l0;return Ge(),ht(ke,null,[ye("slot",n,r)],f?-2:64)}let o=e[t];o&&o._c&&(o._d=!1),Ge();const i=o&&vl(o(n)),a=n.key||i&&i.key,l=ht(ke,{key:(a&&!Ue(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||[],i&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function vl(e){return e.some(t=>sn(t)?!(t.type===be||t.type===ke&&!vl(t.children)):!0)?e:null}const Fs=e=>e?Gl(e)?as(e):Fs(e.parent):null,Gn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Fs(e.parent),$root:e=>Fs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>El(e),$forceUpdate:e=>e.f||(e.f=()=>{Co(e.update)}),$nextTick:e=>e.n||(e.n=xt.bind(e.proxy)),$watch:e=>nf.bind(e)}),bs=(e,t)=>e!==de&&!e.__isScriptSetup&&ie(e,t),wf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:a,appContext:l}=e;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(bs(r,t))return i[t]=1,r[t];if(s!==de&&ie(s,t))return i[t]=2,s[t];if(ie(o,t))return i[t]=3,o[t];if(n!==de&&ie(n,t))return i[t]=4,n[t];Bs&&(i[t]=0)}}const f=Gn[t];let c,u;if(f)return t==="$attrs"&&xe(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==de&&ie(n,t))return i[t]=4,n[t];if(u=l.config.globalProperties,ie(u,t))return u[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return bs(s,t)?(s[t]=n,!0):r!==de&&ie(r,t)?(r[t]=n,!0):ie(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},a){let l;return!!(n[a]||e!==de&&a[0]!=="$"&&ie(e,a)||bs(t,a)||ie(o,a)||ie(r,a)||ie(Gn,a)||ie(s.config.globalProperties,a)||(l=i.__cssModules)&&l[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ie(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ii(e){return G(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Bs=!0;function Ef(e){const t=El(e),n=e.proxy,r=e.ctx;Bs=!1,t.beforeCreate&&ai(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:l,inject:f,created:c,beforeMount:u,mounted:h,beforeUpdate:d,updated:m,activated:y,deactivated:C,beforeDestroy:E,beforeUnmount:v,destroyed:p,unmounted:_,render:w,renderTracked:k,renderTriggered:P,errorCaptured:D,serverPrefetch:R,expose:T,inheritAttrs:$,components:L,directives:W,filters:Z}=t;if(f&&Sf(f,r,null),i)for(const q in i){const V=i[q];Y(V)&&(r[q]=V.bind(n))}if(s){const q=s.call(n,n);se(q)&&(e.data=ot(q))}if(Bs=!0,o)for(const q in o){const V=o[q],le=Y(V)?V.bind(n,n):Y(V.get)?V.get.bind(n,n):pt,Mt=!Y(V)&&Y(V.set)?V.set.bind(n):pt,it=Re({get:le,set:Mt});Object.defineProperty(r,q,{enumerable:!0,configurable:!0,get:()=>it.value,set:De=>it.value=De})}if(a)for(const q in a)wl(a[q],r,n,q);if(l){const q=Y(l)?l.call(n):l;Reflect.ownKeys(q).forEach(V=>{jt(V,q[V])})}c&&ai(c,e,"c");function F(q,V){G(V)?V.forEach(le=>q(le.bind(n))):V&&q(V.bind(n))}if(F(pl,u),F(ko,h),F(mf,d),F(gl,m),F(fl,y),F(dl,C),F(ml,D),F(bf,k),F(_f,P),F(fr,v),F(ss,_),F(yf,R),G(T))if(T.length){const q=e.exposed||(e.exposed={});T.forEach(V=>{Object.defineProperty(q,V,{get:()=>n[V],set:le=>n[V]=le,enumerable:!0})})}else e.exposed||(e.exposed={});w&&e.render===pt&&(e.render=w),$!=null&&(e.inheritAttrs=$),L&&(e.components=L),W&&(e.directives=W),R&&xo(e)}function Sf(e,t,n=pt){G(e)&&(e=Us(e));for(const r in e){const s=e[r];let o;se(s)?"default"in s?o=Ce(s.from||r,s.default,!0):o=Ce(s.from||r):o=Ce(s),ge(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ai(e,t,n){Xe(G(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function wl(e,t,n,r){let s=r.includes(".")?sl(n,r):()=>n[r];if(pe(e)){const o=t[e];Y(o)&&Rt(s,o)}else if(Y(e))Rt(s,e.bind(n));else if(se(e))if(G(e))e.forEach(o=>wl(o,t,n,r));else{const o=Y(e.handler)?e.handler.bind(n):t[e.handler];Y(o)&&Rt(s,o,e)}}function El(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(f=>Lr(l,f,i,!0)),Lr(l,t,i)),se(t)&&o.set(t,l),l}function Lr(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Lr(e,o,n,!0),s&&s.forEach(i=>Lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Tf[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Tf={data:li,props:ci,emits:ci,methods:Kn,computed:Kn,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Kn,directives:Kn,watch:Cf,provide:li,inject:Rf};function li(e,t){return t?e?function(){return Te(Y(e)?e.call(this,this):e,Y(t)?t.call(this,this):t)}:t:e}function Rf(e,t){return Kn(Us(e),Us(t))}function Us(e){if(G(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Kt(t)}Modifiers`];function kf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||de;let s=n;const o=t.startsWith("update:"),i=o&&xf(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>pe(c)?c.trim():c)),i.number&&(s=n.map(Jr)));let a,l=r[a=ds(t)]||r[a=ds(Le(t))];!l&&o&&(l=r[a=ds(Kt(t))]),l&&Xe(l,e,6,s);const f=r[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Xe(f,e,6,s)}}const Of=new WeakMap;function Tl(e,t,n=!1){const r=n?Of:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!Y(e)){const l=f=>{const c=Tl(f,t,!0);c&&(a=!0,Te(i,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(se(e)&&r.set(e,null),null):(G(o)?o.forEach(l=>i[l]=null):Te(i,o),se(e)&&r.set(e,i),i)}function os(e,t){return!e||!lr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ie(e,t[0].toLowerCase()+t.slice(1))||ie(e,Kt(t))||ie(e,t))}function vs(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:l,render:f,renderCache:c,props:u,data:h,setupState:d,ctx:m,inheritAttrs:y}=e,C=Or(e);let E,v;try{if(n.shapeFlag&4){const _=s||r,w=_;E=Fe(f.call(w,_,c,u,d,h,m)),v=a}else{const _=t;E=Fe(_.length>1?_(u,{attrs:a,slots:i,emit:l}):_(u,null)),v=t.props?a:If(a)}}catch(_){Xn.length=0,Ln(_,e,1),E=ye(be)}let p=E;if(v&&y!==!1){const _=Object.keys(v),{shapeFlag:w}=p;_.length&&w&7&&(o&&_.some(Wr)&&(v=Lf(v,o)),p=kt(p,v,!1,!0))}return n.dirs&&(p=kt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Rn(p,n.transition),E=p,Or(C),E}function Mf(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||lr(n))&&((t||(t={}))[n]=e[n]);return t},Lf=(e,t)=>{const n={};for(const r in e)(!Wr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Df(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:a,patchFlag:l}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ui(r,i,f):!!i;if(l&8){const c=t.dynamicProps;for(let u=0;uObject.create(Cl),Pl=e=>Object.getPrototypeOf(e)===Cl;function Hf(e,t,n,r=!1){const s={},o=Al();e.propsDefaults=Object.create(null),xl(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ze(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function $f(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=ne(s),[l]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let u=0;u{l=!0;const[h,d]=kl(u,t,!0);Te(i,h),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return se(e)&&r.set(e,_n),_n;if(G(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",Mo=e=>G(e)?e.map(Fe):[Fe(e)],jf=(e,t,n)=>{if(t._n)return t;const r=Ao((...s)=>Mo(t(...s)),n);return r._c=!1,r},Ol=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Oo(s))continue;const o=e[s];if(Y(o))t[s]=jf(s,o,r);else if(o!=null){const i=Mo(o);t[s]=()=>i}}},Ml=(e,t)=>{const n=Mo(t);e.slots.default=()=>n},Il=(e,t,n)=>{for(const r in t)(n||!Oo(r))&&(e[r]=t[r])},Ff=(e,t,n)=>{const r=e.slots=Al();if(e.vnode.shapeFlag&32){const s=t._;s?(Il(r,t,n),n&&xa(r,"_",s,!0)):Ol(t,r)}else t&&Ml(e,t)},Bf=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=de;if(r.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:Il(s,t,n):(o=!t.$stable,Ol(t,s)),i=t}else t&&(Ml(e,t),i={default:1});if(o)for(const a in s)!Oo(a)&&i[a]==null&&delete s[a]},Se=Fl;function Uf(e){return Ll(e)}function Vf(e){return Ll(e,uf)}function Ll(e,t){const n=Xr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:a,createComment:l,setText:f,setElementText:c,parentNode:u,nextSibling:h,setScopeId:d=pt,insertStaticContent:m}=e,y=(g,b,S,M=null,A=null,O=null,j=void 0,N=null,H=!!b.dynamicChildren)=>{if(g===b)return;g&&!et(g,b)&&(M=x(g),De(g,A,O,!0),g=null),b.patchFlag===-2&&(H=!1,b.dynamicChildren=null);const{type:I,ref:X,shapeFlag:U}=b;switch(I){case rn:C(g,b,S,M);break;case be:E(g,b,S,M);break;case Jn:g==null&&v(b,S,M,j);break;case ke:L(g,b,S,M,A,O,j,N,H);break;default:U&1?w(g,b,S,M,A,O,j,N,H):U&6?W(g,b,S,M,A,O,j,N,H):(U&64||U&128)&&I.process(g,b,S,M,A,O,j,N,H,J)}X!=null&&A?En(X,g&&g.ref,O,b||g,!b):X==null&&g&&g.ref!=null&&En(g.ref,null,O,g,!0)},C=(g,b,S,M)=>{if(g==null)r(b.el=a(b.children),S,M);else{const A=b.el=g.el;b.children!==g.children&&f(A,b.children)}},E=(g,b,S,M)=>{g==null?r(b.el=l(b.children||""),S,M):b.el=g.el},v=(g,b,S,M)=>{[g.el,g.anchor]=m(g.children,b,S,M,g.el,g.anchor)},p=({el:g,anchor:b},S,M)=>{let A;for(;g&&g!==b;)A=h(g),r(g,S,M),g=A;r(b,S,M)},_=({el:g,anchor:b})=>{let S;for(;g&&g!==b;)S=h(g),s(g),g=S;s(b)},w=(g,b,S,M,A,O,j,N,H)=>{if(b.type==="svg"?j="svg":b.type==="math"&&(j="mathml"),g==null)k(b,S,M,A,O,j,N,H);else{const I=g.el&&g.el._isVueCE?g.el:null;try{I&&I._beginPatch(),R(g,b,A,O,j,N,H)}finally{I&&I._endPatch()}}},k=(g,b,S,M,A,O,j,N)=>{let H,I;const{props:X,shapeFlag:U,transition:z,dirs:Q}=g;if(H=g.el=i(g.type,O,X&&X.is,X),U&8?c(H,g.children):U&16&&D(g.children,H,null,M,A,ws(g,O),j,N),Q&&ct(g,null,M,"created"),P(H,g,g.scopeId,j,M),X){for(const ue in X)ue!=="value"&&!en(ue)&&o(H,ue,null,X[ue],O,M);"value"in X&&o(H,"value",null,X.value,O),(I=X.onVnodeBeforeMount)&&He(I,M,g)}Q&&ct(g,null,M,"beforeMount");const re=Dl(A,z);re&&z.beforeEnter(H),r(H,b,S),((I=X&&X.onVnodeMounted)||re||Q)&&Se(()=>{I&&He(I,M,g),re&&z.enter(H),Q&&ct(g,null,M,"mounted")},A)},P=(g,b,S,M,A)=>{if(S&&d(g,S),M)for(let O=0;O{for(let I=H;I{const N=b.el=g.el;let{patchFlag:H,dynamicChildren:I,dirs:X}=b;H|=g.patchFlag&16;const U=g.props||de,z=b.props||de;let Q;if(S&&zt(S,!1),(Q=z.onVnodeBeforeUpdate)&&He(Q,S,b,g),X&&ct(b,g,S,"beforeUpdate"),S&&zt(S,!0),(U.innerHTML&&z.innerHTML==null||U.textContent&&z.textContent==null)&&c(N,""),I?T(g.dynamicChildren,I,N,S,M,ws(b,A),O):j||V(g,b,N,null,S,M,ws(b,A),O,!1),H>0){if(H&16)$(N,U,z,S,A);else if(H&2&&U.class!==z.class&&o(N,"class",null,z.class,A),H&4&&o(N,"style",U.style,z.style,A),H&8){const re=b.dynamicProps;for(let ue=0;ue{Q&&He(Q,S,b,g),X&&ct(b,g,S,"updated")},M)},T=(g,b,S,M,A,O,j)=>{for(let N=0;N{if(b!==S){if(b!==de)for(const O in b)!en(O)&&!(O in S)&&o(g,O,b[O],null,A,M);for(const O in S){if(en(O))continue;const j=S[O],N=b[O];j!==N&&O!=="value"&&o(g,O,N,j,A,M)}"value"in S&&o(g,"value",b.value,S.value,A)}},L=(g,b,S,M,A,O,j,N,H)=>{const I=b.el=g?g.el:a(""),X=b.anchor=g?g.anchor:a("");let{patchFlag:U,dynamicChildren:z,slotScopeIds:Q}=b;Q&&(N=N?N.concat(Q):Q),g==null?(r(I,S,M),r(X,S,M),D(b.children||[],S,X,A,O,j,N,H)):U>0&&U&64&&z&&g.dynamicChildren&&g.dynamicChildren.length===z.length?(T(g.dynamicChildren,z,S,A,O,j,N),(b.key!=null||A&&b===A.subTree)&&Hl(g,b,!0)):V(g,b,S,X,A,O,j,N,H)},W=(g,b,S,M,A,O,j,N,H)=>{b.slotScopeIds=N,g==null?b.shapeFlag&512?A.ctx.activate(b,S,M,j,H):Z(b,S,M,A,O,j,H):te(g,b,H)},Z=(g,b,S,M,A,O,j)=>{const N=g.component=nd(g,M,A);if(ur(g)&&(N.ctx.renderer=J),rd(N,!1,j),N.asyncDep){if(A&&A.registerDep(N,F,j),!g.el){const H=N.subTree=ye(be);E(null,H,b,S),g.placeholder=H.el}}else F(N,g,b,S,A,O,j)},te=(g,b,S)=>{const M=b.component=g.component;if(Df(g,b,S))if(M.asyncDep&&!M.asyncResolved){q(M,b,S);return}else M.next=b,M.update();else b.el=g.el,M.vnode=b},F=(g,b,S,M,A,O,j)=>{const N=()=>{if(g.isMounted){let{next:U,bu:z,u:Q,parent:re,vnode:ue}=g;{const Ne=$l(g);if(Ne){U&&(U.el=ue.el,q(g,U,j)),Ne.asyncDep.then(()=>{Se(()=>{g.isUnmounted||I()},A)});return}}let ce=U,_e;zt(g,!1),U?(U.el=ue.el,q(g,U,j)):U=ue,z&&vn(z),(_e=U.props&&U.props.onVnodeBeforeUpdate)&&He(_e,re,U,ue),zt(g,!0);const we=vs(g),Qe=g.subTree;g.subTree=we,y(Qe,we,u(Qe.el),x(Qe),g,A,O),U.el=we.el,ce===null&&is(g,we.el),Q&&Se(Q,A),(_e=U.props&&U.props.onVnodeUpdated)&&Se(()=>He(_e,re,U,ue),A)}else{let U;const{el:z,props:Q}=b,{bm:re,m:ue,parent:ce,root:_e,type:we}=g,Qe=Ct(b);if(zt(g,!1),re&&vn(re),!Qe&&(U=Q&&Q.onVnodeBeforeMount)&&He(U,ce,b),zt(g,!0),z&&me){const Ne=()=>{g.subTree=vs(g),me(z,g.subTree,g,A,null)};Qe&&we.__asyncHydrate?we.__asyncHydrate(z,g,Ne):Ne()}else{_e.ce&&_e.ce._hasShadowRoot()&&_e.ce._injectChildStyle(we,g.parent?g.parent.type:void 0);const Ne=g.subTree=vs(g);y(null,Ne,S,M,g,A,O),b.el=Ne.el}if(ue&&Se(ue,A),!Qe&&(U=Q&&Q.onVnodeMounted)){const Ne=b;Se(()=>He(U,ce,Ne),A)}(b.shapeFlag&256||ce&&Ct(ce.vnode)&&ce.vnode.shapeFlag&256)&&g.a&&Se(g.a,A),g.isMounted=!0,b=S=M=null}};g.scope.on();const H=g.effect=new Ha(N);g.scope.off();const I=g.update=H.run.bind(H),X=g.job=H.runIfDirty.bind(H);X.i=g,X.id=g.uid,H.scheduler=()=>Co(X),zt(g,!0),I()},q=(g,b,S)=>{b.component=g;const M=g.vnode.props;g.vnode=b,g.next=null,$f(g,b.props,M,S),Bf(g,b.children,S),At(),Zo(g),Pt()},V=(g,b,S,M,A,O,j,N,H=!1)=>{const I=g&&g.children,X=g?g.shapeFlag:0,U=b.children,{patchFlag:z,shapeFlag:Q}=b;if(z>0){if(z&128){Mt(I,U,S,M,A,O,j,N,H);return}else if(z&256){le(I,U,S,M,A,O,j,N,H);return}}Q&8?(X&16&&Ke(I,A,O),U!==I&&c(S,U)):X&16?Q&16?Mt(I,U,S,M,A,O,j,N,H):Ke(I,A,O,!0):(X&8&&c(S,""),Q&16&&D(U,S,M,A,O,j,N,H))},le=(g,b,S,M,A,O,j,N,H)=>{g=g||_n,b=b||_n;const I=g.length,X=b.length,U=Math.min(I,X);let z;for(z=0;zX?Ke(g,A,O,!0,!1,U):D(b,S,M,A,O,j,N,H,U)},Mt=(g,b,S,M,A,O,j,N,H)=>{let I=0;const X=b.length;let U=g.length-1,z=X-1;for(;I<=U&&I<=z;){const Q=g[I],re=b[I]=H?wt(b[I]):Fe(b[I]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;I++}for(;I<=U&&I<=z;){const Q=g[U],re=b[z]=H?wt(b[z]):Fe(b[z]);if(et(Q,re))y(Q,re,S,null,A,O,j,N,H);else break;U--,z--}if(I>U){if(I<=z){const Q=z+1,re=Qz)for(;I<=U;)De(g[I],A,O,!0),I++;else{const Q=I,re=I,ue=new Map;for(I=re;I<=z;I++){const je=b[I]=H?wt(b[I]):Fe(b[I]);je.key!=null&&ue.set(je.key,I)}let ce,_e=0;const we=z-re+1;let Qe=!1,Ne=0;const Hn=new Array(we);for(I=0;I=we){De(je,A,O,!0);continue}let at;if(je.key!=null)at=ue.get(je.key);else for(ce=re;ce<=z;ce++)if(Hn[ce-re]===0&&et(je,b[ce])){at=ce;break}at===void 0?De(je,A,O,!0):(Hn[at-re]=I+1,at>=Ne?Ne=at:Qe=!0,y(je,b[at],S,null,A,O,j,N,H),_e++)}const qo=Qe?Kf(Hn):_n;for(ce=qo.length-1,I=we-1;I>=0;I--){const je=re+I,at=b[je],zo=b[je+1],Go=je+1{const{el:O,type:j,transition:N,children:H,shapeFlag:I}=g;if(I&6){it(g.component.subTree,b,S,M);return}if(I&128){g.suspense.move(b,S,M);return}if(I&64){j.move(g,b,S,J);return}if(j===ke){r(O,b,S);for(let U=0;UN.enter(O),A));else{const{leave:U,delayLeave:z,afterLeave:Q}=N,re=()=>{g.ctx.isUnmounted?s(O):r(O,b,S)},ue=()=>{const ce=O._isLeaving||!!O[ze];O._isLeaving&&O[ze](!0),N.persisted&&!ce?re():U(O,()=>{re(),Q&&Q()})};z?z(O,re,ue):ue()}else r(O,b,S)},De=(g,b,S,M=!1,A=!1)=>{const{type:O,props:j,ref:N,children:H,dynamicChildren:I,shapeFlag:X,patchFlag:U,dirs:z,cacheIndex:Q,memo:re}=g;if(U===-2&&(A=!1),N!=null&&(At(),En(N,null,S,g,!0),Pt()),Q!=null&&(b.renderCache[Q]=void 0),X&256){b.ctx.deactivate(g);return}const ue=X&1&&z,ce=!Ct(g);let _e;if(ce&&(_e=j&&j.onVnodeBeforeUnmount)&&He(_e,b,g),X&6)qt(g.component,S,M);else{if(X&128){g.suspense.unmount(S,M);return}ue&&ct(g,null,b,"beforeUnmount"),X&64?g.type.remove(g,b,S,J,M):I&&!I.hasOnce&&(O!==ke||U>0&&U&64)?Ke(I,b,S,!1,!0):(O===ke&&U&384||!A&&X&16)&&Ke(H,b,S),M&&ln(g)}const we=re!=null&&Q==null;(ce&&(_e=j&&j.onVnodeUnmounted)||ue||we)&&Se(()=>{_e&&He(_e,b,g),ue&&ct(g,null,b,"unmounted"),we&&(g.el=null)},S)},ln=g=>{const{type:b,el:S,anchor:M,transition:A}=g;if(b===ke){cn(S,M);return}if(b===Jn){_(g);return}const O=()=>{s(S),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(g.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:N}=A,H=()=>j(S,O);N?N(g.el,O,H):H()}else O()},cn=(g,b)=>{let S;for(;g!==b;)S=h(g),s(g),g=S;s(b)},qt=(g,b,S)=>{const{bum:M,scope:A,job:O,subTree:j,um:N,m:H,a:I}=g;Dr(H),Dr(I),M&&vn(M),A.stop(),O&&(O.flags|=8,De(j,g,b,S)),N&&Se(N,b),Se(()=>{g.isUnmounted=!0},b)},Ke=(g,b,S,M=!1,A=!1,O=0)=>{for(let j=O;j{if(g.shapeFlag&6)return x(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const b=h(g.anchor||g.el),S=b&&b[rf];return S?h(S):b};let K=!1;const B=(g,b,S)=>{let M;g==null?b._vnode&&(De(b._vnode,null,null,!0),M=b._vnode.component):y(b._vnode||null,g,b,null,null,null,S),b._vnode=g,K||(K=!0,Zo(M),kr(),K=!1)},J={p:y,um:De,m:it,r:ln,mt:Z,mc:D,pc:V,pbc:T,n:x,o:e};let ee,me;return t&&([ee,me]=t(J)),{render:B,hydrate:ee,createApp:Pf(B,ee)}}function ws({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function zt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Dl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Hl(e,t,n=!1){const r=e.children,s=t.children;if(G(r)&&G(s))for(let o=0;o>1,e[n[a]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function $l(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$l(t)}function Dr(e){if(e)for(let t=0;te.__isSuspense;let Ks=0;const Wf={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,a,l,f){if(e==null)qf(t,n,r,s,o,i,a,l,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}zf(e,t,n,r,s,i,a,l,f)}},hydrate:Gf,normalize:Jf},Io=Wf;function or(e,t){const n=e.props&&e.props[t];Y(n)&&n()}function qf(e,t,n,r,s,o,i,a,l){const{p:f,o:{createElement:c}}=l,u=c("div"),h=e.suspense=jl(e,s,r,t,u,n,o,i,a,l);f(null,h.pendingBranch=e.ssContent,u,null,r,h,o,i),h.deps>0?(or(e,"onPending"),or(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Sn(h,e.ssFallback)):h.resolve(!1,!0)}function zf(e,t,n,r,s,o,i,a,{p:l,um:f,o:{createElement:c}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const h=t.ssContent,d=t.ssFallback,{activeBranch:m,pendingBranch:y,isInFallback:C,isHydrating:E}=u;if(y)u.pendingBranch=h,et(y,h)?(l(y,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():C&&(E||(l(m,d,n,r,s,null,o,i,a),Sn(u,d)))):(u.pendingId=Ks++,E?(u.isHydrating=!1,u.activeBranch=y):f(y,s,u),u.deps=0,u.effects.length=0,u.hiddenContainer=c("div"),C?(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0?u.resolve():(l(m,d,n,r,s,null,o,i,a),Sn(u,d))):m&&et(m,h)?(l(m,h,n,r,s,u,o,i,a),u.resolve(!0)):(l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0&&u.resolve()));else if(m&&et(m,h))l(m,h,n,r,s,u,o,i,a),Sn(u,h);else if(or(t,"onPending"),u.pendingBranch=h,h.shapeFlag&512?u.pendingId=h.component.suspenseId:u.pendingId=Ks++,l(null,h,u.hiddenContainer,null,s,u,o,i,a),u.deps<=0)u.resolve();else{const{timeout:v,pendingId:p}=u;v>0?setTimeout(()=>{u.pendingId===p&&u.fallback(d)},v):v===0&&u.fallback(d)}}function jl(e,t,n,r,s,o,i,a,l,f,c=!1){const{p:u,m:h,um:d,n:m,o:{parentNode:y,remove:C}}=f;let E;const v=Xf(e);v&&t&&t.pendingBranch&&(E=t.pendingId,t.deps++);const p=e.props?ka(e.props.timeout):void 0,_=o,w={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:Ks++,timeout:typeof p=="number"?p:-1,activeBranch:null,isFallbackMountPending:!1,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(k=!1,P=!1){const{vnode:D,activeBranch:R,pendingBranch:T,pendingId:$,effects:L,parentComponent:W,container:Z,isInFallback:te}=w;let F=!1;if(w.isHydrating)w.isHydrating=!1;else if(!k){F=R&&T.transition&&T.transition.mode==="out-in";let le=!1;F&&(R.transition.afterLeave=()=>{$===w.pendingId&&(h(T,Z,o===_&&!le?m(R):o,0),rr(L),te&&D.ssFallback&&(D.ssFallback.el=null))}),R&&!w.isFallbackMountPending&&(y(R.el)===Z&&(o=m(R),le=!0),d(R,W,w,!0),!F&&te&&D.ssFallback&&Se(()=>D.ssFallback.el=null,w)),F||h(T,Z,o,0)}w.isFallbackMountPending=!1,Sn(w,T),w.pendingBranch=null,w.isInFallback=!1;let q=w.parent,V=!1;for(;q;){if(q.pendingBranch){q.effects.push(...L),V=!0;break}q=q.parent}!V&&!F&&rr(L),w.effects=[],v&&t&&t.pendingBranch&&E===t.pendingId&&(t.deps--,t.deps===0&&!P&&t.resolve()),or(D,"onResolve")},fallback(k){if(!w.pendingBranch)return;const{vnode:P,activeBranch:D,parentComponent:R,container:T,namespace:$}=w;or(P,"onFallback");const L=m(D),W=()=>{w.isFallbackMountPending=!1,w.isInFallback&&(u(null,k,T,L,R,null,$,a,l),Sn(w,k))},Z=k.transition&&k.transition.mode==="out-in";Z&&(w.isFallbackMountPending=!0,D.transition.afterLeave=W),w.isInFallback=!0,d(D,R,null,!0),Z||W()},move(k,P,D){w.activeBranch&&h(w.activeBranch,k,P,D),w.container=k},next(){return w.activeBranch&&m(w.activeBranch)},registerDep(k,P,D){const R=!!w.pendingBranch;R&&w.deps++;const T=k.vnode.el;k.asyncDep.catch($=>{Ln($,k,0)}).then($=>{if(k.isUnmounted||w.isUnmounted||w.pendingId!==k.suspenseId)return;qs(),k.asyncResolved=!0;const{vnode:L}=k;zs(k,$),T&&(L.el=T);const W=!T&&k.subTree.el;P(k,L,y(T||k.subTree.el),T?null:m(k.subTree),w,i,D),W&&(L.placeholder=null,C(W)),is(k,L.el),R&&--w.deps===0&&w.resolve()})},unmount(k,P){w.isUnmounted=!0,w.activeBranch&&d(w.activeBranch,n,k,P),w.pendingBranch&&d(w.pendingBranch,n,k,P)}};return w}function Gf(e,t,n,r,s,o,i,a,l){const f=t.suspense=jl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,a,!0),c=l(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),c}function Jf(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=di(r?n.default:n),e.ssFallback=r?di(n.fallback):ye(be)}function di(e){let t;if(Y(e)){const n=Cn&&e._c;n&&(e._d=!1,Ge()),e=e(),n&&(e._d=!0,t=$e,Bl())}return G(e)&&(e=Mf(e)),e=Fe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Fl(e,t){t&&t.pendingBranch?G(e)?t.effects.push(...e):t.effects.push(e):rr(e)}function Sn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,is(r,s))}function Xf(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ke=Symbol.for("v-fgt"),rn=Symbol.for("v-txt"),be=Symbol.for("v-cmt"),Jn=Symbol.for("v-stc"),Xn=[];let $e=null;function Ge(e=!1){Xn.push($e=e?null:[])}function Bl(){Xn.pop(),$e=Xn[Xn.length-1]||null}let Cn=1;function $r(e,t=!1){Cn+=e,e<0&&$e&&t&&($e.hasOnce=!0)}function Ul(e){return e.dynamicChildren=Cn>0?$e||_n:null,Bl(),Cn>0&&$e&&$e.push(e),e}function Yf(e,t,n,r,s,o){return Ul(Kl(e,t,n,r,s,o,!0))}function ht(e,t,n,r,s){return Ul(ye(e,t,n,r,s,!0))}function sn(e){return e?e.__v_isVNode===!0:!1}function et(e,t){return e.type===t.type&&e.key===t.key}const Vl=({key:e})=>e??null,Rr=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?pe(e)||ge(e)||Y(e)?{i:Pe,r:e,k:t,f:!!n}:e:null);function Kl(e,t=null,n=null,r=0,s=null,o=e===ke?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vl(t),ref:t&&Rr(t),scopeId:rl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Pe};return a?(Lo(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=pe(n)?8:16),Cn>0&&!i&&$e&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&$e.push(l),l}const ye=Qf;function Qf(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===_l)&&(e=be),sn(e)){const a=kt(e,t,!0);return n&&Lo(a,n),Cn>0&&!o&&$e&&(a.shapeFlag&6?$e[$e.indexOf(e)]=a:$e.push(a)),a.patchFlag=-2,a}if(ad(e)&&(e=e.__vccOpts),t){t=Wl(t);let{class:a,style:l}=t;a&&!pe(a)&&(t.class=Qr(a)),se(l)&&(ts(l)&&!G(l)&&(l=Te({},l)),t.style=Yr(l))}const i=pe(e)?1:Hr(e)?128:ol(e)?64:se(e)?4:Y(e)?2:0;return Kl(e,t,n,r,s,i,o,!0)}function Wl(e){return e?ts(e)||Pl(e)?Te({},e):e:null}function kt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:l}=e,f=t?zl(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Vl(f),ref:t&&t.ref?n&&o?G(o)?o.concat(Rr(t)):[o,Rr(t)]:Rr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&kt(e.ssContent),ssFallback:e.ssFallback&&kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&Rn(c,l.clone(c)),c}function ql(e=" ",t=0){return ye(rn,null,e,t)}function l_(e,t){const n=ye(Jn,null,e);return n.staticCount=t,n}function Zf(e="",t=!1){return t?(Ge(),ht(be,null,e)):ye(be,null,e)}function Fe(e){return e==null||typeof e=="boolean"?ye(be):G(e)?ye(ke,null,e.slice()):sn(e)?wt(e):ye(rn,null,String(e))}function wt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:kt(e)}function Lo(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(G(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Lo(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Pl(t)?t._ctx=Pe:s===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Y(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[ql(t)]):n=8);e.children=t,e.shapeFlag|=n}function zl(...e){const t={};for(let n=0;nAe||Pe;let Nr,Ws;{const e=Xr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Nr=t("__VUE_INSTANCE_SETTERS__",n=>Ae=n),Ws=t("__VUE_SSR_SETTERS__",n=>An=n)}const dr=e=>{const t=Ae;return Nr(e),e.scope.on(),()=>{e.scope.off(),Nr(t)}},qs=()=>{Ae&&Ae.scope.off(),Nr(null)};function Gl(e){return e.vnode.shapeFlag&4}let An=!1;function rd(e,t=!1,n=!1){t&&Ws(t);const{props:r,children:s}=e.vnode,o=Gl(e);Hf(e,r,o,t),Ff(e,s,n||t);const i=o?sd(e,t):void 0;return t&&Ws(!1),i}function sd(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,wf);const{setup:r}=n;if(r){At();const s=e.setupContext=r.length>1?id(e):null,o=dr(e),i=cr(r,e,0,[e.props,s]),a=Aa(i);if(Pt(),o(),(a||e.sp)&&!Ct(e)&&xo(e),a){if(i.then(qs,qs),t)return i.then(l=>{zs(e,l)}).catch(l=>{Ln(l,e,0)});e.asyncDep=i}else zs(e,i)}else Jl(e)}function zs(e,t,n){Y(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Ya(t)),Jl(e)}function Jl(e,t,n){const r=e.type;e.render||(e.render=r.render||pt);{const s=dr(e);At();try{Ef(e)}finally{Pt(),s()}}}const od={get(e,t){return xe(e,"get",""),e[t]}};function id(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,od),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ya(Ro(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}})):e.proxy}function Gs(e,t=!0){return Y(e)?e.displayName||e.name:e.name||t&&e.__name}function ad(e){return Y(e)&&"__vccOpts"in e}const Re=(e,t)=>Gu(e,t,An);function Oe(e,t,n){try{$r(-1);const r=arguments.length;return r===2?se(t)&&!G(t)?sn(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&sn(n)&&(n=[n]),ye(e,t,n))}finally{$r(1)}}const ld="3.5.38";let Js;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{Js=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const Xl=Js?e=>Js.createHTML(e):e=>e,cd="http://www.w3.org/2000/svg",ud="http://www.w3.org/1998/Math/MathML",vt=typeof document<"u"?document:null,pi=vt&&vt.createElement("template"),fd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?vt.createElementNS(cd,e):t==="mathml"?vt.createElementNS(ud,e):n?vt.createElement(e,{is:n}):vt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>vt.createTextNode(e),createComment:e=>vt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{pi.innerHTML=Xl(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=pi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},It="transition",jn="animation",ir=Symbol("_vtc"),Yl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},dd=Te({},il,Yl),hd=e=>(e.displayName="Transition",e.props=dd,e),pd=hd((e,{slots:t})=>Oe(af,gd(e),t)),Gt=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},gi=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function gd(e){const t={};for(const L in e)L in Yl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:f=i,appearToClass:c=a,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=md(s),y=m&&m[0],C=m&&m[1],{onBeforeEnter:E,onEnter:v,onEnterCancelled:p,onLeave:_,onLeaveCancelled:w,onBeforeAppear:k=E,onAppear:P=v,onAppearCancelled:D=p}=t,R=(L,W,Z,te)=>{L._enterCancelled=te,Jt(L,W?c:a),Jt(L,W?f:i),Z&&Z()},T=(L,W)=>{L._isLeaving=!1,Jt(L,u),Jt(L,d),Jt(L,h),W&&W()},$=L=>(W,Z)=>{const te=L?P:v,F=()=>R(W,L,Z);Gt(te,[W,F]),mi(()=>{Jt(W,L?l:o),_t(W,L?c:a),gi(te)||yi(W,r,y,F)})};return Te(t,{onBeforeEnter(L){Gt(E,[L]),_t(L,o),_t(L,i)},onBeforeAppear(L){Gt(k,[L]),_t(L,l),_t(L,f)},onEnter:$(!1),onAppear:$(!0),onLeave(L,W){L._isLeaving=!0;const Z=()=>T(L,W);_t(L,u),L._enterCancelled?(_t(L,h),vi(L)):(vi(L),_t(L,h)),mi(()=>{L._isLeaving&&(Jt(L,u),_t(L,d),gi(_)||yi(L,r,C,Z))}),Gt(_,[L,Z])},onEnterCancelled(L){R(L,!1,void 0,!0),Gt(p,[L])},onAppearCancelled(L){R(L,!0,void 0,!0),Gt(D,[L])},onLeaveCancelled(L){T(L),Gt(w,[L])}})}function md(e){if(e==null)return null;if(se(e))return[Es(e.enter),Es(e.leave)];{const t=Es(e);return[t,t]}}function Es(e){return ka(e)}function _t(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ir]||(e[ir]=new Set)).add(t)}function Jt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[ir];n&&(n.delete(t),n.size||(e[ir]=void 0))}function mi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let yd=0;function yi(e,t,n,r){const s=e._endId=++yd,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:a,propCount:l}=_d(e,t);if(!i)return r();const f=i+"end";let c=0;const u=()=>{e.removeEventListener(f,h),o()},h=d=>{d.target===e&&++c>=l&&u()};setTimeout(()=>{c(n[m]||"").split(", "),s=r(`${It}Delay`),o=r(`${It}Duration`),i=_i(s,o),a=r(`${jn}Delay`),l=r(`${jn}Duration`),f=_i(a,l);let c=null,u=0,h=0;t===It?i>0&&(c=It,u=i,h=o.length):t===jn?f>0&&(c=jn,u=f,h=l.length):(u=Math.max(i,f),c=u>0?i>f?It:jn:null,h=c?c===It?o.length:l.length:0);const d=c===It&&/\b(?:transform|all)(?:,|$)/.test(r(`${It}Property`).toString());return{type:c,timeout:u,propCount:h,hasTransform:d}}function _i(e,t){for(;e.lengthbi(n)+bi(e[r])))}function bi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vi(e){return(e?e.ownerDocument:document).body.offsetHeight}function bd(e,t,n){const r=e[ir];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),Ql=Symbol("_vsh"),c_={name:"show",beforeMount(e,{value:t},{transition:n}){e[jr]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Fn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Fn(e,!0),r.enter(e)):r.leave(e,()=>{Fn(e,!1)}):Fn(e,t))},beforeUnmount(e,{value:t}){Fn(e,t)}};function Fn(e,t){e.style.display=t?e[jr]:"none",e[Ql]=!t}const vd=Symbol(""),wd=/(?:^|;)\s*display\s*:/;function Ed(e,t,n){const r=e.style,s=pe(n);let o=!1;if(n&&!s){if(t)if(pe(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Wn(r,a,"")}else for(const i in t)n[i]==null&&Wn(r,i,"");for(const i in n){i==="display"&&(o=!0);const a=n[i];a!=null?Td(e,i,!pe(t)&&t?t[i]:void 0,a)||Wn(r,i,a):Wn(r,i,"")}}else if(s){if(t!==n){const i=r[vd];i&&(n+=";"+i),r.cssText=n,o=wd.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=o?r.display:"",e[Ql]&&(r.display="none"))}const wi=/\s*!important$/;function Wn(e,t,n){if(G(n))n.forEach(r=>Wn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Sd(e,t);wi.test(n)?e.setProperty(Kt(r),n.replace(wi,""),"important"):e[r]=n}}const Ei=["Webkit","Moz","ms"],Ss={};function Sd(e,t){const n=Ss[t];if(n)return n;let r=Le(t);if(r!=="filter"&&r in e)return Ss[t]=r;r=Gr(r);for(let s=0;sTs||(Pd.then(()=>Ts=0),Ts=Date.now());function kd(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(G(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),a=[r];for(let l=0;le.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Od=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?bd(e,r,i):t==="style"?Ed(e,n,r):lr(t)?Wr(t)||Cd(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Md(e,t,r,i))?(Ri(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ti(e,t,r,i,o,t!=="value")):e._isVueCE&&(Id(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!pe(r)))?Ri(e,Le(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Ti(e,t,r,i))};function Md(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pi(t)&&Y(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Pi(t)&&pe(n)?!1:t in e}function Id(e,t){const n=e._def.props;if(!n)return!1;const r=Le(t);return Array.isArray(n)?n.some(s=>Le(s)===r):Object.keys(n).some(s=>Le(s)===r)}const Vt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return G(t)?n=>vn(t,n):t};function Ld(e){e.target.composing=!0}function xi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Je=Symbol("_assign");function ki(e,t,n){return t&&(e=e.trim()),n&&(e=Jr(e)),e}const Oi={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Je]=Vt(s);const o=r||s.props&&s.props.type==="number";Tt(e,t?"change":"input",i=>{i.target.composing||e[Je](ki(e.value,n,o))}),(n||o)&&Tt(e,"change",()=>{e.value=ki(e.value,n,o)}),t||(Tt(e,"compositionstart",Ld),Tt(e,"compositionend",xi),Tt(e,"change",xi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Je]=Vt(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Jr(e.value):e.value,l=t??"";if(a===l)return;const f=e.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l)}},Dd={deep:!0,created(e,t,n){e[Je]=Vt(n),Tt(e,"change",()=>{const r=e._modelValue,s=Pn(e),o=e.checked,i=e[Je];if(G(r)){const a=yo(r,s),l=a!==-1;if(o&&!l)i(r.concat(s));else if(!o&&l){const f=[...r];f.splice(a,1),i(f)}}else if(Mn(r)){const a=new Set(r);o?a.add(s):a.delete(s),i(a)}else i(Zl(e,o))})},mounted:Mi,beforeUpdate(e,t,n){e[Je]=Vt(n),Mi(e,t,n)}};function Mi(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(G(t))s=yo(t,r.props.value)>-1;else if(Mn(t))s=t.has(r.props.value);else{if(t===n)return;s=Bt(t,Zl(e,!0))}e.checked!==s&&(e.checked=s)}const Hd={created(e,{value:t},n){e.checked=Bt(t,n.props.value),e[Je]=Vt(n),Tt(e,"change",()=>{e[Je](Pn(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[Je]=Vt(r),t!==n&&(e.checked=Bt(t,r.props.value))}},$d={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=Mn(t);Tt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Jr(Pn(i)):Pn(i));e[Je](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,xt(()=>{e._assigning=!1})}),e[Je]=Vt(r)},mounted(e,{value:t}){Ii(e,t)},beforeUpdate(e,t,n){e[Je]=Vt(n)},updated(e,{value:t}){e._assigning||Ii(e,t)}};function Ii(e,t){const n=e.multiple,r=G(t);if(!(n&&!r&&!Mn(t))){for(let s=0,o=e.options.length;sString(f)===String(a)):i.selected=yo(t,a)>-1}else i.selected=t.has(a);else if(Bt(Pn(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Pn(e){return"_value"in e?e._value:e.value}function Zl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const u_={created(e,t,n){vr(e,t,n,null,"created")},mounted(e,t,n){vr(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){vr(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){vr(e,t,n,r,"updated")}};function Nd(e,t){switch(e){case"SELECT":return $d;case"TEXTAREA":return Oi;default:switch(t){case"checkbox":return Dd;case"radio":return Hd;default:return Oi}}}function vr(e,t,n,r,s){const i=Nd(e.tagName,n.props&&n.props.type)[s];i&&i(e,t,n,r)}const jd=["ctrl","shift","alt","meta"],Fd={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jd.some(n=>e[`${n}Key`]&&!t.includes(n))},f_=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(s=>{if(!("key"in s))return;const o=Kt(s.key);if(t.some(i=>i===o||Bd[i]===o))return e(s)}))},ec=Te({patchProp:Od},fd);let Yn,Li=!1;function Ud(){return Yn||(Yn=Uf(ec))}function Vd(){return Yn=Li?Yn:Vf(ec),Li=!0,Yn}const Kd=((...e)=>{const t=Ud().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=nc(r);if(!s)return;const o=t._component;!Y(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,tc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t}),Wd=((...e)=>{const t=Vd().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=nc(r);if(s)return n(s,!0,tc(s))},t});function tc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function nc(e){return pe(e)?document.querySelector(e):e}const qd=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,zd=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Gd=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Jd(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){Xd(e);return}return t}function Xd(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Yd(e,t={}){if(typeof e!="string")return e;if(e[0]==='"'&&e[e.length-1]==='"'&&e.indexOf("\\")===-1)return e.slice(1,-1);const n=e.trim();if(n.length<=9)switch(n.toLowerCase()){case"true":return!0;case"false":return!1;case"undefined":return;case"null":return null;case"nan":return Number.NaN;case"infinity":return Number.POSITIVE_INFINITY;case"-infinity":return Number.NEGATIVE_INFINITY}if(!Gd.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(qd.test(e)||zd.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,Jd)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const rc=/#/g,sc=/&/g,Qd=/\//g,Zd=/=/g,eh=/\?/g,ls=/\+/g,th=/%5e/gi,nh=/%60/gi,rh=/%7c/gi,sh=/%20/gi,oh=/%2f/gi,ih=/%252f/gi;function oc(e){return encodeURI(""+e).replace(rh,"|")}function Xs(e){return oc(typeof e=="string"?e:JSON.stringify(e)).replace(ls,"%2B").replace(sh,"+").replace(rc,"%23").replace(sc,"%26").replace(nh,"`").replace(th,"^").replace(Qd,"%2F")}function Rs(e){return Xs(e).replace(Zd,"%3D")}function ah(e){return oc(e).replace(rc,"%23").replace(eh,"%3F").replace(ih,"%2F").replace(sc,"%26").replace(ls,"%2B")}function ar(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function lh(e){return ar(e.replace(oh,"%252F"))}function ch(e){return ar(e.replace(ls," "))}function uh(e){return ar(e.replace(ls," "))}function ic(e=""){const t=Object.create(null);e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=ch(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=uh(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function fh(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Rs(e)}=${Xs(n)}`).join("&"):`${Rs(e)}=${Xs(t)}`:Rs(e)}function dh(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>fh(t,e[t])).filter(Boolean).join("&")}const hh=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,ph=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,gh=/^([/\\]\s*){2,}[^/\\]/,mh=/^[\s\0]*(blob|data|javascript|vbscript):$/i,yh=/\/$|\/\?|\/#/,_h=/^\.?\//;function Dn(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?hh.test(e):ph.test(e)||(t.acceptRelative?gh.test(e):!1)}function Ys(e){return!!e&&mh.test(e)}function Qs(e="",t){return t?yh.test(e):e.endsWith("/")}function Fr(e="",t){if(!t)return(Qs(e)?e.slice(0,-1):e)||"/";if(!Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s!==-1&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function bh(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(Qs(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s!==-1&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function vh(e,t){if(lc(t)||Dn(e))return e;const n=Fr(t);if(e.startsWith(n)){const r=e[n.length];if(!r||r==="/"||r==="?")return e}return cc(n,e)}function Di(e,t){if(lc(t))return e;const n=Fr(t);if(!e.startsWith(n))return e;const r=e[n.length];return r&&r!=="/"&&r!=="?"?e:"/"+e.slice(n.length).replace(/^\/+/,"")}function ac(e,t){const n=Do(e),r={...ic(n.search),...t};return n.search=dh(r),Eh(n)}function lc(e){return!e||e==="/"}function wh(e){return e&&e!=="/"}function cc(e,...t){let n=e||"";for(const r of t.filter(s=>wh(s)))if(n){const s=r.replace(_h,"");n=bh(n)+s}else n=r;return n}function uc(...e){const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const i of n)if(!(!i||i==="/")){for(const[a,l]of i.split(t).entries())if(!(!l||l===".")){if(l===".."){if(r.length===1&&Dn(r[0]))continue;r.pop(),s--;continue}if(a===1&&r[r.length-1]?.endsWith(":/")){r[r.length-1]+="/"+l;continue}r.push(l),s++}}let o=r.join("/");return s>=0?n[0]?.startsWith("/")&&!o.startsWith("/")?o="/"+o:n[0]?.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,n[n.length-1]?.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function fc(e,t){return ar(Fr(e))===ar(Fr(t))}const dc=Symbol.for("ufo:protocolRelative");function Do(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,u,h=""]=n;return{protocol:u.toLowerCase(),pathname:h,href:u+h,auth:"",host:"",search:"",hash:""}}if(!Dn(e,{acceptRelative:!0}))return Hi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",a=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(a=a.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:l,search:f,hash:c}=Hi(a);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:l,search:f,hash:c,[dc]:!r}}function Hi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Eh(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[dc]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Sh extends Error{constructor(t,n){super(t,n),this.name="FetchError",n?.cause&&!this.cause&&(this.cause=n.cause)}}function Th(e){const t=e.error?.message||e.error?.toString()||"",n=e.request?.method||e.options?.method||"GET",r=e.request?.url||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,a=new Sh(i,e.error?{cause:e.error}:void 0);for(const l of["request","options","response"])Object.defineProperty(a,l,{get(){return e[l]}});for(const[l,f]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(a,l,{get(){return e.response&&e.response[f]}});return a}const Rh=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function $i(e="GET"){return Rh.has(e.toUpperCase())}function Ch(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer||e instanceof FormData||e instanceof URLSearchParams?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Ah=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Ph=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function xh(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Ph.test(t)?"json":t==="text/event-stream"?"stream":Ah.has(t)||t.startsWith("text/")?"text":"blob"}function kh(e,t,n,r){const s=Oh(t?.headers??e?.headers,n?.headers,r);let o;return(n?.query||n?.params||t?.params||t?.query)&&(o={...n?.params,...n?.query,...t?.params,...t?.query}),{...n,...t,query:o,params:o,headers:s}}function Oh(e,t,n){if(!t)return new n(e);const r=new n(t);if(e)for(const[s,o]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(s,o);return r}async function wr(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const Mh=new Set([408,409,425,429,500,502,503,504]),Ih=new Set([101,204,205,304]);function hc(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(a){const l=a.error&&a.error.name==="AbortError"&&!a.options.timeout||!1;if(a.options.retry!==!1&&!l){let c;typeof a.options.retry=="number"?c=a.options.retry:c=$i(a.options.method)?0:1;const u=a.response&&a.response.status||500;if(c>0&&(Array.isArray(a.options.retryStatusCodes)?a.options.retryStatusCodes.includes(u):Mh.has(u))){const h=typeof a.options.retryDelay=="function"?a.options.retryDelay(a):a.options.retryDelay||0;return h>0&&await new Promise(d=>setTimeout(d,h)),o(a.request,{...a.options,retry:c-1})}}const f=Th(a);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(l,f={}){const c={request:l,options:kh(l,f,e.defaults,n),response:void 0,error:void 0};if(c.options.method&&(c.options.method=c.options.method.toUpperCase()),c.options.onRequest&&(await wr(c,c.options.onRequest),c.options.headers instanceof n||(c.options.headers=new n(c.options.headers||{}))),typeof c.request=="string"&&(c.options.baseURL&&(c.request=vh(c.request,c.options.baseURL)),c.options.query&&(c.request=ac(c.request,c.options.query),delete c.options.query),"query"in c.options&&delete c.options.query,"params"in c.options&&delete c.options.params),c.options.body&&$i(c.options.method))if(Ch(c.options.body)){const d=c.options.headers.get("content-type");typeof c.options.body!="string"&&(c.options.body=d==="application/x-www-form-urlencoded"?new URLSearchParams(c.options.body).toString():JSON.stringify(c.options.body)),d||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")}else("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half"));let u;if(!c.options.signal&&c.options.timeout){const d=new r;u=setTimeout(()=>{const m=new Error("[TimeoutError]: The operation was aborted due to timeout");m.name="TimeoutError",m.code=23,d.abort(m)},c.options.timeout),c.options.signal=d.signal}try{c.response=await t(c.request,c.options)}catch(d){return c.error=d,c.options.onRequestError&&await wr(c,c.options.onRequestError),await s(c)}finally{u&&clearTimeout(u)}if((c.response.body||c.response._bodyInit)&&!Ih.has(c.response.status)&&c.options.method!=="HEAD"){const d=(c.options.parseResponse?"json":c.options.responseType)||xh(c.response.headers.get("content-type")||"");switch(d){case"json":{const m=await c.response.text(),y=c.options.parseResponse||Yd;c.response._data=y(m);break}case"stream":{c.response._data=c.response.body||c.response._bodyInit;break}default:c.response._data=await c.response[d]()}}return c.options.onResponse&&await wr(c,c.options.onResponse),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await wr(c,c.options.onResponseError),await s(c)):c.response},i=async function(l,f){return(await o(l,f))._data};return i.raw=o,i.native=(...a)=>t(...a),i.create=(a={},l={})=>hc({...e,...l,defaults:{...e.defaults,...l.defaults,...a}}),i}const Br=(function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")})(),Lh=Br.fetch?(...e)=>Br.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),Dh=Br.Headers,Hh=Br.AbortController,$h=hc({fetch:Lh,Headers:Dh,AbortController:Hh}),Nh=$h,jh=()=>window?.__NUXT__?.config||window?.useNuxtApp?.().payload?.config,Ho=()=>jh().app,Fh=()=>Ho().baseURL,Bh=()=>Ho().buildAssetsDir,$o=(...e)=>uc(pc(),Bh(),...e),pc=(...e)=>{const t=Ho(),n=t.cdnURL||t.baseURL;return e.length?uc(n,...e):n};globalThis.__buildAssetsURL=$o,globalThis.__publicAssetsURL=pc;globalThis.$fetch||(globalThis.$fetch=Nh.create({baseURL:Fh()}));"global"in globalThis||(globalThis.global=globalThis);function Zs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?Zs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const gc=(()=>{if(console.createTask)return console.createTask;const e={run:t=>t()};return()=>e})();function mc(e,t,n,r){for(let s=n;se[s](...t)):e[s](...t);if(o&&typeof o.then=="function")return Promise.resolve(o).then(()=>mc(e,t,s+1,r))}catch(o){return Promise.reject(o)}}function Uh(e,t,n){if(e.length>0)return mc(e,t,0,gc(n))}function Vh(e,t,n){if(e.length>0){const r=gc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}}function Cs(e,t){for(const n of[...e])n(t)}var Kh=class{_hooks;_before;_after;_deprecatedHooks;_deprecatedMessages;constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!="function")return()=>{};const r=e;let s;for(;this._deprecatedHooks[e];)s=this._deprecatedHooks[e],e=s.to;if(s&&!n.allowDeprecated){let o=s.message;o||(o=`${r} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(o)||(console.warn(o),this._deprecatedMessages.add(o))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>"_"+e.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&(this.removeHook(e,t),t=void 0)}}hookOnce(e,t){let n,r=(...s)=>(typeof n=="function"&&n(),n=void 0,r=void 0,t(...s));return n=this.hook(e,r),n}removeHook(e,t){const n=this._hooks[e];if(n){const r=n.indexOf(t);r!==-1&&n.splice(r,1),n.length===0&&(this._hooks[e]=void 0)}}clearHook(e){this._hooks[e]=void 0}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t=="string"?{to:t}:t;const n=this._hooks[e]||[];this._hooks[e]=void 0;for(const r of n)this.hook(e,r)}deprecateHooks(e){for(const t in e)this.deprecateHook(t,e[t])}addHooks(e){const t=Zs(e),n=Object.keys(t).map(r=>this.hook(r,t[r]));return()=>{for(const r of n)r();n.length=0}}removeHooks(e){const t=Zs(e);for(const n in t)this.removeHook(n,t[n])}removeAllHooks(){this._hooks={}}callHook(e,...t){return this.callHookWith(Uh,e,t)}callHookParallel(e,...t){return this.callHookWith(Vh,e,t)}callHookWith(e,t,n){const r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Cs(this._before,r);const s=e(this._hooks[t]?[...this._hooks[t]]:[],n,t);return s instanceof Promise?s.finally(()=>{this._after&&r&&Cs(this._after,r)}):(this._after&&r&&Cs(this._after,r),s)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){const t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){const t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function yc(){return new Kh}function Wh(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,a)=>{a||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,a)=>{r(i),t=i;try{return s?s.run(i,a):a()}finally{n||(t=void 0)}},async callAsync(i,a){t=i;const l=()=>{t=i},f=()=>t===i?l:void 0;eo.add(f);try{const c=s?s.run(i,a):a();return n||(t=void 0),await c}finally{eo.delete(f)}}}}function qh(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=Wh({...e,...r})),t[n]}}}const Ur=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Ni="__unctx__",zh=Ur[Ni]||(Ur[Ni]=qh()),Gh=(e,t={})=>zh.get(e,t),ji="__unctx_async_handlers__",eo=Ur[ji]||(Ur[ji]=new Set);function Qn(e){const t=[];for(const s of eo){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Fi=!1,Bi=!1,Jh=!1,Ui={id:"__nuxt-loader"},h_={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},Xh={deep:!1},Yh={},Qh="#__nuxt",_c="nuxt-app",Vi=36e5,Zh="vite:preloadError";function bc(e=_c){return Gh(e,{asyncContext:!1})}const ep="__nuxt_plugin";function tp(e){let t=0;const n={_id:e.id||_c||"nuxt-app",_scope:_o(),provide:void 0,versions:{get nuxt(){return"4.4.8"},get vue(){return n.vueApp.version}},payload:Ze({...e.ssrContext?.payload||{},data:Ze({}),state:ot({}),once:new Set,_errors:Ze({})}),static:{data:{}},runWithContext(s){return n._scope.active&&!Zr()?n._scope.run(()=>Ki(n,s)):Ki(n,s)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Ze({}),_state:Ze({}),_payloadRevivers:{},...e};{const s=window.__NUXT__;if(s)for(const o in s)switch(o){case"data":case"state":case"_errors":Object.assign(n.payload[o],s[o]);break;default:n.payload[o]=s[o]}}n.hooks=yc(),n.hook=n.hooks.hook;{const s=n.hooks.callHook;n.hooks.callHook=(o,...i)=>Promise.resolve().then(()=>s(o,...i))}n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;Er(n,i,o),Er(n.vueApp.config.globalProperties,i,o)},Er(n.vueApp,"$nuxt",n),Er(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(Zh,o=>{n.callHook("app:chunkError",{error:o.payload}),o.payload?.message?.includes("Unable to preload CSS")&&o.preventDefault()}),window.useNuxtApp||=ve;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}function np(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function rp(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function sp(e,t){const n=new Set,r=[],s=[];let o,i=0;async function a(l){const f=l.dependsOn?.filter(c=>t.some(u=>u._name===c)&&!n.has(c))??[];if(f.length>0)r.push([new Set(f),l]);else{const c=rp(e,l).then(async()=>{l._name&&(n.add(l._name),await Promise.all(r.map(async([u,h])=>{u.has(l._name)&&(u.delete(l._name),u.size===0&&(i++,await a(h)))})))}).catch(u=>{if(!l.parallel&&!e.payload.error)throw u;o||=u});l.parallel?s.push(c):await c}}for(const l of t)np(e,l);for(const l of t)await a(l);if(await Promise.all(s),i)for(let l=0;l{}),e,{[ep]:!0,_name:t})}const op=Ye;function Ki(e,t,n){const r=()=>t();return bc(e._id).set(e),e.vueApp.runWithContext(r)}function ip(e){let t;return ns()&&(t=an()?.appContext.app.$nuxt),t||=bc(e).tryUse(),t||null}function ve(e){const t=ip(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function No(e){return ve().$config}function Er(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function As(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function to(e,t,n=".",r){if(!As(t))return to(e,{},n,r);const s={...t};for(const o of Object.keys(e)){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:As(i)&&As(s[o])?s[o]=to(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function ap(e){return(...t)=>t.reduce((n,r)=>to(n,r,"",e),{})}const vc=ap();function lp(e,t){try{return t in e}catch{return!1}}class Wi extends Error{static __h3_error__=!0;statusCode=500;fatal=!1;unhandled=!1;statusMessage;data;cause;constructor(t,n={}){super(t,n),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:no(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=wc(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}function cp(e){if(typeof e=="string")return new Wi(e);if(up(e))return e;const t=new Wi(e.message??e.statusMessage??"",{cause:e.cause||e});if(lp(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=no(e.statusCode,t.statusCode):e.status&&(t.statusCode=no(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;wc(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function up(e){return e?.constructor?.__h3_error__===!0}const fp=/[^\u0009\u0020-\u007E]/g;function wc(e=""){return e.replace(fp,"")}function no(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const Ec=Symbol("layout-meta"),on=Symbol("route");import.meta.url.replace(/\/app\/.*$/,"/");const Ve=()=>ve()?.$router,jo=()=>ns()?Ce(on,ve()._route):ve()._route;const dp=()=>{try{if(ve()._processingMiddleware)return!0}catch{return!1}return!1},qi=(e,t)=>{e||="/";const n=typeof e=="string"?e:"path"in e?hp(e):Ve().resolve(e).href;if(t?.open){const{protocol:f}=new URL(n,window.location.href);if(f&&Ys(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`);const{target:c="_blank",windowFeatures:u={}}=t.open,h=[];for(const[d,m]of Object.entries(u))m!==void 0&&h.push(`${d.toLowerCase()}=${m}`);return open(n,c,h.join(", ")),Promise.resolve()}const r=Dn(n,{acceptRelative:!0}),s=t?.external||r;if(s){if(!t?.external)throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:f}=new URL(n,window.location.href);if(f&&Ys(f))throw new Error(`Cannot navigate to a URL with '${f}' protocol.`)}const o=dp();if(!s&&o){if(t?.replace){if(typeof e=="string"){const{pathname:f,search:c,hash:u}=Do(e);return{path:f,...c&&{query:ic(c)},...u&&{hash:u},replace:!0}}return{...e,replace:!0}}return e}const i=Ve(),a=ve();if(s)return a._scope.stop(),t?.replace?location.replace(n):location.href=n,o?a.isHydrating?new Promise(()=>{}):!1:Promise.resolve();const l=typeof e=="string"?pp(e):e;return t?.replace?i.replace(l):i.push(l)};function hp(e){return ac(e.path||"",e.query||{})+(e.hash||"")}function pp(e){const t=Do(e);return ah(lh(t.pathname))+t.search+t.hash}const Sc="__nuxt_error",cs=()=>Qa(ve().payload,"error"),Zt=e=>{const t=Ft(e);try{const n=cs();ve().hooks.callHook("app:error",t),n.value||=t}catch{throw t}return t},gp=async(e={})=>{const t=ve(),n=cs();t.callHook("app:error:cleared",e),e.redirect&&await Ve().replace(e.redirect),n.value=void 0},Tc=e=>!!e&&typeof e=="object"&&Sc in e,Ft=e=>{typeof e!="string"&&e.statusText&&(e.message??=e.statusText);const t=cp(e);return Object.defineProperty(t,Sc,{value:!0,configurable:!1,writable:!1}),Object.defineProperty(t,"status",{get:()=>t.statusCode,configurable:!0}),Object.defineProperty(t,"statusText",{get:()=>t.statusMessage,configurable:!0}),t};let Rc;const xn=e=>Rc=e,Cc=Symbol();function ro(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Zn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Zn||(Zn={}));function mp(){const e=_o(!0),t=e.run(()=>nt({}));let n=[],r=[];const s=Ro({install(o){xn(s),s._a=o,o.provide(Cc,s),o.config.globalProperties.$pinia=s,r.forEach(i=>n.push(i)),r=[]},use(o){return this._a?n.push(o):r.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const Ac=()=>{};function zi(e,t,n,r=Ac){e.add(t);const s=()=>{e.delete(t)&&r()};return!n&&Zr()&&Da(s),s}function dn(e,...t){e.forEach(n=>{n(...t)})}const yp=e=>e(),Gi=Symbol(),Ps=Symbol();function so(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ro(s)&&ro(r)&&e.hasOwnProperty(n)&&!ge(r)&&!gt(r)?e[n]=so(s,r):e[n]=r}return e}const _p=Symbol();function bp(e){return!ro(e)||!Object.prototype.hasOwnProperty.call(e,_p)}const{assign:Dt}=Object;function vp(e){return!!(ge(e)&&e.effect)}function wp(e,t,n,r){const{state:s,actions:o,getters:i}=t,a=n.state.value[e];let l;function f(){a||(n.state.value[e]=s?s():{});const c=Ku(n.state.value[e]);return Dt(c,o,Object.keys(i||{}).reduce((u,h)=>(u[h]=Ro(Re(()=>{xn(n);const d=n._s.get(e);return i[h].call(d,d)})),u),{}))}return l=Pc(e,f,t,n,r,!0),l}function Pc(e,t,n={},r,s,o){let i;const a=Dt({actions:{}},n),l={deep:!0};let f,c,u=new Set,h=new Set,d;const m=r.state.value[e];!o&&!m&&(r.state.value[e]={});let y;function C(D){let R;f=c=!1,typeof D=="function"?(D(r.state.value[e]),R={type:Zn.patchFunction,storeId:e,events:d}):(so(r.state.value[e],D),R={type:Zn.patchObject,payload:D,storeId:e,events:d});const T=y=Symbol();xt().then(()=>{y===T&&(f=!0)}),c=!0,dn(u,R,r.state.value[e])}const E=o?function(){const{state:R}=n,T=R?R():{};this.$patch($=>{Dt($,T)})}:Ac;function v(){i.stop(),u.clear(),h.clear(),r._s.delete(e)}const p=(D,R="")=>{if(Gi in D)return D[Ps]=R,D;const T=function(){xn(r);const $=Array.from(arguments),L=new Set,W=new Set;function Z(q){L.add(q)}function te(q){W.add(q)}dn(h,{args:$,name:T[Ps],store:w,after:Z,onError:te});let F;try{F=D.apply(this&&this.$id===e?this:w,$)}catch(q){throw dn(W,q),q}return F instanceof Promise?F.then(q=>(dn(L,q),q)).catch(q=>(dn(W,q),Promise.reject(q))):(dn(L,F),F)};return T[Gi]=!0,T[Ps]=R,T},_={_p:r,$id:e,$onAction:zi.bind(null,h),$patch:C,$reset:E,$subscribe(D,R={}){const T=zi(u,D,R.detached,()=>$()),$=i.run(()=>Rt(()=>r.state.value[e],L=>{(R.flush==="sync"?c:f)&&D({storeId:e,type:Zn.direct,events:d},L)},Dt({},l,R)));return T},$dispose:v},w=ot(_);r._s.set(e,w);const P=(r._a&&r._a.runWithContext||yp)(()=>r._e.run(()=>(i=_o()).run(()=>t({action:p}))));for(const D in P){const R=P[D];if(ge(R)&&!vp(R)||gt(R))o||(m&&bp(R)&&(ge(R)?R.value=m[D]:so(R,m[D])),r.state.value[e][D]=R);else if(typeof R=="function"){const T=p(R,D);P[D]=T,a.actions[D]=R}}return Dt(w,P),Dt(ne(w),P),Object.defineProperty(w,"$state",{get:()=>r.state.value[e],set:D=>{C(R=>{Dt(R,D)})}}),r._p.forEach(D=>{Dt(w,i.run(()=>D({store:w,app:r._a,pinia:r,options:a})))}),m&&o&&n.hydrate&&n.hydrate(w.$state,m),f=!0,c=!0,w}function Ep(e,t,n){let r;const s=typeof t=="function";r=s?n:t;function o(i,a){const l=ns();return i=i||(l?Ce(Cc,null):null),i&&xn(i),i=Rc,i._s.has(e)||(s?Pc(e,t,r,i):wp(e,r,i)),i._s.get(e)}return o.$id=e,o}const Sp=-1,Tp=-2,Rp=-3,Cp=-4,Ap=-5,Pp=-6,xp=-7,xc=2**32-1,oo=xc-1;function kp(e){return!(!Number.isInteger(e)||e<0||e>oo)}function Op(e){return!(!Number.isInteger(e)||e<0||e>xc)}function Mp(e){return Uint8Array.fromBase64(e).buffer}function Ip(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Lp(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let s=0;s=f)throw new Error("Invalid input");c[h]=o(l[u+1])}c.length=f}else{const f=new Array(l.length);r[i]=f;for(let c=0;c`${r}:${String(s)}`).join(",")}`}function Vr(e,t,n){typeof e==="function"&&(!n||n!=="titleTemplate"&&!(n[0]==="o"&&n[1]==="n"))&&(e=e());const s=t?t(n,e):e;if(Array.isArray(s))return s.map(o=>Vr(o,t));if(s?.constructor===Object){const o={};for(const i of Object.keys(s))o[i]=Vr(s[i],t,i);return o}return s}function Jp(e,t){const n=e==="style"?new Map:new Set;function r(s){if(s==null||s===void 0)return;const o=String(s).trim();if(o)if(e==="style"){const[i,...a]=o.split(":").map(l=>l?l.trim():"");i&&a.length&&n.set(i,a.join(":"))}else o.split(" ").filter(Boolean).forEach(i=>n.add(i))}return typeof t=="string"?e==="style"?t.split(";").forEach(r):r(t):Array.isArray(t)?t.forEach(s=>r(s)):t&&typeof t=="object"&&Object.entries(t).forEach(([s,o])=>{o&&o!=="false"&&(e==="style"?n.set(String(s).trim(),String(o)):r(s))}),n}function Mc(e,t){if(e.props=e.props||{},!t)return e;if(e.tag==="templateParams")return e.props=t,e;const n=io.has(e.tag)||e.tag==="htmlAttrs"||e.tag==="bodyAttrs";return Object.entries(t).forEach(([r,s])=>{if(r==="__proto__"||r==="constructor"||r==="prototype")return;if(s===null){e.props[r]=null;return}if(r==="class"||r==="style"){e.props[r]=Jp(r,s);return}if(Kp.has(r)){if((r==="textContent"||r==="innerHTML")&&typeof s=="object"){let f=t.type;if(t.type||(f="application/json"),!f?.endsWith("json")&&f!=="speculationrules")return;t.type=f,e.props.type=f,e[r]=JSON.stringify(s)}else e[r]=s;return}const o=r.startsWith("data-"),i=n&&!o?r.toLowerCase():r,a=String(s),l=e.tag==="meta"&&i==="content";a==="true"||a===""?e.props[i]=o||l?a:!0:!s&&o&&a==="false"?e.props[i]="false":s!==void 0&&(e.props[i]=s)}),e}function Xp(e,t){const n=typeof t=="object"&&typeof t!="function"?t:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},r=Mc({tag:e,props:{}},n);return r.key&&Fp.has(r.tag)&&(r.props["data-hid"]=r._h=r.key),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Yp(e,t){if(!e)return[];typeof e=="function"&&(e=e());const n=(s,o)=>{for(let i=0;i{if(o!==void 0)for(const i of Array.isArray(o)?o:[o])r.push(Xp(s,i))}),r.flat()}const Ji=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,Xi={base:-10,title:10},Qp={critical:-8,high:-1,low:2},Yi={meta:{"content-security-policy":-30,charset:-20,viewport:-15},link:{preconnect:20,stylesheet:60,preload:70,modulepreload:70,prefetch:90,"dns-prefetch":90,prerender:90},script:{async:30,defer:80,sync:50},style:{imported:40,sync:60}},Zp=/@import/,Bn=e=>e===""||e===!0;function eg(e,t){if(typeof t.tagPriority=="number")return t.tagPriority;let n=100;const r=Qp[t.tagPriority]||0,s=e.resolvedOptions.disableCapoSorting?{link:{},script:{},style:{}}:Yi;if(t.tag in Xi)n=Xi[t.tag];else if(t.tag==="meta"){const o=t.props["http-equiv"]==="content-security-policy"?"content-security-policy":t.props.charset?"charset":t.props.name==="viewport"?"viewport":null;o&&(n=Yi.meta[o])}else if(t.tag==="link"&&t.props.rel)n=s.link[t.props.rel];else if(t.tag==="script"){const o=String(t.props.type);Bn(t.props.async)?n=s.script.async:t.props.src&&!Bn(t.props.defer)&&!Bn(t.props.async)&&o!=="module"&&!o.endsWith("json")||t.innerHTML&&!o.endsWith("json")?n=s.script.sync:(Bn(t.props.defer)&&t.props.src&&!Bn(t.props.async)||o==="module")&&(n=s.script.defer)}else t.tag==="style"&&(n=t.innerHTML&&Zp.test(t.innerHTML)?s.style.imported:s.style.sync);return(n||100)+r}function Qi(e,t){const n=typeof t=="function"?t(e):t,r=n.key||String(e.plugins.size+1);e.plugins.get(r)||(e.plugins.set(r,n),e.hooks.addHooks(n.hooks||{}))}function tg(e={}){const t=yc();t.addHooks(e.hooks||{});const n=!e.document,r=new Map,s=new Map,o=new Set,i={_entryCount:1,plugins:s,dirty:!1,resolvedOptions:e,hooks:t,ssr:n,entries:r,headEntries(){return[...r.values()]},use:a=>Qi(i,a),push(a,l){const f={...l||{}};delete f.head;const c=f._index??i._entryCount++,u={_i:c,input:a,options:f},h={_poll(d=!1){i.dirty=!0,!d&&o.add(c),t.callHook("entries:updated",i)},dispose(){r.delete(c)&&i.invalidate()},patch(d){(!f.mode||f.mode==="server"&&n||f.mode==="client"&&!n)&&(u.input=d,r.set(c,u),h._poll())}};return h.patch(a),h},async resolveTags(){const a={tagMap:new Map,tags:[],entries:[...i.entries.values()]};for(await t.callHook("entries:resolve",a);o.size;){const h=o.values().next().value;o.delete(h);const d=r.get(h);if(d){const m={tags:Yp(d.input,e.propResolvers||[]).map(y=>Object.assign(y,d.options)),entry:d};await t.callHook("entries:normalize",m),d._tags=m.tags.map((y,C)=>(y._w=eg(i,y),y._p=(d._i<<10)+C,y._d=ao(y),y._d||(y._h=Oc(y)),y))}}let l=!1;a.entries.flatMap(h=>(h._tags||[]).map(d=>({...d,props:{...d.props}}))).sort(Ji).reduce((h,d)=>{const m=d._d||d._h;if(!h.has(m))return h.set(m,d);const y=h.get(m);if((d?.tagDuplicateStrategy||(Wp.has(d.tag)?"merge":null)||(d.key&&d.key===y.key?"merge":null))==="merge"){const E={...y.props};Object.entries(d.props).forEach(([v,p])=>E[v]=v==="style"?new Map([...y.props.style||new Map,...p]):v==="class"?new Set([...y.props.class||new Set,...p]):p),h.set(m,{...d,props:E})}else d._p>>10===y._p>>10&&d.tag==="meta"&&kc(m)?(h.set(m,Object.assign([...Array.isArray(y)?y:[y],d],d)),l=!0):(d._w===y._w?d._p>y._p:d?._wQi(i,a)),i.hooks.callHook("init",i),e.init?.forEach(a=>a&&i.push(a)),i}const ng=(e,t)=>ge(t)?ft(t):t,Ic="usehead";function rg(e){return{install(n){n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(Ic,e)}}.install}function sg(){if(ns()){const e=Ce(Ic);if(e)return e}throw new Error("useHead() was called without provide context, ensure you call it through the setup() function.")}function p_(e,t={}){const n=t.head||sg();return n.ssr?n.push(e||{},t):og(n,e,t)}function og(e,t,n={}){const r=nt(!1);let s;return tf(()=>{const i=r.value?{}:Vr(t,ng);s?s.patch(i):s=e.push(i,n)}),an()&&(fr(()=>{s.dispose()}),dl(()=>{r.value=!0}),fl(()=>{r.value=!1})),s}const ig=(e,t)=>[],Lc=e=>vc({},...ig("",typeof e=="string"?e.toLowerCase():e).map(t=>t.data).reverse()),ag=Lc;let Cr;function lg(){let e;return e=$fetch($o(`builds/meta/${No().app.buildId}.json`),{responseType:"json"}).then(t=>{if(!t||typeof t!="object"||!Array.isArray(t.prerendered))throw new Error("[nuxt] Received malformed app manifest. Ensure that `builds/meta/*.json` is served as JSON by your hosting/proxy and not rewritten to an HTML fallback.");return t}),Cr=e,e.catch(t=>{Cr===e&&(Cr=void 0),console.error("[nuxt] Error fetching app manifest.",t)}),e}function Dc(){return Cr||lg()}function Hc(e){const t=typeof e=="string"?e:e.path;try{return ag(t.toLowerCase())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function Zi(e,t={}){return null}async function cg(e){return null}let Xt=null;async function ug(){if(Xt)return Xt;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await fg(e.textContent||""),n=e.dataset.src?await cg(e.dataset.src):void 0;return Xt={...t,...n,...window.__NUXT__},Xt.config?.public&&(Xt.config.public=ot(Xt.config.public)),Xt}async function fg(e){return await Np(e,ve()._payloadRevivers)}function $c(e,t){ve()._payloadRevivers[e]=t}const dg=op(()=>{$c("skipHydrate",e=>{})});function ea(e){try{return JSON.parse(e)}catch{return e}}const hg=[["NuxtError",e=>Ft(e)],["EmptyShallowRef",e=>Ut(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["EmptyRef",e=>nt(e==="_"?void 0:e==="0n"?BigInt(0):ea(e))],["ShallowRef",e=>Ut(e)],["ShallowReactive",e=>Ze(e)],["Ref",e=>nt(e)],["Reactive",e=>ot(e)]],pg=Ye({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[r,s]of hg)$c(r,s);Object.assign(e.payload,([t,n]=Qn(()=>e.runWithContext(ug)),t=await t,n(),t)),delete window.__NUXT__}});async function Fo(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!!r.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async s=>{const o=new Map,i=new Promise(d=>{e.resolveTags().then(m=>{d(m.map(y=>{const C=o.get(y._d)||0,E={tag:y,id:(C?`${y._d}:${C}`:y._d)||y._h,shouldRender:!0};return y._d&&kc(y._d)&&o.set(y._d,C+1),E}))})});let a=e._dom;if(!a){a={title:n.title,elMap:new Map().set("htmlAttrs",n.documentElement).set("bodyAttrs",n.body)};for(const d of["body","head"]){const m=n[d]?.children;for(const y of m){const C=y.tagName.toLowerCase();if(!io.has(C))continue;const E=Mc({tag:C,props:{}},{innerHTML:y.innerHTML,...y.getAttributeNames().reduce((v,p)=>(v[p]=y.getAttribute(p),v),{})||{}});if(E.key=y.getAttribute("data-hid")||void 0,E._d=ao(E)||Oc(E),a.elMap.has(E._d)){let v=1,p=E._d;for(;a.elMap.has(p);)p=`${E._d}:${v++}`;a.elMap.set(p,y)}else a.elMap.set(E._d,y)}}}a.pendingSideEffects={...a.sideEffects},a.sideEffects={};function l(d,m,y){const C=`${d}:${m}`;a.sideEffects[C]=y,delete a.pendingSideEffects[C]}function f({id:d,$el:m,tag:y}){const C=y.tag.endsWith("Attrs");a.elMap.set(d,m),C||(y.textContent&&y.textContent!==m.textContent&&(m.textContent=y.textContent),y.innerHTML&&y.innerHTML!==m.innerHTML&&(m.innerHTML=y.innerHTML),l(d,"el",()=>{m?.remove(),a.elMap.delete(d)}));for(const E in y.props){if(!Object.prototype.hasOwnProperty.call(y.props,E))continue;const v=y.props[E];if(E.startsWith("on")&&typeof v=="function"){const _=m?.dataset;if(_&&_[`${E}fired`]){const w=E.slice(0,-5);v.call(m,new Event(w.substring(2)))}m.getAttribute(`data-${E}`)!==""&&((y.tag==="bodyAttrs"?n.defaultView:m).addEventListener(E.substring(2),v.bind(m)),m.setAttribute(`data-${E}`,""));continue}const p=`attr:${E}`;if(E==="class"){if(!v)continue;for(const _ of v)C&&l(d,`${p}:${_}`,()=>m.classList.remove(_)),!m.classList.contains(_)&&m.classList.add(_)}else if(E==="style"){if(!v)continue;for(const[_,w]of v)l(d,`${p}:${_}`,()=>{m.style.removeProperty(_)}),m.style.setProperty(_,w)}else v!==!1&&v!==null&&(m.getAttribute(E)!==v&&m.setAttribute(E,v===!0?"":String(v)),C&&l(d,p,()=>m.removeAttribute(E)))}}const c=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0},h=await i;for(const d of h){const{tag:m,shouldRender:y,id:C}=d;if(y){if(m.tag==="title"){n.title=m.textContent,l("title","",()=>n.title=a.title);continue}d.$el=d.$el||a.elMap.get(C),d.$el?f(d):io.has(m.tag)&&c.push(d)}}for(const d of c){const m=d.tag.tagPosition||"head";d.$el=n.createElement(d.tag.tag),f(d),u[m]=u[m]||n.createDocumentFragment(),u[m].appendChild(d.$el)}for(const d of h)await e.hooks.callHook("dom:renderTag",d,n,l);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose);for(const d in a.pendingSideEffects)a.pendingSideEffects[d]();e._dom=a,await e.hooks.callHook("dom:rendered",{renders:h}),s()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function gg(e={}){const t=e.domOptions?.render||Fo;e.document=e.document||(typeof window<"u"?document:void 0);const n=e.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML||!1;return tg({...e,plugins:[...e.plugins||[],{key:"client",hooks:{"entries:updated":t}}],init:[n?JSON.parse(n):!1,...e.init||[]]})}function mg(e,t){let n=0;return()=>{const r=++n;t(()=>{n===r&&e()})}}function yg(e={}){const t=gg({domOptions:{render:mg(()=>Fo(t),n=>setTimeout(n,0))},...e});return t.install=rg(t),t}const _g={disableDefaults:!0},bg=Ye({name:"nuxt:head",enforce:"pre",setup(e){const t=yg(_g);e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await Fo(t)};t.hooks.hook("dom:beforeRender",o=>{o.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r);const s=t.push.bind(t);t.push=((o,i)=>{const a=s(o,i),l=a.dispose.bind(a);return a.dispose=()=>{const f=e["~transitionPromise"];f?f.then(l):l()},a})}}});const pn=typeof document<"u";function Nc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function vg(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Nc(e.default)}const oe=Object.assign;function xs(e,t){const n={};for(const r in t){const s=t[r];n[r]=st(s)?s.map(e):e(s)}return n}const er=()=>{},st=Array.isArray;function ta(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}const jc=Symbol("");function kn(e,t){return oe(new Error,{type:e,[jc]:!0},t)}function bt(e,t){return e instanceof Error&&jc in e&&(t==null||!!(e.type&t))}const wg=Symbol(""),na=Symbol(""),Bo=Symbol(""),Uo=Symbol(""),lo=Symbol("");function Fc(e){return Ce(Uo)}const Eg={trailing:!0};function Sg(e,t=25,n={}){if(n={...Eg,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,s,o=[],i,a;const l=(u,h)=>(i=Tg(e,u,h),i.finally(()=>{if(i=null,n.trailing&&a&&!s){const d=l(u,a);return a=null,d}}),i),f=function(...u){return n.trailing&&(a=u),i||new Promise(h=>{const d=!s&&n.leading;clearTimeout(s),s=setTimeout(()=>{s=null;const m=n.leading?r:l(this,u);a=null;for(const y of o)y(m);o=[]},t),d?(r=l(this,u),h(r)):o.push(h)})},c=u=>{u&&(clearTimeout(u),s=null)};return f.isPending=()=>!!s,f.cancel=()=>{c(s),o=[],a=null},f.flush=()=>{if(c(s),!a||i)return;const u=a;return a=null,l(this,u)},f}async function Tg(e,t,n){return await e.apply(t,n)}const Bc=/#/g,Rg=/&/g,Cg=/\//g,Ag=/=/g,Pg=/\?/g,Uc=/\+/g,xg=/%5B/g,kg=/%5D/g,Vc=/%5E/g,Og=/%60/g,Kc=/%7B/g,Mg=/%7C/g,Wc=/%7D/g,Ig=/%20/g;function Vo(e){return e==null?"":encodeURI(""+e).replace(Mg,"|").replace(xg,"[").replace(kg,"]")}function Lg(e){return Vo(e).replace(Kc,"{").replace(Wc,"}").replace(Vc,"^")}function co(e){return Vo(e).replace(Uc,"%2B").replace(Ig,"+").replace(Bc,"%23").replace(Rg,"%26").replace(Og,"`").replace(Kc,"{").replace(Wc,"}").replace(Vc,"^")}function Dg(e){return co(e).replace(Ag,"%3D")}function Hg(e){return Vo(e).replace(Bc,"%23").replace(Pg,"%3F")}function $g(e){return Hg(e).replace(Cg,"%2F")}function Kr(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Ng=/\/$/,jg=e=>e.replace(Ng,"");function ks(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(r=t.slice(0,l),o=t.slice(l,a>0?a:t.length),s=e(o.slice(1))),a>=0&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Vg(r??t,n),{fullPath:r+o+i,path:r,query:s,hash:Kr(i)}}function Fg(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ra(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Bg(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&qc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function qc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Ug(e[n],t[n]))return!1;return!0}function Ug(e,t){return st(e)?sa(e,t):st(t)?sa(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function sa(e,t){return st(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Vg(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const qe={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};function Kg(e){if(!e)if(pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),jg(e)}const Wg=/^[^#]+#/;function qg(e,t){return e.replace(Wg,"#")+t}function zg(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Gg(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=zg(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function oa(e,t){return(history.state?history.state.position-t:-1)+e}const uo=new Map;function Jg(e,t){uo.set(e,t)}function Xg(e){const t=uo.get(e);return uo.delete(e),t}function Yg(e){return typeof e=="string"||e&&typeof e=="object"}function zc(e){return typeof e=="string"||typeof e=="symbol"}function Qg(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rs&&co(s)):[r&&co(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Zg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=st(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}function Un(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $t(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const f=h=>{h===!1?l(kn(4,{from:n,to:t})):h instanceof Error?l(h):Yg(h)?l(kn(2,{from:t,to:h})):(i&&r.enterCallbacks[s]===i&&typeof h=="function"&&i.push(h),a())},c=o(()=>e.call(r&&r.instances[s],t,n,f));let u=Promise.resolve(c);e.length<3&&(u=u.then(f)),u.catch(h=>l(h))})}function Os(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Nc(l)){const f=(l.__vccOpts||l)[t];f&&o.push($t(f,n,r,i,a,s))}else{let f=l();o.push(()=>f.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const u=vg(c)?c.default:c;i.mods[a]=c,i.components[a]=u;const h=(u.__vccOpts||u)[t];return h&&$t(h,n,r,i,a,s)()}))}}return o}function em(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(f,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(f=>On(f,l))||s.push(l))}return[n,r,s]}let tm=()=>location.protocol+"//"+location.host;function Gc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,a=s.slice(i);return a[0]!=="/"&&(a="/"+a),ra(a,"")}return ra(n,e)+r+s}function nm(e,t,n,r){let s=[],o=[],i=null;const a=({state:h})=>{const d=Gc(e,location),m=n.value,y=t.value;let C=0;if(h){if(n.value=d,t.value=h,i&&i===m){i=null;return}C=y?h.position-y.position:0}else r(d);s.forEach(E=>{E(n.value,m,{delta:C,type:"pop",direction:C?C>0?"forward":"back":""})})};function l(){i=n.value}function f(h){s.push(h);const d=()=>{const m=s.indexOf(h);m>-1&&s.splice(m,1)};return o.push(d),d}function c(){if(document.visibilityState==="hidden"){const{history:h}=window;if(!h.state)return;h.replaceState(oe({},h.state,{scroll:us()}),"")}}function u(){for(const h of o)h();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:l,listen:f,destroy:u}}function aa(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?us():null}}function rm(e){const{history:t,location:n}=window,r={value:Gc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,f,c){const u=e.indexOf("#"),h=u>-1?(n.host&&document.querySelector("base")?e:e.slice(u))+l:tm()+e+l;try{t[c?"replaceState":"pushState"](f,"",h),s.value=f}catch(d){console.error(d),n[c?"replace":"assign"](h)}}function i(l,f){o(l,oe({},t.state,aa(s.value.back,l,s.value.forward,!0),f,{position:s.value.position}),!0),r.value=l}function a(l,f){const c=oe({},s.value,t.state,{forward:l,scroll:us()});o(c.current,c,!0),o(l,oe({},aa(r.value,l,null),{position:c.position+1},f),!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function sm(e){e=Kg(e);const t=rm(e),n=nm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=oe({location:"",base:e,go:r,createHref:qg.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}const om={type:0,value:""},im=/[a-zA-Z0-9_]/;function am(e){if(!e)return[[]];if(e==="/")return[[om]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${f}": ${d}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,f="",c="";function u(){f&&(n===0?o.push({type:0,value:f}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${f}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:f,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),f="")}function h(){f+=l}for(;at.length?t.length===1&&t[0]===80?1:-1:0}function Jc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const dm={strict:!1,end:!0,sensitive:!1};function hm(e,t,n){const r=um(am(e.path),n),s=oe(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function pm(e,t){const n=[],r=new Map;t=ta(dm,t);function s(u){return r.get(u)}function o(u,h,d){const m=!d,y=fa(u);y.aliasOf=d&&d.record;const C=ta(t,u),E=[y];if("alias"in u){const _=typeof u.alias=="string"?[u.alias]:u.alias;for(const w of _)E.push(fa(oe({},y,{components:d?d.record.components:y.components,path:w,aliasOf:d?d.record:y})))}let v,p;for(const _ of E){const{path:w}=_;if(h&&w[0]!=="/"){const k=h.record.path,P=k[k.length-1]==="/"?"":"/";_.path=h.record.path+(w&&P+w)}if(v=hm(_,h,C),d?d.alias.push(v):(p=p||v,p!==v&&p.alias.push(v),m&&u.name&&!da(v)&&i(u.name)),Xc(v)&&l(v),y.children){const k=y.children;for(let P=0;P{i(p)}:er}function i(u){if(zc(u)){const h=r.get(u);h&&(r.delete(u),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(u);h>-1&&(n.splice(h,1),u.record.name&&r.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function a(){return n}function l(u){const h=ym(u,n);n.splice(h,0,u),u.record.name&&!da(u)&&r.set(u.record.name,u)}function f(u,h){let d,m={},y,C;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw kn(1,{location:u});C=d.record.name,m=oe(ua(h.params,d.keys.filter(p=>!p.optional).concat(d.parent?d.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),u.params&&ua(u.params,d.keys.map(p=>p.name))),y=d.stringify(m)}else if(u.path!=null)y=u.path,d=n.find(p=>p.re.test(y)),d&&(m=d.parse(y),C=d.record.name,d.keys.forEach(p=>{p.optional&&!m[p.name]&&delete m[p.name]}));else{if(d=h.name?r.get(h.name):n.find(p=>p.re.test(h.path)),!d)throw kn(1,{location:u,currentLocation:h});C=d.record.name,m=oe({},h.params,u.params),y=d.stringify(m)}const E=[];let v=d;for(;v;)E.unshift(v.record),v=v.parent;return{name:C,path:y,params:m,matched:E,meta:mm(E)}}e.forEach(u=>o(u));function c(){n.length=0,r.clear()}return{addRoute:o,resolve:f,removeRoute:i,clearRoutes:c,getRoutes:a,getRecordMatcher:s}}function ua(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function fa(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:gm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function gm(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function da(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function mm(e){return e.reduce((t,n)=>oe(t,n.meta),{})}function ym(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Jc(e,t[o])<0?r=o:n=o+1}const s=_m(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function _m(e){let t=e;for(;t=t.parent;)if(Xc(t)&&Jc(e,t)===0)return t}function Xc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function ha(e){const t=Ce(Bo),n=Ce(Uo),r=Re(()=>{const l=ae(e.to);return t.resolve(l)}),s=Re(()=>{const{matched:l}=r.value,{length:f}=l,c=l[f-1],u=n.matched;if(!c||!u.length)return-1;const h=u.findIndex(On.bind(null,c));if(h>-1)return h;const d=pa(l[f-2]);return f>1&&pa(c)===d&&u[u.length-1].path!==d?u.findIndex(On.bind(null,l[f-2])):h}),o=Re(()=>s.value>-1&&Em(n.params,r.value.params)),i=Re(()=>s.value>-1&&s.value===n.matched.length-1&&qc(n.params,r.value.params));function a(l={}){if(wm(l)){const f=t[ae(e.replace)?"replace":"push"](ae(e.to)).catch(er);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>f),f}return Promise.resolve()}return{route:r,href:Re(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}function bm(e){return e.length===1?e[0]:e}const vm=Wt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:ha,setup(e,{slots:t}){const n=ot(ha(e)),{options:r}=Ce(Bo),s=Re(()=>({[ga(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ga(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&bm(t.default(n));return e.custom?o:Oe("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}});function wm(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Em(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!st(s)||s.length!==r.length||r.some((o,i)=>o.valueOf()!==s[i].valueOf()))return!1}return!0}function pa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ga=(e,t,n)=>e??t??n,Sm=Wt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ce(lo),s=Re(()=>e.route||r.value),o=Ce(na,0),i=Re(()=>{let f=ae(o);const{matched:c}=s.value;let u;for(;(u=c[f])&&!u.components;)f++;return f}),a=Re(()=>s.value.matched[i.value]);jt(na,Re(()=>i.value+1)),jt(wg,a),jt(lo,s);const l=nt();return Rt(()=>[l.value,a.value,e.name],([f,c,u],[h,d,m])=>{c&&(c.instances[u]=f,d&&d!==c&&f&&f===h&&(c.leaveGuards.size||(c.leaveGuards=d.leaveGuards),c.updateGuards.size||(c.updateGuards=d.updateGuards))),f&&c&&(!d||!On(c,d)||!h)&&(c.enterCallbacks[u]||[]).forEach(y=>y(f))},{flush:"post"}),()=>{const f=s.value,c=e.name,u=a.value,h=u&&u.components[c];if(!h)return ma(n.default,{Component:h,route:f});const d=u.props[c],m=d?d===!0?f.params:typeof d=="function"?d(f):d:null,C=Oe(h,oe({},m,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(u.instances[c]=null)},ref:l}));return ma(n.default,{Component:C,route:f})||C}}});function ma(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Yc=Sm;function Tm(e){const t=pm(e.routes,e),n=e.parseQuery||Qg,r=e.stringifyQuery||ia,s=e.history,o=Un(),i=Un(),a=Un(),l=Ut(qe);let f=qe;pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=xs.bind(null,x=>""+x),u=xs.bind(null,$g),h=xs.bind(null,Kr);function d(x,K){let B,J;return zc(x)?(B=t.getRecordMatcher(x),J=K):J=x,t.addRoute(J,B)}function m(x){const K=t.getRecordMatcher(x);K&&t.removeRoute(K)}function y(){return t.getRoutes().map(x=>x.record)}function C(x){return!!t.getRecordMatcher(x)}function E(x,K){if(K=oe({},K||l.value),typeof x=="string"){const b=ks(n,x,K.path),S=t.resolve({path:b.path},K),M=s.createHref(b.fullPath);return oe(b,S,{params:h(S.params),redirectedFrom:void 0,href:M})}let B;if(x.path!=null)B=oe({},x,{path:ks(n,x.path,K.path).path});else{const b=oe({},x.params);for(const S in b)b[S]==null&&delete b[S];B=oe({},x,{params:u(b)}),K.params=u(K.params)}const J=t.resolve(B,K),ee=x.hash||"";J.params=c(h(J.params));const me=Fg(r,oe({},x,{hash:Lg(ee),path:J.path})),g=s.createHref(me);return oe({fullPath:me,hash:ee,query:r===ia?Zg(x.query):x.query||{}},J,{redirectedFrom:void 0,href:g})}function v(x){return typeof x=="string"?ks(n,x,l.value.path):oe({},x)}function p(x,K){if(f!==x)return kn(8,{from:K,to:x})}function _(x){return P(x)}function w(x){return _(oe(v(x),{replace:!0}))}function k(x,K){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:J}=B;let ee=typeof J=="function"?J(x,K):J;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=v(ee):{path:ee},ee.params={}),oe({query:x.query,hash:x.hash,params:ee.path!=null?{}:x.params},ee)}}function P(x,K){const B=f=E(x),J=l.value,ee=x.state,me=x.force,g=x.replace===!0,b=k(B,J);if(b)return P(oe(v(b),{state:typeof b=="object"?oe({},ee,b.state):ee,force:me,replace:g}),K||B);const S=B;S.redirectedFrom=K;let M;return!me&&Bg(r,J,B)&&(M=kn(16,{to:S,from:J}),it(J,J,!0,!1)),(M?Promise.resolve(M):T(S,J)).catch(A=>bt(A)?bt(A,2)?A:Mt(A):V(A,S,J)).then(A=>{if(A){if(bt(A,2))return P(oe({replace:g},v(A.to),{state:typeof A.to=="object"?oe({},ee,A.to.state):ee,force:me}),K||S)}else A=L(S,J,!0,g,ee);return $(S,J,A),A})}function D(x,K){const B=p(x,K);return B?Promise.reject(B):Promise.resolve()}function R(x){const K=cn.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(x):x()}function T(x,K){let B;const[J,ee,me]=em(x,K);B=Os(J.reverse(),"beforeRouteLeave",x,K);for(const b of J)b.leaveGuards.forEach(S=>{B.push($t(S,x,K))});const g=D.bind(null,x,K);return B.push(g),Ke(B).then(()=>{B=[];for(const b of o.list())B.push($t(b,x,K));return B.push(g),Ke(B)}).then(()=>{B=Os(ee,"beforeRouteUpdate",x,K);for(const b of ee)b.updateGuards.forEach(S=>{B.push($t(S,x,K))});return B.push(g),Ke(B)}).then(()=>{B=[];for(const b of me)if(b.beforeEnter)if(st(b.beforeEnter))for(const S of b.beforeEnter)B.push($t(S,x,K));else B.push($t(b.beforeEnter,x,K));return B.push(g),Ke(B)}).then(()=>(x.matched.forEach(b=>b.enterCallbacks={}),B=Os(me,"beforeRouteEnter",x,K,R),B.push(g),Ke(B))).then(()=>{B=[];for(const b of i.list())B.push($t(b,x,K));return B.push(g),Ke(B)}).catch(b=>bt(b,8)?b:Promise.reject(b))}function $(x,K,B){a.list().forEach(J=>R(()=>J(x,K,B)))}function L(x,K,B,J,ee){const me=p(x,K);if(me)return me;const g=K===qe,b=pn?history.state:{};B&&(J||g?s.replace(x.fullPath,oe({scroll:g&&b&&b.scroll},ee)):s.push(x.fullPath,ee)),l.value=x,it(x,K,B,g),Mt()}let W;function Z(){W||(W=s.listen((x,K,B)=>{if(!qt.listening)return;const J=E(x),ee=k(J,qt.currentRoute.value);if(ee){P(oe(ee,{replace:!0,force:!0}),J).catch(er);return}f=J;const me=l.value;pn&&Jg(oa(me.fullPath,B.delta),us()),T(J,me).catch(g=>bt(g,12)?g:bt(g,2)?(P(oe(v(g.to),{force:!0}),J).then(b=>{bt(b,20)&&!B.delta&&B.type==="pop"&&s.go(-1,!1)}).catch(er),Promise.reject()):(B.delta&&s.go(-B.delta,!1),V(g,J,me))).then(g=>{g=g||L(J,me,!1),g&&(B.delta&&!bt(g,8)?s.go(-B.delta,!1):B.type==="pop"&&bt(g,20)&&s.go(-1,!1)),$(J,me,g)}).catch(er)}))}let te=Un(),F=Un(),q;function V(x,K,B){Mt(x);const J=F.list();return J.length?J.forEach(ee=>ee(x,K,B)):console.error(x),Promise.reject(x)}function le(){return q&&l.value!==qe?Promise.resolve():new Promise((x,K)=>{te.add([x,K])})}function Mt(x){return q||(q=!x,Z(),te.list().forEach(([K,B])=>x?B(x):K()),te.reset()),x}function it(x,K,B,J){const{scrollBehavior:ee}=e;if(!pn||!ee)return Promise.resolve();const me=!B&&Xg(oa(x.fullPath,0))||(J||!B)&&history.state&&history.state.scroll||null;return xt().then(()=>ee(x,K,me)).then(g=>g&&Gg(g)).catch(g=>V(g,x,K))}const De=x=>s.go(x);let ln;const cn=new Set,qt={currentRoute:l,listening:!0,addRoute:d,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:y,resolve:E,options:e,push:_,replace:w,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:F.add,isReady:le,install(x){x.component("RouterLink",vm),x.component("RouterView",Yc),x.config.globalProperties.$router=qt,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>ae(l)}),pn&&!ln&&l.value===qe&&(ln=!0,_(s.location).catch(J=>{}));const K={};for(const J in qe)Object.defineProperty(K,J,{get:()=>l.value[J],enumerable:!0});x.provide(Bo,qt),x.provide(Uo,Ze(K)),x.provide(lo,l);const B=x.unmount;cn.add(x),x.unmount=function(){cn.delete(x),cn.size<1&&(f=qe,W&&W(),W=null,l.value=qe,ln=!1,q=!1),B()}}};function Ke(x){return x.reduce((K,B)=>K.then(()=>R(B)),Promise.resolve())}return qt}const Rm=/(:\w+)\([^)]+\)/g,Cm=/(:\w+)[?+*]/g,Am=/:\w+/g,Pm=(e,t)=>t.path.replace(Rm,"$1").replace(Cm,"$1").replace(Am,n=>e.params[n.slice(1)]?.toString()||""),fo=(e,t)=>{const n=e.route.matched.find(s=>s.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Pm(e.route,n));return typeof r=="function"?r(e.route):r},xm=(e,t)=>({default:()=>e?Oe(pf,e===!0?{}:e,t):t});function Qc(e){return Array.isArray(e)?e:[e]}const km="modulepreload",Om=function(e,t){return new URL(e,t).href},ya={},fe=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){let f=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=a?.nonce||a?.getAttribute("nonce");s=f(n.map(c=>{if(c=Om(c,r),c in ya)return;ya[c]=!0;const u=c.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(r)for(let m=i.length-1;m>=0;m--){const y=i[m];if(y.href===c&&(!u||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${h}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":km,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((m,y)=>{d.addEventListener("load",m),d.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},Mm={title:"应用详情"},Im={title:"后台账号"},Lm={title:"Agent 配置"},Dm={title:"应用环境配置"},Hm={title:"应用中心"},$m={title:"通话翻译规则"},Nm={title:"渠道分发"},jm={title:"公码管理"},Fm={title:"数据概览"},Bm={title:"生产管理"},Um={title:"环境节点"},Vm={title:"品牌商管理"},Km={title:"全局环境配置"},Wm={title:"MCP配置"},qm={title:"会议记录服务"},zm={title:"会议模板"},Gm={title:"产品管理"},Jm={title:"方案商管理"},Xm={title:"第三方服务配置"},Ym={title:"统计日志"},Qm={title:"系统配置"},Zm={title:"用户查询"},ey={layout:"auth"},Ms=[{name:"apps-name",path:"/apps/:name()",meta:Mm||{},component:()=>fe(()=>import("./YYaFY5m9.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)},{name:"accounts",path:"/accounts",meta:Im||{},component:()=>fe(()=>import("./CzRv6c7P.js"),__vite__mapDeps([5,1,2,3,6]),import.meta.url)},{name:"agents",path:"/agents",meta:Lm||{},component:()=>fe(()=>import("./D0tNFWGx.js"),__vite__mapDeps([7,1,2,3,8,9,10,11]),import.meta.url)},{name:"appconfig",path:"/appconfig",meta:Dm||{},component:()=>fe(()=>import("./D1efUY0c.js"),__vite__mapDeps([12,1,2,3]),import.meta.url)},{name:"apps",path:"/apps",meta:Hm||{},component:()=>fe(()=>import("./CmHlPuQb.js"),__vite__mapDeps([13,1,2,3,14]),import.meta.url)},{name:"calltranslate",path:"/calltranslate",meta:$m||{},component:()=>fe(()=>import("./BWhTtyw-.js"),__vite__mapDeps([15,1,2,3,8,9,10,16]),import.meta.url)},{name:"channels",path:"/channels",meta:Nm||{},component:()=>fe(()=>import("./0WNSFMX1.js"),__vite__mapDeps([17,1,2,3,18]),import.meta.url)},{name:"code",path:"/code",meta:jm||{},component:()=>fe(()=>import("./Ge7z-opa.js"),__vite__mapDeps([19,1,2,3]),import.meta.url)},{name:"dashboard",path:"/dashboard",meta:Fm||{},component:()=>fe(()=>import("./DCtqoj8h.js"),__vite__mapDeps([20,1,2,21]),import.meta.url)},{name:"device",path:"/device",meta:Bm||{},component:()=>fe(()=>import("./CyIH3Sn4.js"),__vite__mapDeps([22,1,2,3]),import.meta.url)},{name:"environments",path:"/environments",meta:Um||{},component:()=>fe(()=>import("./DiInGhGc.js"),__vite__mapDeps([23,1,2,3]),import.meta.url)},{name:"factory",path:"/factory",meta:Vm||{},component:()=>fe(()=>import("./CSQN7OHo.js"),__vite__mapDeps([24,1,2,3]),import.meta.url)},{name:"globalconfig",path:"/globalconfig",meta:Km||{},component:()=>fe(()=>import("./BfiStvNk.js"),__vite__mapDeps([25,1,2,3]),import.meta.url)},{name:"mcpconfig",path:"/mcpconfig",meta:Wm||{},component:()=>fe(()=>import("./uis8hfUF.js"),[],import.meta.url)},{name:"meetingsvc",path:"/meetingsvc",meta:qm||{},component:()=>fe(()=>import("./BOVc_R-F.js"),__vite__mapDeps([26,1,2,3,8,27]),import.meta.url)},{name:"meettemplates",path:"/meettemplates",meta:zm||{},component:()=>fe(()=>import("./BSFY2Kep.js"),__vite__mapDeps([28,1,2,3]),import.meta.url)},{name:"product",path:"/product",meta:Gm||{},component:()=>fe(()=>import("./N6ePFfck.js"),__vite__mapDeps([29,1,2,3]),import.meta.url)},{name:"provider",path:"/provider",meta:Jm||{},component:()=>fe(()=>import("./CTIvguo-.js"),__vite__mapDeps([30,1,2,3]),import.meta.url)},{name:"serviceconfig",path:"/serviceconfig",meta:Xm||{},component:()=>fe(()=>import("./BPgWG32Q.js"),__vite__mapDeps([31,9,8,10,1,2,3,32]),import.meta.url)},{name:"statlog",path:"/statlog",meta:Ym||{},component:()=>fe(()=>import("./BSpPV7NB.js"),__vite__mapDeps([33,1,2,3,34]),import.meta.url)},{name:"systemconfig",path:"/systemconfig",meta:Qm||{},component:()=>fe(()=>import("./CEsBRmS9.js"),__vite__mapDeps([35,3,2,1,36]),import.meta.url)},{name:"users",path:"/users",meta:Zm||{},component:()=>fe(()=>import("./CFXePYDs.js"),__vite__mapDeps([37,1,2,3]),import.meta.url)},{name:"index",path:"/",meta:ey||{},component:()=>fe(()=>import("./CSir_6Sc.js"),__vite__mapDeps([38,39]),import.meta.url)}],Zc=(e,t)=>({default:()=>e?Oe(pd,e===!0?{}:e,t):t.default?.()}),ty=/(:\w+)\([^)]+\)/g,ny=/(:\w+)[?+*]/g,ry=/:\w+/g;function _a(e){const t=e?.meta.key??e.path.replace(ty,"$1").replace(ny,"$1").replace(ry,n=>e.params[n.slice(1)]?.toString()||"");return typeof t=="function"?t(e):t}function sy(e,t){return e===t||t===qe?!1:_a(e)!==_a(t)?!0:!e.matched.every((r,s)=>r.components&&r.components.default===t.matched[s]?.components?.default)}function ba(e){return Array.isArray(e)?e:[e]}function eu(e){const t=[];for(const n of e)n&&t.push({...n,onAfterLeave:n.onAfterLeave?ba(n.onAfterLeave):void 0,onBeforeLeave:n.onBeforeLeave?ba(n.onBeforeLeave):void 0});return vc(...t)}const oy={scrollBehavior(e,t,n){const r=ve(),s=Ve().options?.scrollBehaviorType??"auto";return e.path.replace(/\/$/,"")===t.path.replace(/\/$/,"")?t.hash&&!e.hash?{left:0,top:0}:e.hash?{el:e.hash,top:tu(e.hash),behavior:s}:!1:(typeof e.meta.scrollToTop=="function"?e.meta.scrollToTop(e,t):e.meta.scrollToTop)===!1?!1:t===qe?va(e,t,n,s):new Promise(i=>{const a=()=>{requestAnimationFrame(()=>i(va(e,t,n,s)))};r.hooks.hookOnce("page:loading:end",()=>{const l=r["~transitionPromise"];l?l.then(a):a()})})}};function tu(e){try{const t=document.querySelector(e);if(t)return(Number.parseFloat(getComputedStyle(t).scrollMarginTop)||0)+(Number.parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop)||0)}catch{}return 0}function va(e,t,n,r){return n||(e.hash?{el:e.hash,top:tu(e.hash),behavior:sy(e,t)?r:"instant"}:{left:0,top:0})}const iy={hashMode:!1,scrollBehaviorType:"auto"},Lt={...iy,...oy},ay=async(e,t)=>{let n,r;if(!e.meta?.validate)return;const s=([n,r]=Qn(()=>Promise.resolve(e.meta.validate(e))),n=await n,r(),n);if(s===!0)return;const o=Ft({fatal:!0,status:s&&(s.status||s.statusCode)||404,statusText:s&&(s.statusText||s.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}});return typeof window<"u"&&window.history.pushState({},"",t.fullPath),o},fs=[{label:"数据概览",items:[{id:"dashboard",label:"仪表盘",to:"/dashboard",icon:"M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"}]},{label:"生产管理",items:[{id:"provider",label:"方案商管理",to:"/provider",icon:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"},{id:"factory",label:"品牌商管理",to:"/factory",icon:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"},{id:"product",label:"产品管理",to:"/product",icon:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},{id:"code",label:"公码管理",to:"/code",icon:"M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 2h2m-2 4h6m-4-4v4m4-8h2m-2 0v4"},{id:"device",label:"生产管理",to:"/device",icon:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"}]},{label:"用户管理",items:[{id:"user",label:"用户查询",to:"/users",icon:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"}]},{label:"服务配置",items:[{id:"globalconfig",label:"全局环境配置",to:"/globalconfig",icon:"M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"},{id:"appconfig",label:"应用环境配置",to:"/appconfig",icon:"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"},{id:"meettemplate",label:"会议模板",to:"/meettemplates",icon:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},{id:"svcconfig",label:"第三方服务配置",to:"/serviceconfig",icon:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z"},{id:"agents",label:"Agent 配置",to:"/agents",icon:"M12 3a2 2 0 012 2v1h3a2 2 0 012 2v3a2 2 0 01-2 2h-1v3a2 2 0 01-2 2H8a2 2 0 01-2-2v-3H5a2 2 0 01-2-2V8a2 2 0 012-2h3V5a2 2 0 012-2zM9 13h.01M15 13h.01"},{id:"meetingsvc",label:"会议记录服务",to:"/meetingsvc",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"calltranslate",label:"通话翻译配置",to:"/calltranslate",icon:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"}]},{label:"SaaS 管理",restricted:!0,items:[{id:"apps",label:"应用中心",to:"/apps",icon:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},{id:"environments",label:"环境节点",to:"/environments",icon:"M5 3h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2zM5 13h14a2 2 0 012 2v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4a2 2 0 012-2zM7 7h.01M7 17h.01"},{id:"channels",label:"渠道分发",to:"/channels",icon:"M12 3v12m0 0l-4-4m4 4l4-4M4 17v2a2 2 0 002 2h12a2 2 0 002-2v-2"}]},{label:"系统管理",restricted:!0,items:[{id:"systemconfig",label:"系统配置",to:"/systemconfig",icon:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"},{id:"statlog",label:"统计日志",to:"/statlog",icon:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"},{id:"admin",label:"后台账号",to:"/accounts",icon:"M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z"}]}],g_=fs.flatMap(e=>e.items.map(t=>t.id)),ly=fs.filter(e=>!e.restricted).flatMap(e=>e.items.map(t=>t.id));function cy(e){let t=null;for(const n of fs)for(const r of n.items)(e===r.to||e.startsWith(r.to+"/"))&&(!t||r.to.length>t.to.length)&&(t=r);return t}const uy={1:"超管",2:"管理员",3:"代理",4:"运营"},Ko="auth_state";function Sr(e){return e?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Is(e){localStorage.setItem(Ko,JSON.stringify(e))}function fy(){try{const e=localStorage.getItem(Ko);return e?JSON.parse(e):null}catch{return null}}const nu=Ep("auth",{state:()=>({token:"",account:"",identity:0,access:[],apps:[],regions:[],products:[],appbinds:[],currentAppId:0,siteTitle:""}),getters:{isSuperAdmin(){return this.identity===1},isAdmin(){return this.identity===1||this.identity===2},identityLabel(){return uy[this.identity]??""},isLoggedIn(){return!!this.token}},actions:{setLoginData(e){this.token=e.token,this.account=e.account,this.identity=e.identity,this.access=Sr(e.access),this.apps=Sr(e.apps),this.regions=Sr(e.regions),this.products=Sr(e.products),this.appbinds=e.appbinds??[],this.appbinds.length>0&&!this.currentAppId&&(this.currentAppId=this.appbinds[0].id),Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setCurrentApp(e){this.currentAppId=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},setSiteTitle(e){this.siteTitle=e,Is({token:this.token,account:this.account,identity:this.identity,access:this.access,apps:this.apps,regions:this.regions,products:this.products,appbinds:this.appbinds,currentAppId:this.currentAppId,siteTitle:this.siteTitle})},logout(){this.token="",this.account="",this.identity=0,this.access=[],this.apps=[],this.regions=[],this.products=[],this.appbinds=[],this.currentAppId=0,this.siteTitle="",localStorage.removeItem(Ko)},restore(){const e=fy();e&&(this.token=e.token??"",this.account=e.account??"",this.identity=e.identity??0,this.access=e.access??[],this.apps=e.apps??[],this.regions=e.regions??[],this.products=e.products??[],this.appbinds=e.appbinds??[],this.currentAppId=e.currentAppId??0,this.siteTitle=e.siteTitle??"")},hasAccess(e){return this.identity===1?!0:this.identity===2&&this.access.length===0?ly.includes(e):this.access.includes(e)}}}),dy=e=>{const t=nu();if(!t.token)return;const n=cy(e.path);if(!(!n||t.hasAccess(n.id))){for(const r of fs)for(const s of r.items)if(t.hasAccess(s.id))return qi(s.to);return qi("/")}},hy=e=>{const t=Hc({path:e.path});if(t.redirect){const n=t.redirect.includes("#")?t.redirect:t.redirect+e.hash;return Dn(n,{acceptRelative:!0})?(window.location.href=n,!1):n}},py=[ay,dy,hy],ho={};function gy(e,t,n){const{pathname:r,search:s,hash:o}=t,i=e.indexOf("#");if(i>-1){const f=o.includes(e.slice(i))?e.slice(i).length:1;let c=o.slice(f);return c[0]!=="/"&&(c="/"+c),Di(c,"")}const a=Di(r,e),l=!n||fc(a,n)?a:n;return l+(l.includes("?")?"":s)+o}const my=Ye({name:"nuxt:router",enforce:"pre",async setup(e){let t,n,r=No().app.baseURL;const s=Lt.history?.(r)??sm(r),o=Lt.routes?([t,n]=Qn(()=>Lt.routes(Ms)),t=await t,n(),t??Ms):Ms;let i;const a=Tm({...Lt,scrollBehavior:(E,v,p)=>{if(v===qe){i=p;return}if(Lt.scrollBehavior){if(a.options.scrollBehavior=Lt.scrollBehavior,"scrollRestoration"in window.history){const _=a.beforeEach(()=>{_(),window.history.scrollRestoration="manual"})}return Lt.scrollBehavior(E,qe,i||p)}},history:s,routes:o});"scrollRestoration"in window.history&&(window.history.scrollRestoration="auto"),e.vueApp.use(a);const l=Ut(a.currentRoute.value);a.afterEach((E,v)=>{l.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>l.value});const f=gy(r,window.location,e.payload.path),c=Ut(a.currentRoute.value),u=()=>{c.value=a.currentRoute.value};a.afterEach((E,v)=>{const p=E.matched.at(-1)?.components?.default,_=v.matched.at(-1)?.components?.default;if(p===_){u();return}E.matched.lengthw.components?.default===v.matched[k]?.components?.default)&&u()});const h={sync:u};for(const E in c.value)Object.defineProperty(h,E,{get:()=>c.value[E],enumerable:!0});e._route=Ze(h),e._middleware||={global:[],named:{}};const d=cs();a.afterEach(async(E,v,p)=>{delete e._processingMiddleware,!e.isHydrating&&d.value&&await e.runWithContext(gp),p&&await e.callHook("page:loading:end")});try{[t,n]=Qn(()=>a.isReady()),await t,n()}catch(E){[t,n]=Qn(()=>e.runWithContext(()=>Zt(E))),await t,n()}const m=f!==a.currentRoute.value.fullPath?a.resolve(f):a.currentRoute.value,y=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&fc(a.currentRoute.value.path,e.payload.path);u();const C=e.payload.state._layout;return a.beforeEach(async(E,v)=>{await e.callHook("page:loading:start"),E.meta=ot(E.meta),e.isHydrating&&C&&!mt(E.meta.layout)&&(E.meta.layout=C),e._processingMiddleware=!0;{const p=new Set([...py,...e._middleware.global]);for(const w of E.matched){const k=w.meta.middleware;if(k)for(const P of Qc(k))p.add(P)}const _=Hc({path:E.path});if(_.appMiddleware)for(const w in _.appMiddleware)_.appMiddleware[w]?p.add(w):p.delete(w);for(const w of p){const k=typeof w=="string"?e._middleware.named[w]||await ho[w]?.().then(P=>P.default||P):w;if(!k)throw new Error(`Unknown route middleware: '${w}'.`);try{const P=await e.runWithContext(()=>k(E,v));if(!e.payload.serverRendered&&e.isHydrating&&(P===!1||P instanceof Error)){const D=P||Ft({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Zt(D)),!1}if(P===!0)continue;if(P===!1)return P;if(P)return Tc(P)&&P.fatal&&await e.runWithContext(()=>Zt(P)),P}catch(P){const D=Ft(P);return D.fatal&&await e.runWithContext(()=>Zt(D)),D}}}}),a.onError(async()=>{delete e._processingMiddleware,await e.callHook("page:loading:end")}),a.afterEach(E=>{if(E.matched.length===0&&!d.value)return e.runWithContext(()=>Zt(Ft({status:404,fatal:!1,statusText:`Page not found: ${E.fullPath}`,data:{path:E.fullPath}})))}),e.hooks.hookOnce("app:created",async()=>{try{if("name"in m&&(m.name=void 0),y){const E=a.resolve(e.payload.path);"name"in E&&(E.name=void 0),await a.replace({...E,force:!0}),e.hooks.hookOnce("app:suspense:resolve",async()=>{await a.replace({...m,force:!0})})}else await a.replace({...m,force:!0});a.options.scrollBehavior=Lt.scrollBehavior}catch(E){await e.runWithContext(()=>Zt(E))}}),{provide:{router:a}}}}),wa=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),m_=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Wo=e=>{const t=ve();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{wa(()=>e())}):wa(()=>e())},yy=Ye({name:"nuxt:payload",setup(e){const t=new Set;Ve().beforeResolve(async(n,r)=>{if(n.path===r.path)return;const s=await Zi(n.path);if(s){for(const o of t)delete e.static.data[o];for(const o in s.data)o in e.static.data||t.add(o),e.static.data[o]=s.data[o]}}),Wo(()=>{e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await Zi().catch(()=>{console.warn("[nuxt] Error preloading payload for",n)})}),navigator.connection?.effectiveType!=="slow-2g"&&setTimeout(Dc,1e3)})}}),_y=Ye(()=>{const e=Ve();Wo(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),by=Ye(e=>{let t;async function n(){let r;try{r=await Dc()}catch(s){const o=s;if(!("status"in o&&(o.status===404||o.status===403)))throw o}t&&clearTimeout(t),t=setTimeout(n,Vi);try{const s=await $fetch($o("builds/latest.json")+`?${Date.now()}`);s.id!==r?.id&&(e.hooks.callHook("app:manifest:update",s),t&&clearTimeout(t))}catch{}}Wo(()=>{t=setTimeout(n,Vi)})});function vy(e={}){const t=e.path||window.location.pathname,n=new URL(t,window.location.href);if(n.host!==window.location.host)throw new Error(`Cannot navigate to a URL with a different host: '${t}'.`);if(n.protocol&&Ys(n.protocol))throw new Error(`Cannot navigate to a URL with '${n.protocol}' protocol.`);let r={};try{r=JSON.parse(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||r?.path!==t||r?.expires{r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const i=cc(n.app.baseURL,o.fullPath);vy({path:i,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}});function Ey(e){return typeof e=="string"?`'${e}'`:new Sy().serialize(e)}const Sy=(function(){class e{#e=new Map;compare(n,r){const s=typeof n,o=typeof r;return s==="string"&&o==="string"?n.localeCompare(r):s==="number"&&o==="number"?n-r:String.prototype.localeCompare.call(this.serialize(n,!0),this.serialize(r,!0))}serialize(n,r){if(n===null)return"null";switch(typeof n){case"string":return r?n:`'${n}'`;case"bigint":return`${n}n`;case"object":return this.$object(n);case"function":return this.$function(n)}return String(n)}serializeObject(n){const r=Object.prototype.toString.call(n);if(r!=="[object Object]")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),n);const s=n.constructor,o=s===Object||s===void 0?"":s.name;if(o!==""&&globalThis[o]===s)return this.serializeBuiltInType(o,n);if(typeof n.toJSON=="function"){const i=n.toJSON();return o+(i!==null&&typeof i=="object"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(o,Object.entries(n))}serializeBuiltInType(n,r){const s=this["$"+n];if(s)return s.call(this,r);if(typeof r?.entries=="function")return this.serializeObjectEntries(n,r.entries());throw new Error(`Cannot serialize ${n}`)}serializeObjectEntries(n,r){const s=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let o=`${n}{`;for(let i=0;ithis.compare(r,s)))}`}$Map(n){return this.serializeObjectEntries("Map",n.entries())}}for(const t of["Error","RegExp","URL"])e.prototype["$"+t]=function(n){return`${t}(${n})`};for(const t of["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join(",")}]`};for(const t of["BigInt64Array","BigUint64Array"])e.prototype["$"+t]=function(n){return`${t}[${n.join("n,")}${n.length>0?"n":""}]`};return e})(),Ty=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],Ry=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Cy="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Yt=[];class Ay{_data=new yn;_hash=new yn([...Ty]);_nDataBytes=0;_minBufferSize=0;finalize(t){t&&this._append(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(t,n){const r=this._hash.words;let s=r[0],o=r[1],i=r[2],a=r[3],l=r[4],f=r[5],c=r[6],u=r[7];for(let h=0;h<64;h++){if(h<16)Yt[h]=t[n+h]|0;else{const p=Yt[h-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,w=Yt[h-2],k=(w<<15|w>>>17)^(w<<13|w>>>19)^w>>>10;Yt[h]=_+Yt[h-7]+k+Yt[h-16]}const d=l&f^~l&c,m=s&o^s&i^o&i,y=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),C=(l<<26|l>>>6)^(l<<21|l>>>11)^(l<<7|l>>>25),E=u+C+d+Ry[h]+Yt[h],v=y+m;u=c,c=f,f=l,l=a+E|0,a=i,i=o,o=s,s=E+v|0}r[0]=r[0]+s|0,r[1]=r[1]+o|0,r[2]=r[2]+i|0,r[3]=r[3]+a|0,r[4]=r[4]+l|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+u|0}_append(t){typeof t=="string"&&(t=yn.fromUtf8(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_process(t){let n,r=this._data.sigBytes/64;t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const s=r*16,o=Math.min(s*4,this._data.sigBytes);if(s){for(let i=0;i>>2]|=(n.charCodeAt(o)&255)<<24-o%4*8;return new yn(s,r)}toBase64(){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255,s=this.words[n+1>>>2]>>>24-(n+1)%4*8&255,o=this.words[n+2>>>2]>>>24-(n+2)%4*8&255,i=r<<16|s<<8|o;for(let a=0;a<4&&n*8+a*6>>6*(3-a)&63))}return t.join("")}concat(t){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];this.sigBytes+=t.sigBytes}}function Py(e){return new Ay().finalize(e).toBase64()}function gn(e){return Py(Ey(e))}const xy=Symbol.for("nuxt:client-only");function ru(e){return Object.defineProperty(function(){throw new Error(`[nuxt] \`${e.name}\` is a compiler macro and cannot be called at runtime.`)},"__nuxt_factory",{enumerable:!1,get:()=>e.factory})}const su=ru({name:"createUseAsyncData",factory(e={}){function t(...n){const r=typeof n[n.length-1]=="string"?n.pop():void 0;Oy(n[0],n[1])&&n.unshift(r);let[s,o,i={}]=n,a=!1;const l=ge(s)||typeof s=="function",f=l?Re(()=>ft(s)):{value:s};if(!f.value||typeof f.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a non-empty string.");if(typeof o!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const c=typeof e=="function",u=ve(),h=c?e(i):e;if(!c)for(const p in h)h[p]!==void 0&&i[p]===void 0&&(i[p]=h[p]);if(i.server??=!0,i.default??=Iy,i.getCachedData??=iu,i.lazy??=!1,i.immediate??=!0,i.deep??=Xh.deep,i.dedupe??="cancel",c)for(const p in h)h[p]!==void 0&&(i[p]=h[p]);u._asyncData[f.value];function d(){const p={cause:"initial",dedupe:i.dedupe},_=u._asyncData[f.value];return _?._init?u._asyncDataPromises[f.value]&&(p.cachedData=_._initialCachedData):(p.cachedData=i.getCachedData(f.value,u,{cause:"initial"}),u._asyncData[f.value]=Ea(u,f.value,o,i,p.cachedData),u._asyncData[f.value]._initialCachedData=p.cachedData),()=>u._asyncData[f.value].execute(p)}const m=d(),y=u._asyncData[f.value];y._deps++;const C=i.server!==!1&&u.payload.serverRendered;{let p=function(T){const $=u._asyncData[T];$?._deps&&($._deps--,$._deps===0&&$?._off())};const _=an();if(_&&C&&i.immediate&&!_.sp&&(_.sp=[]),_&&!_._nuxtOnBeforeMountCbs){_._nuxtOnBeforeMountCbs=[];const T=_._nuxtOnBeforeMountCbs;pl(()=>{T.forEach($=>{$()}),T.splice(0,T.length)}),ss(()=>T.splice(0,T.length))}const w=_&&(_._nuxtClientOnly||Ce(xy,!1));C&&u.isHydrating&&(y.error.value||y.data.value!==void 0)?y.status.value=y.error.value?"error":"success":_&&(!w&&u.payload.serverRendered&&u.isHydrating||i.lazy)&&i.immediate?_._nuxtOnBeforeMountCbs.push(m):i.immediate&&y.status.value!=="success"&&m();const k=Zr(),P=()=>{},D=l?Rt(f,(T,$)=>{if((T||$)&&T!==$){a=!0;const L=u._asyncData[$]?.data.value!==void 0,W=u._asyncDataPromises[$]!==void 0,Z={cause:"initial",dedupe:i.dedupe};if(!u._asyncData[T]?._init){let F;$&&L?F=u._asyncData[$].data.value:(F=i.getCachedData(T,u,{cause:"initial"}),Z.cachedData=F),u._asyncData[T]=Ea(u,T,o,i,F)}u._asyncData[T]._deps++,$&&p($),i._keyTriggersExecute!==!1&&(i.immediate||L||W)&&u._asyncData[T].execute(Z),rr(()=>{a=!1})}},{flush:"sync"}):P,R=i.watch?Rt(i.watch,()=>{a||(u._asyncData[f.value]?._execute.isPending()&&rr(()=>{u._asyncData[f.value]?._execute.flush()}),u._asyncData[f.value]?._execute({cause:"watch",dedupe:i.dedupe}))}):P;k&&Da(()=>{D(),R(),p(f.value)})}const E={data:Tr(()=>u._asyncData[f.value]?.data),pending:Tr(()=>u._asyncData[f.value]?.pending),status:Tr(()=>u._asyncData[f.value]?.status),error:Tr(()=>u._asyncData[f.value]?.error),refresh:(...p)=>u._asyncData[f.value]?._init?u._asyncData[f.value].execute(...p):d()(),execute:(...p)=>E.refresh(...p),clear:()=>{const p=u._asyncData[f.value];if(p?._abortController)try{p._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{p._abortController=void 0}ou(u,f.value)}},v=Promise.resolve(u._asyncDataPromises[f.value]).then(()=>E);return Object.assign(v,E),Object.defineProperties(v,{then:{enumerable:!0,value:v.then.bind(v)},catch:{enumerable:!0,value:v.catch.bind(v)},finally:{enumerable:!0,value:v.finally.bind(v)}}),v}return t}}),ky=su.__nuxt_factory();su.__nuxt_factory({lazy:!0,_functionName:"useLazyAsyncData"});function Tr(e){return Re({get(){return e()?.value},set(t){const n=e();n&&(n.value=t)}})}function Oy(e,t){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof t=="function")}function ou(e,t){t in e.payload.data&&(e.payload.data[t]=void 0),t in e.payload._errors&&(e.payload._errors[t]=void 0),e._asyncData[t]&&(e._asyncData[t].data.value=ae(e._asyncData[t]._default()),e._asyncData[t].error.value=void 0,e._asyncData[t].status.value="idle",e._asyncData[t]._initialCachedData=void 0),t in e._asyncDataPromises&&(e._asyncDataPromises[t]=void 0)}function My(e,t){const n={};for(const r of t)n[r]=e[r];return n}function Ea(e,t,n,r,s){e.payload._errors[t]??=void 0;const o=r.getCachedData!==iu,i=n,a=r.deep?nt:Ut,l=s!==void 0,f=e.hook("app:data:refresh",async u=>{(!u||u.includes(t))&&await c.execute({cause:"refresh:hook"})}),c={data:a(l?s:r.default()),pending:Re(()=>c.status.value==="pending"),error:Qa(e.payload._errors,t),status:Ut("idle"),execute:(...u)=>{const[h,d=void 0]=u,m=h&&d===void 0&&typeof h=="object"?h:{};if(e._asyncDataPromises[t]&&(m.dedupe??r.dedupe)==="defer")return e._asyncDataPromises[t];{const E="cachedData"in m?m.cachedData:r.getCachedData(t,e,{cause:m.cause??"refresh:manual"});if(E!==void 0)return e.payload.data[t]=c.data.value=E,c.error.value=void 0,c.status.value="success",Promise.resolve(E)}c._abortController&&c._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),c._abortController=new AbortController,c.status.value="pending";const y=new AbortController,C=new Promise((E,v)=>{try{const p=m.timeout??r.timeout,_=Ly([c._abortController?.signal,m?.signal],y.signal,p);if(_.aborted){const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"));return}return _.addEventListener("abort",()=>{const w=_.reason;v(w instanceof Error?w:new DOMException(String(w??"Aborted"),"AbortError"))},{once:!0,signal:y.signal}),Promise.resolve(i(e,{signal:_})).then(E,v)}catch(p){v(p)}}).then(async E=>{if(e._asyncDataPromises[t]!==C)return;let v=E;r.transform&&(v=await r.transform(E)),r.pick&&(v=My(v,r.pick)),e.payload.data[t]=v,c.data.value=v,c.error.value=void 0,c.status.value="success"}).catch(E=>{if(e._asyncDataPromises[t]!==C||c._abortController?.signal.aborted)return e._asyncDataPromises[t];if(typeof DOMException<"u"&&E instanceof DOMException&&E.name==="AbortError")return c.status.value="idle",e._asyncDataPromises[t];c.error.value=Ft(E),c.data.value=ae(r.default()),c.status.value="error"}).finally(()=>{y.abort(),e._asyncDataPromises[t]===C&&delete e._asyncDataPromises[t]});return e._asyncDataPromises[t]=C,e._asyncDataPromises[t]},_execute:Sg((...u)=>c.execute(...u),0,{leading:!0}),_default:r.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{f(),e._asyncData[t]?._init&&(e._asyncData[t]._init=!1),o||xt(()=>{e._asyncData[t]?._init||(ou(e,t),c.execute=()=>Promise.resolve())})}};return c}const Iy=()=>{},iu=(e,t,n)=>{if(t.isHydrating)return t.payload.data[e];if(n.cause!=="refresh:manual"&&n.cause!=="refresh:hook")return t.static.data[e]};function Ly(e,t,n){const r=e.filter(i=>!!i);if(typeof n=="number"&&n>=0){const i=AbortSignal.timeout?.(n);i&&r.push(i)}if(AbortSignal.any)return AbortSignal.any(r);const s=new AbortController;for(const i of r)if(i.aborted){const a=i.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}return s.signal}const o=()=>{const a=r.find(l=>l.aborted)?.reason??new DOMException("Aborted","AbortError");try{s.abort(a)}catch{s.abort()}};for(const i of r)i.addEventListener?.("abort",o,{once:!0,signal:t});return s.signal}function Dy(e){const t=[ft(e.method)?.toUpperCase()||"GET",ft(e.baseURL)];for(const n of[e.query||e.params]){const r=ft(n);if(!r)continue;const s={};for(const[o,i]of Object.entries(r))s[ft(o)]=ft(i);t.push(s)}if(e.body){const n=ft(e.body);if(!n)t.push(gn(n));else if(n instanceof ArrayBuffer)t.push(gn(Object.fromEntries([...new Uint8Array(n).entries()].map(([r,s])=>[r,s.toString()]))));else if(n instanceof FormData){const r=[];for(const s of n.entries()){const[o,i]=s;r.push([o,i instanceof File?`${i.name}:${i.size}:${i.lastModified}`:i])}t.push(gn(r))}else if(mo(n))t.push(gn(ot(n)));else try{t.push(gn(n))}catch{console.warn("[useFetch] Failed to hash body",n)}}return t}const au=ru({name:"createUseFetch",factory(e={}){function t(n,r,s){const[o={},i]=typeof r=="string"?[{},r]:[r,s],a=typeof e=="function"?e(o):e,{server:l,lazy:f,default:c,transform:u,pick:h,watch:d,immediate:m,getCachedData:y,deep:C,dedupe:E,timeout:v,...p}={...typeof e=="function"?{}:a,...o,...typeof e=="function"?a:{}},_=Re(()=>ft(n)),w=Re(()=>ft(p.key)||"$f"+gn([i,typeof _.value=="string"?_.value:"",...Dy(p)]));if(!p.baseURL&&typeof _.value=="string"&&_.value[0]==="/"&&_.value[1]==="/")throw new Error('[nuxt] [useFetch] the request URL must not start with "//".');const k=ot({...Yh,...p,cache:typeof p.cache=="boolean"?void 0:p.cache}),P={server:l,lazy:f,default:c,transform:u,pick:h,immediate:m,getCachedData:y,deep:C,dedupe:E,timeout:v,watch:d===!1?[]:[...d||[],k]};return d===!1&&(P._keyTriggersExecute=!1),ky(w,(R,{signal:T})=>(p.$fetch||globalThis.$fetch)(_.value,{signal:T,...k}),P)}return t}});au.__nuxt_factory();au.__nuxt_factory({lazy:!0,_functionName:"useLazyFetch"});function Hy(e){if(e?.__asyncLoader&&!e.__asyncResolved)return e.__asyncLoader()}async function $y(e,t=Ve()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||=new Set,t._routePreloaded.has(n)))return;const s=t._preloadPromises||=[];if(s.length>4)return Promise.all(s).then(()=>$y(e,t));t._routePreloaded.add(n);for(const o of r){const i=o.components?.default;if(typeof i!="function")continue;const a=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(a),1));s.push(a)}await Promise.all(s)}const Ny=Ye({name:"pinia",setup(e){const t=mp();return e.vueApp.use(t),xn(t),e.payload&&e.payload.pinia&&(t.state.value=e.payload.pinia),{provide:{pinia:t}}},hooks:{"app:rendered"(){const e=ve();e.payload.pinia=ne(e.$pinia).state.value,xn(void 0)}}}),jy=Ye({name:"nuxt:global-components"}),Nt={auth:Ir(()=>fe(()=>import("./B28BcwCz.js"),[],import.meta.url).then(e=>e.default||e)),default:Ir(()=>fe(()=>import("./HFcFZ41D.js"),__vite__mapDeps([40,41,3,2,42]),import.meta.url).then(e=>e.default||e))},Fy=Ye({name:"nuxt:prefetch",setup(e){const t=Ve();e.hooks.hook("app:mounted",()=>{t.beforeEach(async n=>{const r=n?.meta?.layout;r&&typeof Nt[r]=="function"&&await Nt[r]()})}),e.hooks.hook("link:prefetch",n=>{if(Dn(n))return;const r=t.resolve(n);if(!r)return;const s=r.meta.layout;let o=Qc(r.meta.middleware);o=o.filter(i=>typeof i=="string");for(const i of o)typeof ho[i]=="function"&&ho[i]();typeof s=="string"&&s in Nt&&Hy(Nt[s])})}}),By=Ye(()=>{nu().restore()}),Uy=[dg,pg,bg,my,yy,_y,by,wy,Ny,jy,Fy,By],lu=(e="RouteProvider")=>Wt({name:e,props:{route:{type:Object,required:!0},vnode:Object,vnodeRef:Object,renderKey:String,trackRootNodes:Boolean},setup(t){const n=t.renderKey,r=t.route,s={};for(const o in t.route)Object.defineProperty(s,o,{get:()=>n===t.renderKey?t.route[o]:r[o],enumerable:!0});return jt(on,Ze(s)),()=>t.vnode?Oe(t.vnode,{ref:t.vnodeRef}):t.vnode}}),Vy=lu(),Sa=new WeakMap,Ky=Wt({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t,slots:n,expose:r}){const s=ve(),o=nt(),i=Ce(on,null);let a;r({pageRef:o});const l=Ce(Ec,null);let f;const c=s.deferHydration();let u=!1,h=!1,d=0;if(s.isHydrating){const y=s.hooks.hookOnce("app:error",c),C=Ve().beforeEach(()=>{y(),C()})}e.pageKey&&Rt(()=>e.pageKey,(y,C)=>{y!==C&&s.callHook("page:loading:start")});let m=!1;{const y=Ve().beforeResolve(()=>{m=!1});fr(()=>{y(),c()})}return()=>Oe(Yc,{name:e.name,route:e.route,...t},{default:y=>{const C=Wy(i,y.route,y.Component),E=i&&i.matched.length===y.route.matched.length;if(!y.Component){if(f&&!E&&!Ls(f))return f;c();return}if(f&&l&&!Ls(f)&&!l.isCurrent(y.route))return f;if(C&&i&&(!l||l?.isCurrent(i)))return(E||f)&&!Ls(f)?f:null;const v=fo(y,e.pageKey),p=qy(i,y.route,y.Component);!s.isHydrating&&a===v&&!p&&xt(()=>{m||(m=!0,s.callHook("page:loading:end"))}),u&&a!==v&&h&&d++,a=v;const _=!!(e.transition??y.route.meta.pageTransition??Bi),w=_&&eu([e.transition,y.route.meta.pageTransition,Bi,{onAfterLeave(){s["~transitionFinish"]?.(),delete s["~transitionFinish"],delete s["~transitionPromise"],s.callHook("page:transition:finish",y.Component)}}]),k=e.keepalive??y.route.meta.keepalive??Jh;return f=Zc(_&&w,xm(k,Oe(Io,{key:d,suspensible:!0,onPending:()=>{u=!0,_&&!s["~transitionPromise"]&&(s["~transitionPromise"]=new Promise(P=>{s["~transitionFinish"]=P})),s.callHook("page:start",y.Component)},onResolve:async()=>{u=!1,h=!0;try{await xt(),s._route.sync?.(),await s.callHook("page:finish",y.Component),!m&&!p&&(m=!0,await s.callHook("page:loading:end"))}finally{c()}}},{default:()=>{const P={key:v||void 0,vnode:n.default?zy(n.default,y):y.Component,route:y.route,renderKey:v||void 0,trackRootNodes:_,vnodeRef:o};if(!k)return Oe(Vy,P);const D=y.Component.type,R=D;let T=Sa.get(R);return T||(T=lu(D.name||D.__name),Sa.set(R,T)),Oe(T,P)}}))).default(),f}})}});function Wy(e,t,n){if(!e)return!1;const r=t.matched.findIndex(i=>i.components?.default===n?.type);if(r===-1)return!1;const s=t.matched.slice(0,r).filter(i=>i.components?.default);if(!s.length)return!1;const o=e.matched.filter(i=>i.components?.default);return s.some((i,a)=>i.components?.default!==o[a]?.components?.default)||n&&fo({route:t,Component:n})!==fo({route:e,Component:n})}function qy(e,t,n){return e?t.matched.findIndex(s=>s.components?.default===n?.type)Oe(Nt[e.name],e.layoutProps,t.slots)}}),Jy={name:{type:[String,Boolean,Object],default:null},fallback:{type:[String,Object],default:null}},Xy=Wt({name:"NuxtLayout",inheritAttrs:!1,props:Jy,setup(e,t){const n=ve(),r=Ce(on),o=!r||r===jo()?Fc():r,i=Re(()=>{let c=ae(e.name)??o?.meta.layout??cu(o?.path).appLayout??"default";return c&&!(c in Nt)&&e.fallback&&(c=ae(e.fallback)),c}),a=Ut();t.expose({layoutRef:a});const l=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",l),u=Ve().beforeEach(()=>{c(),u()})}let f;return()=>{const u=!!i.value&&i.value in Nt&&!!(o?.meta.layoutTransition??Fi),h=u&&eu([o?.meta.layoutTransition,Fi,{onBeforeLeave(){n["~transitionPromise"]=new Promise(m=>{n["~transitionFinish"]=m})},onAfterLeave(){n["~transitionFinish"]?.(),delete n["~transitionFinish"],delete n["~transitionPromise"]}}]),d=f;return f=i.value,Zc(h,{default:()=>Oe(Io,{suspensible:!0,onResolve:async()=>{await xt(l)}},{default:()=>Oe(Yy,{layoutProps:zl(t.attrs,o.meta.layoutProps??{},{ref:a}),key:i.value||void 0,name:i.value,shouldProvide:!e.name,isRenderingNewLayout:m=>m!==d&&m===i.value,hasTransition:u},t.slots)})}).default()}}}),Yy=Wt({name:"NuxtLayoutProvider",inheritAttrs:!1,props:{name:{type:[String,Boolean]},layoutProps:{type:Object},hasTransition:{type:Boolean},shouldProvide:{type:Boolean},isRenderingNewLayout:{type:Function,required:!0}},setup(e,t){const n=e.name;e.shouldProvide&&jt(Ec,{isCurrent:o=>n===!1||n===(o.meta.layout??cu(o.path).appLayout??"default")});const r=Ce(on);if(r&&r===jo()){const o=Fc(),i={};for(const a in o){const l=a;Object.defineProperty(i,l,{enumerable:!0,get:()=>e.isRenderingNewLayout(e.name)?o[l]:r[l]})}jt(on,Ze(i))}return()=>!n||typeof n=="string"&&!(n in Nt)?t.slots.default?.():Oe(Gy,{key:n,layoutProps:e.layoutProps,name:n},t.slots)}}),Qy=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Zy={};function e_(e,t){const n=Ky,r=Xy;return Ge(),ht(r,null,{default:Ao(()=>[ye(n)]),_:1})}const t_=Qy(Zy,[["render",e_]]),n_={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error,r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),a=void 0,c=s?Ir(()=>fe(()=>import("./BtEuBlBw.js"),__vite__mapDeps([43,41,44,45]),import.meta.url)):Ir(()=>fe(()=>import("./RjO_r9CD.js"),__vite__mapDeps([46,44,47]),import.meta.url));return(u,h)=>(Ge(),ht(ae(c),bu(Wl({status:ae(r),statusText:ae(o),statusCode:ae(r),statusMessage:ae(o),description:ae(i),stack:ae(a)})),null,16))}},r_={key:0},Ta={__name:"nuxt-root",setup(e){const t=()=>null,n=ve(),r=n.deferHydration();if(n.isHydrating){const c=n.hooks.hookOnce("app:error",r),u=Ve().beforeEach(()=>{c(),u()})}const s=!1;jt(on,jo()),n.hooks.callHookWith(c=>c.map(u=>u()),"vue:setup",[]);const o=cs(),i=!1,a=/bot\b|chrome-lighthouse|facebookexternalhit|google\b/i;function l(c,u,h){const d=n.vueApp.config.errorHandler;if(d&&!d.__nuxt_default)try{d(c,u,h)}catch(m){console.error("[nuxt] Error in `app.config.errorHandler`",m)}}ml((c,u,h)=>{if(n.hooks.callHook("vue:error",c,u,h)?.catch(d=>console.error("[nuxt] Error in `vue:error` hook",d)),a.test(navigator.userAgent))return n.hooks.callHook("app:error",c),console.error(`[nuxt] Not rendering error page for bot with user agent \`${navigator.userAgent}\`:`,c),!1;if(Tc(c)&&(c.fatal||c.unhandled))return n.runWithContext(()=>Zt(c)),l(c,u,h),!1});const f=!1;return(c,u)=>(Ge(),ht(Io,{onResolve:ae(r)},{default:Ao(()=>[ae(i)?(Ge(),Yf("div",r_)):ae(o)?(Ge(),ht(ae(n_),{key:1,error:ae(o)},null,8,["error"])):ae(f)?(Ge(),ht(ae(t),{key:2,context:ae(f)},null,8,["context"])):ae(s)?(Ge(),ht(vf(ae(s)),{key:3})):(Ge(),ht(ae(t_),{key:4}))]),_:1},8,["onResolve"]))}};let Ra;{let e;Ra=async function(){if(e)return e;const n=!!(window.__NUXT__?.serverRendered??document.getElementById("__NUXT_DATA__")?.dataset.ssr==="true"),r=n?Wd(Ta):Kd(Ta),s=tp({vueApp:r});async function o(i){await s.callHook("app:error",i),s.payload.error||=Ft(i)}o.__nuxt_default=!0,r.config.errorHandler=o,s.hook("app:suspense:resolve",()=>{r.config.errorHandler===o&&(r.config.errorHandler=void 0)}),!n&&Ui.id&&s.hook("app:suspense:resolve",()=>{document.getElementById(Ui.id)?.remove()});try{await sp(s,Uy)}catch(i){o(i)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Qh),await s.hooks.callHook("app:mounted",r),await xt()}catch(i){o(i)}return r},e=Ra().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Ut as $,xt as A,ko as B,u_ as C,jo as D,Rt as E,ke as F,ae as G,c_ as H,ht as I,ly as J,g_ as K,Yr as L,fs as M,l_ as N,d_ as O,qi as P,fr as Q,a_ as R,Wo as S,pd as T,wa as U,m_ as V,Oe as W,o_ as X,ic as Y,pp as Z,Qy as _,Kl as a,hp as a0,$y as a1,cc as a2,Dn as a3,Ys as a4,No as a5,bh as a6,Fr as a7,h_ as a8,Qa as a9,ge as aa,ye as b,Yf as c,ql as d,ve as e,Ic as f,Wt as g,ns as h,Ce as i,nu as j,Ve as k,Zf as l,f_ as m,Qr as n,Ge as o,s_ as p,$d as q,i_ as r,Dd as s,Su as t,p_ as u,Oi as v,Ao as w,nt as x,ot as y,Re as z}; diff --git a/apps/admin/.output/public/_nuxt/DzMPECf6.js b/apps/admin/.output/public/_nuxt/DzMPECf6.js deleted file mode 100644 index 287d2c2f..00000000 --- a/apps/admin/.output/public/_nuxt/DzMPECf6.js +++ /dev/null @@ -1 +0,0 @@ -import{g as F,B as I,c as a,p as n,H as T,a as e,F as C,r as M,q as P,v as b,l as H,t as d,m as z,n as A,s as j,x as u,y as q,z as R,o as i}from"./CCjf5Io-.js";import{u as G}from"./C-6Qe-lq.js";import{u as O}from"./DTVGNZEd.js";import"./42htcooJ.js";const Y={class:"flex items-center justify-between mb-5"},J={class:"flex items-center gap-3 mb-4"},K=["value"],Q={class:"bg-white rounded-xl shadow-sm border border-slate-100"},W={class:"overflow-x-auto"},X={class:"table table-zebra"},Z={key:0},ee={key:1},te={class:"font-mono text-sm font-medium"},le={class:"text-sm"},se={class:"badge badge-ghost badge-sm"},oe={class:"badge badge-sm badge-outline"},ne=["title"],ae={class:"text-sm text-slate-400"},ie={key:0},de={key:1,class:"text-slate-300"},re={key:0,class:"badge badge-success badge-sm text-white"},ue={key:1,class:"badge badge-ghost badge-sm"},be={class:"text-right"},me={class:"inline-flex gap-1"},pe=["onClick"],ce=["onClick"],ve={class:"flex items-center gap-3 mb-5"},fe={class:"text-lg font-semibold text-slate-800"},ge={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},xe={class:"grid grid-cols-2 gap-4"},ye={class:"form-control mb-4"},we=["readonly"],_e={class:"text-xs text-slate-400 mt-1"},he={class:"form-control mb-4"},ke={class:"form-control mb-4"},Ce=["value"],Me={class:"form-control mb-4"},Pe={class:"form-control mb-4"},Ve={class:"form-control mb-4"},Se={class:"form-control mb-4"},Ue={class:"form-control mb-6"},Te={class:"label cursor-pointer justify-start gap-3"},Le={class:"flex gap-3"},De=["disabled"],Ie=F({__name:"mcpconfig",setup(Ee){const f=[{value:1,label:"中国"},{value:2,label:"美国"},{value:3,label:"东亚"},{value:4,label:"东南亚"},{value:5,label:"南亚"},{value:6,label:"中东"},{value:7,label:"欧洲"},{value:8,label:"俄罗斯"},{value:9,label:"非洲"},{value:10,label:"南美"},{value:11,label:"北美"},{value:12,label:"大洋洲"},{value:13,label:"巴西"},{value:14,label:"印度"}];function L(o){const t=Number(o)||0,l=f.find(k=>k.value===t);return l?l.label:t===0?"通用":"区域"+t}const D={0:"HTTP",1:"SSE"};function E(o){const t=Number(o)||0;return D[t]||String(o??"HTTP")}const{webApi:g}=G(),{success:V,error:x,warn:N}=O(),p=u("list"),c=u([]),y=u(!1),w=u(!1),r=u(!1),m=u(1),_=u(""),s=q({id:"",name:"",region:1,type:0,url:"",tools:"",description:"",enable:!0}),S=R(()=>{const o=_.value.trim().toLowerCase();return o?c.value.filter(t=>((t.id||"")+(t.name||"")).toLowerCase().includes(o)):c.value});async function v(){y.value=!0;try{const o=await g("getmcpservers",{region:m.value});c.value=o?.servers??[]}catch(o){x(o?.message??"获取 MCP 服务失败"),c.value=[]}finally{y.value=!1}}function h(){p.value="list",v()}function U(o){o?(r.value=!0,s.id=o.id||"",s.name=o.name||"",s.region=o.region||1,s.type=o.type!=null?o.type:0,s.url=o.url||"",s.tools=o.tools||"",s.description=o.description||"",s.enable=!!o.enable):(r.value=!1,s.id="",s.name="",s.region=m.value>0?m.value:1,s.type=0,s.url="",s.tools="",s.description="",s.enable=!0),p.value="form"}async function $(){const o={id:s.id.trim(),name:s.name.trim(),region:Number(s.region)||0,type:Number(s.type)||0,url:s.url.trim(),tools:s.tools.trim(),description:s.description.trim(),enable:s.enable};if(!o.id){N("服务ID 必填");return}w.value=!0;try{await g(r.value?"updatemcpserver":"addmcpserver",o),V("保存成功"),h()}catch(t){x(t?.message??"保存失败")}finally{w.value=!1}}function B(o){window.confirm(`确定删除 MCP 服务 "${o}" 吗?`)&&g("delmcpserver",{ids:[o]}).then(()=>{V("删除成功"),v()}).catch(t=>x(t?.message??"删除失败"))}return I(v),(o,t)=>(i(),a("div",null,[n(e("div",null,[e("div",Y,[t[13]||(t[13]=e("div",null,[e("h2",{class:"text-lg font-semibold text-slate-800"},"MCP 配置"),e("p",{class:"text-xs text-slate-400 mt-1"},"MCP(模型上下文协议)服务器,按区域分组,所有应用共享。修改后各服务约 10 分钟内自动同步。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",onClick:t[0]||(t[0]=l=>U())},"+ 新增 MCP 服务")]),e("div",J,[t[15]||(t[15]=e("span",{class:"text-sm text-slate-500"},"区域筛选",-1)),n(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm",onChange:v},[t[14]||(t[14]=e("option",{value:0},"全部区域",-1)),(i(),a(C,null,M(f,l=>e("option",{key:l.value,value:l.value},d(l.label),9,K)),64))],544),[[P,m.value,void 0,{number:!0}]]),n(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>_.value=l),class:"input input-bordered input-sm w-48",placeholder:"按ID/名称搜索"},null,512),[[b,_.value]])]),e("div",Q,[e("div",W,[e("table",X,[t[18]||(t[18]=e("thead",null,[e("tr",null,[e("th",null,"服务ID"),e("th",null,"名称"),e("th",null,"区域"),e("th",null,"类型"),e("th",null,"地址"),e("th",null,"工具"),e("th",null,"状态"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[y.value?(i(),a("tr",Z,[...t[16]||(t[16]=[e("td",{colspan:"8",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):S.value.length?H("",!0):(i(),a("tr",ee,[...t[17]||(t[17]=[e("td",{colspan:"8",class:"text-center text-slate-400 py-8"},"暂无 MCP 服务",-1)])])),(i(!0),a(C,null,M(S.value,l=>(i(),a("tr",{key:l.id},[e("td",te,d(l.id||""),1),e("td",le,d(l.name||""),1),e("td",null,[e("span",se,d(L(l.region)),1)]),e("td",null,[e("span",oe,d(E(l.type)),1)]),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:l.url||""},d(l.url||""),9,ne),e("td",ae,[l.tools&&l.tools.trim()?(i(),a("span",ie,d(l.tools),1)):(i(),a("span",de,"全部"))]),e("td",null,[l.enable?(i(),a("span",re,"启用")):(i(),a("span",ue,"停用"))]),e("td",be,[e("div",me,[e("button",{class:"btn btn-ghost btn-xs",onClick:k=>U(l)},"编辑",8,pe),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:k=>B(l.id)},"删除",8,ce)])])]))),128))])])])])],512),[[T,p.value==="list"]]),n(e("div",null,[e("div",ve,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[3]||(t[3]=l=>h())},"← 返回列表"),e("h2",fe,d(r.value?"编辑 MCP 服务":"新增 MCP 服务"),1)]),e("div",ge,[e("form",{onSubmit:z($,["prevent"])},[e("div",xe,[e("div",ye,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"服务ID *")],-1)),n(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.id=l),type:"text",class:A(["input input-bordered w-full",{"bg-slate-100":r.value}]),readonly:r.value,required:"",placeholder:"如 gaode_map"},null,10,we),[[b,s.id]]),e("span",_e,d(r.value?"编辑模式下不可修改":"唯一标识,创建后不可修改"),1)]),e("div",he,[t[20]||(t[20]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"名称")],-1)),n(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.name=l),type:"text",class:"input input-bordered w-full"},null,512),[[b,s.name]])]),e("div",ke,[t[21]||(t[21]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"区域 *")],-1)),n(e("select",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.region=l),class:"select select-bordered w-full"},[(i(),a(C,null,M(f,l=>e("option",{key:l.value,value:l.value},d(l.label),9,Ce)),64))],512),[[P,s.region,void 0,{number:!0}]])]),e("div",Me,[t[23]||(t[23]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"类型")],-1)),n(e("select",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.type=l),class:"select select-bordered w-full"},[...t[22]||(t[22]=[e("option",{value:0},"HTTP",-1),e("option",{value:1},"SSE",-1)])],512),[[P,s.type,void 0,{number:!0}]])])]),e("div",Pe,[t[24]||(t[24]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"服务地址 (url)")],-1)),n(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.url=l),type:"text",class:"input input-bordered w-full font-mono text-sm",placeholder:"https://..."},null,512),[[b,s.url]])]),e("div",Ve,[t[25]||(t[25]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"启用工具 (tools)")],-1)),n(e("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>s.tools=l),type:"text",class:"input input-bordered w-full",placeholder:"逗号分隔,留空表示全部启用"},null,512),[[b,s.tools]])]),e("div",Se,[t[26]||(t[26]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),n(e("input",{"onUpdate:modelValue":t[10]||(t[10]=l=>s.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[b,s.description]])]),e("div",Ue,[e("label",Te,[n(e("input",{"onUpdate:modelValue":t[11]||(t[11]=l=>s.enable=l),type:"checkbox",class:"toggle toggle-primary"},null,512),[[j,s.enable]]),t[27]||(t[27]=e("span",{class:"label-text font-medium"},"启用该服务",-1))])]),e("div",Le,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[12]||(t[12]=l=>h())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:w.value},"保存",8,De)])],32)])],512),[[T,p.value==="form"]])]))}});export{Ie as default}; diff --git a/apps/admin/.output/public/_nuxt/BhbTh2Nc.js b/apps/admin/.output/public/_nuxt/Ge7z-opa.js similarity index 99% rename from apps/admin/.output/public/_nuxt/BhbTh2Nc.js rename to apps/admin/.output/public/_nuxt/Ge7z-opa.js index 3c432f1e..f65c1088 100644 --- a/apps/admin/.output/public/_nuxt/BhbTh2Nc.js +++ b/apps/admin/.output/public/_nuxt/Ge7z-opa.js @@ -1 +1 @@ -import{g as W,B as X,c as r,a as t,p as a,q as Q,F,r as N,H as T,t as l,l as Z,m as tt,v as b,s as et,x as i,y as B,o as u}from"./CCjf5Io-.js";import{u as st}from"./C-6Qe-lq.js";import{u as nt}from"./DTVGNZEd.js";import"./42htcooJ.js";const ot={class:"space-y-6"},lt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-4"},at={class:"flex items-end gap-3 flex-wrap"},dt={class:"form-control"},rt=["value"],it={class:"form-control"},ut=["disabled"],ct={class:"bg-white rounded-xl shadow-sm border border-slate-100"},mt={class:"overflow-x-auto"},bt={class:"table table-zebra"},pt={key:0},vt={key:1},ft={colspan:"9",class:"text-center text-slate-400 py-8"},xt={class:"font-mono text-base font-bold text-indigo-700"},gt={class:"text-sm"},wt={class:"text-sm"},ht={class:"text-sm text-slate-500"},yt={class:"text-sm"},kt={class:"text-sm"},_t={class:"text-sm"},Ct={key:0,class:"badge badge-success badge-sm text-white"},Vt={key:1,class:"badge badge-ghost badge-sm"},Mt={class:"flex gap-1"},Ut=["onClick"],Dt=["onClick"],Qt=["onClick"],Ft=["onClick"],Nt={class:"flex items-center gap-3 mb-5"},Tt={class:"text-lg font-semibold text-slate-800"},qt={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Lt={class:"form-control mb-4"},St=["value"],Bt={class:"form-control mb-4"},Et={class:"grid grid-cols-3 gap-3 mb-4"},$t={class:"form-control"},Rt={class:"form-control"},jt={class:"form-control"},It={class:"grid grid-cols-2 gap-3 mb-4"},Ht={class:"form-control"},Pt={class:"form-control"},zt={class:"form-control mb-6"},At={class:"label cursor-pointer justify-start gap-3"},Yt={class:"modal-box max-w-md"},Gt={class:"flex flex-col items-center gap-4"},Jt={class:"text-center"},Kt={class:"font-mono text-2xl font-bold text-indigo-700 tracking-widest"},Ot="https://cdn.jsdelivr.net/gh/davidshimjs/qrcodejs/qrcode.min.js",se=W({__name:"code",setup(Wt){const{webApi:c}=st(),{success:g,error:p,warn:w}=nt(),h=i("list"),C=i(!1),v=i(!1),m=i(0),V=i(-1),y=i([]),M=i([]),k=i([]),U=B({}),o=B({code:"",productid:0,remark:"",bindrewardvpitime:0,bindrewardtranslate:0,bindrewardmeeting:0,maxuses:0,expire:"",disabled:!1});function E(n){return n?new Date(n*1e3).toLocaleString():"永久"}function $(n){if(!n)return"";const e=new Date(n*1e3),s=d=>d<10?"0"+d:""+d;return e.getFullYear()+"-"+s(e.getMonth()+1)+"-"+s(e.getDate())+"T"+s(e.getHours())+":"+s(e.getMinutes())}function R(n){return n?Math.floor(new Date(n).getTime()/1e3):0}function j(n){return U[n.brandid]||(n.brandid?"品牌商#"+n.brandid:"-")}function I(n){const e=k.value.find(s=>s.id===n.productid);return e?e.devicename||"#"+n.productid:n.productid?"#"+n.productid:"-"}function _(){h.value="list",f()}function H(){_()}async function f(){C.value=!0;try{const n=await c("getfactorypubliccodes",{brandid:m.value,status:V.value});y.value=n?.codes??[]}catch(n){p(n?.message??"获取公码列表失败"),y.value=[]}finally{C.value=!1}}function q(n){if(!m.value){w("请先选择品牌商");return}n?(v.value=!0,o.code=n.code,o.productid=n.productid||0,o.remark=n.remark||"",o.bindrewardvpitime=n.bindrewardvpitime||0,o.bindrewardtranslate=n.bindrewardtranslate||0,o.bindrewardmeeting=n.bindrewardmeeting||0,o.maxuses=n.maxuses||0,o.expire=$(n.expiretime),o.disabled=n.status===1):(v.value=!1,o.code="",o.productid=0,o.remark="",o.bindrewardvpitime=0,o.bindrewardtranslate=0,o.bindrewardmeeting=0,o.maxuses=0,o.expire="",o.disabled=!1),h.value="form"}async function P(){const n={productid:Number(o.productid)||0,remark:o.remark,maxuses:Number(o.maxuses)||0,expiretime:R(o.expire),bindrewardvpitime:Number(o.bindrewardvpitime)||0,bindrewardtranslate:Number(o.bindrewardtranslate)||0,bindrewardmeeting:Number(o.bindrewardmeeting)||0};try{if(v.value)n.code=o.code,n.status=o.disabled?1:0,await c("updatefactorypubliccode",n),g("保存成功");else{n.brandid=m.value;const e=await c("createfactorypubliccode",n);g("新公码已生成:"+(e?.code?.code||""))}_()}catch(e){p(e?.message??"保存失败")}}async function z(n){const e=n.status===0?1:0;try{await c("updatefactorypubliccode",{code:n.code,productid:n.productid||0,remark:n.remark||"",status:e,maxuses:n.maxuses||0,expiretime:n.expiretime||0,bindrewardvpitime:n.bindrewardvpitime||0,bindrewardtranslate:n.bindrewardtranslate||0,bindrewardmeeting:n.bindrewardmeeting||0}),g(e===1?"已停用":"已启用"),f()}catch(s){p(s?.message??"操作失败")}}function A(n){window.confirm(`确定删除公码 "${n}" 吗?删除后该码无法再被领取(已领取记录保留)`)&&c("delfactorypubliccode",{code:n}).then(()=>{g("删除成功"),f()}).catch(e=>p(e?.message??"删除失败"))}const L=i(null),D=i(null),x=i("");function Y(){return new Promise((n,e)=>{const s=window;if(s.QRCode){n(s.QRCode);return}const d=document.createElement("script");d.src=Ot,d.onload=()=>n(s.QRCode),d.onerror=()=>e(new Error("二维码库加载失败")),document.head.appendChild(d)})}async function G(n){x.value=n,L.value?.showModal();let e;try{e=await Y()}catch{p("二维码库加载失败");return}const s=D.value;!s||!e||(s.innerHTML="",new e(s,{text:n,width:240,height:240,colorDark:"#1E293B",colorLight:"#FFFFFF",correctLevel:e.CorrectLevel.H}))}function S(){const n=D.value;if(!n)return"";const e=n.querySelector("canvas");if(e)return e.toDataURL("image/png");const s=n.querySelector("img");return s?s.src:""}function J(){const n=S();if(!n){w("二维码尚未生成");return}const e=document.createElement("a");e.href=n,e.download="publiccode_"+x.value+".png",document.body.appendChild(e),e.click(),document.body.removeChild(e)}function K(){const n=S();if(!n){w("二维码尚未生成");return}const e=window.open("","_blank");if(!e){w("浏览器拦截了打印窗口");return}e.document.write(""+x.value+'

'+x.value+"

新用户扫码领取奖励

+ + diff --git a/apps/admin/app/pages/appconfig.vue b/apps/admin/app/pages/appconfig.vue new file mode 100644 index 00000000..f333cc37 --- /dev/null +++ b/apps/admin/app/pages/appconfig.vue @@ -0,0 +1,256 @@ + + + diff --git a/apps/admin/app/pages/apps/[name].vue b/apps/admin/app/pages/apps/[name].vue index 0f9e703e..975a1dbd 100644 --- a/apps/admin/app/pages/apps/[name].vue +++ b/apps/admin/app/pages/apps/[name].vue @@ -157,7 +157,8 @@ const deployments = ref([]) const envs = ref([]) const loading = ref(false) -const tab = ref<'deps' | 'modules'>('deps') +// 支持 ?tab=modules 直达业务功能配置(渠道分发页的「去配置支付」跳这里) +const tab = ref<'deps' | 'modules'>(route.query.tab === 'modules' ? 'modules' : 'deps') const curDep = ref(0) const deployTab = ref<{ openNew: () => void } | null>(null) diff --git a/apps/admin/app/pages/calltranslate.vue b/apps/admin/app/pages/calltranslate.vue index ba2da05d..dd1dd0a1 100644 --- a/apps/admin/app/pages/calltranslate.vue +++ b/apps/admin/app/pages/calltranslate.vue @@ -1,152 +1,215 @@ diff --git a/apps/admin/app/pages/channels.vue b/apps/admin/app/pages/channels.vue new file mode 100644 index 00000000..1609c623 --- /dev/null +++ b/apps/admin/app/pages/channels.vue @@ -0,0 +1,501 @@ +\n
暂无可配置的业务模块。
\n \n \n \n\n\n\n\n\n","\n\n\n\n\n"],"names":["_ssrRenderList","_ssrRenderClass","_ssrInterpolate","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderAttrs","_mergeProps","_ssrRenderStyle"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"_name_-BbBzwp8c.js","sources":["../../../../../../../app/components/AppDeployTab.vue","../../../../../../../app/components/AppModuleTab.vue","../../../../../../../app/pages/apps/[name].vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n"],"names":["_ssrRenderList","_ssrRenderClass","_ssrInterpolate","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderAttrs","_mergeProps","_ssrRenderStyle"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-BbBzwp8c.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-BbBzwp8c.js.map.json new file mode 100644 index 00000000..0f3174f8 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-BbBzwp8c.js.map.json @@ -0,0 +1 @@ +{"file":"_name_-BbBzwp8c.js","mappings":"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","names":["_ssrRenderList","_ssrRenderClass","_ssrInterpolate","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderAttrs","_mergeProps","_ssrRenderStyle"],"sources":["../../../../../../../app/components/AppDeployTab.vue","../../../../../../../app/components/AppModuleTab.vue","../../../../../../../app/pages/apps/[name].vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-QnyK8Xx9.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-QnyK8Xx9.js.map.json deleted file mode 100644 index 45c2eda9..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-QnyK8Xx9.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"_name_-QnyK8Xx9.js","mappings":"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","names":["_ssrRenderList","_ssrRenderClass","_ssrInterpolate","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrLooseContain","_ssrLooseEqual","_ssrRenderAttrs","_mergeProps","_ssrRenderStyle"],"sources":["../../../../../../../app/components/AppDeployTab.vue","../../../../../../../app/components/AppModuleTab.vue","../../../../../../../app/pages/apps/[name].vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n"],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js deleted file mode 100644 index 838792e4..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js +++ /dev/null @@ -1,5 +0,0 @@ -const _name__vue_vue_type_style_index_0_scoped_3e1700b0_lang = '.hero[data-v-3e1700b0]{background:#fff;border:1px solid #eef2f7;border-radius:16px;padding:20px 22px;margin-bottom:16px;box-shadow:0 1px 2px #0f172a0a,0 4px 16px #0f172a08;display:flex;gap:18px;align-items:center;flex-wrap:wrap}.hero-logo[data-v-3e1700b0]{width:58px;height:58px;border-radius:15px;flex-shrink:0;color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);display:grid;place-items:center;font-weight:800;font-size:24px;box-shadow:0 8px 22px #4f46e54d}.hero-name[data-v-3e1700b0]{font-size:20px;font-weight:700;color:#1e293b;letter-spacing:-.015em;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.kpis[data-v-3e1700b0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:18px}.kpi[data-v-3e1700b0]{background:#fff;border:1px solid #eef2f7;border-radius:12px;padding:13px 15px;position:relative;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.kpi[data-v-3e1700b0]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#e2e8f0}.kpi.ok[data-v-3e1700b0]:before{background:#16a34a}.kpi.warn[data-v-3e1700b0]:before{background:#d97706}.kpi.accent[data-v-3e1700b0]:before{background:#4f46e5}.kpi-l[data-v-3e1700b0]{font-size:10.5px;color:#94a3b8;letter-spacing:.04em;text-transform:uppercase;font-weight:600}.kpi-v[data-v-3e1700b0]{font-size:22px;font-weight:700;color:#1e293b;margin-top:3px;letter-spacing:-.02em;font-family:SF Mono,Menlo,monospace;font-variant-numeric:tabular-nums}.kpi-v small[data-v-3e1700b0]{font-size:12px;color:#94a3b8;font-weight:500;margin-left:3px}.tablist[data-v-3e1700b0]{display:flex;gap:2px;border-bottom:1px solid #e2e8f0;margin-bottom:18px;overflow-x:auto}.tab[data-v-3e1700b0]{border:0;background:none;font-size:13.5px;color:#64748b;padding:10px 15px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;align-items:center;gap:6px}.tab[data-v-3e1700b0]:hover{color:#1e293b}.tab[aria-selected=true][data-v-3e1700b0]{color:#4338ca;border-bottom-color:#4f46e5;font-weight:600}.tab-n[data-v-3e1700b0]{font-size:10.5px;background:#f8fafc;border:1px solid #eef2f7;color:#64748b;border-radius:20px;padding:0 6px;font-family:SF Mono,Menlo,monospace}.tab[aria-selected=true] .tab-n[data-v-3e1700b0]{background:#eef2ff;color:#4338ca;border-color:transparent}.depbar[data-v-3e1700b0]{gap:10px;flex-wrap:wrap;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px;padding:10px 13px;margin-bottom:16px}.depbar[data-v-3e1700b0],.depchip[data-v-3e1700b0]{display:flex;align-items:center}.depchip[data-v-3e1700b0]{border:1px solid #e2e8f0;background:#fff;border-radius:20px;padding:4px 12px;font-size:12px;cursor:pointer;color:#334155;gap:6px}.depchip[data-v-3e1700b0]:hover{border-color:#0e7490}.depchip[aria-pressed=true][data-v-3e1700b0]{background:#ecfeff;border-color:#0e7490;color:#0e7490;font-weight:600}.depchip .dot[data-v-3e1700b0]{width:6px;height:6px;border-radius:50%;background:#16a34a}.depchip .dot.pending[data-v-3e1700b0]{background:#d97706}.chip[data-v-3e1700b0]{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:#f1f5f9;color:#64748b}.chip-ok[data-v-3e1700b0]{background:#dcfce7;color:#15803d}.chip-mono[data-v-3e1700b0]{font-family:SF Mono,Menlo,monospace;font-weight:600}'; -export { - _name__vue_vue_type_style_index_0_scoped_3e1700b0_lang as default -}; -//# sourceMappingURL=_name_-styles-3.mjs-7yUQQ2f9.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map deleted file mode 100644 index cd5595dd..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"_name_-styles-3.mjs-7yUQQ2f9.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map.json deleted file mode 100644 index 1d7739cd..00000000 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-7yUQQ2f9.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"file":"_name_-styles-3.mjs-7yUQQ2f9.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js new file mode 100644 index 00000000..c0624434 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js @@ -0,0 +1,5 @@ +const _name__vue_vue_type_style_index_0_scoped_865381f4_lang = '.hero[data-v-865381f4]{background:#fff;border:1px solid #eef2f7;border-radius:16px;padding:20px 22px;margin-bottom:16px;box-shadow:0 1px 2px #0f172a0a,0 4px 16px #0f172a08;display:flex;gap:18px;align-items:center;flex-wrap:wrap}.hero-logo[data-v-865381f4]{width:58px;height:58px;border-radius:15px;flex-shrink:0;color:#fff;background:linear-gradient(135deg,#4f46e5,#7c3aed);display:grid;place-items:center;font-weight:800;font-size:24px;box-shadow:0 8px 22px #4f46e54d}.hero-name[data-v-865381f4]{font-size:20px;font-weight:700;color:#1e293b;letter-spacing:-.015em;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.kpis[data-v-865381f4]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:18px}.kpi[data-v-865381f4]{background:#fff;border:1px solid #eef2f7;border-radius:12px;padding:13px 15px;position:relative;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.kpi[data-v-865381f4]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#e2e8f0}.kpi.ok[data-v-865381f4]:before{background:#16a34a}.kpi.warn[data-v-865381f4]:before{background:#d97706}.kpi.accent[data-v-865381f4]:before{background:#4f46e5}.kpi-l[data-v-865381f4]{font-size:10.5px;color:#94a3b8;letter-spacing:.04em;text-transform:uppercase;font-weight:600}.kpi-v[data-v-865381f4]{font-size:22px;font-weight:700;color:#1e293b;margin-top:3px;letter-spacing:-.02em;font-family:SF Mono,Menlo,monospace;font-variant-numeric:tabular-nums}.kpi-v small[data-v-865381f4]{font-size:12px;color:#94a3b8;font-weight:500;margin-left:3px}.tablist[data-v-865381f4]{display:flex;gap:2px;border-bottom:1px solid #e2e8f0;margin-bottom:18px;overflow-x:auto}.tab[data-v-865381f4]{border:0;background:none;font-size:13.5px;color:#64748b;padding:10px 15px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:flex;align-items:center;gap:6px}.tab[data-v-865381f4]:hover{color:#1e293b}.tab[aria-selected=true][data-v-865381f4]{color:#4338ca;border-bottom-color:#4f46e5;font-weight:600}.tab-n[data-v-865381f4]{font-size:10.5px;background:#f8fafc;border:1px solid #eef2f7;color:#64748b;border-radius:20px;padding:0 6px;font-family:SF Mono,Menlo,monospace}.tab[aria-selected=true] .tab-n[data-v-865381f4]{background:#eef2ff;color:#4338ca;border-color:transparent}.depbar[data-v-865381f4]{gap:10px;flex-wrap:wrap;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px;padding:10px 13px;margin-bottom:16px}.depbar[data-v-865381f4],.depchip[data-v-865381f4]{display:flex;align-items:center}.depchip[data-v-865381f4]{border:1px solid #e2e8f0;background:#fff;border-radius:20px;padding:4px 12px;font-size:12px;cursor:pointer;color:#334155;gap:6px}.depchip[data-v-865381f4]:hover{border-color:#0e7490}.depchip[aria-pressed=true][data-v-865381f4]{background:#ecfeff;border-color:#0e7490;color:#0e7490;font-weight:600}.depchip .dot[data-v-865381f4]{width:6px;height:6px;border-radius:50%;background:#16a34a}.depchip .dot.pending[data-v-865381f4]{background:#d97706}.chip[data-v-865381f4]{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:#f1f5f9;color:#64748b}.chip-ok[data-v-865381f4]{background:#dcfce7;color:#15803d}.chip-mono[data-v-865381f4]{font-family:SF Mono,Menlo,monospace;font-weight:600}'; +export { + _name__vue_vue_type_style_index_0_scoped_865381f4_lang as default +}; +//# sourceMappingURL=_name_-styles-3.mjs-Uy9b9kOk.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map new file mode 100644 index 00000000..d35daf2c --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"_name_-styles-3.mjs-Uy9b9kOk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map.json new file mode 100644 index 00000000..94356e7d --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles-3.mjs-Uy9b9kOk.js.map.json @@ -0,0 +1 @@ +{"file":"_name_-styles-3.mjs-Uy9b9kOk.js","mappings":";","names":[],"sources":[],"sourcesContent":[],"version":3} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.DbbtUQpB.mjs b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.Dz82uZcJ.mjs similarity index 73% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.DbbtUQpB.mjs rename to apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.Dz82uZcJ.mjs index 3d3b20a9..85469bec 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.DbbtUQpB.mjs +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/_name_-styles.Dz82uZcJ.mjs @@ -1,6 +1,6 @@ import style_0 from "./_name_-styles-1.mjs-DV0K6DvJ.js"; import style_1 from "./_name_-styles-2.mjs-BXCS7H7R.js"; -import style_2 from "./_name_-styles-3.mjs-7yUQQ2f9.js"; +import style_2 from "./_name_-styles-3.mjs-Uy9b9kOk.js"; export default [ style_0, style_1, diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js new file mode 100644 index 00000000..79818f7b --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js @@ -0,0 +1,231 @@ +import { defineComponent, ref, reactive, computed, useSSRContext } from "vue"; +import { ssrRenderAttrs, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrRenderAttr, ssrInterpolate, ssrRenderStyle, ssrRenderClass, ssrRenderComponent } from "vue/server-renderer"; +import { u as useApi } from "./useApi-B-E5eLsI.js"; +import { u as useToast } from "./useToast-CS21XT61.js"; +import { L as LANG_OPTIONS } from "./useLangOptions-DMhiAuTa.js"; +import { _ as __nuxt_component_0 } from "./LangSelect-C_QPlcDf.js"; +import { _ as _export_sfc } from "../server.mjs"; +import "./useLoading-D4zrSa2m.js"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch/dist/node.mjs"; +import "#internal/nuxt/paths"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/hookable@6.1.1/node_modules/hookable/dist/index.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/unctx@2.5.0/node_modules/unctx/dist/index.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/h3-compat.mjs"; +import "pinia"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/defu@6.1.7/node_modules/defu/dist/defu.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ufo@1.6.4/node_modules/ufo/dist/index.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/perfect-debounce@2.1.0/node_modules/perfect-debounce/dist/index.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs"; +import "/Users/liwei/work/pr/starpivot/apps/admin/node_modules/.pnpm/klona@2.0.6/node_modules/klona/dist/index.mjs"; +const CAT_STT = 1; +const CAT_TTS = 2; +const CAT_MT = 3; +const CAT_AST = 4; +const CAT_LLM = 5; +const CAT_STS = 7; +const _sfc_main = /* @__PURE__ */ defineComponent({ + __name: "agents", + __ssrInlineRender: true, + setup(__props) { + const AGENT_TYPES = [ + { value: "chat", label: "对话", icon: "💬", hint: "STT → LLM → TTS 三段拼接", color: "#b45309", bg: "#fef9c3" }, + { value: "translate", label: "翻译", icon: "🧩", hint: "STT → MT → TTS 三段拼接", color: "#059669", bg: "#dcfce7" }, + { value: "sts-chat", label: "端到端对话", icon: "⚡", hint: "单个 STS 服务直接完成语音对话", color: "#be185d", bg: "#fce7f3" }, + { value: "ast-translate", label: "端到端翻译", icon: "🚀", hint: "单个 AST 服务直接完成语音翻译", color: "#c2410c", bg: "#fff7ed" } + ]; + const SLOTS = { + chat: [ + { key: "stt_svc_id", slot: "STT", label: "语音识别", cat: CAT_STT, color: "#1664ff" }, + { key: "llm_svc_id", slot: "LLM", label: "大语言模型", cat: CAT_LLM, color: "#b45309" }, + { key: "tts_svc_id", slot: "TTS", label: "语音合成", cat: CAT_TTS, color: "#7c3aed" } + ], + translate: [ + { key: "stt_svc_id", slot: "STT", label: "语音识别", cat: CAT_STT, color: "#1664ff" }, + { key: "mt_svc_id", slot: "MT", label: "机器翻译", cat: CAT_MT, color: "#059669" }, + { key: "tts_svc_id", slot: "TTS", label: "语音合成", cat: CAT_TTS, color: "#7c3aed" } + ], + "sts-chat": [{ key: "sts_svc_id", slot: "STS", label: "端到端语音对话", cat: CAT_STS, color: "#be185d" }], + "ast-translate": [{ key: "ast_svc_id", slot: "AST", label: "端到端语音翻译", cat: CAT_AST, color: "#f97316" }] + }; + function slotsOfType(t) { + return SLOTS[t] ?? []; + } + useApi(); + useToast(); + const scopeApp = ref(""); + const scopeApps = ref([]); + const agents2 = ref([]); + const allSvcs = ref([]); + const modalOpen = ref(false); + const isEditing = ref(false); + const submitting = ref(false); + function emptyForm() { + return { + app_name: "", + id: "", + name: "", + type: "translate", + description: "", + avatar_url: "", + enable: true, + stt_svc_id: "", + llm_svc_id: "", + tts_svc_id: "", + mt_svc_id: "", + sts_svc_id: "", + ast_svc_id: "", + system_prompt: "", + gender: 0, + greeting_enabled: false, + greeting_text: "", + support_langs: "", + default_lang: "", + voice_map: [], + sort: 0 + }; + } + const form = reactive(emptyForm()); + const isChatType = computed(() => form.type === "chat" || form.type === "sts-chat"); + const supportedLangOptions = computed(() => { + const codes = (form.support_langs || "").split(",").map((x) => x.trim()).filter(Boolean); + if (!codes.length) return LANG_OPTIONS; + return LANG_OPTIONS.filter((o) => codes.includes(o.code)); + }); + const grouped = computed( + () => AGENT_TYPES.map((t) => ({ + ...t, + type: t.value, + items: agents2.value.filter((a) => a.type === t.value).sort((a, b) => (b.sort || 0) - (a.sort || 0) || (a.name || "").localeCompare(b.name || "")) + })).filter((g) => g.items.length) + ); + function svcsByCat(cat) { + return allSvcs.value.filter( + (s) => s.enable && (s.categories || "").split(",").map(Number).includes(cat) + ); + } + function svcName(id) { + if (!id) return "未配置"; + const s = allSvcs.value.find((x) => x.id === id); + return s ? s.name : id; + } + function pipelineOf(a) { + return slotsOfType(a.type).map((s) => ({ slot: s.slot, color: s.color, id: a[s.key] })); + } + return (_ctx, _push, _parent, _attrs) => { + _push(`

Agent 配置

把已配置的第三方服务编排成可下发客户端的智能体。四种类型按需引用不同服务;通话翻译规则只能引用「翻译」与「端到端翻译」两类。

作用域
`); + if (!agents2.value.length) { + _push(`
🤖

当前作用域下还没有 Agent

先在「第三方服务配置」里配好服务,再来把它们组装成 Agent

`); + } else { + _push(``); + } + _push(``); + ssrRenderList(grouped.value, (g) => { + _push(`
${ssrInterpolate(g.icon)} ${ssrInterpolate(g.label)}${ssrInterpolate(g.hint)}·${ssrInterpolate(g.items.length)} 个
`); + ssrRenderList(g.items, (a) => { + _push(`
${ssrInterpolate(a.name || a.id)}
${ssrInterpolate(a.id)}
`); + if (a.enable) { + _push(`启用`); + } else { + _push(`停用`); + } + _push(`
`); + if (a.description) { + _push(`

${ssrInterpolate(a.description)}

`); + } else { + _push(``); + } + _push(`
`); + ssrRenderList(pipelineOf(a), (s) => { + _push(`${ssrInterpolate(s.slot)}: ${ssrInterpolate(svcName(s.id))}`); + }); + _push(`
`); + if (a.support_langs) { + _push(`
支持语言:${ssrInterpolate(a.support_langs)}
`); + } else { + _push(``); + } + _push(`
`); + }); + _push(`
`); + }); + _push(`

${ssrInterpolate(isEditing.value ? "编辑 Agent" : "新建 Agent")}

${ssrInterpolate(scopeApp.value || "全局默认")}
类型
`); + ssrRenderList(AGENT_TYPES, (t) => { + _push(``); + }); + _push(`
`); + if (isEditing.value) { + _push(`

类型创建后不可更改;需要换类型请新建一个 Agent。

`); + } else { + _push(``); + } + _push(`
基本信息
Agent ID *
名称 *
描述
头像 URL
排序(越大越靠前)
音色性别偏好
服务编排
`); + ssrRenderList(slotsOfType(form.type), (s, i) => { + _push(`
${ssrInterpolate(s.slot)}${ssrInterpolate(s.label)}
`); + if (i < slotsOfType(form.type).length - 1) { + _push(`→`); + } else { + _push(``); + } + _push(``); + }); + _push(`
语言与音色
支持语言(多选)`); + _push(ssrRenderComponent(__nuxt_component_0, { + modelValue: form.support_langs, + "onUpdate:modelValue": ($event) => form.support_langs = $event, + multiple: "" + }, null, _parent)); + _push(`
默认语言`); + _push(ssrRenderComponent(__nuxt_component_0, { + modelValue: form.default_lang, + "onUpdate:modelValue": ($event) => form.default_lang = $event, + options: supportedLangOptions.value + }, null, _parent)); + _push(`
音色覆盖(不填则用 TTS 服务自带默认音色)
`); + if (!form.voice_map.length) { + _push(`
未设置音色覆盖
`); + } else { + _push(``); + } + _push(``); + ssrRenderList(form.voice_map, (v, i) => { + _push(`
`); + }); + _push(`
`); + if (isChatType.value) { + _push(`
对话设定
系统提示词
`); + if (form.greeting_enabled) { + _push(``); + } else { + _push(``); + } + _push(`
`); + } else { + _push(``); + } + _push(`
`); + }; + } +}); +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/agents.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const agents = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-463df649"]]); +export { + agents as default +}; +//# sourceMappingURL=agents-sIgrTlD1.js.map diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map new file mode 100644 index 00000000..29868b69 --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"agents-sIgrTlD1.js","sources":["../../../../../../../app/pages/agents.vue"],"sourcesContent":["