diff --git a/components.d.ts b/components.d.ts index 8007ba7..32ecaae 100644 --- a/components.d.ts +++ b/components.d.ts @@ -5,6 +5,7 @@ // ------ // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 +import { GlobalComponents } from 'vue' export {} @@ -63,6 +64,7 @@ declare module 'vue' { ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTableV2: typeof import('element-plus/es')['ElTableV2'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] @@ -79,6 +81,7 @@ declare module 'vue' { OverflowTabs: typeof import('./src/components/overflowTabs/index.vue')['default'] PageForm: typeof import('./src/components/pageForm/index.vue')['default'] ProTable: typeof import('./src/components/proTable/index.vue')['default'] + ProTablev2: typeof import('./src/components/proTable/proTablev2.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SopNode: typeof import('./src/components/nodeFlow/sopNode.vue')['default'] @@ -94,3 +97,86 @@ declare module 'vue' { vLoading: typeof import('element-plus/es')['ElLoadingDirective'] } } + +// For TSX support +declare global { + const AutoTooltip: typeof import('./src/components/autoTooltip/index.vue')['default'] + const CardItem: typeof import('./src/components/cardItem/index.vue')['default'] + const CollapseHeader: typeof import('./src/components/collapseHeader/index.vue')['default'] + const Comment: typeof import('./src/components/comment/index.vue')['default'] + const CommonFilter: typeof import('./src/components/commonFilter/index.vue')['default'] + const DynamicSvgIcon: typeof import('./src/components/dynamicSvgIcon/index.vue')['default'] + const ElAside: typeof import('element-plus/es')['ElAside'] + const ElAvatar: typeof import('element-plus/es')['ElAvatar'] + const ElBadge: typeof import('element-plus/es')['ElBadge'] + const ElButton: typeof import('element-plus/es')['ElButton'] + const ElCard: typeof import('element-plus/es')['ElCard'] + const ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + const ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + const ElCol: typeof import('element-plus/es')['ElCol'] + const ElContainer: typeof import('element-plus/es')['ElContainer'] + const ElDatePick: typeof import('element-plus/es')['ElDatePick'] + const ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + const ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + const ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + const ElDialog: typeof import('element-plus/es')['ElDialog'] + const ElDivider: typeof import('element-plus/es')['ElDivider'] + const ElDrawer: typeof import('element-plus/es')['ElDrawer'] + const ElDropdown: typeof import('element-plus/es')['ElDropdown'] + const ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + const ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + const ElEmpty: typeof import('element-plus/es')['ElEmpty'] + const ElForm: typeof import('element-plus/es')['ElForm'] + const ElFormItem: typeof import('element-plus/es')['ElFormItem'] + const ElHeader: typeof import('element-plus/es')['ElHeader'] + const ElIcon: typeof import('element-plus/es')['ElIcon'] + const ElInput: typeof import('element-plus/es')['ElInput'] + const ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + const ElLink: typeof import('element-plus/es')['ElLink'] + const ElMain: typeof import('element-plus/es')['ElMain'] + const ElMention: typeof import('element-plus/es')['ElMention'] + const ElMenu: typeof import('element-plus/es')['ElMenu'] + const ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + const ElOption: typeof import('element-plus/es')['ElOption'] + const ElPagination: typeof import('element-plus/es')['ElPagination'] + const ElPopover: typeof import('element-plus/es')['ElPopover'] + const ElRadio: typeof import('element-plus/es')['ElRadio'] + const ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + const ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + const ElRow: typeof import('element-plus/es')['ElRow'] + const ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + const ElSelect: typeof import('element-plus/es')['ElSelect'] + const ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] + const ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem'] + const ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + const ElSwitch: typeof import('element-plus/es')['ElSwitch'] + const ElTable: typeof import('element-plus/es')['ElTable'] + const ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + const ElTableV2: typeof import('element-plus/es')['ElTableV2'] + const ElTabPane: typeof import('element-plus/es')['ElTabPane'] + const ElTabs: typeof import('element-plus/es')['ElTabs'] + const ElTag: typeof import('element-plus/es')['ElTag'] + const ElTimeline: typeof import('element-plus/es')['ElTimeline'] + const ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] + const ElTooltip: typeof import('element-plus/es')['ElTooltip'] + const ElTree: typeof import('element-plus/es')['ElTree'] + const EmojiPicker: typeof import('./src/components/comment/emojiPicker.vue')['default'] + const GlobaIcon: typeof import('./src/components/globaIcon/index.vue')['default'] + const GlobalIcon: typeof import('./src/components/GlobalIcon/index.vue')['default'] + const MemberSelector: typeof import('./src/components/memberSelector/index.vue')['default'] + const NameAvatar: typeof import('./src/components/nameAvatar/index.vue')['default'] + const NodeFlow: typeof import('./src/components/nodeFlow/index.vue')['default'] + const OverflowTabs: typeof import('./src/components/overflowTabs/index.vue')['default'] + const PageForm: typeof import('./src/components/pageForm/index.vue')['default'] + const ProTable: typeof import('./src/components/proTable/index.vue')['default'] + const ProTablev2: typeof import('./src/components/proTable/proTablev2.vue')['default'] + const RouterLink: typeof import('vue-router')['RouterLink'] + const RouterView: typeof import('vue-router')['RouterView'] + const SopNode: typeof import('./src/components/nodeFlow/sopNode.vue')['default'] + const StageBreadcrumbs: typeof import('./src/components/stageBreadcrumbs/index.vue')['default'] + const StandardMenu: typeof import('./src/components/standardMenu/index.vue')['default'] + const StandMenu: typeof import('./src/components/standMenu/index.vue')['default'] + const UserSelector: typeof import('./src/components/userSelector/index.vue')['default'] + const Xxx: typeof import('./src/components/comment/xxx.vue')['default'] + const Xxxx: typeof import('./src/components/xxxx/index.vue')['default'] +} \ No newline at end of file diff --git a/package.json b/package.json index ac4f244..d424215 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@element-plus/icons-vue": "^2.3.2", "@micro-zoe/micro-app": "^1.0.0-rc.28", + "@vitejs/plugin-vue-jsx": "^5.1.3", "@vue-flow/core": "^1.48.1", "element-plus": "^2.13.0", "pinia": "^3.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b09f5e..d211759 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@micro-zoe/micro-app': specifier: ^1.0.0-rc.28 version: 1.0.0-rc.28 + '@vitejs/plugin-vue-jsx': + specifier: ^5.1.3 + version: 5.1.3(vite@7.3.0(@types/node@24.10.4)(sass@1.97.1))(vue@3.5.26(typescript@5.9.3)) '@vue-flow/core': specifier: ^1.48.1 version: 1.48.1(vue@3.5.26(typescript@5.9.3)) @@ -65,7 +68,7 @@ importers: version: 20.3.0(@vueuse/core@10.11.1(vue@3.5.26(typescript@5.9.3))) unplugin-vue-components: specifier: ^30.0.0 - version: 30.0.0(@babel/parser@7.28.5)(vue@3.5.26(typescript@5.9.3)) + version: 30.0.0(@babel/parser@7.28.6)(vue@3.5.26(typescript@5.9.3)) vite: specifier: ^7.2.4 version: 7.3.0(@types/node@24.10.4)(sass@1.97.1) @@ -75,6 +78,72 @@ importers: packages: + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.6': + resolution: {integrity: sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.6': + resolution: {integrity: sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.6': + resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.28.6': + resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.28.6': + resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -83,15 +152,58 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.6': + resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.6': + resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + '@ctrl/tinycolor@3.6.1': resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -326,42 +438,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -388,6 +494,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.53': resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} + '@rolldown/pluginutils@1.0.0-beta.59': + resolution: {integrity: sha512-aoh6LAJRyhtazs98ydgpNOYstxUlsOV1KJXcpf/0c0vFcUA8uyd/hwKRhqE/AAPNqAho9RliGsvitCoOzREoVA==} + '@rollup/rollup-android-arm-eabi@4.54.0': resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] @@ -422,67 +531,56 @@ packages: resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.54.0': resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.54.0': resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.54.0': resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.54.0': resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.54.0': resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.54.0': resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.54.0': resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.54.0': resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.54.0': resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.54.0': resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openharmony-arm64@4.54.0': resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} @@ -527,6 +625,13 @@ packages: '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + '@vitejs/plugin-vue-jsx@5.1.3': + resolution: {integrity: sha512-I6Zr8cYVr5WHMW5gNOP09DNqW9rgO8RX73Wa6Czgq/0ndpTfJM4vfDChfOT1+3KtdrNqilNBtNlFwVeB02ZzGw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vue: ^3.0.0 + '@vitejs/plugin-vue@6.0.3': resolution: {integrity: sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -548,6 +653,22 @@ packages: peerDependencies: vue: ^3.3.0 + '@vue/babel-helper-vue-transform-on@2.0.1': + resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==} + + '@vue/babel-plugin-jsx@2.0.1': + resolution: {integrity: sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@2.0.1': + resolution: {integrity: sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@vue/compiler-core@3.5.26': resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==} @@ -629,6 +750,10 @@ packages: axios@1.13.2: resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + baseline-browser-mapping@2.9.14: + resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} + hasBin: true + birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} @@ -636,10 +761,18 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + caniuse-lite@1.0.30001764: + resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -654,6 +787,9 @@ packages: confbox@0.2.2: resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + copy-anything@4.0.5: resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} engines: {node: '>=18'} @@ -724,6 +860,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + element-plus@2.13.0: resolution: {integrity: sha512-qjxS+SBChvqCl6lU6ShiliLMN6WqFHiXQENYbAY3GKNflG+FS3jqn8JmQq0CBZq4koFqsi95NT1M6SL4whZfrA==} peerDependencies: @@ -754,6 +893,10 @@ packages: engines: {node: '>=18'} hasBin: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -801,6 +944,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -847,9 +994,22 @@ packages: resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} engines: {node: '>=18'} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -867,6 +1027,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -909,6 +1072,9 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} @@ -977,6 +1143,10 @@ packages: scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1051,6 +1221,12 @@ packages: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + vite@7.3.0: resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1133,21 +1309,187 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + snapshots: + '@babel/code-frame@7.28.6': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.6': {} + + '@babel/core@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.6) + '@babel/helpers': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.6': + dependencies: + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.5 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.28.6 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.6) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.6 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.28.5': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.5 + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color + '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.6': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.28.6)': + dependencies: + '@babel/core': 7.28.6 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.28.6) + '@babel/helper-plugin-utils': 7.28.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + + '@babel/traverse@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@ctrl/tinycolor@3.6.1': {} '@element-plus/icons-vue@2.3.2(vue@3.5.26(typescript@5.9.3))': @@ -1339,6 +1681,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.53': {} + '@rolldown/pluginutils@1.0.0-beta.59': {} + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true @@ -1421,6 +1765,18 @@ snapshots: '@types/web-bluetooth@0.0.20': {} + '@vitejs/plugin-vue-jsx@5.1.3(vite@7.3.0(@types/node@24.10.4)(sass@1.97.1))(vue@3.5.26(typescript@5.9.3))': + dependencies: + '@babel/core': 7.28.6 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.6) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.28.6) + '@rolldown/pluginutils': 1.0.0-beta.59 + '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.28.6) + vite: 7.3.0(@types/node@24.10.4)(sass@1.97.1) + vue: 3.5.26(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-vue@6.0.3(vite@7.3.0(@types/node@24.10.4)(sass@1.97.1))(vue@3.5.26(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.53 @@ -1450,6 +1806,35 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' + '@vue/babel-helper-vue-transform-on@2.0.1': {} + + '@vue/babel-plugin-jsx@2.0.1(@babel/core@7.28.6)': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6) + '@babel/template': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.5 + '@vue/babel-helper-vue-transform-on': 2.0.1 + '@vue/babel-plugin-resolve-type': 2.0.1(@babel/core@7.28.6) + '@vue/shared': 3.5.26 + optionalDependencies: + '@babel/core': 7.28.6 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.28.6)': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/core': 7.28.6 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/parser': 7.28.5 + '@vue/compiler-sfc': 3.5.26 + transitivePeerDependencies: + - supports-color + '@vue/compiler-core@3.5.26': dependencies: '@babel/parser': 7.28.5 @@ -1574,6 +1959,8 @@ snapshots: transitivePeerDependencies: - debug + baseline-browser-mapping@2.9.14: {} + birpc@2.9.0: {} braces@3.0.3: @@ -1581,11 +1968,21 @@ snapshots: fill-range: 7.1.1 optional: true + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.14 + caniuse-lite: 1.0.30001764 + electron-to-chromium: 1.5.267 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 + caniuse-lite@1.0.30001764: {} + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -1598,6 +1995,8 @@ snapshots: confbox@0.2.2: {} + convert-source-map@2.0.0: {} + copy-anything@4.0.5: dependencies: is-what: 5.5.0 @@ -1657,6 +2056,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + electron-to-chromium@1.5.267: {} + element-plus@2.13.0(vue@3.5.26(typescript@5.9.3)): dependencies: '@ctrl/tinycolor': 3.6.1 @@ -1723,6 +2124,8 @@ snapshots: '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 + escalade@3.2.0: {} + escape-string-regexp@5.0.0: {} estree-walker@2.0.2: {} @@ -1757,6 +2160,8 @@ snapshots: function-bind@1.1.2: {} + gensync@1.0.0-beta.2: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -1804,8 +2209,14 @@ snapshots: is-what@5.5.0: {} + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + jsesc@3.1.0: {} + + json5@2.2.3: {} + local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -1822,6 +2233,10 @@ snapshots: lodash@4.17.21: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -1860,6 +2275,8 @@ snapshots: node-addon-api@7.1.1: optional: true + node-releases@2.0.27: {} + normalize-wheel-es@1.2.0: {} path-browserify@1.0.1: {} @@ -1946,6 +2363,8 @@ snapshots: scule@1.3.0: {} + semver@6.3.1: {} + source-map-js@1.2.1: {} speakingurl@14.0.1: {} @@ -2009,7 +2428,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.3 - unplugin-vue-components@30.0.0(@babel/parser@7.28.5)(vue@3.5.26(typescript@5.9.3)): + unplugin-vue-components@30.0.0(@babel/parser@7.28.6)(vue@3.5.26(typescript@5.9.3)): dependencies: chokidar: 4.0.3 debug: 4.4.3 @@ -2021,7 +2440,7 @@ snapshots: unplugin-utils: 0.3.1 vue: 3.5.26(typescript@5.9.3) optionalDependencies: - '@babel/parser': 7.28.5 + '@babel/parser': 7.28.6 transitivePeerDependencies: - supports-color @@ -2032,6 +2451,12 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + vite@7.3.0(@types/node@24.10.4)(sass@1.97.1): dependencies: esbuild: 0.27.2 @@ -2080,3 +2505,5 @@ snapshots: typescript: 5.9.3 webpack-virtual-modules@0.6.2: {} + + yallist@3.1.1: {} diff --git a/src/api/index.ts b/src/api/index.ts index f2a1e91..772a1af 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -19,6 +19,16 @@ export const login = (data: { username: string; password: string }) => { }); }; +// 获取字典映射 +export const getDictMap = (ids:string) => { + return request.get(`/auth/v1/dict/type/${ids}`); +}; + +// 获取二级菜单数据 +export const getDictMapLevel = (key:string,parentId:string) => { + return request.get(`/auth/v1/dict/type/${key}/${parentId}`); +}; + /**员工公用接口*/ diff --git a/src/api/stage/permission/index.ts b/src/api/stage/permission/index.ts index 2bcf2ed..7004f52 100644 --- a/src/api/stage/permission/index.ts +++ b/src/api/stage/permission/index.ts @@ -50,12 +50,12 @@ export const batchSaveRole = (roleId: string,data: number[]) => { // 保存角色权限 export const saveRolePermission = (data: any) => { - return request.post(`/auth/v1/backend/role/permission/save`, data); + return request.post(`/auth/v1/backend/role/permissions/save`, data); } -// 查询角色权限 +// 查询角色权限 (获取角色权限详情) export const getRolePermission = (roleId: string) => { - return request.get(`/auth/v1/backend/role/${roleId}/permission`); + return request.get(`/auth/v1/backend/role/${roleId}/permissions`); } // 获取角色成员列表 diff --git a/src/components/proTable/proTablev2.vue b/src/components/proTable/proTablev2.vue new file mode 100644 index 0000000..ef18452 --- /dev/null +++ b/src/components/proTable/proTablev2.vue @@ -0,0 +1,126 @@ + + + \ No newline at end of file diff --git a/src/components/standardMenu/index.vue b/src/components/standardMenu/index.vue index 76474fd..bdf506a 100644 --- a/src/components/standardMenu/index.vue +++ b/src/components/standardMenu/index.vue @@ -20,7 +20,7 @@ - + @@ -68,6 +68,18 @@ const resolvePath = (parentPath: string, childPath: string) => { // 4. 返回拼接后的路径 return `${parent}/${child}`; }; +/** + * 获取菜单项的跳转路径 + * 如果是顶级菜单且有子项,点击应跳转到第一个子项 + */ +const getFirstChildPath = (item: any) => { + // 如果是顶级菜单且有子菜单 + if (item.children && item.children.length > 0) { + return resolvePath(item.path, item.children[0].path); + } + // 如果没有子菜单,直接返回 item.path,但要确保它是以 / 开头 + return item.path.startsWith('/') ? item.path : `/${item.path}`; +}; // 处理菜单选中事件 const handleMenuSelect = (index: string) => { diff --git a/src/dict/PermissionManage.ts b/src/dict/PermissionManage.ts deleted file mode 100644 index d3f5509..0000000 --- a/src/dict/PermissionManage.ts +++ /dev/null @@ -1,37 +0,0 @@ -// 后台 - 权限管理模块-权限内容信息 - - -// 权限状态映射 -const roleDict = { - 1: '启用', - 0: '禁用' -} - -// 权限状态颜色 -const roleDictColor = { - 1:'#66E5BE', - 0:'#90A1B9' -} - -// 创建角色类型字典 -const roleTypeOptions = [ - { label: '实例角色', value: 'INSTANCE' }, - { label: '默认角色', value: 'DEFAULT' }, - { label: '系统角色', value: 'SYSTEM' } -] - -// 设置权限转换为目标格式 -const statusOptions = Object.keys(roleDict).map((key) => { - return { - label: roleDict[key], - value: Number(key) - } -}) - - -export default { - roleDict, - roleDictColor, - statusOptions, - roleTypeOptions -} \ No newline at end of file diff --git a/src/dict/dictManage.ts b/src/dict/dictManage.ts index 5caa140..4cd8a21 100644 --- a/src/dict/dictManage.ts +++ b/src/dict/dictManage.ts @@ -1,29 +1,13 @@ // 后台 - 字典管理模块-字典内容信息 - -// 字典状态映射 -const statusDict = { - 1: '正常', - 0: '禁用' -} - // 字典状态颜色 const statusDictColor = { 1:'#66E5BE', 0:'#90A1B9' } -// 设置字典转换为目标格式 -const statusOptions = Object.keys(statusDict).map((key) => { - return { - label: statusDict[key], - value: Number(key) - } -}) export default { - statusDict, statusDictColor, - statusOptions } \ No newline at end of file diff --git a/src/dict/index.ts b/src/dict/index.ts index f862d25..0a6c645 100644 --- a/src/dict/index.ts +++ b/src/dict/index.ts @@ -9,6 +9,5 @@ Object.entries(modules).forEach(([path, module]: [string, any]) => { // 2. 统一导出 export const { DictManage, - PermissionManage } = components; export default components; \ No newline at end of file diff --git a/src/hooks/useDictData.ts b/src/hooks/useDictData.ts new file mode 100644 index 0000000..1e32d0e --- /dev/null +++ b/src/hooks/useDictData.ts @@ -0,0 +1,79 @@ +import { ref, reactive, onMounted } from 'vue'; +import { getDictMap,getDictMapLevel } from '@/api'; + +// 全局静态缓存,跨组件共享 +const dictCache = reactive({}); +const pendingPromises = new Map(); + +export function useDict(codes) { + const dicts = ref({}); + const loading = ref(false); + + const fetchDicts = async () => { + if (!codes) return; + + const codeArray = codes.split(',').map(s => s.trim()); + const result = {}; + const needFetch = []; + + // 1. 区分哪些在缓存,哪些需要查 + codeArray.forEach(code => { + if (dictCache[code]) { + result[code] = dictCache[code]; + } else { + needFetch.push(code); + } + }); + + if (needFetch.length === 0) { + dicts.value = result; + return; + } + + // 2. 处理并发合并 + const fetchKey = needFetch.sort().join(','); + if (!pendingPromises.has(fetchKey)) { + const p = getDictMap(codes).then(res => { + const data = res || []; + Object.assign(dictCache, data); + pendingPromises.delete(fetchKey); + return data; + }); + pendingPromises.set(fetchKey, p); + } + + loading.value = true; + try { + const remoteData = await pendingPromises.get(fetchKey); + dicts.value = { ...result, ...remoteData }; + } finally { + loading.value = false; + } + }; + + const fetchLevel = async (code, parentId) => { + if (!code || parentId === undefined) return []; + + // 构造层级缓存 Key:例如 "GENDER_1" + const cacheKey = `${code}_${parentId}`; + + if (dictCache[cacheKey]) { + return dictCache[cacheKey]; + } + + loading.value = true; + try { + // 假设 getDictMapLevel 接受 code 和 parentId + const res = await getDictMapLevel(code, parentId); + const data = res || []; + // 写入全局缓存 + dictCache[cacheKey] = data; + return data; + } finally { + loading.value = false; + } + }; + + onMounted(fetchDicts); + return { dicts, loading,refresh: fetchDicts,fetchLevel }; +} \ No newline at end of file diff --git a/src/mock/menu.ts b/src/mock/menu.ts index 2ec9959..bfe6698 100644 --- a/src/mock/menu.ts +++ b/src/mock/menu.ts @@ -302,36 +302,26 @@ export const mockBackendMenuData = [ "name": "字典管理", "code": "dict", "icon": "OfficeBuilding", - "metadata": null, - "children": null }, { "name": "组织管理", "code": "origanization", "icon": "OfficeBuilding", - "metadata": null, - "children": null }, { "name": "人员管理", "code": "personnel", "icon": "OfficeBuilding", - "metadata": null, - "children": null }, { "name": "权限管理", "code": "permission", "icon": "OfficeBuilding", - "metadata": null, - "children": null }, { "name": "流程管理", "code": "flow", "icon": "OfficeBuilding", - "metadata": null, - "children": null } ] diff --git a/src/pages/Layout/index.vue b/src/pages/Layout/index.vue index 2b5ea5e..41a721d 100644 --- a/src/pages/Layout/index.vue +++ b/src/pages/Layout/index.vue @@ -35,7 +35,7 @@ @menu-select="handleTopMenuSelect" /> - + @@ -55,6 +55,7 @@ defineOptions({ const userStore = useUserStore(); const router = useRouter(); +const route = useRoute(); // 响应式断点(小屏阈值,小于此值视为小屏) const BREAKPOINT = 1024; @@ -104,10 +105,7 @@ const backTitle = computed(()=>{ return menuList.value.find(itv=>itv.name === 'stage')?.meta?.title || '-'; }) -// 后台管理点击获取列表 -const onStageManage = () =>{ - selectedTopMenu.value = '/stage'; -} + const topTitle = computed(() => { return ( @@ -165,6 +163,18 @@ const sideMenuList = computed(() => { // 处理顶部菜单选中事件 const handleTopMenuSelect = (menuPath: string) => { selectedTopMenu.value = menuPath; + const currentModule = menuList.value.find(item => item.path === menuPath); + + if (currentModule && currentModule.children && currentModule.children.length > 0) { + const firstChild = currentModule.children[0]; + const targetPath = firstChild.path.startsWith("/") + ? firstChild.path + : `${currentModule.path}/${firstChild.path}`; + router.push(targetPath); + selectedActiveMenu.value = targetPath; + } else { + router.push(menuPath); + } }; // 左侧菜单选中事件 @@ -172,23 +182,37 @@ const handleSideMenuSelect = (menuPath: string) => { selectedActiveMenu.value = menuPath; }; +// 高亮当前激活的菜单 +const activeMenuByUrl = () => { + // 1. 获取当前路由路径,例如 "/stage/dict" 或 "/business/customer" + const currentPath = route.path; + + // 2. 尝试从 topLevelMenuList 中直接找匹配项 + let matchedMenu = topLevelMenuList.value.find(menu => + currentPath.startsWith(menu.path) + ); + + // 3. 如果没找到,且路径以 /stage 开头 那就是后台管理模块 + if (!matchedMenu && currentPath.startsWith('/stage')) { + selectedTopMenu.value = '/stage'; + }else{ + // 4. 赋值选中的菜单 + if (matchedMenu) { + selectedTopMenu.value = matchedMenu.path; + } else if (topLevelMenuList.value.length > 0) { + selectedTopMenu.value = topLevelMenuList.value[0].path; + } + } +}; + +watch(() => route.path, () => { + activeMenuByUrl(); +}, { immediate: true }); + // 初始化:默认选中第一个菜单 onMounted(() => { - const currentRoutePath = router.currentRoute.value.path; - const matchedTopMenu = topLevelMenuList.value.find(menu => - currentRoutePath.startsWith(`${menu.path}/`) || currentRoutePath === menu.path - ); - - if (matchedTopMenu && matchedTopMenu.path) { - selectedTopMenu.value = matchedTopMenu.path; - } else if (topLevelMenuList.value.length > 0) { - // 否则默认选中第一个菜单 - const firstMenu = topLevelMenuList.value[0]; - if (firstMenu && firstMenu.path) { - selectedTopMenu.value = firstMenu.path; - } - } + activeMenuByUrl(); // 监听窗口大小变化 window.addEventListener("resize", handleResize); diff --git a/src/pages/Layout/rightMenuGroup.vue b/src/pages/Layout/rightMenuGroup.vue index 3bb8610..50ee7e2 100644 --- a/src/pages/Layout/rightMenuGroup.vue +++ b/src/pages/Layout/rightMenuGroup.vue @@ -80,7 +80,7 @@ const handleCommand = (command: string) => { }; const onStageManage = () => { - emits("on-stage-manage"); + emits("on-stage-manage",'/stage'); }; // 获取当前的用户的数据信息 diff --git a/src/pages/stage/dict/dictFieldConfig.vue b/src/pages/stage/dict/dictFieldConfig.vue index 6240906..7a48a16 100644 --- a/src/pages/stage/dict/dictFieldConfig.vue +++ b/src/pages/stage/dict/dictFieldConfig.vue @@ -110,19 +110,9 @@ }" @click="handleDictStatus(row)" > - {{ DictManage.statusDict[row.status] }} + {{ dicts.permission_list_enable_disable.find(item=>item.value == row.status)?.label }} - - + - + - + - 启用 - 停用 + {{ item.label }} @@ -55,7 +71,12 @@ @@ -64,6 +85,8 @@ import { reactive, ref, onMounted } from "vue"; import { ElMessage, type FormInstance, type FormRules } from "element-plus"; import { saveDictTypeValue, updateDictTypeValue } from "@/api/stage/dict"; +import { useDict } from "@/hooks/useDictData"; +const { dicts, refresh } = useDict("permission_list_enable_disable"); defineOptions({ name: "DictFieldLevelManage" }); const loading = ref(false); const { @@ -74,12 +97,10 @@ const { } = defineProps<{ dialogVisible: boolean; row?: any; - parentId?: string|number; + parentId?: string | number; title?: string; }>(); - - const emit = defineEmits<{ (e: "update:dialogVisible", value: boolean): void; (e: "confirm-success"): void; @@ -90,22 +111,26 @@ const form = reactive({ label: "", value: "", sort: 0, - status:1, - remark:'' + status: '1', + remark: "", }); // 监听组件中传递的数据-然后进行复制操作 -watch(()=>row,(newRow)=>{ - if (newRow && Object.keys(newRow).length > 0) { - Object.assign(form, newRow); +watch( + () => row, + (newRow) => { + if (newRow && Object.keys(newRow).length > 0) { + Object.assign(form, newRow,{status:String(newRow.status)}); } -},{deep:true}) + }, + { deep: true } +); const rules = reactive({ label: [{ required: true, message: "请输入字段名称", trigger: "blur" }], value: [{ required: true, message: "请输入字典值", trigger: "blur" }], sort: [{ required: true, message: "请输入排序", trigger: "blur" }], - remark:[{ required: false, message: "请输入备注", trigger: "blur" }] + remark: [{ required: false, message: "请输入备注", trigger: "blur" }], }); // 确定 @@ -114,16 +139,18 @@ const onConfirm = async (formEl: FormInstance | undefined) => { await formEl.validate(async (valid, fields) => { if (valid) { loading.value = true; - console.log("获取外部的数据信息:",form,parentId) + console.log("获取外部的数据信息:", form, parentId); // 如果是一级新增字段就是parentId为0 如果是添加二级字段就是parentId为父级的id try { - const response = row.id ? await updateDictTypeValue(parentId,row.id,form) : await saveDictTypeValue(parentId,form); - ElMessage.success(row.id ? '修改成功' : '新增成功'); + const response = row.id + ? await updateDictTypeValue(parentId, row.id, form) + : await saveDictTypeValue(parentId, form); + ElMessage.success(row.id ? "修改成功" : "新增成功"); onCancel(); - emit('confirm-success'); + emit("confirm-success"); } catch (error) { - console.log('error',error); - } finally{ + console.log("error", error); + } finally { loading.value = false; } } else { diff --git a/src/pages/stage/dict/dictManage.vue b/src/pages/stage/dict/dictManage.vue index b8aaa1e..662437f 100644 --- a/src/pages/stage/dict/dictManage.vue +++ b/src/pages/stage/dict/dictManage.vue @@ -34,8 +34,12 @@ - 启用 - 停用 + {{ item.label }} @@ -60,6 +64,8 @@ import { reactive, ref, onMounted } from "vue"; import { ElMessage, type FormInstance, type FormRules } from "element-plus"; import { addDictValue, updateDictValue } from "@/api/stage/dict"; +import { useDict } from "@/hooks/useDictData"; +const { dicts, refresh } = useDict("permission_list_enable_disable"); defineOptions({ name: "DictManage" }); const loading = ref(false); const { @@ -80,14 +86,14 @@ const ruleFormRef = ref(); const form = reactive({ name: "", key: "", - status: 1, + status: '1', remark: "", }); // 监听组件中传递的数据-然后进行复制操作 watch(()=>row,(newRow)=>{ if (newRow && Object.keys(newRow).length > 0) { - Object.assign(form, newRow); + Object.assign(form, newRow,{status:String(newRow.status)}); } },{deep:true}) diff --git a/src/pages/stage/dict/index.vue b/src/pages/stage/dict/index.vue index b2945dd..765f525 100644 --- a/src/pages/stage/dict/index.vue +++ b/src/pages/stage/dict/index.vue @@ -33,7 +33,7 @@ @@ -89,19 +89,9 @@ }" @click="handleDictStatus(row)" > - {{ DictManage.statusDict[row.status] }} + {{ dicts.permission_list_enable_disable.find(item=>item.value == row.status)?.label }} - - @@ -130,6 +120,9 @@ import { DictManage } from "@/dict"; import { formatIndex } from "@/utils/utils"; import { ElMessage } from "element-plus"; +import { useDict } from '@/hooks/useDictData'; +const { dicts,refresh } = useDict('permission_list_enable_disable'); + defineOptions({ name: "Dictionary" }); const fieldsConfigRef = ref(null); const dictTableRef = ref(null); diff --git a/src/pages/stage/permission/addRoles.vue b/src/pages/stage/permission/addRoles.vue index ccbf022..c991284 100644 --- a/src/pages/stage/permission/addRoles.vue +++ b/src/pages/stage/permission/addRoles.vue @@ -28,7 +28,7 @@
@@ -117,7 +117,6 @@ diff --git a/src/pages/stage/permission/baseSegmented.vue b/src/pages/stage/permission/baseSegmented.vue index 7f3264c..d3c2944 100644 --- a/src/pages/stage/permission/baseSegmented.vue +++ b/src/pages/stage/permission/baseSegmented.vue @@ -20,8 +20,6 @@