From 6f7cfe3bb298a16ac506370ec916cab03e0283c2 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Sat, 8 Aug 2026 09:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=B8=BB=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 8 +- apps/admin/.output/nitro.json | 2 +- .../public/_nuxt/{CyqrlMkw.js => 0C81UldQ.js} | 2 +- .../public/_nuxt/2SfDgkhQ.js} | 2 +- .../public/_nuxt/{C-2gsgTH.js => BOeuA5fk.js} | 2 +- .../public/_nuxt/{C_VX9uKy.js => BqXDZ2AY.js} | 2 +- .../public/_nuxt/Bw873H05.js} | 2 +- .../public/_nuxt/{C2WfoPPr.js => C-IO5Zsk.js} | 2 +- .../public/_nuxt/C-NJnooU.js} | 2 +- .../public/_nuxt/C0oOyOZM.js} | 2 +- .../public/_nuxt/{OLpUuA7c.js => CDbX0LeJ.js} | 2 +- .../public/_nuxt/{mElhLwm2.js => CSjlBIfC.js} | 4 +- .../public/_nuxt/CUrW23xA.js} | 2 +- .../public/_nuxt/{C6twYRfy.js => CX31_Ko0.js} | 2 +- apps/admin/.output/public/_nuxt/CcYro5R2.js | 1 - .../public/_nuxt/{qig5Qp6S.js => CgE-6DOq.js} | 2 +- .../public/_nuxt/{l8H0VyaU.js => CmmnvhJf.js} | 2 +- .../public/_nuxt/CzMCfc-v.js} | 2 +- .../public/_nuxt/{DuRQSWLc.js => D1rGIbQk.js} | 2 +- apps/admin/.output/public/_nuxt/DEBoYqVm.js | 1 + .../public/_nuxt/DSJrmuXT.js} | 2 +- .../public/_nuxt/{BJhUngVd.js => DYuOZo9E.js} | 2 +- .../public/_nuxt/{CglQi8MB.js => Dc2nKS93.js} | 2 +- .../public/_nuxt/Dcjzwjeu.js} | 2 +- .../public/_nuxt/{Db4U27_j.js => DgF_fRjV.js} | 2 +- .../public/_nuxt/{BRt-3vKG.js => DlCThPMw.js} | 2 +- apps/admin/.output/public/_nuxt/DwmKnEeH.js | 1 - .../public/_nuxt/{CRsHkMZx.js => IkD0WKHv.js} | 2 +- .../public/_nuxt/{FVTAbpot.js => QmZ_XupB.js} | 2 +- .../public/_nuxt/{BqjD6jMG.js => SxV4xvpk.js} | 2 +- .../public/_nuxt/{G5UJCii2.js => WFs8pQQC.js} | 2 +- .../public/_nuxt/{BIXaKwU_.js => a5exfo9k.js} | 2 +- .../.output/public/_nuxt/agents.-kjpROzC.css | 1 - .../.output/public/_nuxt/agents.Ba_0YWqu.css | 1 + .../.output/public/_nuxt/builds/latest.json | 2 +- .../1ce432df-603d-4010-810b-770972167d80.json | 1 - .../24e01d06-12c5-401a-ad62-3d0500cb591f.json | 1 + .../public/_nuxt/{BuCQ8FwD.js => hXX2NJw2.js} | 2 +- apps/admin/.output/public/_nuxt/hv_H8fds.js | 1 + .../public/_nuxt/{B0TjgAkR.js => kX8FbUD0.js} | 2 +- .../public/_nuxt/meetingsvc.Cnu-3MbB.css | 1 - .../public/_nuxt/meetingsvc.DgYSEQUA.css | 1 + .../public/_nuxt/{Ddg4glGj.js => omoEWMdu.js} | 2 +- .../public/_nuxt/{DGSd_XG-.js => r_MxzKf2.js} | 2 +- .../public/_nuxt/{Bpb__dU6.js => w2gB9CpJ.js} | 2 +- .../public/_nuxt/xcfsMt0Y.js} | 2 +- ...gents-sIgrTlD1.mjs => agents-C12ARvzr.mjs} | 95 ++-- .../chunks/build/agents-C12ARvzr.mjs.map | 1 + .../chunks/build/agents-sIgrTlD1.mjs.map | 1 - .../chunks/build/agents-styles.DrcBfQcb.mjs | 8 - .../build/agents-styles.DrcBfQcb.mjs.map | 1 - .../chunks/build/agents-styles.GXWAwNko.mjs | 8 + .../build/agents-styles.GXWAwNko.mjs.map | 1 + .../chunks/build/client.precomputed.mjs | 2 +- ...c-Dcq0cJyO.mjs => meetingsvc-BKMj3MwH.mjs} | 170 ++++-- .../chunks/build/meetingsvc-BKMj3MwH.mjs.map | 1 + .../chunks/build/meetingsvc-Dcq0cJyO.mjs.map | 1 - .../build/meetingsvc-styles.CJmYxbsV.mjs | 8 + .../build/meetingsvc-styles.CJmYxbsV.mjs.map | 1 + .../build/meetingsvc-styles.CM1HF5Dg.mjs | 8 - .../build/meetingsvc-styles.CM1HF5Dg.mjs.map | 1 - .../.output/server/chunks/build/server.mjs | 4 +- .../.output/server/chunks/build/styles.mjs | 16 +- .../.output/server/chunks/nitro/nitro.mjs | 484 +++++++++--------- apps/admin/app/pages/agents.vue | 39 +- apps/admin/app/pages/meetingsvc.vue | 82 +++ .../client/_nuxt/{CyqrlMkw.js => 0C81UldQ.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/2SfDgkhQ.js} | 2 +- .../client/_nuxt/{C-2gsgTH.js => BOeuA5fk.js} | 2 +- .../client/_nuxt/{C_VX9uKy.js => BqXDZ2AY.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/Bw873H05.js} | 2 +- .../client/_nuxt/{C2WfoPPr.js => C-IO5Zsk.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/C-NJnooU.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/C0oOyOZM.js} | 2 +- .../client/_nuxt/{OLpUuA7c.js => CDbX0LeJ.js} | 2 +- .../client/_nuxt/{mElhLwm2.js => CSjlBIfC.js} | 4 +- .../nuxt/.nuxt/dist/client/_nuxt/CUrW23xA.js} | 2 +- .../client/_nuxt/{C6twYRfy.js => CX31_Ko0.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CcYro5R2.js | 1 - .../client/_nuxt/{qig5Qp6S.js => CgE-6DOq.js} | 2 +- .../client/_nuxt/{l8H0VyaU.js => CmmnvhJf.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/CzMCfc-v.js} | 2 +- .../client/_nuxt/{DuRQSWLc.js => D1rGIbQk.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/DEBoYqVm.js | 1 + .../nuxt/.nuxt/dist/client/_nuxt/DSJrmuXT.js} | 2 +- .../client/_nuxt/{BJhUngVd.js => DYuOZo9E.js} | 2 +- .../client/_nuxt/{CglQi8MB.js => Dc2nKS93.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/Dcjzwjeu.js} | 2 +- .../client/_nuxt/{Db4U27_j.js => DgF_fRjV.js} | 2 +- .../client/_nuxt/{BRt-3vKG.js => DlCThPMw.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/DwmKnEeH.js | 1 - .../client/_nuxt/{CRsHkMZx.js => IkD0WKHv.js} | 2 +- .../client/_nuxt/{FVTAbpot.js => QmZ_XupB.js} | 2 +- .../client/_nuxt/{BqjD6jMG.js => SxV4xvpk.js} | 2 +- .../client/_nuxt/{G5UJCii2.js => WFs8pQQC.js} | 2 +- .../client/_nuxt/{BIXaKwU_.js => a5exfo9k.js} | 2 +- .../dist/client/_nuxt/agents.-kjpROzC.css | 1 - .../dist/client/_nuxt/agents.Ba_0YWqu.css | 1 + .../client/_nuxt/{BuCQ8FwD.js => hXX2NJw2.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/hv_H8fds.js | 1 + .../client/_nuxt/{B0TjgAkR.js => kX8FbUD0.js} | 2 +- .../dist/client/_nuxt/meetingsvc.Cnu-3MbB.css | 1 - .../dist/client/_nuxt/meetingsvc.DgYSEQUA.css | 1 + .../client/_nuxt/{Ddg4glGj.js => omoEWMdu.js} | 2 +- .../client/_nuxt/{DGSd_XG-.js => r_MxzKf2.js} | 2 +- .../client/_nuxt/{Bpb__dU6.js => w2gB9CpJ.js} | 2 +- .../nuxt/.nuxt/dist/client/_nuxt/xcfsMt0Y.js} | 2 +- ...{agents-sIgrTlD1.js => agents-C12ARvzr.js} | 95 ++-- .../dist/server/_nuxt/agents-C12ARvzr.js.map | 1 + .../server/_nuxt/agents-C12ARvzr.js.map.json | 1 + .../dist/server/_nuxt/agents-sIgrTlD1.js.map | 1 - .../server/_nuxt/agents-sIgrTlD1.js.map.json | 1 - .../_nuxt/agents-styles-1.mjs-BzkXHx2D.js | 5 + .../_nuxt/agents-styles-1.mjs-BzkXHx2D.js.map | 1 + .../agents-styles-1.mjs-BzkXHx2D.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 - .../server/_nuxt/agents-styles.GXWAwNko.mjs | 4 + ...svc-Dcq0cJyO.js => meetingsvc-BKMj3MwH.js} | 170 ++++-- .../server/_nuxt/meetingsvc-BKMj3MwH.js.map | 1 + .../_nuxt/meetingsvc-BKMj3MwH.js.map.json | 1 + .../server/_nuxt/meetingsvc-Dcq0cJyO.js.map | 1 - .../_nuxt/meetingsvc-Dcq0cJyO.js.map.json | 1 - .../_nuxt/meetingsvc-styles-1.mjs-Bm4lU46E.js | 5 + .../meetingsvc-styles-1.mjs-Bm4lU46E.js.map | 1 + ...etingsvc-styles-1.mjs-Bm4lU46E.js.map.json | 1 + .../_nuxt/meetingsvc-styles-1.mjs-D7BiGYyo.js | 5 - .../meetingsvc-styles-1.mjs-D7BiGYyo.js.map | 1 - ...etingsvc-styles-1.mjs-D7BiGYyo.js.map.json | 1 - .../_nuxt/meetingsvc-styles.CJmYxbsV.mjs | 4 + .../_nuxt/meetingsvc-styles.CM1HF5Dg.mjs | 4 - .../.nuxt/dist/server/client.manifest.mjs | 2 +- .../.nuxt/dist/server/client.precomputed.mjs | 2 +- .../.cache/nuxt/.nuxt/dist/server/server.mjs | 4 +- .../.cache/nuxt/.nuxt/dist/server/styles.mjs | 16 +- .../.cache/nuxt/.nuxt/manifest/latest.json | 2 +- .../1ce432df-603d-4010-810b-770972167d80.json | 1 - .../24e01d06-12c5-401a-ad62-3d0500cb591f.json | 1 + .../node_modules/.cache/nuxt/.nuxt/nuxt.d.ts | 4 +- .../.cache/nuxt/.nuxt/nuxt.node.d.ts | 4 +- .../.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/services/modules/console/api_agent.go | 41 +- deploy/admin/dev-deploy.sh | 11 +- deploy/app/dev-deploy.sh | 11 +- deploy/console/dev-deploy.sh | 11 +- deploy/registry-profiles.sh | 8 +- 151 files changed, 919 insertions(+), 622 deletions(-) rename apps/admin/.output/public/_nuxt/{CyqrlMkw.js => 0C81UldQ.js} (71%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ncAT-iHw.js => .output/public/_nuxt/2SfDgkhQ.js} (97%) rename apps/admin/.output/public/_nuxt/{C-2gsgTH.js => BOeuA5fk.js} (95%) rename apps/admin/.output/public/_nuxt/{C_VX9uKy.js => BqXDZ2AY.js} (98%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bf3Eg9kO.js => .output/public/_nuxt/Bw873H05.js} (97%) rename apps/admin/.output/public/_nuxt/{C2WfoPPr.js => C-IO5Zsk.js} (84%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-lUY2ZC.js => .output/public/_nuxt/C-NJnooU.js} (98%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DG0IG_4u.js => .output/public/_nuxt/C0oOyOZM.js} (99%) rename apps/admin/.output/public/_nuxt/{OLpUuA7c.js => CDbX0LeJ.js} (80%) rename apps/admin/.output/public/_nuxt/{mElhLwm2.js => CSjlBIfC.js} (98%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/BMQvQYtl.js => .output/public/_nuxt/CUrW23xA.js} (96%) rename apps/admin/.output/public/_nuxt/{C6twYRfy.js => CX31_Ko0.js} (90%) delete mode 100644 apps/admin/.output/public/_nuxt/CcYro5R2.js rename apps/admin/.output/public/_nuxt/{qig5Qp6S.js => CgE-6DOq.js} (91%) rename apps/admin/.output/public/_nuxt/{l8H0VyaU.js => CmmnvhJf.js} (98%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/GZG--rps.js => .output/public/_nuxt/CzMCfc-v.js} (96%) rename apps/admin/.output/public/_nuxt/{DuRQSWLc.js => D1rGIbQk.js} (98%) create mode 100644 apps/admin/.output/public/_nuxt/DEBoYqVm.js rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/VVFxpwIU.js => .output/public/_nuxt/DSJrmuXT.js} (98%) rename apps/admin/.output/public/_nuxt/{BJhUngVd.js => DYuOZo9E.js} (99%) rename apps/admin/.output/public/_nuxt/{CglQi8MB.js => Dc2nKS93.js} (97%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DACw1I5K.js => .output/public/_nuxt/Dcjzwjeu.js} (98%) rename apps/admin/.output/public/_nuxt/{Db4U27_j.js => DgF_fRjV.js} (98%) rename apps/admin/.output/public/_nuxt/{BRt-3vKG.js => DlCThPMw.js} (99%) delete mode 100644 apps/admin/.output/public/_nuxt/DwmKnEeH.js rename apps/admin/.output/public/_nuxt/{CRsHkMZx.js => IkD0WKHv.js} (99%) rename apps/admin/.output/public/_nuxt/{FVTAbpot.js => QmZ_XupB.js} (83%) rename apps/admin/.output/public/_nuxt/{BqjD6jMG.js => SxV4xvpk.js} (98%) rename apps/admin/.output/public/_nuxt/{G5UJCii2.js => WFs8pQQC.js} (98%) rename apps/admin/.output/public/_nuxt/{BIXaKwU_.js => a5exfo9k.js} (97%) delete mode 100644 apps/admin/.output/public/_nuxt/agents.-kjpROzC.css create mode 100644 apps/admin/.output/public/_nuxt/agents.Ba_0YWqu.css delete mode 100644 apps/admin/.output/public/_nuxt/builds/meta/1ce432df-603d-4010-810b-770972167d80.json create mode 100644 apps/admin/.output/public/_nuxt/builds/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json rename apps/admin/.output/public/_nuxt/{BuCQ8FwD.js => hXX2NJw2.js} (98%) create mode 100644 apps/admin/.output/public/_nuxt/hv_H8fds.js rename apps/admin/.output/public/_nuxt/{B0TjgAkR.js => kX8FbUD0.js} (97%) delete mode 100644 apps/admin/.output/public/_nuxt/meetingsvc.Cnu-3MbB.css create mode 100644 apps/admin/.output/public/_nuxt/meetingsvc.DgYSEQUA.css rename apps/admin/.output/public/_nuxt/{Ddg4glGj.js => omoEWMdu.js} (94%) rename apps/admin/.output/public/_nuxt/{DGSd_XG-.js => r_MxzKf2.js} (99%) rename apps/admin/.output/public/_nuxt/{Bpb__dU6.js => w2gB9CpJ.js} (98%) rename apps/admin/{node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CvHBDjjq.js => .output/public/_nuxt/xcfsMt0Y.js} (98%) rename apps/admin/.output/server/chunks/build/{agents-sIgrTlD1.mjs => agents-C12ARvzr.mjs} (59%) create mode 100644 apps/admin/.output/server/chunks/build/agents-C12ARvzr.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/agents-sIgrTlD1.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs delete mode 100644 apps/admin/.output/server/chunks/build/agents-styles.DrcBfQcb.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs create mode 100644 apps/admin/.output/server/chunks/build/agents-styles.GXWAwNko.mjs.map rename apps/admin/.output/server/chunks/build/{meetingsvc-Dcq0cJyO.mjs => meetingsvc-BKMj3MwH.mjs} (53%) create mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-BKMj3MwH.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-Dcq0cJyO.mjs.map create mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs create mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-styles.CJmYxbsV.mjs.map delete mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs delete mode 100644 apps/admin/.output/server/chunks/build/meetingsvc-styles.CM1HF5Dg.mjs.map rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CyqrlMkw.js => 0C81UldQ.js} (71%) rename apps/admin/{.output/public/_nuxt/ncAT-iHw.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/2SfDgkhQ.js} (97%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C-2gsgTH.js => BOeuA5fk.js} (95%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C_VX9uKy.js => BqXDZ2AY.js} (98%) rename apps/admin/{.output/public/_nuxt/Bf3Eg9kO.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bw873H05.js} (97%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C2WfoPPr.js => C-IO5Zsk.js} (84%) rename apps/admin/{.output/public/_nuxt/D-lUY2ZC.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C-NJnooU.js} (98%) rename apps/admin/{.output/public/_nuxt/DG0IG_4u.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/C0oOyOZM.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{OLpUuA7c.js => CDbX0LeJ.js} (80%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{mElhLwm2.js => CSjlBIfC.js} (98%) rename apps/admin/{.output/public/_nuxt/BMQvQYtl.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CUrW23xA.js} (96%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{C6twYRfy.js => CX31_Ko0.js} (90%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CcYro5R2.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{qig5Qp6S.js => CgE-6DOq.js} (91%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{l8H0VyaU.js => CmmnvhJf.js} (98%) rename apps/admin/{.output/public/_nuxt/GZG--rps.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/CzMCfc-v.js} (96%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{DuRQSWLc.js => D1rGIbQk.js} (98%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DEBoYqVm.js rename apps/admin/{.output/public/_nuxt/VVFxpwIU.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DSJrmuXT.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BJhUngVd.js => DYuOZo9E.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CglQi8MB.js => Dc2nKS93.js} (97%) rename apps/admin/{.output/public/_nuxt/DACw1I5K.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Dcjzwjeu.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{Db4U27_j.js => DgF_fRjV.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BRt-3vKG.js => DlCThPMw.js} (99%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DwmKnEeH.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{CRsHkMZx.js => IkD0WKHv.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{FVTAbpot.js => QmZ_XupB.js} (83%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BqjD6jMG.js => SxV4xvpk.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{G5UJCii2.js => WFs8pQQC.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BIXaKwU_.js => a5exfo9k.js} (97%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.-kjpROzC.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/agents.Ba_0YWqu.css rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{BuCQ8FwD.js => hXX2NJw2.js} (98%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/hv_H8fds.js rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{B0TjgAkR.js => kX8FbUD0.js} (97%) delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/meetingsvc.Cnu-3MbB.css create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/meetingsvc.DgYSEQUA.css rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{Ddg4glGj.js => omoEWMdu.js} (94%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{DGSd_XG-.js => r_MxzKf2.js} (99%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/{Bpb__dU6.js => w2gB9CpJ.js} (98%) rename apps/admin/{.output/public/_nuxt/CvHBDjjq.js => node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/xcfsMt0Y.js} (98%) rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{agents-sIgrTlD1.js => agents-C12ARvzr.js} (61%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-sIgrTlD1.js.map delete 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-BzkXHx2D.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-BzkXHx2D.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-BzkXHx2D.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-styles-1.mjs-Dz2nKerr.js.map.json delete 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/agents-styles.GXWAwNko.mjs rename apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/{meetingsvc-Dcq0cJyO.js => meetingsvc-BKMj3MwH.js} (54%) create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-BKMj3MwH.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-BKMj3MwH.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-Dcq0cJyO.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-Dcq0cJyO.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-Bm4lU46E.js create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-Bm4lU46E.js.map create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-Bm4lU46E.js.map.json delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-D7BiGYyo.js delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-D7BiGYyo.js.map delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles-1.mjs-D7BiGYyo.js.map.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles.CJmYxbsV.mjs delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/meetingsvc-styles.CM1HF5Dg.mjs delete mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/1ce432df-603d-4010-810b-770972167d80.json create mode 100644 apps/admin/node_modules/.cache/nuxt/.nuxt/manifest/meta/24e01d06-12c5-401a-ad62-3d0500cb591f.json diff --git a/CLAUDE.md b/CLAUDE.md index cbf8d5d3..74cb2546 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -60,7 +60,8 @@ pnpm build # 产出 .output/(SSR) # 测试环境发布(在 deploy/<服务>/ 下,服务 = app | console | admin) cd deploy/console && ./dev-deploy.sh yunyan # 云雁测试环境(广州阿里云 8.138.86.223) -cd deploy/console && ./dev-deploy.sh # 不带参数 → 交互选环境:lingpu | yunyan +cd deploy/console && ./dev-deploy.sh along # 阿龙测试环境(阿里云 8.133.166.29) +cd deploy/console && ./dev-deploy.sh # 不带参数 → 交互选环境:lingpu | yunyan | along # 生产:先构建带版本号的镜像,再部署 cd deploy/console && ./prod-build.sh 0.2.1 yunyan # 第 2 个参数选公司(yunyan|lingpu),省略则交互选 @@ -70,6 +71,11 @@ cd deploy/console && ./prod-deploy.sh 0.2.1 yunyan # 第 2 个参数选生产 **镜像仓库按公司区分**,地址/账号统一在 [deploy/registry-profiles.sh](deploy/registry-profiles.sh)(换仓库只改这一处,各脚本 source 它): - `yunyan` → `registry.voitrans.net`(仓库实体在广州机 8.138.86.223) - `lingpu` → `registry.lingpu.net`(灵谱香港机) +- `along` → `ym-registry.voitrans.net`(仓库实体就在阿龙机 8.133.166.29 上,**账号是 `admin` 不是 `liwei`**);只用于测试环境,不在生产 `COMPANIES` 菜单里 + +测试环境档案在各 `dev-deploy.sh` 的 `env_profile()`: +- `along` → 8.133.166.29(阿里云,x86_64/Docker 24.0.9),目录 `/home/work/starpivot/{app,admin,console}`,密钥 `~/.ssh/along.pem` + 该机已自带 postgres:16 / redis:7 / mysql / NPM / gitea / docker-registry,配 `.env` 时优先复用,别另起一套 **生产镜像名也按公司区分**,映射同在 `registry-profiles.sh` 的 `prod_image_name()`(build 与 deploy 共用一份,防漂移): admin/console 两家都用 `starpivot-*`(与 `docker-compose.yml` 里写死的 image/container_name 一致); diff --git a/apps/admin/.output/nitro.json b/apps/admin/.output/nitro.json index 515259bd..4f61fd7f 100644 --- a/apps/admin/.output/nitro.json +++ b/apps/admin/.output/nitro.json @@ -1,5 +1,5 @@ { - "date": "2026-08-03T09:06:00.336Z", + "date": "2026-08-06T10:48:06.050Z", "preset": "node-server", "framework": { "name": "nuxt", diff --git a/apps/admin/.output/public/_nuxt/CyqrlMkw.js b/apps/admin/.output/public/_nuxt/0C81UldQ.js similarity index 71% rename from apps/admin/.output/public/_nuxt/CyqrlMkw.js rename to apps/admin/.output/public/_nuxt/0C81UldQ.js index 350e3f1f..49709044 100644 --- a/apps/admin/.output/public/_nuxt/CyqrlMkw.js +++ b/apps/admin/.output/public/_nuxt/0C81UldQ.js @@ -1 +1 @@ -import{_ as t,o,c as s,R as c}from"./mElhLwm2.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"./CSjlBIfC.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/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ncAT-iHw.js b/apps/admin/.output/public/_nuxt/2SfDgkhQ.js similarity index 97% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ncAT-iHw.js rename to apps/admin/.output/public/_nuxt/2SfDgkhQ.js index b2d262a7..01e9488d 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/ncAT-iHw.js +++ b/apps/admin/.output/public/_nuxt/2SfDgkhQ.js @@ -1 +1 @@ -import{_ as T}from"./DuRQSWLc.js";import{u as V}from"./FVTAbpot.js";import{g,o,c as n,F as u,r as f,n as N,a as t,t as a,G as r,I as A,w as C,l as m,T as M,_ as S,j as F,k as $,D,B as R,d as G,M as I,N as O,b as k,R as U,z as x}from"./mElhLwm2.js";import{u as H}from"./qig5Qp6S.js";const P={class:"toast toast-bottom toast-end z-50"},W=g({__name:"AppToast",setup(v){const{toasts:s}=V();function d(i){switch(i){case"success":return"alert-success";case"error":return"alert-error";case"warning":return"alert-warning";default:return"alert-info"}}return(i,b)=>(o(),n("div",P,[(o(!0),n(u,null,f(r(s),c=>(o(),n("div",{key:c.id,class:N(["alert",d(c.type)])},[t("span",null,a(c.msg),1)],2))),128))]))}}),q=Object.assign(W,{__name:"AppToast"}),J={key:0,class:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30 backdrop-blur-[1px]","aria-busy":"true",role:"alert"},K=g({__name:"AppLoading",setup(v){const{loading:s}=H();return(d,i)=>(o(),A(M,{name:"fade"},{default:C(()=>[r(s)?(o(),n("div",J,[...i[0]||(i[0]=[t("div",{class:"flex flex-col items-center gap-3 rounded-2xl bg-white px-10 py-7 shadow-xl"},[t("span",{class:"loading loading-spinner loading-lg text-primary"}),t("span",{class:"text-sm text-slate-600"},"处理中,请稍候…")],-1)])])):m("",!0)]),_:1}))}}),Q=Object.assign(S(K,[["__scopeId","data-v-c1ace0c2"]]),{__name:"AppLoading"}),X={class:"flex min-h-screen"},Y={class:"fixed top-0 left-0 bottom-0 z-30 overflow-y-auto flex flex-col",style:{width:"256px",background:"#1E293B"}},Z={style:{padding:"20px 20px 16px","border-bottom":"1px solid rgba(255,255,255,0.06)"}},tt={style:{display:"flex","align-items":"center",gap:"12px"}},et={style:{width:"40px",height:"40px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)","border-radius":"12px",display:"flex","align-items":"center","justify-content":"center","box-shadow":"0 6px 20px rgba(79,70,229,0.35)","flex-shrink":"0"}},st={style:{width:"22px",height:"22px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ot={style:{color:"#fff","font-weight":"700","font-size":"15px","letter-spacing":"-0.02em"}},nt={style:{padding:"12px 0",flex:"1"}},at={class:"icon",width:"18",height:"18",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},it=["d"],lt={style:{"margin-top":"auto",padding:"14px 18px","border-top":"1px solid rgba(255,255,255,0.06)"}},rt={style:{display:"flex","align-items":"center",gap:"10px"}},dt={style:{width:"32px",height:"32px","border-radius":"9px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)",color:"#fff",display:"flex","align-items":"center","justify-content":"center","font-weight":"700","flex-shrink":"0"}},ct={style:{"min-width":"0"}},pt={style:{color:"#E2E8F0","font-size":"13px","font-weight":"600","line-height":"1.2",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ut={style:{color:"#64748B","font-size":"11px","margin-top":"2px"}},_t={class:"flex-1",style:{"margin-left":"256px"}},xt={class:"bg-white shadow-sm sticky top-0 z-20 h-16 flex items-center justify-between px-6"},ht={class:"flex items-center gap-2 text-sm"},ft={class:"text-slate-700 font-medium"},mt={class:"flex items-center gap-2"},gt={class:"dropdown dropdown-end"},vt={tabindex:"0",class:"flex items-center gap-2 cursor-pointer hover:bg-slate-50 rounded-lg px-3 py-1.5"},bt={class:"avatar placeholder"},wt={class:"bg-indigo-600 text-white rounded-full w-8"},yt={class:"text-sm"},kt={class:"text-sm text-slate-700 leading-tight"},At={class:"text-[10px] text-slate-400"},Ct={class:"p-6"},Et=g({__name:"default",setup(v){const s=F(),d=$(),i=D();function b(){s.logout(),d.push("/")}const c=x(()=>({1:"超级管理员",2:"管理员",3:"代理",4:"运营"})[s.identity]??""),z=x(()=>({1:"超管",2:"管理员",3:"代理",4:"运营"})[s.identity]??""),w=x(()=>(s.account||"A").charAt(0).toUpperCase()),y=I;function j(l){return l.items.some(e=>s.hasAccess(e.id))}const B=x(()=>{if(i.meta?.title)return i.meta.title;for(const l of y){const e=l.items.find(h=>i.path.startsWith(h.to));if(e)return e.label}return"Console"});return R(()=>{s.token||d.push("/")}),(l,e)=>{const h=T,L=q,E=Q;return o(),n("div",X,[t("aside",Y,[t("div",Z,[t("div",tt,[t("div",et,[(o(),n("svg",st,[...e[0]||(e[0]=[t("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"},null,-1)])]))]),t("div",null,[t("div",ot,a(r(s).siteTitle||"Admin"),1),e[1]||(e[1]=t("div",{style:{color:"#64748B","font-size":"11px","font-weight":"500"}},"Admin Console · v1.0.1",-1))])])]),t("nav",nt,[(o(!0),n(u,null,f(r(y),_=>(o(),n(u,null,[j(_)?(o(),n("div",{key:_.label,class:"group-title"},a(_.label),1)):m("",!0),(o(!0),n(u,null,f(_.items,p=>(o(),n(u,null,[r(s).hasAccess(p.id)?(o(),A(h,{key:p.id,to:p.to,class:"sidebar-link","active-class":"active"},{default:C(()=>[(o(),n("svg",at,[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:p.icon},null,8,it)])),G(" "+a(p.label),1)]),_:2},1032,["to"])):m("",!0)],64))),256))],64))),256))]),t("div",lt,[t("div",rt,[t("div",dt,a(w.value),1),t("div",ct,[t("div",pt,a(r(s).account||"-"),1),t("div",ut,a(c.value),1)])])])]),t("main",_t,[t("header",xt,[t("div",ht,[e[2]||(e[2]=t("span",{class:"text-slate-400"},"首页",-1)),e[3]||(e[3]=t("span",{class:"text-slate-300"},"/",-1)),t("span",ft,a(B.value),1)]),t("div",mt,[e[4]||(e[4]=O('',1)),t("div",gt,[t("div",vt,[t("div",bt,[t("div",wt,[t("span",yt,a(w.value),1)])]),t("div",null,[t("div",kt,a(r(s).account),1),t("div",At,a(z.value),1)])]),t("ul",{tabindex:"0",class:"dropdown-content z-[1] menu p-2 shadow-lg bg-white rounded-lg w-44 border"},[t("li",null,[t("a",{class:"text-sm text-red-500 cursor-pointer",onClick:b},"退出登录")])])])])]),k(L),k(E),t("div",Ct,[U(l.$slots,"default")])])])}}});export{Et as default}; +import{_ as T}from"./D1rGIbQk.js";import{u as V}from"./QmZ_XupB.js";import{g,o,c as n,F as u,r as f,n as N,a as t,t as a,G as r,I as A,w as C,l as m,T as M,_ as S,j as F,k as $,D,B as R,d as G,M as I,N as O,b as k,R as U,z as x}from"./CSjlBIfC.js";import{u as H}from"./CgE-6DOq.js";const P={class:"toast toast-bottom toast-end z-50"},W=g({__name:"AppToast",setup(v){const{toasts:s}=V();function d(i){switch(i){case"success":return"alert-success";case"error":return"alert-error";case"warning":return"alert-warning";default:return"alert-info"}}return(i,b)=>(o(),n("div",P,[(o(!0),n(u,null,f(r(s),c=>(o(),n("div",{key:c.id,class:N(["alert",d(c.type)])},[t("span",null,a(c.msg),1)],2))),128))]))}}),q=Object.assign(W,{__name:"AppToast"}),J={key:0,class:"fixed inset-0 z-[100] flex items-center justify-center bg-black/30 backdrop-blur-[1px]","aria-busy":"true",role:"alert"},K=g({__name:"AppLoading",setup(v){const{loading:s}=H();return(d,i)=>(o(),A(M,{name:"fade"},{default:C(()=>[r(s)?(o(),n("div",J,[...i[0]||(i[0]=[t("div",{class:"flex flex-col items-center gap-3 rounded-2xl bg-white px-10 py-7 shadow-xl"},[t("span",{class:"loading loading-spinner loading-lg text-primary"}),t("span",{class:"text-sm text-slate-600"},"处理中,请稍候…")],-1)])])):m("",!0)]),_:1}))}}),Q=Object.assign(S(K,[["__scopeId","data-v-c1ace0c2"]]),{__name:"AppLoading"}),X={class:"flex min-h-screen"},Y={class:"fixed top-0 left-0 bottom-0 z-30 overflow-y-auto flex flex-col",style:{width:"256px",background:"#1E293B"}},Z={style:{padding:"20px 20px 16px","border-bottom":"1px solid rgba(255,255,255,0.06)"}},tt={style:{display:"flex","align-items":"center",gap:"12px"}},et={style:{width:"40px",height:"40px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)","border-radius":"12px",display:"flex","align-items":"center","justify-content":"center","box-shadow":"0 6px 20px rgba(79,70,229,0.35)","flex-shrink":"0"}},st={style:{width:"22px",height:"22px",color:"#fff"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},ot={style:{color:"#fff","font-weight":"700","font-size":"15px","letter-spacing":"-0.02em"}},nt={style:{padding:"12px 0",flex:"1"}},at={class:"icon",width:"18",height:"18",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},it=["d"],lt={style:{"margin-top":"auto",padding:"14px 18px","border-top":"1px solid rgba(255,255,255,0.06)"}},rt={style:{display:"flex","align-items":"center",gap:"10px"}},dt={style:{width:"32px",height:"32px","border-radius":"9px",background:"linear-gradient(135deg,#4F46E5,#7C3AED)",color:"#fff",display:"flex","align-items":"center","justify-content":"center","font-weight":"700","flex-shrink":"0"}},ct={style:{"min-width":"0"}},pt={style:{color:"#E2E8F0","font-size":"13px","font-weight":"600","line-height":"1.2",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},ut={style:{color:"#64748B","font-size":"11px","margin-top":"2px"}},_t={class:"flex-1",style:{"margin-left":"256px"}},xt={class:"bg-white shadow-sm sticky top-0 z-20 h-16 flex items-center justify-between px-6"},ht={class:"flex items-center gap-2 text-sm"},ft={class:"text-slate-700 font-medium"},mt={class:"flex items-center gap-2"},gt={class:"dropdown dropdown-end"},vt={tabindex:"0",class:"flex items-center gap-2 cursor-pointer hover:bg-slate-50 rounded-lg px-3 py-1.5"},bt={class:"avatar placeholder"},wt={class:"bg-indigo-600 text-white rounded-full w-8"},yt={class:"text-sm"},kt={class:"text-sm text-slate-700 leading-tight"},At={class:"text-[10px] text-slate-400"},Ct={class:"p-6"},Et=g({__name:"default",setup(v){const s=F(),d=$(),i=D();function b(){s.logout(),d.push("/")}const c=x(()=>({1:"超级管理员",2:"管理员",3:"代理",4:"运营"})[s.identity]??""),z=x(()=>({1:"超管",2:"管理员",3:"代理",4:"运营"})[s.identity]??""),w=x(()=>(s.account||"A").charAt(0).toUpperCase()),y=I;function j(l){return l.items.some(e=>s.hasAccess(e.id))}const B=x(()=>{if(i.meta?.title)return i.meta.title;for(const l of y){const e=l.items.find(h=>i.path.startsWith(h.to));if(e)return e.label}return"Console"});return R(()=>{s.token||d.push("/")}),(l,e)=>{const h=T,L=q,E=Q;return o(),n("div",X,[t("aside",Y,[t("div",Z,[t("div",tt,[t("div",et,[(o(),n("svg",st,[...e[0]||(e[0]=[t("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"},null,-1)])]))]),t("div",null,[t("div",ot,a(r(s).siteTitle||"Admin"),1),e[1]||(e[1]=t("div",{style:{color:"#64748B","font-size":"11px","font-weight":"500"}},"Admin Console · v1.0.1",-1))])])]),t("nav",nt,[(o(!0),n(u,null,f(r(y),_=>(o(),n(u,null,[j(_)?(o(),n("div",{key:_.label,class:"group-title"},a(_.label),1)):m("",!0),(o(!0),n(u,null,f(_.items,p=>(o(),n(u,null,[r(s).hasAccess(p.id)?(o(),A(h,{key:p.id,to:p.to,class:"sidebar-link","active-class":"active"},{default:C(()=>[(o(),n("svg",at,[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:p.icon},null,8,it)])),G(" "+a(p.label),1)]),_:2},1032,["to"])):m("",!0)],64))),256))],64))),256))]),t("div",lt,[t("div",rt,[t("div",dt,a(w.value),1),t("div",ct,[t("div",pt,a(r(s).account||"-"),1),t("div",ut,a(c.value),1)])])])]),t("main",_t,[t("header",xt,[t("div",ht,[e[2]||(e[2]=t("span",{class:"text-slate-400"},"首页",-1)),e[3]||(e[3]=t("span",{class:"text-slate-300"},"/",-1)),t("span",ft,a(B.value),1)]),t("div",mt,[e[4]||(e[4]=O('',1)),t("div",gt,[t("div",vt,[t("div",bt,[t("div",wt,[t("span",yt,a(w.value),1)])]),t("div",null,[t("div",kt,a(r(s).account),1),t("div",At,a(z.value),1)])]),t("ul",{tabindex:"0",class:"dropdown-content z-[1] menu p-2 shadow-lg bg-white rounded-lg w-44 border"},[t("li",null,[t("a",{class:"text-sm text-red-500 cursor-pointer",onClick:b},"退出登录")])])])])]),k(L),k(E),t("div",Ct,[U(l.$slots,"default")])])])}}});export{Et as default}; diff --git a/apps/admin/.output/public/_nuxt/C-2gsgTH.js b/apps/admin/.output/public/_nuxt/BOeuA5fk.js similarity index 95% rename from apps/admin/.output/public/_nuxt/C-2gsgTH.js rename to apps/admin/.output/public/_nuxt/BOeuA5fk.js index d1cc98fd..d910c901 100644 --- a/apps/admin/.output/public/_nuxt/C-2gsgTH.js +++ b/apps/admin/.output/public/_nuxt/BOeuA5fk.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"./mElhLwm2.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"./CSjlBIfC.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/C_VX9uKy.js b/apps/admin/.output/public/_nuxt/BqXDZ2AY.js similarity index 98% rename from apps/admin/.output/public/_nuxt/C_VX9uKy.js rename to apps/admin/.output/public/_nuxt/BqXDZ2AY.js index 65a2ba10..3f7cafcb 100644 --- a/apps/admin/.output/public/_nuxt/C_VX9uKy.js +++ b/apps/admin/.output/public/_nuxt/BqXDZ2AY.js @@ -1 +1 @@ -import{_ as Lt}from"./DuRQSWLc.js";import{u as it}from"./C6twYRfy.js";import{h as Nt,R as $t,a as Rt}from"./PN667bHc.js";import{g as ct,B as dt,o,c as l,a as s,t as r,l as F,G as Ot,b as K,w as lt,d as I,F as b,r as g,n as G,x as v,z as h,_ as ut,j as Vt,p as J,q as Z,y as rt,L as H}from"./mElhLwm2.js";import"./qig5Qp6S.js";const Tt={class:"ab-head"},qt={class:"ab-ico"},zt={class:"ab-title"},It={key:0,class:"ab-sub"},Ht={class:"ab-sub"},Gt={key:0,class:"ab-list"},Ut={class:"ab-name"},jt={key:0,class:"ab-chip"},Pt={class:"ab-chip ab-chip-scope"},Yt={class:"ab-msg"},Wt={key:1,class:"ab-streak"},Jt={key:0,class:"ab-more"},Zt=12,Kt=ct({__name:"SvcAlertBanner",setup(_t,{expose:C}){const{webApi:N}=it(),w=v([]),p=v(0),y=v(0),A=v(0),k=v(!1),x=v(!1),E=h(()=>Nt(A.value));function U(c){const m=c.app_name?c.app_name:"全局";return c.region?`${m} · ${$t[c.region]||"区域"+c.region}`:m}function $(c){return Rt(c)}async function M(){try{const c=await N("getsvcalerts",{limit:Zt});w.value=c.alerts||[],p.value=c.error_count||0,y.value=c.warn_count||0,A.value=c.last_run||0,x.value=p.value+y.value>w.value.length,k.value=p.value>0}catch{w.value=[],p.value=0,y.value=0}}return dt(M),C({load:M}),(c,m)=>{const R=Lt;return p.value+y.value>0?(o(),l("div",{key:0,class:G(["alert-banner",p.value>0?"lv-error":"lv-warn"])},[s("div",Tt,[s("span",qt,r(p.value>0?"🚨":"⚠️"),1),s("div",zt,[s("strong",null,r(p.value>0?`${p.value} 项第三方服务不可用`:`${y.value} 项第三方服务存在隐患`),1),p.value>0&&y.value>0?(o(),l("span",It,",另有 "+r(y.value)+" 项隐患",1)):F("",!0),s("span",Ht," · 最近巡检 "+r(Ot(E)),1)]),s("button",{class:"ab-btn",onClick:m[0]||(m[0]=d=>k.value=!k.value)},r(k.value?"收起":"展开详情"),1),K(R,{to:"/svcinspect",class:"ab-btn ab-btn-primary"},{default:lt(()=>[...m[1]||(m[1]=[I("前往巡检",-1)])]),_:1})]),k.value?(o(),l("div",Gt,[(o(!0),l(b,null,g(w.value,d=>(o(),l("div",{key:`${d.app_name}/${d.svc_id}/${d.region}`,class:"ab-item"},[s("span",{class:G(["ab-dot",d.status==="error"?"d-error":"d-warn"])},null,2),s("span",Ut,r(d.name||d.svc_id),1),d.provider?(o(),l("span",jt,r(d.provider),1)):F("",!0),s("span",Pt,r(U(d)),1),s("span",Yt,r($(d)),1),d.fail_streak>1?(o(),l("span",Wt,"连续失败 "+r(d.fail_streak)+" 次",1)):F("",!0)]))),128)),x.value?(o(),l("div",Jt,[I(" 仅显示前 "+r(w.value.length)+" 条,其余请到",1),K(R,{to:"/svcinspect",class:"ab-link"},{default:lt(()=>[...m[2]||(m[2]=[I("服务巡检",-1)])]),_:1}),m[3]||(m[3]=I("查看 ",-1))])):F("",!0)])):F("",!0)],2)):F("",!0)}}}),Qt=Object.assign(ut(Kt,[["__scopeId","data-v-3dd2fb7c"]]),{__name:"SvcAlertBanner"}),Xt={class:"panel p-4 mb-5"},te={class:"flex flex-wrap items-end gap-3"},ee={class:"form-control"},se=["value"],ae={class:"form-control"},ne=["value"],oe={class:"form-control"},le=["value"],re={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},ie={class:"body"},ce={class:"lbl"},de={class:"val"},ue={class:"today-wrap mb-8"},_e={class:"sec-title hero",style:{"margin-bottom":"16px"}},ve={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},pe={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},me={class:"today-card-top"},fe={class:"lbl"},ye={class:"val"},be={class:"foot"},ge={key:0,class:"delta up"},he={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},ke={class:"panel-head"},Ee=["stroke"],Fe=["d"],we={class:"font-semibold text-slate-700 text-sm"},xe={key:0,class:"ml-auto text-xs text-slate-400"},Ce={key:1,class:"ml-auto flex items-center gap-1"},De=["onClick"],Ae={class:"px-5 py-4"},Me={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},Se={class:"stat-label"},Be={class:"stat-val"},Le={key:0,style:{height:"170px","margin-top":"1rem"}},Ne=ct({__name:"dashboard",setup(_t){const C=Vt(),{webApi:N,consoleApi:w}=it(),p=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],y={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"]},A=[["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]],k=[["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]],x=[{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"]]}],E=h(()=>C.identity===3),U=h(()=>C.apps),$=h(()=>C.regions),M=h(()=>C.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),c=["new_user_count","active_user_count","qr_active_count"],m=h(()=>E.value?A.filter(t=>!c.includes(t[0])):A),R=h(()=>E.value?k.filter(t=>!c.includes(t[0])):k),d=h(()=>E.value?x.filter(t=>t.key!=="user"&&t.key!=="qrcode"):x),vt=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],u=rt({app:"",region:"",product:""}),O=v([]),j=v([]),pt=h(()=>E.value&&$.value.length?p.filter(t=>$.value.includes(t[0])).map(t=>({value:t[0],label:t[1]})):p.map(t=>({value:t[0],label:t[1]}))),Q=v({}),X=v({}),P=v({}),tt=v({}),et=v("实时"),Y=v({}),V=rt({});x.forEach(t=>{V[t.key]=30});function T(t){const e=t.getFullYear(),n=("0"+(t.getMonth()+1)).slice(-2),a=("0"+t.getDate()).slice(-2);return parseInt(e+n+a)}function mt(t){if(!t)return{start:0,end:0};const e=new Date,n=new Date;return n.setDate(n.getDate()-(t-1)),{start:T(n),end:T(e)}}function ft(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function yt(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),n=Math.floor(t%3600/60),a=t%60;return e>0?e+"时"+n+"分":n>0?n+"分"+a+"秒":a+"秒"}function W(t,e,n){return n?yt(t):ft(t,e)}function bt(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function gt(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function S(t){return y[t]||["📊","#f1f5f9","#94a3b8"]}function ht(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?X.value:Q.value,n=t[0]==="meet_second"||t[0]==="trade_second";return W(e[t[0]],t[2],n)}function kt(t){return W(P.value[t[0]],t[2],!!t[3])}function B(t){const e=gt(P.value[t[0]],tt.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const n=e>0?"up":e<0?"down":"flat",a=e>0?"▲":e<0?"▼":"—";return{type:n,arrow:a,abs:Math.abs(e).toFixed(1)}}function Et(t,e){return W((Y.value[t.key]||{})[e[0]],e[2],e[3])}function q(){const t={};return u.app!==""&&(t.app_id=u.app),u.region!==""&&(t.region=u.region),u.product!==""&&(t.product_id=parseInt(String(u.product))),t}function st(){const t={};return u.product!==""&&(t.product_id=parseInt(String(u.product))),t}async function D(t,e){try{return{code:0,data:await N(t,e)??{}}}catch{return null}}async function Ft(){const t=await D("getstatssummary",q());Q.value=t&&t.code===0&&t.data?t.data:{};const e=await D("getstatssummary",st());X.value=e&&e.code===0&&e.data?e.data:{}}async function wt(){const t=T(new Date),e=new Date;e.setDate(e.getDate()-1);const n=T(e),a=q();a.start_day=t,a.end_day=t;const i=q();i.start_day=n,i.end_day=n;const f=await D("getstatssummary",a);P.value=f&&f.code===0&&f.data?f.data:{};const _=await D("getstatssummary",i);tt.value=_&&_.code===0&&_.data?_.data:{};const z=new Date,St=("0"+(z.getMonth()+1)).slice(-2),Bt=("0"+z.getDate()).slice(-2);et.value=St+"-"+Bt+" 实时"}async function at(t){let e;if(t.key==="device")e=st();else{const _=mt(V[t.key]);e=q(),e.start_day=_.start,e.end_day=_.end}const n=await D("getstatssummary",e),a=n&&n.code===0&&n.data?n.data:{};if(Y.value={...Y.value,[t.key]:a},t.key==="device")return;const i=await D("getstatstrend",e),f=i&&i.code===0?i.data||[]:[];Dt(t,f)}function xt(t,e){V[t]=e;const n=x.find(a=>a.key===t);n&&at(n)}function nt(){Ft(),wt(),d.value.forEach(t=>at(t))}const ot={},L={};function Ct(t,e){e&&(ot[t]=e)}function Dt(t,e){const n=window.Chart,a=ot[t.key];if(!n||!a)return;const i=e.map(_=>bt(_.stat_day)),f=t.lines.map(_=>({label:_[1],data:e.map(z=>Number(z[_[0]])||0),borderColor:_[2],backgroundColor:_[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if(L[t.key]){L[t.key].data.labels=i,L[t.key].data.datasets=f,L[t.key].update();return}L[t.key]=new n(a,{type:"line",data:{labels:i,datasets:f},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 At(){if(E.value)O.value=U.value.map(t=>({value:t,label:t}));else try{const t=await w("apps/list",{}),e=Array.isArray(t)?t:[];O.value=e.map(n=>({value:n.name||"",label:n.name||"应用#"+n.id}))}catch{O.value=[]}try{const t=await N("getproducts",{});let e=t&&t.products?t.products:[];E.value&&M.value.length&&(e=e.filter(n=>M.value.includes(n.id))),j.value=e.map(n=>({value:n.id,label:(n.devicename||"产品#"+n.id)+" (#"+n.id+")"}))}catch{j.value=[]}}function Mt(){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 Mt(),await At(),nt()}),(t,e)=>{const n=Qt;return o(),l("div",null,[K(n),s("div",Xt,[s("div",te,[s("div",ee,[e[4]||(e[4]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),J(s("select",{"onUpdate:modelValue":e[0]||(e[0]=a=>u.app=a),class:"select select-bordered select-sm w-40"},[e[3]||(e[3]=s("option",{value:""},"全部应用",-1)),(o(!0),l(b,null,g(O.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,se))),128))],512),[[Z,u.app]])]),s("div",ae,[e[6]||(e[6]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),J(s("select",{"onUpdate:modelValue":e[1]||(e[1]=a=>u.region=a),class:"select select-bordered select-sm w-32"},[e[5]||(e[5]=s("option",{value:""},"全部区域",-1)),(o(!0),l(b,null,g(pt.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,ne))),128))],512),[[Z,u.region]])]),s("div",oe,[e[8]||(e[8]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),J(s("select",{"onUpdate:modelValue":e[2]||(e[2]=a=>u.product=a),class:"select select-bordered select-sm w-48"},[e[7]||(e[7]=s("option",{value:""},"全部产品",-1)),(o(!0),l(b,null,g(j.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,le))),128))],512),[[Z,u.product]])]),s("button",{class:"btn btn-primary btn-sm text-white",onClick:nt},"查询"),e[9]||(e[9]=s("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[14]||(e[14]=s("div",{class:"sec-title muted"},[s("span",{class:"bar",style:{background:"#cbd5e1"}}),s("h2",null,"累计数据"),s("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),s("div",re,[(o(!0),l(b,null,g(m.value,a=>(o(),l("div",{key:a[0],class:"cum-card"},[s("span",{class:"ico",style:H({background:S(a[0])[1]})},r(S(a[0])[0]),5),s("div",ie,[s("div",ce,r(a[1]),1),s("div",de,r(ht(a)),1)])]))),128))]),s("div",ue,[s("div",_e,[e[10]||(e[10]=s("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[11]||(e[11]=s("h2",null,"今日数据",-1)),s("span",ve,r(et.value),1),e[12]||(e[12]=s("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),s("div",pe,[(o(!0),l(b,null,g(R.value,a=>(o(),l("div",{key:a[0],class:"today-card"},[s("span",{class:"accent",style:H({background:S(a[0])[2]})},null,4),s("div",me,[s("span",fe,r(a[1]),1),s("span",{class:"ico",style:H({background:S(a[0])[1]})},r(S(a[0])[0]),5)]),s("div",ye,r(kt(a)),1),s("div",be,[B(a).type==="new"?(o(),l("span",ge,"新")):B(a).type!=="none"?(o(),l("span",{key:1,class:G(["delta",B(a).type])},r(B(a).arrow)+" "+r(B(a).abs)+"%",3)):F("",!0),e[13]||(e[13]=s("span",null,"较昨日",-1))])]))),128))])]),e[15]||(e[15]=s("div",{class:"sec-title"},[s("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),s("h2",null,"趋势分析"),s("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),s("div",he,[(o(!0),l(b,null,g(d.value,a=>(o(),l("div",{key:a.key,class:"panel"},[s("div",ke,[s("span",{class:"panel-dot",style:H({background:a.tint})},[(o(),l("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:a.color},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:a.icon},null,8,Fe)],8,Ee))],4),s("span",we,r(a.title),1),a.key==="device"?(o(),l("span",xe,"当前累计 · 无日期维度")):(o(),l("div",Ce,[(o(),l(b,null,g(vt,i=>s("button",{key:i[0],class:G(["tbtn",{"tbtn-on":i[0]===V[a.key]}]),onClick:f=>xt(a.key,Number(i[0]))},r(i[1]),11,De)),64))]))]),s("div",Ae,[s("div",Me,[(o(!0),l(b,null,g(a.stats,i=>(o(),l("div",{key:i[0],class:"stat-box"},[s("div",Se,r(i[1]),1),s("div",Be,r(Et(a,i)),1)]))),128))]),a.key!=="device"?(o(),l("div",Le,[s("canvas",{ref_for:!0,ref:i=>Ct(a.key,i)},null,512)])):F("",!0)])]))),128))])])}}}),qe=ut(Ne,[["__scopeId","data-v-0c034b8c"]]);export{qe as default}; +import{_ as Lt}from"./D1rGIbQk.js";import{u as it}from"./CX31_Ko0.js";import{h as Nt,R as $t,a as Rt}from"./PN667bHc.js";import{g as ct,B as dt,o,c as l,a as s,t as r,l as F,G as Ot,b as K,w as lt,d as I,F as b,r as g,n as G,x as v,z as h,_ as ut,j as Vt,p as J,q as Z,y as rt,L as H}from"./CSjlBIfC.js";import"./CgE-6DOq.js";const Tt={class:"ab-head"},qt={class:"ab-ico"},zt={class:"ab-title"},It={key:0,class:"ab-sub"},Ht={class:"ab-sub"},Gt={key:0,class:"ab-list"},Ut={class:"ab-name"},jt={key:0,class:"ab-chip"},Pt={class:"ab-chip ab-chip-scope"},Yt={class:"ab-msg"},Wt={key:1,class:"ab-streak"},Jt={key:0,class:"ab-more"},Zt=12,Kt=ct({__name:"SvcAlertBanner",setup(_t,{expose:C}){const{webApi:N}=it(),w=v([]),p=v(0),y=v(0),A=v(0),k=v(!1),x=v(!1),E=h(()=>Nt(A.value));function U(c){const m=c.app_name?c.app_name:"全局";return c.region?`${m} · ${$t[c.region]||"区域"+c.region}`:m}function $(c){return Rt(c)}async function M(){try{const c=await N("getsvcalerts",{limit:Zt});w.value=c.alerts||[],p.value=c.error_count||0,y.value=c.warn_count||0,A.value=c.last_run||0,x.value=p.value+y.value>w.value.length,k.value=p.value>0}catch{w.value=[],p.value=0,y.value=0}}return dt(M),C({load:M}),(c,m)=>{const R=Lt;return p.value+y.value>0?(o(),l("div",{key:0,class:G(["alert-banner",p.value>0?"lv-error":"lv-warn"])},[s("div",Tt,[s("span",qt,r(p.value>0?"🚨":"⚠️"),1),s("div",zt,[s("strong",null,r(p.value>0?`${p.value} 项第三方服务不可用`:`${y.value} 项第三方服务存在隐患`),1),p.value>0&&y.value>0?(o(),l("span",It,",另有 "+r(y.value)+" 项隐患",1)):F("",!0),s("span",Ht," · 最近巡检 "+r(Ot(E)),1)]),s("button",{class:"ab-btn",onClick:m[0]||(m[0]=d=>k.value=!k.value)},r(k.value?"收起":"展开详情"),1),K(R,{to:"/svcinspect",class:"ab-btn ab-btn-primary"},{default:lt(()=>[...m[1]||(m[1]=[I("前往巡检",-1)])]),_:1})]),k.value?(o(),l("div",Gt,[(o(!0),l(b,null,g(w.value,d=>(o(),l("div",{key:`${d.app_name}/${d.svc_id}/${d.region}`,class:"ab-item"},[s("span",{class:G(["ab-dot",d.status==="error"?"d-error":"d-warn"])},null,2),s("span",Ut,r(d.name||d.svc_id),1),d.provider?(o(),l("span",jt,r(d.provider),1)):F("",!0),s("span",Pt,r(U(d)),1),s("span",Yt,r($(d)),1),d.fail_streak>1?(o(),l("span",Wt,"连续失败 "+r(d.fail_streak)+" 次",1)):F("",!0)]))),128)),x.value?(o(),l("div",Jt,[I(" 仅显示前 "+r(w.value.length)+" 条,其余请到",1),K(R,{to:"/svcinspect",class:"ab-link"},{default:lt(()=>[...m[2]||(m[2]=[I("服务巡检",-1)])]),_:1}),m[3]||(m[3]=I("查看 ",-1))])):F("",!0)])):F("",!0)],2)):F("",!0)}}}),Qt=Object.assign(ut(Kt,[["__scopeId","data-v-3dd2fb7c"]]),{__name:"SvcAlertBanner"}),Xt={class:"panel p-4 mb-5"},te={class:"flex flex-wrap items-end gap-3"},ee={class:"form-control"},se=["value"],ae={class:"form-control"},ne=["value"],oe={class:"form-control"},le=["value"],re={class:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-8"},ie={class:"body"},ce={class:"lbl"},de={class:"val"},ue={class:"today-wrap mb-8"},_e={class:"sec-title hero",style:{"margin-bottom":"16px"}},ve={class:"tag",style:{color:"#0369a1",background:"#dbeafe"}},pe={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},me={class:"today-card-top"},fe={class:"lbl"},ye={class:"val"},be={class:"foot"},ge={key:0,class:"delta up"},he={class:"grid grid-cols-1 xl:grid-cols-2 gap-6"},ke={class:"panel-head"},Ee=["stroke"],Fe=["d"],we={class:"font-semibold text-slate-700 text-sm"},xe={key:0,class:"ml-auto text-xs text-slate-400"},Ce={key:1,class:"ml-auto flex items-center gap-1"},De=["onClick"],Ae={class:"px-5 py-4"},Me={class:"grid grid-cols-2 sm:grid-cols-3 gap-2.5"},Se={class:"stat-label"},Be={class:"stat-val"},Le={key:0,style:{height:"170px","margin-top":"1rem"}},Ne=ct({__name:"dashboard",setup(_t){const C=Vt(),{webApi:N,consoleApi:w}=it(),p=[["cn","中国"],["us","美国"],["ea","东亚"],["sea","东南亚"],["sa","南亚"],["me","中东"],["eu","欧洲"],["ru","俄罗斯"],["af","非洲"],["sam","南美"],["nam","北美"],["oc","大洋洲"],["br","巴西"],["in","印度"]],y={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"]},A=[["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]],k=[["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]],x=[{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"]]}],E=h(()=>C.identity===3),U=h(()=>C.apps),$=h(()=>C.regions),M=h(()=>C.products.map(t=>parseInt(t)).filter(t=>!isNaN(t))),c=["new_user_count","active_user_count","qr_active_count"],m=h(()=>E.value?A.filter(t=>!c.includes(t[0])):A),R=h(()=>E.value?k.filter(t=>!c.includes(t[0])):k),d=h(()=>E.value?x.filter(t=>t.key!=="user"&&t.key!=="qrcode"):x),vt=[[7,"7天"],[30,"30天"],[90,"90天"],[0,"全部"]],u=rt({app:"",region:"",product:""}),O=v([]),j=v([]),pt=h(()=>E.value&&$.value.length?p.filter(t=>$.value.includes(t[0])).map(t=>({value:t[0],label:t[1]})):p.map(t=>({value:t[0],label:t[1]}))),Q=v({}),X=v({}),P=v({}),tt=v({}),et=v("实时"),Y=v({}),V=rt({});x.forEach(t=>{V[t.key]=30});function T(t){const e=t.getFullYear(),n=("0"+(t.getMonth()+1)).slice(-2),a=("0"+t.getDate()).slice(-2);return parseInt(e+n+a)}function mt(t){if(!t)return{start:0,end:0};const e=new Date,n=new Date;return n.setDate(n.getDate()-(t-1)),{start:T(n),end:T(e)}}function ft(t,e){return t=Number(t)||0,e?"¥"+(t/100).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):t.toLocaleString()}function yt(t){t=Math.max(0,Math.floor(Number(t)||0));const e=Math.floor(t/3600),n=Math.floor(t%3600/60),a=t%60;return e>0?e+"时"+n+"分":n>0?n+"分"+a+"秒":a+"秒"}function W(t,e,n){return n?yt(t):ft(t,e)}function bt(t){const e=String(t);return e.length===8?e.slice(4,6)+"-"+e.slice(6,8):e}function gt(t,e){return t=Number(t)||0,e=Number(e)||0,e===0?t>0?null:0:(t-e)/e*100}function S(t){return y[t]||["📊","#f1f5f9","#94a3b8"]}function ht(t){const e=t[0]==="bind_device_count"||t[0]==="active_device_count"?X.value:Q.value,n=t[0]==="meet_second"||t[0]==="trade_second";return W(e[t[0]],t[2],n)}function kt(t){return W(P.value[t[0]],t[2],!!t[3])}function B(t){const e=gt(P.value[t[0]],tt.value[t[0]]);if(e===null)return{type:"new",arrow:"",abs:""};const n=e>0?"up":e<0?"down":"flat",a=e>0?"▲":e<0?"▼":"—";return{type:n,arrow:a,abs:Math.abs(e).toFixed(1)}}function Et(t,e){return W((Y.value[t.key]||{})[e[0]],e[2],e[3])}function q(){const t={};return u.app!==""&&(t.app_id=u.app),u.region!==""&&(t.region=u.region),u.product!==""&&(t.product_id=parseInt(String(u.product))),t}function st(){const t={};return u.product!==""&&(t.product_id=parseInt(String(u.product))),t}async function D(t,e){try{return{code:0,data:await N(t,e)??{}}}catch{return null}}async function Ft(){const t=await D("getstatssummary",q());Q.value=t&&t.code===0&&t.data?t.data:{};const e=await D("getstatssummary",st());X.value=e&&e.code===0&&e.data?e.data:{}}async function wt(){const t=T(new Date),e=new Date;e.setDate(e.getDate()-1);const n=T(e),a=q();a.start_day=t,a.end_day=t;const i=q();i.start_day=n,i.end_day=n;const f=await D("getstatssummary",a);P.value=f&&f.code===0&&f.data?f.data:{};const _=await D("getstatssummary",i);tt.value=_&&_.code===0&&_.data?_.data:{};const z=new Date,St=("0"+(z.getMonth()+1)).slice(-2),Bt=("0"+z.getDate()).slice(-2);et.value=St+"-"+Bt+" 实时"}async function at(t){let e;if(t.key==="device")e=st();else{const _=mt(V[t.key]);e=q(),e.start_day=_.start,e.end_day=_.end}const n=await D("getstatssummary",e),a=n&&n.code===0&&n.data?n.data:{};if(Y.value={...Y.value,[t.key]:a},t.key==="device")return;const i=await D("getstatstrend",e),f=i&&i.code===0?i.data||[]:[];Dt(t,f)}function xt(t,e){V[t]=e;const n=x.find(a=>a.key===t);n&&at(n)}function nt(){Ft(),wt(),d.value.forEach(t=>at(t))}const ot={},L={};function Ct(t,e){e&&(ot[t]=e)}function Dt(t,e){const n=window.Chart,a=ot[t.key];if(!n||!a)return;const i=e.map(_=>bt(_.stat_day)),f=t.lines.map(_=>({label:_[1],data:e.map(z=>Number(z[_[0]])||0),borderColor:_[2],backgroundColor:_[2]+"22",tension:.35,fill:!0,pointRadius:0,borderWidth:2}));if(L[t.key]){L[t.key].data.labels=i,L[t.key].data.datasets=f,L[t.key].update();return}L[t.key]=new n(a,{type:"line",data:{labels:i,datasets:f},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 At(){if(E.value)O.value=U.value.map(t=>({value:t,label:t}));else try{const t=await w("apps/list",{}),e=Array.isArray(t)?t:[];O.value=e.map(n=>({value:n.name||"",label:n.name||"应用#"+n.id}))}catch{O.value=[]}try{const t=await N("getproducts",{});let e=t&&t.products?t.products:[];E.value&&M.value.length&&(e=e.filter(n=>M.value.includes(n.id))),j.value=e.map(n=>({value:n.id,label:(n.devicename||"产品#"+n.id)+" (#"+n.id+")"}))}catch{j.value=[]}}function Mt(){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 Mt(),await At(),nt()}),(t,e)=>{const n=Qt;return o(),l("div",null,[K(n),s("div",Xt,[s("div",te,[s("div",ee,[e[4]||(e[4]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"应用")],-1)),J(s("select",{"onUpdate:modelValue":e[0]||(e[0]=a=>u.app=a),class:"select select-bordered select-sm w-40"},[e[3]||(e[3]=s("option",{value:""},"全部应用",-1)),(o(!0),l(b,null,g(O.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,se))),128))],512),[[Z,u.app]])]),s("div",ae,[e[6]||(e[6]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"区域")],-1)),J(s("select",{"onUpdate:modelValue":e[1]||(e[1]=a=>u.region=a),class:"select select-bordered select-sm w-32"},[e[5]||(e[5]=s("option",{value:""},"全部区域",-1)),(o(!0),l(b,null,g(pt.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,ne))),128))],512),[[Z,u.region]])]),s("div",oe,[e[8]||(e[8]=s("label",{class:"label py-1"},[s("span",{class:"label-text text-xs text-slate-500"},"产品")],-1)),J(s("select",{"onUpdate:modelValue":e[2]||(e[2]=a=>u.product=a),class:"select select-bordered select-sm w-48"},[e[7]||(e[7]=s("option",{value:""},"全部产品",-1)),(o(!0),l(b,null,g(j.value,a=>(o(),l("option",{key:a.value,value:a.value},r(a.label),9,le))),128))],512),[[Z,u.product]])]),s("button",{class:"btn btn-primary btn-sm text-white",onClick:nt},"查询"),e[9]||(e[9]=s("span",{class:"text-xs text-slate-400 ml-auto self-center"},"顶部为全量总览;各版面右上角可单独选时间周期",-1))])]),e[14]||(e[14]=s("div",{class:"sec-title muted"},[s("span",{class:"bar",style:{background:"#cbd5e1"}}),s("h2",null,"累计数据"),s("span",{class:"sub"},"全量累计 · 随筛选条件变化")],-1)),s("div",re,[(o(!0),l(b,null,g(m.value,a=>(o(),l("div",{key:a[0],class:"cum-card"},[s("span",{class:"ico",style:H({background:S(a[0])[1]})},r(S(a[0])[0]),5),s("div",ie,[s("div",ce,r(a[1]),1),s("div",de,r(ht(a)),1)])]))),128))]),s("div",ue,[s("div",_e,[e[10]||(e[10]=s("span",{class:"bar",style:{background:"linear-gradient(180deg,#0EA5E9,#22D3EE)"}},null,-1)),e[11]||(e[11]=s("h2",null,"今日数据",-1)),s("span",ve,r(et.value),1),e[12]||(e[12]=s("span",{class:"sub"},"今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)",-1))]),s("div",pe,[(o(!0),l(b,null,g(R.value,a=>(o(),l("div",{key:a[0],class:"today-card"},[s("span",{class:"accent",style:H({background:S(a[0])[2]})},null,4),s("div",me,[s("span",fe,r(a[1]),1),s("span",{class:"ico",style:H({background:S(a[0])[1]})},r(S(a[0])[0]),5)]),s("div",ye,r(kt(a)),1),s("div",be,[B(a).type==="new"?(o(),l("span",ge,"新")):B(a).type!=="none"?(o(),l("span",{key:1,class:G(["delta",B(a).type])},r(B(a).arrow)+" "+r(B(a).abs)+"%",3)):F("",!0),e[13]||(e[13]=s("span",null,"较昨日",-1))])]))),128))])]),e[15]||(e[15]=s("div",{class:"sec-title"},[s("span",{class:"bar",style:{background:"linear-gradient(180deg,#10B981,#22D3EE)"}}),s("h2",null,"趋势分析"),s("span",{class:"sub"},"各版面右上角可独立选择时间周期")],-1)),s("div",he,[(o(!0),l(b,null,g(d.value,a=>(o(),l("div",{key:a.key,class:"panel"},[s("div",ke,[s("span",{class:"panel-dot",style:H({background:a.tint})},[(o(),l("svg",{width:"17",height:"17",fill:"none",viewBox:"0 0 24 24",stroke:a.color},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:a.icon},null,8,Fe)],8,Ee))],4),s("span",we,r(a.title),1),a.key==="device"?(o(),l("span",xe,"当前累计 · 无日期维度")):(o(),l("div",Ce,[(o(),l(b,null,g(vt,i=>s("button",{key:i[0],class:G(["tbtn",{"tbtn-on":i[0]===V[a.key]}]),onClick:f=>xt(a.key,Number(i[0]))},r(i[1]),11,De)),64))]))]),s("div",Ae,[s("div",Me,[(o(!0),l(b,null,g(a.stats,i=>(o(),l("div",{key:i[0],class:"stat-box"},[s("div",Se,r(i[1]),1),s("div",Be,r(Et(a,i)),1)]))),128))]),a.key!=="device"?(o(),l("div",Le,[s("canvas",{ref_for:!0,ref:i=>Ct(a.key,i)},null,512)])):F("",!0)])]))),128))])])}}}),qe=ut(Ne,[["__scopeId","data-v-0c034b8c"]]);export{qe as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bf3Eg9kO.js b/apps/admin/.output/public/_nuxt/Bw873H05.js similarity index 97% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bf3Eg9kO.js rename to apps/admin/.output/public/_nuxt/Bw873H05.js index 7655e129..42f50e2a 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/Bf3Eg9kO.js +++ b/apps/admin/.output/public/_nuxt/Bw873H05.js @@ -1 +1 @@ -import{g as I,B as J,c as a,p,H as j,a as e,F as g,r as h,q,v as y,t as d,l as K,m as Q,x as r,y as W,z as w,o as i}from"./mElhLwm2.js";import{u as X}from"./C6twYRfy.js";import{u as Y}from"./FVTAbpot.js";import"./qig5Qp6S.js";const Z={class:"flex items-center justify-between mb-5"},ee=["disabled"],te={class:"flex items-center gap-3 mb-4 flex-wrap"},se=["value"],le=["disabled"],ne=["value"],oe={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"},ae={class:"text-sm"},ie={key:1,class:"bg-white rounded-xl shadow-sm border border-slate-100"},ue={class:"overflow-x-auto"},de={class:"table"},re={key:0},pe={key:1},me={class:"bg-slate-100/80"},ve={colspan:"4",class:"py-2"},ce={class:"font-semibold text-slate-600 text-sm"},be={class:"text-xs text-slate-400 ml-2"},fe={class:"font-mono text-sm font-medium"},xe=["title"],ge={class:"text-sm text-slate-400"},ye={class:"text-right"},we={class:"inline-flex gap-1"},_e=["onClick"],ke=["onClick"],he={class:"flex items-center gap-3 mb-5"},Ce={class:"text-lg font-semibold text-slate-800"},$e={class:"text-xs text-slate-400"},Ve={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Ae={class:"form-control mb-4"},Ne={class:"form-control mb-4"},Se={class:"form-control mb-4"},Ue={class:"form-control mb-6"},De={class:"flex gap-3"},Le=["disabled"],qe=I({__name:"appconfig",setup(Be){const{consoleApi:v}=X(),{success:D,error:c}=Y(),_=r("list"),b=r([]),C=r([]),m=r(""),u=r(0),f=r([]),$=r(!1),V=r(!1),k=r(!1),A=r(""),n=W({id:0,group:"",key:"",value:"",description:""}),N=w(()=>[...new Set(b.value.map(s=>s.app_name||s.name).filter(Boolean))].sort()),L=w(()=>b.value.filter(s=>(s.app_name||s.name)===m.value));function B(s){const t=C.value.find(U=>U.id===s.env_id),l=t?t.name||t.code:s.env_id?`环境#${s.env_id}`:"未关联环境",o=s.status==="pending"?"(待部署)":"";return s.region?`${l} · ${s.region}${o}`:`${l}${o}`}const O=w(()=>{const s=b.value.find(t=>t.id===u.value);return s?`${s.app_name||s.name} · ${B(s)}`:""}),M=w(()=>{const s=A.value.trim().toLowerCase();return s?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(s)):f.value}),R=w(()=>{const s={};return M.value.forEach(l=>{const o=l.group||"";(s[o]=s[o]||[]).push(l)}),Object.keys(s).sort((l,o)=>l===""?-1:o===""?1:l({key:l,label:l||"未分组",items:s[l]}))});async function T(){try{const[s,t]=await Promise.all([v("apps/list",{}),v("envs/list",{})]);b.value=s??[],C.value=t??[],!m.value&&N.value.length&&(m.value=N.value[0],E(),await x())}catch(s){c(s?.message??"获取应用列表失败"),b.value=[],C.value=[]}}function E(){const s=L.value,t=s.find(l=>l.status!=="pending")??s[0];u.value=t?.id??0}function z(){E(),x()}async function x(){if(!u.value){f.value=[];return}$.value=!0;try{const s=await v("appcfg/list",{app_id:u.value});f.value=s?.items??[]}catch(s){c(s?.message??"获取配置失败"),f.value=[]}finally{$.value=!1}}function H(){x()}function S(){_.value="list",x()}function F(s){s?(k.value=!0,n.id=s.id||0,n.group=s.group||"",n.key=s.key||"",n.value=s.value||"",n.description=s.description||""):(k.value=!1,n.id=0,n.group="",n.key="",n.value="",n.description=""),_.value="form"}async function P(){if(!u.value){c("请先选择应用和部署环境");return}V.value=!0;try{const s={app_id:u.value,group:n.group.trim(),key:n.key.trim(),value:n.value,description:n.description.trim()};k.value?(s.id=Number(n.id),await v("appcfg/update",s)):await v("appcfg/add",s),D("保存成功"),S()}catch(s){c(s?.message??"保存失败")}finally{V.value=!1}}function G(s){window.confirm("确定删除该配置项吗?")&&v("appcfg/del",{app_id:u.value,ids:[s.id]}).then(()=>{D("删除成功"),x()}).catch(t=>c(t?.message??"删除失败"))}return J(T),(s,t)=>(i(),a("div",null,[p(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"},"应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",disabled:!u.value,onClick:t[0]||(t[0]=l=>F())},"+ 新增配置",8,ee)]),e("div",te,[t[13]||(t[13]=e("span",{class:"text-sm text-slate-500"},"应用",-1)),p(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm min-w-40",onChange:z},[t[11]||(t[11]=e("option",{value:"",disabled:""},"请选择应用",-1)),(i(!0),a(g,null,h(N.value,l=>(i(),a("option",{key:l,value:l},d(l),9,se))),128))],544),[[q,m.value]]),t[14]||(t[14]=e("span",{class:"text-sm text-slate-500"},"部署环境",-1)),p(e("select",{"onUpdate:modelValue":t[2]||(t[2]=l=>u.value=l),class:"select select-bordered select-sm min-w-48",disabled:!m.value,onChange:H},[t[12]||(t[12]=e("option",{value:0,disabled:""},"请选择环境",-1)),(i(!0),a(g,null,h(L.value,l=>(i(),a("option",{key:l.id,value:l.id},d(B(l)),9,ne))),128))],40,le),[[q,u.value,void 0,{number:!0}]]),p(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>A.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[y,A.value]])]),u.value?(i(),a("div",ie,[e("div",ue,[e("table",de,[t[18]||(t[18]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[$.value?(i(),a("tr",re,[...t[16]||(t[16]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):M.value.length?K("",!0):(i(),a("tr",pe,[...t[17]||(t[17]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(i(!0),a(g,null,h(R.value,l=>(i(),a(g,{key:l.key},[e("tr",me,[e("td",ve,[e("span",ce,"▸ "+d(l.label),1),e("span",be,d(l.items.length)+" 项",1)])]),(i(!0),a(g,null,h(l.items,o=>(i(),a("tr",{key:o.id,class:"hover"},[e("td",fe,d(o.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:o.value||""},d(o.value||""),9,xe),e("td",ge,d(o.description||""),1),e("td",ye,[e("div",we,[e("button",{class:"btn btn-ghost btn-xs",onClick:U=>F(o)},"编辑",8,_e),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:U=>G(o)},"删除",8,ke)])])]))),128))],64))),128))])])])])):(i(),a("div",oe,[t[15]||(t[15]=e("div",{class:"text-4xl mb-2"},"🗂️",-1)),e("p",ae,d(m.value?"该应用还没有部署环境,请先在「应用中心」为它部署一个环境":"请先在上方选择应用和部署环境"),1)]))],512),[[j,_.value==="list"]]),p(e("div",null,[e("div",he,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[4]||(t[4]=l=>S())},"← 返回列表"),e("h2",Ce,d(k.value?"编辑配置":"新增配置"),1),e("span",$e,"配置目标:"+d(O.value),1)]),e("div",Ve,[e("form",{onSubmit:Q(P,["prevent"])},[e("div",Ae,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),p(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>n.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 music / oss / other"},null,512),[[y,n.group]])]),e("div",Ne,[t[20]||(t[20]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),p(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>n.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 oss_access_key"},null,512),[[y,n.key]])]),e("div",Se,[t[21]||(t[21]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),p(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>n.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[y,n.value]])]),e("div",Ue,[t[22]||(t[22]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),p(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>n.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[y,n.description]])]),e("div",De,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>S())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:V.value},"保存",8,Le)])],32)])],512),[[j,_.value==="form"]])]))}});export{qe as default}; +import{g as I,B as J,c as a,p,H as j,a as e,F as g,r as h,q,v as y,t as d,l as K,m as Q,x as r,y as W,z as w,o as i}from"./CSjlBIfC.js";import{u as X}from"./CX31_Ko0.js";import{u as Y}from"./QmZ_XupB.js";import"./CgE-6DOq.js";const Z={class:"flex items-center justify-between mb-5"},ee=["disabled"],te={class:"flex items-center gap-3 mb-4 flex-wrap"},se=["value"],le=["disabled"],ne=["value"],oe={key:0,class:"bg-white rounded-xl shadow-sm border border-slate-100 text-center text-slate-400 py-16"},ae={class:"text-sm"},ie={key:1,class:"bg-white rounded-xl shadow-sm border border-slate-100"},ue={class:"overflow-x-auto"},de={class:"table"},re={key:0},pe={key:1},me={class:"bg-slate-100/80"},ve={colspan:"4",class:"py-2"},ce={class:"font-semibold text-slate-600 text-sm"},be={class:"text-xs text-slate-400 ml-2"},fe={class:"font-mono text-sm font-medium"},xe=["title"],ge={class:"text-sm text-slate-400"},ye={class:"text-right"},we={class:"inline-flex gap-1"},_e=["onClick"],ke=["onClick"],he={class:"flex items-center gap-3 mb-5"},Ce={class:"text-lg font-semibold text-slate-800"},$e={class:"text-xs text-slate-400"},Ve={class:"bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"},Ae={class:"form-control mb-4"},Ne={class:"form-control mb-4"},Se={class:"form-control mb-4"},Ue={class:"form-control mb-6"},De={class:"flex gap-3"},Le=["disabled"],qe=I({__name:"appconfig",setup(Be){const{consoleApi:v}=X(),{success:D,error:c}=Y(),_=r("list"),b=r([]),C=r([]),m=r(""),u=r(0),f=r([]),$=r(!1),V=r(!1),k=r(!1),A=r(""),n=W({id:0,group:"",key:"",value:"",description:""}),N=w(()=>[...new Set(b.value.map(s=>s.app_name||s.name).filter(Boolean))].sort()),L=w(()=>b.value.filter(s=>(s.app_name||s.name)===m.value));function B(s){const t=C.value.find(U=>U.id===s.env_id),l=t?t.name||t.code:s.env_id?`环境#${s.env_id}`:"未关联环境",o=s.status==="pending"?"(待部署)":"";return s.region?`${l} · ${s.region}${o}`:`${l}${o}`}const O=w(()=>{const s=b.value.find(t=>t.id===u.value);return s?`${s.app_name||s.name} · ${B(s)}`:""}),M=w(()=>{const s=A.value.trim().toLowerCase();return s?f.value.filter(t=>((t.group||"")+(t.key||"")).toLowerCase().includes(s)):f.value}),R=w(()=>{const s={};return M.value.forEach(l=>{const o=l.group||"";(s[o]=s[o]||[]).push(l)}),Object.keys(s).sort((l,o)=>l===""?-1:o===""?1:l({key:l,label:l||"未分组",items:s[l]}))});async function T(){try{const[s,t]=await Promise.all([v("apps/list",{}),v("envs/list",{})]);b.value=s??[],C.value=t??[],!m.value&&N.value.length&&(m.value=N.value[0],E(),await x())}catch(s){c(s?.message??"获取应用列表失败"),b.value=[],C.value=[]}}function E(){const s=L.value,t=s.find(l=>l.status!=="pending")??s[0];u.value=t?.id??0}function z(){E(),x()}async function x(){if(!u.value){f.value=[];return}$.value=!0;try{const s=await v("appcfg/list",{app_id:u.value});f.value=s?.items??[]}catch(s){c(s?.message??"获取配置失败"),f.value=[]}finally{$.value=!1}}function H(){x()}function S(){_.value="list",x()}function F(s){s?(k.value=!0,n.id=s.id||0,n.group=s.group||"",n.key=s.key||"",n.value=s.value||"",n.description=s.description||""):(k.value=!1,n.id=0,n.group="",n.key="",n.value="",n.description=""),_.value="form"}async function P(){if(!u.value){c("请先选择应用和部署环境");return}V.value=!0;try{const s={app_id:u.value,group:n.group.trim(),key:n.key.trim(),value:n.value,description:n.description.trim()};k.value?(s.id=Number(n.id),await v("appcfg/update",s)):await v("appcfg/add",s),D("保存成功"),S()}catch(s){c(s?.message??"保存失败")}finally{V.value=!1}}function G(s){window.confirm("确定删除该配置项吗?")&&v("appcfg/del",{app_id:u.value,ids:[s.id]}).then(()=>{D("删除成功"),x()}).catch(t=>c(t?.message??"删除失败"))}return J(T),(s,t)=>(i(),a("div",null,[p(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"},"应用自有的 key/value 配置(音乐、OSS 等),直接读写所选应用的业务库。结构同「全局环境配置」但不分区域。")],-1)),e("button",{class:"btn btn-primary btn-sm text-white",disabled:!u.value,onClick:t[0]||(t[0]=l=>F())},"+ 新增配置",8,ee)]),e("div",te,[t[13]||(t[13]=e("span",{class:"text-sm text-slate-500"},"应用",-1)),p(e("select",{"onUpdate:modelValue":t[1]||(t[1]=l=>m.value=l),class:"select select-bordered select-sm min-w-40",onChange:z},[t[11]||(t[11]=e("option",{value:"",disabled:""},"请选择应用",-1)),(i(!0),a(g,null,h(N.value,l=>(i(),a("option",{key:l,value:l},d(l),9,se))),128))],544),[[q,m.value]]),t[14]||(t[14]=e("span",{class:"text-sm text-slate-500"},"部署环境",-1)),p(e("select",{"onUpdate:modelValue":t[2]||(t[2]=l=>u.value=l),class:"select select-bordered select-sm min-w-48",disabled:!m.value,onChange:H},[t[12]||(t[12]=e("option",{value:0,disabled:""},"请选择环境",-1)),(i(!0),a(g,null,h(L.value,l=>(i(),a("option",{key:l.id,value:l.id},d(B(l)),9,ne))),128))],40,le),[[q,u.value,void 0,{number:!0}]]),p(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>A.value=l),class:"input input-bordered input-sm w-48",placeholder:"按分组/键搜索"},null,512),[[y,A.value]])]),u.value?(i(),a("div",ie,[e("div",ue,[e("table",de,[t[18]||(t[18]=e("thead",null,[e("tr",null,[e("th",null,"键"),e("th",null,"值"),e("th",null,"描述"),e("th",{class:"text-right"},"操作")])],-1)),e("tbody",null,[$.value?(i(),a("tr",re,[...t[16]||(t[16]=[e("td",{colspan:"4",class:"text-center py-8"},[e("span",{class:"loading loading-spinner loading-sm"})],-1)])])):M.value.length?K("",!0):(i(),a("tr",pe,[...t[17]||(t[17]=[e("td",{colspan:"4",class:"text-center text-slate-400 py-8"},"暂无配置",-1)])])),(i(!0),a(g,null,h(R.value,l=>(i(),a(g,{key:l.key},[e("tr",me,[e("td",ve,[e("span",ce,"▸ "+d(l.label),1),e("span",be,d(l.items.length)+" 项",1)])]),(i(!0),a(g,null,h(l.items,o=>(i(),a("tr",{key:o.id,class:"hover"},[e("td",fe,d(o.key||""),1),e("td",{class:"text-sm text-slate-500 max-w-xs truncate",title:o.value||""},d(o.value||""),9,xe),e("td",ge,d(o.description||""),1),e("td",ye,[e("div",we,[e("button",{class:"btn btn-ghost btn-xs",onClick:U=>F(o)},"编辑",8,_e),e("button",{class:"btn btn-ghost btn-xs text-red-500",onClick:U=>G(o)},"删除",8,ke)])])]))),128))],64))),128))])])])])):(i(),a("div",oe,[t[15]||(t[15]=e("div",{class:"text-4xl mb-2"},"🗂️",-1)),e("p",ae,d(m.value?"该应用还没有部署环境,请先在「应用中心」为它部署一个环境":"请先在上方选择应用和部署环境"),1)]))],512),[[j,_.value==="list"]]),p(e("div",null,[e("div",he,[e("button",{class:"btn btn-ghost btn-sm",onClick:t[4]||(t[4]=l=>S())},"← 返回列表"),e("h2",Ce,d(k.value?"编辑配置":"新增配置"),1),e("span",$e,"配置目标:"+d(O.value),1)]),e("div",Ve,[e("form",{onSubmit:Q(P,["prevent"])},[e("div",Ae,[t[19]||(t[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"分组 (group)")],-1)),p(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>n.group=l),type:"text",class:"input input-bordered w-full",placeholder:"如 music / oss / other"},null,512),[[y,n.group]])]),e("div",Ne,[t[20]||(t[20]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"键 (key) *")],-1)),p(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>n.key=l),type:"text",class:"input input-bordered w-full",required:"",placeholder:"如 oss_access_key"},null,512),[[y,n.key]])]),e("div",Se,[t[21]||(t[21]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"值 (value)")],-1)),p(e("textarea",{"onUpdate:modelValue":t[7]||(t[7]=l=>n.value=l),class:"textarea textarea-bordered w-full font-mono text-sm",rows:"3"},null,512),[[y,n.value]])]),e("div",Ue,[t[22]||(t[22]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"描述")],-1)),p(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>n.description=l),type:"text",class:"input input-bordered w-full"},null,512),[[y,n.description]])]),e("div",De,[e("button",{type:"button",class:"btn btn-ghost",onClick:t[9]||(t[9]=l=>S())},"取消"),e("button",{type:"submit",class:"btn btn-primary text-white",disabled:V.value},"保存",8,Le)])],32)])],512),[[j,_.value==="form"]])]))}});export{qe as default}; diff --git a/apps/admin/.output/public/_nuxt/C2WfoPPr.js b/apps/admin/.output/public/_nuxt/C-IO5Zsk.js similarity index 84% rename from apps/admin/.output/public/_nuxt/C2WfoPPr.js rename to apps/admin/.output/public/_nuxt/C-IO5Zsk.js index c2e90f2c..1908e59b 100644 --- a/apps/admin/.output/public/_nuxt/C2WfoPPr.js +++ b/apps/admin/.output/public/_nuxt/C-IO5Zsk.js @@ -1 +1 @@ -import{g as t,B as n,P as a,c as o,a as s,o as c}from"./mElhLwm2.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default}; +import{g as t,B as n,P as a,c as o,a as s,o as c}from"./CSjlBIfC.js";const i={class:"py-16 text-center text-slate-400"},m=t({__name:"mcpconfig",setup(l){return n(()=>{a("/serviceconfig")}),(r,e)=>(c(),o("div",i,[...e[0]||(e[0]=[s("span",{class:"loading loading-spinner loading-sm"},null,-1),s("p",{class:"text-sm mt-3"},"MCP 配置已并入「第三方服务配置」,正在跳转…",-1)])]))}});export{m as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-lUY2ZC.js b/apps/admin/.output/public/_nuxt/C-NJnooU.js similarity index 98% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-lUY2ZC.js rename to apps/admin/.output/public/_nuxt/C-NJnooU.js index 84334e2a..0cfbaa8b 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/D-lUY2ZC.js +++ b/apps/admin/.output/public/_nuxt/C-NJnooU.js @@ -1,4 +1,4 @@ -import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./mElhLwm2.js";import{u as J}from"./C6twYRfy.js";import{u as W}from"./FVTAbpot.js";import"./qig5Qp6S.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗? +import{g as G,B as K,Q as P,c as a,a as e,d as u,p as x,q as M,F as f,r as U,v as Q,s as Y,t as n,x as i,z as E,o,n as F,l as I,_ as Z}from"./CSjlBIfC.js";import{u as J}from"./CX31_Ko0.js";import{u as W}from"./QmZ_XupB.js";import"./CgE-6DOq.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=J(),{success:O,error:R}=W(),z={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?z[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function B(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function H(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function j(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗? 只清除本核对面板的记录,不影响已落库的统计数据。 清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});O("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){R("清空失败:"+(r?.message||"网络异常"))}}function q(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,U(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[M,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[M,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Q,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:q},null,544),[[Y,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:j},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},U(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",B(t.level).cls])},n(B(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),H(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Lt=Z(kt,[["__scopeId","data-v-742ee359"]]);export{Lt as default}; diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DG0IG_4u.js b/apps/admin/.output/public/_nuxt/C0oOyOZM.js similarity index 99% rename from apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DG0IG_4u.js rename to apps/admin/.output/public/_nuxt/C0oOyOZM.js index 204836f4..a7c24f0b 100644 --- a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/client/_nuxt/DG0IG_4u.js +++ b/apps/admin/.output/public/_nuxt/C0oOyOZM.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"./mElhLwm2.js";import{u as st}from"./C6twYRfy.js";import{u as nt}from"./FVTAbpot.js";import"./qig5Qp6S.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+"

新用户扫码领取奖励

\n\n\n"],"names":["agents","_ssrLooseContain","_ssrLooseEqual","_ssrRenderList","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrRenderStyle","_ssrInterpolate","_ssrRenderClass"],"mappings":"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"} \ No newline at end of file diff --git a/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js.map.json b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js.map.json new file mode 100644 index 00000000..eb7d9c6e --- /dev/null +++ b/apps/admin/node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/agents-C12ARvzr.js.map.json @@ -0,0 +1 @@ +{"file":"agents-C12ARvzr.js","mappings":"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","names":["agents","_ssrLooseContain","_ssrLooseEqual","_ssrRenderList","_ssrRenderAttr","_ssrIncludeBooleanAttr","_ssrRenderStyle","_ssrInterpolate","_ssrRenderClass"],"sources":["../../../../../../../app/pages/agents.vue"],"sourcesContent":["