From d53a8dfae55aadeedb3d6b88a2af747d2d3848fa Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Thu, 11 Jun 2026 10:56:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=8A=A0=E7=8F=AD=E7=94=B3=E8=AF=B7):=20?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=92=A4=E9=94=80=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=92=8C=E5=8A=A8=E4=BD=9C=E3=80=82=20feat(?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=8A=A5=E5=91=8A):=20=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=8A=A5=E5=91=8A=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/plugins/router.ts | 21 +- docs/frontend-page-resource-manifest.json | 133 +- pnpm-lock.yaml | 2431 +--------------- src/components/custom/table-search-fields.vue | 30 +- src/constants/status-tag.ts | 11 +- src/locales/langs/en-us.ts | 6 +- src/locales/langs/zh-cn.ts | 6 +- src/router/elegant/imports.ts | 6 +- src/router/elegant/routes.ts | 71 +- src/router/elegant/transform.ts | 6 +- src/service/api/index.ts | 1 + src/service/api/overtime-application.ts | 55 +- src/service/api/work-report.ts | 866 ++++++ src/service/request/index.ts | 6 + src/styles/scss/element-plus.scss | 1 + src/typings/api/overtime-application.d.ts | 24 +- src/typings/api/work-report.d.ts | 290 ++ src/typings/elegant-router.d.ts | 12 +- .../personal-center/my-monthly/index.vue | 3 - src/views/personal-center/my-weekly/index.vue | 3 - .../overtime-application/index.vue | 140 +- .../overtime-application-action-dialog.vue | 10 +- ...ime-application-approval-record-dialog.vue | 72 + .../overtime-application-detail-dialog.vue | 125 +- .../modules/overtime-application-shared.ts | 6 +- ...overtime-application-status-log-dialog.vue | 89 - .../personal-center/work-report/index.vue | 241 ++ .../work-report/monthly/index.vue | 345 +++ .../monthly/modules/approval-page.vue | 1779 ++++++++++++ .../modules/approval-record-dialog.vue | 16 + .../monthly/modules/detail-page.vue | 16 + .../work-report/monthly/modules/fill-page.vue | 2195 +++++++++++++++ .../monthly/modules/search-panel.vue | 26 + .../work-report/project/index.vue | 363 +++ .../modules/approval-record-dialog.vue | 16 + .../project/modules/detail-page.vue | 16 + .../work-report/project/modules/fill-page.vue | 1057 +++++++ .../project/modules/search-panel.vue | 26 + .../shared/components/action-dialog.vue | 341 +++ .../components/approval-record-dialog.vue | 129 + .../shared/components/create-dialog.vue | 534 ++++ .../shared/components/detail-dialog.vue | 173 ++ .../shared/components/operate-dialog.vue | 564 ++++ .../shared/components/page-dialog.vue | 123 + .../components/prototype-page-dialog.vue | 774 +++++ .../shared/components/search-panel.vue | 102 + .../work-report/shared/components/tabs.vue | 92 + .../work-report/shared/types.ts | 521 ++++ .../work-report/shared/utils.ts | 194 ++ .../work-report/weekly/index.vue | 373 +++ .../weekly/modules/approval-record-dialog.vue | 16 + .../weekly/modules/detail-page.vue | 16 + .../work-report/weekly/modules/fill-page.vue | 2505 +++++++++++++++++ .../weekly/modules/search-panel.vue | 26 + src/views/workbench/index.vue | 2 +- .../modules/workbench-todo-panel.vue | 217 +- 56 files changed, 14312 insertions(+), 2910 deletions(-) create mode 100644 src/service/api/work-report.ts create mode 100644 src/typings/api/work-report.d.ts delete mode 100644 src/views/personal-center/my-monthly/index.vue delete mode 100644 src/views/personal-center/my-weekly/index.vue create mode 100644 src/views/personal-center/overtime-application/modules/overtime-application-approval-record-dialog.vue delete mode 100644 src/views/personal-center/overtime-application/modules/overtime-application-status-log-dialog.vue create mode 100644 src/views/personal-center/work-report/index.vue create mode 100644 src/views/personal-center/work-report/monthly/index.vue create mode 100644 src/views/personal-center/work-report/monthly/modules/approval-page.vue create mode 100644 src/views/personal-center/work-report/monthly/modules/approval-record-dialog.vue create mode 100644 src/views/personal-center/work-report/monthly/modules/detail-page.vue create mode 100644 src/views/personal-center/work-report/monthly/modules/fill-page.vue create mode 100644 src/views/personal-center/work-report/monthly/modules/search-panel.vue create mode 100644 src/views/personal-center/work-report/project/index.vue create mode 100644 src/views/personal-center/work-report/project/modules/approval-record-dialog.vue create mode 100644 src/views/personal-center/work-report/project/modules/detail-page.vue create mode 100644 src/views/personal-center/work-report/project/modules/fill-page.vue create mode 100644 src/views/personal-center/work-report/project/modules/search-panel.vue create mode 100644 src/views/personal-center/work-report/shared/components/action-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/approval-record-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/create-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/detail-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/operate-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/page-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/prototype-page-dialog.vue create mode 100644 src/views/personal-center/work-report/shared/components/search-panel.vue create mode 100644 src/views/personal-center/work-report/shared/components/tabs.vue create mode 100644 src/views/personal-center/work-report/shared/types.ts create mode 100644 src/views/personal-center/work-report/shared/utils.ts create mode 100644 src/views/personal-center/work-report/weekly/index.vue create mode 100644 src/views/personal-center/work-report/weekly/modules/approval-record-dialog.vue create mode 100644 src/views/personal-center/work-report/weekly/modules/detail-page.vue create mode 100644 src/views/personal-center/work-report/weekly/modules/fill-page.vue create mode 100644 src/views/personal-center/work-report/weekly/modules/search-panel.vue diff --git a/build/plugins/router.ts b/build/plugins/router.ts index a4ab0e8..8ec0d87 100644 --- a/build/plugins/router.ts +++ b/build/plugins/router.ts @@ -131,16 +131,23 @@ export function setupElegantRouter() { order: 1, keepAlive: true }, - 'personal-center_my-weekly': { - icon: 'mdi:calendar-week-outline', - order: 2, - keepAlive: true - }, - 'personal-center_my-monthly': { - icon: 'mdi:calendar-month-outline', + 'personal-center_work-report': { + icon: 'mdi:file-chart-outline', order: 3, keepAlive: true }, + 'personal-center_work-report_weekly': { + hideInMenu: true, + activeMenu: 'personal-center_work-report' + }, + 'personal-center_work-report_monthly': { + hideInMenu: true, + activeMenu: 'personal-center_work-report' + }, + 'personal-center_work-report_project': { + hideInMenu: true, + activeMenu: 'personal-center_work-report' + }, 'personal-center_my-performance': { icon: 'mdi:trophy-outline', order: 4, diff --git a/docs/frontend-page-resource-manifest.json b/docs/frontend-page-resource-manifest.json index 85ee791..6c2877a 100644 --- a/docs/frontend-page-resource-manifest.json +++ b/docs/frontend-page-resource-manifest.json @@ -6,7 +6,7 @@ "pageComponentPattern": "view.", "singlePageComponentPattern": "layout.$view." }, - "total": 23, + "total": 22, "items": [ { "name": "product_list", @@ -306,15 +306,15 @@ "source": "generated" }, { - "name": "personal-center_my-weekly", - "path": "/personal-center/my-weekly", - "component": "view.personal-center_my-weekly", - "title": "我的周报", - "routeTitle": "personal-center_my-weekly", - "i18nKey": "route.personal-center_my-weekly", - "icon": "mdi:calendar-week-outline", + "name": "personal-center_work-report", + "path": "/personal-center/work-report", + "component": "view.personal-center_work-report", + "title": "工作报告", + "routeTitle": "personal-center_work-report", + "i18nKey": "route.personal-center_work-report", + "icon": "mdi:file-chart-outline", "localIcon": null, - "order": 1, + "order": 3, "hideInMenu": false, "keepAlive": true, "activeMenu": null, @@ -323,44 +323,11 @@ "redirect": null, "props": null, "meta": { - "title": "我的周报", - "i18nKey": "route.personal-center_my-weekly", - "icon": "mdi:calendar-week-outline", + "title": "工作报告", + "i18nKey": "route.personal-center_work-report", + "icon": "mdi:file-chart-outline", "localIcon": null, - "order": 1, - "keepAlive": true, - "hideInMenu": false, - "activeMenu": null, - "multiTab": false, - "fixedIndexInTab": null - }, - "parentName": "personal-center", - "pageType": "leaf", - "source": "generated" - }, - { - "name": "personal-center_my-monthly", - "path": "/personal-center/my-monthly", - "component": "view.personal-center_my-monthly", - "title": "我的月报", - "routeTitle": "personal-center_my-monthly", - "i18nKey": "route.personal-center_my-monthly", - "icon": "mdi:calendar-month-outline", - "localIcon": null, - "order": 2, - "hideInMenu": false, - "keepAlive": true, - "activeMenu": null, - "multiTab": false, - "fixedIndexInTab": null, - "redirect": null, - "props": null, - "meta": { - "title": "我的月报", - "i18nKey": "route.personal-center_my-monthly", - "icon": "mdi:calendar-month-outline", - "localIcon": null, - "order": 2, + "order": 3, "keepAlive": true, "hideInMenu": false, "activeMenu": null, @@ -380,7 +347,7 @@ "i18nKey": "route.personal-center_my-performance", "icon": "mdi:trophy-outline", "localIcon": null, - "order": 3, + "order": 4, "hideInMenu": false, "keepAlive": true, "activeMenu": null, @@ -393,7 +360,7 @@ "i18nKey": "route.personal-center_my-performance", "icon": "mdi:trophy-outline", "localIcon": null, - "order": 3, + "order": 4, "keepAlive": true, "hideInMenu": false, "activeMenu": null, @@ -413,7 +380,7 @@ "i18nKey": "route.personal-center_my-application", "icon": "mdi:file-document-outline", "localIcon": null, - "order": 4, + "order": 5, "hideInMenu": false, "keepAlive": true, "activeMenu": null, @@ -426,40 +393,7 @@ "i18nKey": "route.personal-center_my-application", "icon": "mdi:file-document-outline", "localIcon": null, - "order": 4, - "keepAlive": true, - "hideInMenu": false, - "activeMenu": null, - "multiTab": false, - "fixedIndexInTab": null - }, - "parentName": "personal-center", - "pageType": "leaf", - "source": "generated" - }, - { - "name": "personal-center_overtime-application", - "path": "/personal-center/overtime-application", - "component": "view.personal-center_overtime-application", - "title": "加班申请", - "routeTitle": "personal-center_overtime-application", - "i18nKey": "route.personal-center_overtime-application", - "icon": "mdi:clock-plus-outline", - "localIcon": null, - "order": 6, - "hideInMenu": false, - "keepAlive": true, - "activeMenu": null, - "multiTab": false, - "fixedIndexInTab": null, - "redirect": null, - "props": null, - "meta": { - "title": "加班申请", - "i18nKey": "route.personal-center_overtime-application", - "icon": "mdi:clock-plus-outline", - "localIcon": null, - "order": 6, + "order": 5, "keepAlive": true, "hideInMenu": false, "activeMenu": null, @@ -503,6 +437,39 @@ "pageType": "leaf", "source": "generated" }, + { + "name": "personal-center_overtime-application", + "path": "/personal-center/overtime-application", + "component": "view.personal-center_overtime-application", + "title": "加班申请", + "routeTitle": "personal-center_overtime-application", + "i18nKey": "route.personal-center_overtime-application", + "icon": "mdi:clock-plus-outline", + "localIcon": null, + "order": 6, + "hideInMenu": false, + "keepAlive": true, + "activeMenu": null, + "multiTab": false, + "fixedIndexInTab": null, + "redirect": null, + "props": null, + "meta": { + "title": "加班申请", + "i18nKey": "route.personal-center_overtime-application", + "icon": "mdi:clock-plus-outline", + "localIcon": null, + "order": 6, + "keepAlive": true, + "hideInMenu": false, + "activeMenu": null, + "multiTab": false, + "fixedIndexInTab": null + }, + "parentName": "personal-center", + "pageType": "leaf", + "source": "generated" + }, { "name": "system_user", "path": "/system/user", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 174aa9e..3a52218 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,21 +8,9 @@ importers: .: dependencies: - '@antv/data-set': - specifier: 0.11.8 - version: 0.11.8 - '@antv/g2': - specifier: 5.4.0 - version: 5.4.0 - '@antv/g6': - specifier: 5.0.49 - version: 5.0.49(workerize-loader@2.0.2(webpack@5.105.4)) '@better-scroll/core': specifier: 2.5.1 version: 2.5.1 - '@iconify-vue/mingcute': - specifier: ^1.0.5 - version: 1.0.5(vue@3.5.20(typescript@5.8.3)) '@iconify/vue': specifier: 5.0.0 version: 5.0.0(vue@3.5.20(typescript@5.8.3)) @@ -41,24 +29,6 @@ importers: '@sa/utils': specifier: workspace:* version: link:packages/utils - '@visactor/vchart': - specifier: 2.0.4 - version: 2.0.4 - '@visactor/vchart-theme': - specifier: 1.12.2 - version: 1.12.2(@visactor/vchart@2.0.4) - '@visactor/vtable-editors': - specifier: 1.19.8 - version: 1.19.8 - '@visactor/vtable-gantt': - specifier: 1.19.8 - version: 1.19.8 - '@visactor/vue-vtable': - specifier: 1.19.8 - version: 1.19.8 - '@vueuse/components': - specifier: 13.9.0 - version: 13.9.0(vue@3.5.20(typescript@5.8.3)) '@vueuse/core': specifier: 13.9.0 version: 13.9.0(vue@3.5.20(typescript@5.8.3)) @@ -77,9 +47,6 @@ importers: defu: specifier: ^6.1.4 version: 6.1.4 - dhtmlx-gantt: - specifier: 9.0.14 - version: 9.0.14 dompurify: specifier: 3.2.6 version: 3.2.6 @@ -92,9 +59,6 @@ importers: grid-layout-plus: specifier: ^1.1.1 version: 1.1.1(vue@3.5.20(typescript@5.8.3)) - jsbarcode: - specifier: 3.12.1 - version: 3.12.1 jsencrypt: specifier: ^3.5.4 version: 3.5.4 @@ -107,24 +71,9 @@ importers: pinia: specifier: 3.0.3 version: 3.0.3(typescript@5.8.3)(vue@3.5.20(typescript@5.8.3)) - pinyin-pro: - specifier: 3.27.0 - version: 3.27.0 - print-js: - specifier: 1.6.0 - version: 1.6.0 - swiper: - specifier: 11.2.10 - version: 11.2.10 tailwind-merge: specifier: 3.3.1 version: 3.3.1 - typeit: - specifier: 8.8.7 - version: 8.8.7 - vditor: - specifier: 3.11.2 - version: 3.11.2 vue: specifier: 3.5.20 version: 3.5.20(typescript@5.8.3) @@ -134,22 +83,10 @@ importers: vue-i18n: specifier: 11.1.11 version: 11.1.11(vue@3.5.20(typescript@5.8.3)) - vue-pdf-embed: - specifier: 2.1.3 - version: 2.1.3(vue@3.5.20(typescript@5.8.3)) vue-router: specifier: 4.5.1 version: 4.5.1(vue@3.5.20(typescript@5.8.3)) - xgplayer: - specifier: 3.0.23 - version: 3.0.23(core-js@3.49.0) - xlsx: - specifier: 0.18.5 - version: 0.18.5 devDependencies: - '@amap/amap-jsapi-types': - specifier: 0.0.15 - version: 0.0.15 '@elegant-router/vue': specifier: 0.3.8 version: 0.3.8 @@ -165,9 +102,6 @@ importers: '@soybeanjs/eslint-config': specifier: 1.7.1 version: 1.7.1(@types/eslint@9.6.1)(@typescript-eslint/utils@8.57.2(eslint@9.34.0(jiti@2.6.1))(typescript@5.8.3))(@unocss/eslint-config@66.5.0(eslint@9.34.0(jiti@2.6.1))(typescript@5.8.3))(eslint-plugin-vue@10.4.0(@typescript-eslint/parser@8.35.1(eslint@9.34.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.34.0(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.34.0(jiti@2.6.1))))(eslint@9.34.0(jiti@2.6.1))(svelte-eslint-parser@1.6.0)(typescript@5.8.3)(vue-eslint-parser@10.2.0(eslint@9.34.0(jiti@2.6.1))) - '@types/bmapgl': - specifier: 0.0.7 - version: 0.0.7 '@types/node': specifier: 24.3.0 version: 24.3.0 @@ -362,9 +296,6 @@ importers: packages: - '@amap/amap-jsapi-types@0.0.15': - resolution: {integrity: sha512-oqyRqHpVDZh5bUe2mAJh41ZsziSj0eUzwcfIbiaBNB0eiTJnZNhKsTdk77VOklOjwuwNfsblpKW9LjmWNpeQ7A==} - '@antfu/eslint-define-config@1.23.0-2': resolution: {integrity: sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==} engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} @@ -375,69 +306,6 @@ packages: '@antfu/utils@8.1.1': resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==} - '@antv/algorithm@0.1.26': - resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==} - - '@antv/component@2.1.11': - resolution: {integrity: sha512-dTdz8VAd3rpjOaGEZTluz82mtzrP4XCtNlNQyrxY7VNRNcjtvpTLDn57bUL2lRu1T+iklKvgbE2llMriWkq9vQ==} - - '@antv/coord@0.4.7': - resolution: {integrity: sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==} - - '@antv/data-set@0.11.8': - resolution: {integrity: sha512-8/YDsfk4wNQdo/J9tfmzOuo9Y5nl0mB+sSZO+tEZsHFLUhMrioJGBMPkuW51Pn0zcVZPNivuMBi2sQKYCpCeew==} - - '@antv/event-emitter@0.1.3': - resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} - - '@antv/expr@1.0.2': - resolution: {integrity: sha512-vrfdmPHkTuiS5voVutKl2l06w1ihBh9A8SFdQPEE+2KMVpkymzGOF1eWpfkbGZ7tiFE15GodVdhhHomD/hdIwg==} - - '@antv/g-canvas@2.2.0': - resolution: {integrity: sha512-h7zVBBo2aO64DuGKvq9sG+yTU3sCUb9DALCVm7nz8qGPs8hhLuFOkKPEzUDNfNYZGJUGzY8UDtJ3QRGRFcvEQg==} - - '@antv/g-lite@2.7.0': - resolution: {integrity: sha512-uSzgHYa5bwR5L2Au7/5tsOhFmXKZKLPBH90+Q9bP9teVs5VT4kOAi0isPSpDI8uhdDC2/VrfTWu5K9HhWI6FWw==} - - '@antv/g-math@3.1.0': - resolution: {integrity: sha512-DtN1Gj/yI0UiK18nSBsZX8RK0LszGwqfb+cBYWgE+ddyTm8dZnW4tPUhV7QXePsS6/A5hHC+JFpAAK7OEGo5ZQ==} - - '@antv/g-plugin-dragndrop@2.1.1': - resolution: {integrity: sha512-+aesDUJVQDs6UJ2bOBbDlaGAPCfHmU0MbrMTlQlfpwNplWueqtgVAZ3L57oZ2ZGHRWUHiRwZGPjXMBM3O2LELw==} - - '@antv/g2@5.4.0': - resolution: {integrity: sha512-aNw4lvi9IdsdoMHZbrAhZbFy9y5Ppv6zyjtgTKHdMl8x4xnoweW/4YwryRZh2/2Z497dnobPcVyPu5Iwoz87Ww==} - - '@antv/g6@5.0.49': - resolution: {integrity: sha512-GRmK8oTVEgxjKbbhThIhnPOV1NcySLcSIGEod9RX/tbX4ME8txESb0zP0fDkuum26GLqvXgmIIIxRBE3m8VYPw==} - - '@antv/g@6.3.1': - resolution: {integrity: sha512-WYEKqy86LHB2PzTmrZXrIsIe+3Epeds2f68zceQ+BJtRoGki7Sy4IhlC8LrUMztgfT1t3d/0L745NWZwITroKA==} - - '@antv/graphlib@2.0.4': - resolution: {integrity: sha512-zc/5oQlsdk42Z0ib1mGklwzhJ5vczLFiPa1v7DgJkTbgJ2YxRh9xdarf86zI49sKVJmgbweRpJs7Nu5bIiwv4w==} - - '@antv/hierarchy@0.6.14': - resolution: {integrity: sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ==} - - '@antv/layout@1.2.14-beta.9': - resolution: {integrity: sha512-wPlwBFMtq2lWZFc89/7Lzb8fjHnyKVZZ9zBb2h+zZIP0YWmVmHRE8+dqCiPKOyOGUXEdDtn813f1g107dCHZlg==} - - '@antv/scale@0.4.16': - resolution: {integrity: sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==} - - '@antv/scale@0.5.2': - resolution: {integrity: sha512-rTHRAwvpHWC5PGZF/mJ2ZuTDqwwvVBDRph0Uu5PV9BXwzV7K8+9lsqGJ+XHVLxe8c6bKog5nlzvV/dcYb0d5Ow==} - - '@antv/util@2.0.17': - resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} - - '@antv/util@3.3.11': - resolution: {integrity: sha512-FII08DFM4ABh2q5rPYdr0hMtKXRgeZazvXaFYCs7J7uTcWDHUhczab2qOCJLNDugoj8jFag1djb7wS9ehaRYBg==} - - '@antv/vendor@1.0.11': - resolution: {integrity: sha512-LmhPEQ+aapk3barntaiIxJ5VHno/Tyab2JnfdcPzp5xONh/8VSfed4bo/9xKo5HcUAEydko38vYLfj6lJliLiw==} - '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} @@ -860,14 +728,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@iconify-vue/mingcute@1.0.5': - resolution: {integrity: sha512-9g/iEU2XdobbfS6vKp01btfBlPiMqlqa+GujwYOc5WVJierhKt3dF0+tamomdk9vYcIsJiGcqOaKvrJF0g6prA==} - - '@iconify/css-vue@1.0.2': - resolution: {integrity: sha512-KXG9zXTMmJLi1AF2ket+YWUGdSqFvIMSnCO789uOVpba6SZhqeUttu0JIaEcq2dNlt4oonwdtMyerkpRkAFYhw==} - peerDependencies: - vue: '>=3.0.0' - '@iconify/json@2.2.380': resolution: {integrity: sha512-+Al/Q+mMB/nLz/tawmJEOkCs6+RKKVUS/Yg9I80h2yRpu0kIzxVLQRfF0NifXz/fH92vDVXbS399wio4lMVF4Q==} @@ -930,86 +790,6 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@naoak/workerize-transferable@0.1.0': - resolution: {integrity: sha512-fDLfuP71IPNP5+zSfxFb52OHgtjZvauRJWbVnpzQ7G7BjcbLjTny0OW1d3ZO806XKpLWNKmeeW3MhE0sy8iwYQ==} - peerDependencies: - workerize-loader: '*' - - '@napi-rs/canvas-android-arm64@0.1.97': - resolution: {integrity: sha512-V1c/WVw+NzH8vk7ZK/O8/nyBSCQimU8sfMsB/9qeSvdkGKNU7+mxy/bIF0gTgeBFmHpj30S4E9WHMSrxXGQuVQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@napi-rs/canvas-darwin-arm64@0.1.97': - resolution: {integrity: sha512-ok+SCEF4YejcxuJ9Rm+WWunHHpf2HmiPxfz6z1a/NFQECGXtsY7A4B8XocK1LmT1D7P174MzwPF9Wy3AUAwEPw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/canvas-darwin-x64@0.1.97': - resolution: {integrity: sha512-PUP6e6/UGlclUvAQNnuXCcnkpdUou6VYZfQOQxExLp86epOylmiwLkqXIvpFmjoTEDmPmXrI+coL/9EFU1gKPA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.97': - resolution: {integrity: sha512-XyXH2L/cic8eTNtbrXCcvqHtMX/nEOxN18+7rMrAM2XtLYC/EB5s0wnO1FsLMWmK+04ZSLN9FBGipo7kpIkcOw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@napi-rs/canvas-linux-arm64-gnu@0.1.97': - resolution: {integrity: sha512-Kuq/M3djq0K8ktgz6nPlK7Ne5d4uWeDxPpyKWOjWDK2RIOhHVtLtyLiJw2fuldw7Vn4mhw05EZXCEr4Q76rs9w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@napi-rs/canvas-linux-arm64-musl@0.1.97': - resolution: {integrity: sha512-kKmSkQVnWeqg7qdsiXvYxKhAFuHz3tkBjW/zyQv5YKUPhotpaVhpBGv5LqCngzyuRV85SXoe+OFj+Tv0a0QXkQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@napi-rs/canvas-linux-riscv64-gnu@0.1.97': - resolution: {integrity: sha512-Jc7I3A51jnEOIAXeLsN/M/+Z28LUeakcsXs07FLq9prXc0eYOtVwsDEv913Gr+06IRo34gJJVgT0TXvmz+N2VA==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@napi-rs/canvas-linux-x64-gnu@0.1.97': - resolution: {integrity: sha512-iDUBe7AilfuBSRbSa8/IGX38Mf+iCSBqoVKLSQ5XaY2JLOaqz1TVyPFEyIck7wT6mRQhQt5sN6ogfjIDfi74tg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@napi-rs/canvas-linux-x64-musl@0.1.97': - resolution: {integrity: sha512-AKLFd/v0Z5fvgqBDqhvqtAdx+fHMJ5t9JcUNKq4FIZ5WH+iegGm8HPdj00NFlCSnm83Fp3Ln8I2f7uq1aIiWaA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@napi-rs/canvas-win32-arm64-msvc@0.1.97': - resolution: {integrity: sha512-u883Yr6A6fO7Vpsy9YE4FVCIxzzo5sO+7pIUjjoDLjS3vQaNMkVzx5bdIpEL+ob+gU88WDK4VcxYMZ6nmnoX9A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@napi-rs/canvas-win32-x64-msvc@0.1.97': - resolution: {integrity: sha512-sWtD2EE3fV0IzN+iiQUqr/Q1SwqWhs2O1FKItFlxtdDkikpEj5g7DKQpY3x55H/MAOnL8iomnlk3mcEeGiUMoQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/canvas@0.1.97': - resolution: {integrity: sha512-8cFniXvrIEnVwuNSRCW9wirRZbHvrD3JVujdS2P5n5xiJZNZMOZcfOvJ1pb66c7jXMKHHglJEDVJGbm8XWFcXQ==} - engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1127,86 +907,6 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@resvg/resvg-js-android-arm-eabi@2.4.1': - resolution: {integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - - '@resvg/resvg-js-android-arm64@2.4.1': - resolution: {integrity: sha512-/QleoRdPfsEuH9jUjilYcDtKK/BkmWcK+1LXM8L2nsnf/CI8EnFyv7ZzCj4xAIvZGAy9dTYr/5NZBcTwxG2HQg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@resvg/resvg-js-darwin-arm64@2.4.1': - resolution: {integrity: sha512-U1oMNhea+kAXgiEXgzo7EbFGCD1Edq5aSlQoe6LMly6UjHzgx2W3N5kEXCwU/CgN5FiQhZr7PlSJSlcr7mdhfg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@resvg/resvg-js-darwin-x64@2.4.1': - resolution: {integrity: sha512-avyVh6DpebBfHHtTQTZYSr6NG1Ur6TEilk1+H0n7V+g4F7x7WPOo8zL00ZhQCeRQ5H4f8WXNWIEKL8fwqcOkYw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@resvg/resvg-js-linux-arm-gnueabihf@2.4.1': - resolution: {integrity: sha512-isY/mdKoBWH4VB5v621co+8l101jxxYjuTkwOLsbW+5RK9EbLciPlCB02M99ThAHzI2MYxIUjXNmNgOW8btXvw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@resvg/resvg-js-linux-arm64-gnu@2.4.1': - resolution: {integrity: sha512-uY5voSCrFI8TH95vIYBm5blpkOtltLxLRODyhKJhGfskOI7XkRw5/t1u0sWAGYD8rRSNX+CA+np86otKjubrNg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@resvg/resvg-js-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-6mT0+JBCsermKMdi/O2mMk3m7SqOjwi9TKAwSngRZ/nQoL3Z0Z5zV+572ztgbWr0GODB422uD8e9R9zzz38dRQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@resvg/resvg-js-linux-x64-gnu@2.4.1': - resolution: {integrity: sha512-60KnrscLj6VGhkYOJEmmzPlqqfcw1keDh6U+vMcNDjPhV3B5vRSkpP/D/a8sfokyeh4VEacPSYkWGezvzS2/mg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@resvg/resvg-js-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-0AMyZSICC1D7ge115cOZQW8Pcad6PjWuZkBFF3FJuSxC6Dgok0MQnLTs2MfMdKBlAcwO9dXsf3bv9tJZj8pATA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@resvg/resvg-js-win32-arm64-msvc@2.4.1': - resolution: {integrity: sha512-76XDFOFSa3d0QotmcNyChh2xHwk+JTFiEQBVxMlHpHMeq7hNrQJ1IpE1zcHSQvrckvkdfLboKRrlGB86B10Qjw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@resvg/resvg-js-win32-ia32-msvc@2.4.1': - resolution: {integrity: sha512-odyVFGrEWZIzzJ89KdaFtiYWaIJh9hJRW/frcEcG3agJ464VXkN/2oEVF5ulD+5mpGlug9qJg7htzHcKxDN8sg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@resvg/resvg-js-win32-x64-msvc@2.4.1': - resolution: {integrity: sha512-vY4kTLH2S3bP+puU5x7hlAxHv+ulFgcK6Zn3efKSr0M0KnZ9A3qeAjZteIpkowEFfUeMPNg2dvvoFRJA9zqxSw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@resvg/resvg-js@2.4.1': - resolution: {integrity: sha512-wTOf1zerZX8qYcMmLZw3czR4paI4hXqPjShNwJRh5DeHxvgffUS5KM7XwxtbIheUW6LVYT5fhT2AJiP6mU7U4A==} - engines: {node: '>= 10'} - '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} @@ -1418,99 +1118,12 @@ packages: '@transloadit/prettier-bytes@0.0.7': resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} - '@turf/boolean-clockwise@6.5.0': - resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==} - - '@turf/clone@6.5.0': - resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} - - '@turf/flatten@6.5.0': - resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==} - - '@turf/helpers@6.5.0': - resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} - - '@turf/invariant@6.5.0': - resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} - - '@turf/meta@3.14.0': - resolution: {integrity: sha512-OtXqLQuR9hlQ/HkAF/OdzRea7E0eZK1ay8y8CBXkoO2R6v34CsDrWYLMSo0ZzMsaQDpKo76NPP2GGo+PyG1cSg==} - - '@turf/meta@6.5.0': - resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} - - '@turf/rewind@6.5.0': - resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==} - '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/bmapgl@0.0.7': - resolution: {integrity: sha512-3R0wFbZtynfHBJq0v477amaNH3t2u2CzBo46ViIPDdOTEJJ+Ma/ql4X8tS2XjDZcZhDAr6QDWoqV8SZvp6STvA==} - '@types/crypto-js@4.2.2': resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} - '@types/d3-array@3.2.2': - resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} - - '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - - '@types/d3-dispatch@3.0.7': - resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} - - '@types/d3-dsv@3.0.7': - resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} - - '@types/d3-ease@3.0.2': - resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - - '@types/d3-fetch@3.0.7': - resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} - - '@types/d3-force@3.0.10': - resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} - - '@types/d3-format@3.0.4': - resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} - - '@types/d3-geo@3.1.0': - resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} - - '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - - '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - - '@types/d3-path@3.1.1': - resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} - - '@types/d3-quadtree@3.0.6': - resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - - '@types/d3-random@3.0.3': - resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} - - '@types/d3-scale-chromatic@3.1.0': - resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} - - '@types/d3-scale@4.0.9': - resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} - - '@types/d3-shape@3.1.8': - resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} - - '@types/d3-time@3.0.4': - resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - - '@types/d3-timer@3.0.2': - resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} @@ -1520,9 +1133,6 @@ packages: '@types/event-emitter@0.3.5': resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==} - '@types/geojson@7946.0.16': - resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1553,9 +1163,6 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/web-animations-js@2.2.16': - resolution: {integrity: sha512-ATELeWMFwj8eQiH0KmvsCl1V2lu/qx/CjOBmv4ADSZS5u8r4reMyjCXtxG7khqyiwH3IOMNdrON/Ugn94OUcRA==} - '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} @@ -1834,86 +1441,6 @@ packages: '@vexip-ui/utils@2.16.4': resolution: {integrity: sha512-KX+Q4EsuwDp6ZlRJ7OAkiYxu52D5CVM8zpqQz/FXYV+JUtzl9T3dvxgtA8gQ0wm5Sh/xT6jp8Wo4X7tLAzRh/A==} - '@visactor/vchart-theme@1.12.2': - resolution: {integrity: sha512-r298TUdK+CKbHGVYWgQnNSEB5uqpFvF2/aMNZ/2POQnd2CovAPJOx2nTE6hAcOn8rra2FwJ2xF8AyP1O5OhrTw==} - peerDependencies: - '@visactor/vchart': '>=1.10.4' - - '@visactor/vchart@2.0.4': - resolution: {integrity: sha512-/NWBQFYd5A52I8Bkp+iod2LAhBo4cQcxt+xazrmJ/5L17Gk/LdUqCRpnF5dk3XncHb4ls+SRNGkH4kf0rNH2Mg==} - - '@visactor/vdataset@0.18.18': - resolution: {integrity: sha512-lye23zpineMKV42JmuJaOY3fgl7aWhyDIwK9dWooqZzP14AFukPoK7ZvUeuKZihLrHxqtCg2VWEjovnh9O1RUg==} - - '@visactor/vdataset@1.0.23': - resolution: {integrity: sha512-zrLk9FBUWJoW6b30XnPKzXwAXl8USdLDfed6QZLsmdkylRU8V7yZeXE2aKwU8Lg1U4HmQngqmqOx7/QlbX44Tg==} - - '@visactor/vlayouts@1.0.23': - resolution: {integrity: sha512-fK1f5LmuumhYanLArk5yrT4BZxu4IAmdc8WMwfB/KAvV+2dTPFuBUMWbWnDl0siQoU9SX9l/bLozUnI9n7BwBQ==} - - '@visactor/vrender-animate@1.0.13': - resolution: {integrity: sha512-UDCa/ZYHIATukkHHxYdVIPhPnNsWE/mBvRatnUGdTKoIW+gtWZkQ5SsjhSWLXWeZ5lzwXf5afjsg6Vc8Y7HqIg==} - - '@visactor/vrender-animate@1.0.9': - resolution: {integrity: sha512-9gkzQuVx2SP5YmdHslRdZK3dH8q0sZRqEi7XlmB7fL++pvDuJy5EGWTIUXPvAL/67hLpQKJy/Oe3C+4RxPpQ1A==} - - '@visactor/vrender-components@1.0.13': - resolution: {integrity: sha512-lclrDROH1FRnPhT05NStch759MtllVhGj/59R9rqSbflSt7FKKJ4bMhvwi6Ugh2HBsHVo9HjYUFCiW1oGNFG9w==} - - '@visactor/vrender-components@1.0.9': - resolution: {integrity: sha512-3NDFyKOlPjHICgrig14E1IrXXkLFQWOicX3jNH9/QqPjgRF4o6orp3ZeJs3Qy451qXTum4/2GUgsNq2sC8IHyg==} - - '@visactor/vrender-core@1.0.13': - resolution: {integrity: sha512-YMEUc1zuleTgyUJoMovUFeb4HK0mEMEdvkH+n8/+oexcB+0KCIHXfM/wtOhnMoJ08HAOOXcB+gGMZRig7TrE1Q==} - - '@visactor/vrender-core@1.0.9': - resolution: {integrity: sha512-r33hSBIPvbMJuLhJ8LLBlwkKLqwDg+nl2MRoQfyy4f4VrGg1yBmF576lbj7TCifLN8mtfhrWHZ+Hb0Q65Alghg==} - - '@visactor/vrender-kits@1.0.13': - resolution: {integrity: sha512-qvekmEb8s7oarV5TEXX9Soy71crpi/YkECnRy9ELds21BqHUGi1XLl21Bc50Lsss183c9Bry/bBChw/KjxA9qA==} - - '@visactor/vrender-kits@1.0.9': - resolution: {integrity: sha512-X5CCWEJt4AcfIcbkdScKJjr7tRBCta7SrltsjeMH+RDmNEzPxNJhvxgzpxePAOaWmJVR8TEKgT3cyx3bOU+EHg==} - - '@visactor/vscale@0.18.18': - resolution: {integrity: sha512-iRG4kv+5Fv4KX3AxEfV95XU3I6OmF0QizyAhqHxKa7L1MaT+MRvDDk5zHWf1E8gialLbL2xDe3GnT6g/4u5jhA==} - - '@visactor/vscale@1.0.23': - resolution: {integrity: sha512-XePhYuRoNAp+8MeSMuEOOvhVAlOwvM1sDT2yFxE6zdwVB2GjZk8mH+5N2xQGQWk75YmGJjlJASFtgwjlb1yWxw==} - - '@visactor/vscale@1.0.6': - resolution: {integrity: sha512-E6ySrzOIyL85luy5dKPpKzaCjf/hkLFF/mAn37Lv8XJWhyxWjYO29GM7cIlqDNCKAY0qsONPnfmgdGX+Hoe5vg==} - - '@visactor/vtable-editors@1.19.8': - resolution: {integrity: sha512-abFap7yk48lZ9ZtY9EyhEXKXPpJQyJCf4YiTMQa8L2jjh/91bn30EOLUdCAPkjp5ZgHbuVGiqa8a94VGqyJpNw==} - - '@visactor/vtable-gantt@1.19.8': - resolution: {integrity: sha512-Ohk0c3bifkXiuWAtRIwFVGD7LSbZU0O3uxwpA7qYopYnFTeCbjmR3lF3/JECsHkGiwIzQ9mTM1e7fsp/XKBz1A==} - - '@visactor/vtable@1.19.8': - resolution: {integrity: sha512-haV2RNSVIiAIbEuMH+A/sKTgu1DXlvpOtmZJwB8Pz88nljrasxcabe26HDoGo0c44Ro0ljyt+gL2uNKQl1GIGg==} - - '@visactor/vue-vtable@1.19.8': - resolution: {integrity: sha512-b5rqy5Q9YanlY3+3wHSURjUDz1M/i4LS08EFI9WcRl0Cio2MBo+/DBGAcjmUF7Vbq2ne20lpHc+QTUttr8DaiQ==} - - '@visactor/vutils-extension@1.11.14': - resolution: {integrity: sha512-vfViZphXJBH0NwCHIoe8S1/+tDtykEKIfsLMIHprh7Azv7fVSB1eotG00SAegK75E18ARQGNXF1DxixUFiXSIQ==} - - '@visactor/vutils-extension@2.0.4': - resolution: {integrity: sha512-Q0nDVTCLeCbAi8AAj8wAZfzfZDDsYF7xXhuLjjGPrPTuItPG/fHuw/rw6yDFvdhb4XGaPwv0MaUYNPFoOl60GQ==} - - '@visactor/vutils@0.18.18': - resolution: {integrity: sha512-byEJefqxiCz3UWe+YedEVjsdPtnJOAtKdRYi4qT9ojgACdd6QqlWs53Eb7PlMZgWDxVxqkxJP2bZnRKw+ME0Xg==} - - '@visactor/vutils@0.19.7': - resolution: {integrity: sha512-1SSnkZgX1p/rSVIFEibrpN6rDdLfdETSI6lJI5JwV8I2paluM1mqz3jEeT3McmWygd/wyUVKAyoRxGXFKAsKEw==} - - '@visactor/vutils@1.0.23': - resolution: {integrity: sha512-M8SLqgdHhKN8QmQKTWD1gzEaHptpIV9pvMYvC6+VeOsqYvZZ6UdhSCAAczTYVo+m/uwcEC2JHSUspbrs8rzlRQ==} - - '@visactor/vutils@1.0.6': - resolution: {integrity: sha512-87/AYLrjY1rtvIT0N/9S+sESialMQUKYv7MDjLjUo37u0hmeL/AwRSGBSvjxdxayKHOmdwUK1BLpQrDIrssKLg==} - '@vitejs/plugin-vue-jsx@5.1.1': resolution: {integrity: sha512-uQkfxzlF8SGHJJVH966lFTdjM/lGcwJGzwAHpVqAPDD/QcsqoUGa+q31ox1BrUfi+FLP2ChVp7uLXE3DkHyDdQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2031,11 +1558,6 @@ packages: '@vue/shared@3.5.31': resolution: {integrity: sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==} - '@vueuse/components@13.9.0': - resolution: {integrity: sha512-0DDFpjG3hEEK+3YgSzE/OzOGqpo/KmxcXWzW2YdmgahZvaoUdegn68GmbdcHRJE7CH55dDj13Cz47iN8QoI3jQ==} - peerDependencies: - vue: ^3.5.0 - '@vueuse/core@12.0.0': resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==} @@ -2145,66 +1667,6 @@ packages: slate: ^0.72.0 snabbdom: ^3.1.0 - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - abs-svg-path@0.1.1: - resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} - - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2215,29 +1677,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - adler-32@1.3.1: - resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} - engines: {node: '>=0.8'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - alien-signals@2.0.8: resolution: {integrity: sha512-844G1VLkk0Pe2SJjY0J8vp8ADI73IM4KliNu2OGlYzWpO28NexEUvjHTcFjFX3VXoiUtwTbHxLNI9ImkcoBqzA==} @@ -2299,9 +1741,6 @@ packages: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} - array-source@0.0.4: - resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} - array-unique@0.3.2: resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} engines: {node: '>=0.10.0'} @@ -2352,10 +1791,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - base64-arraybuffer@1.0.2: - resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} - engines: {node: '>= 0.6.0'} - base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} @@ -2404,9 +1839,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bubblesets-js@2.3.4: - resolution: {integrity: sha512-DyMjHmpkS2+xcFNtyN00apJYL3ESdp9fTrkDr5+9Qg/GPqFmcWgGsK1akZnttE1XFxJ/VMy4DNNGMGYtmFp1Sg==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2462,10 +1894,6 @@ packages: caniuse-lite@1.0.30001781: resolution: {integrity: sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==} - cfb@1.2.2: - resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} - engines: {node: '>=0.8'} - chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -2482,10 +1910,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} @@ -2519,10 +1943,6 @@ packages: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} - codepage@1.15.0: - resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} - engines: {node: '>=0.8'} - collection-visit@1.0.0: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} @@ -2534,9 +1954,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -2547,9 +1964,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comlink@4.4.2: - resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -2570,14 +1984,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@1.4.11: - resolution: {integrity: sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==} - engines: {'0': node >= 0.8} - - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -2609,21 +2015,10 @@ packages: core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - core-js@3.49.0: - resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.6: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2631,9 +2026,6 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - css-line-break@2.1.0: - resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} - css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -2654,9 +2046,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssfontparser@1.2.1: - resolution: {integrity: sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==} - csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} @@ -2664,163 +2053,10 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - d3-array@1.2.4: - resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} - - d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - - d3-binarytree@1.0.2: - resolution: {integrity: sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw==} - - d3-collection@1.0.7: - resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} - - d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - - d3-composite-projections@1.5.0: - resolution: {integrity: sha512-llWyqIrZgJyc2RCPZ9xkfuYhlw8OibmQQBiircByejkWqMppQAAx64EG8xkkae6cHgQGK3RCwnRoekTe+gjlpg==} - - d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - - d3-dsv@1.2.0: - resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} - hasBin: true - - d3-dsv@2.0.0: - resolution: {integrity: sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==} - hasBin: true - - d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - - d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - - d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - - d3-force-3d@3.0.6: - resolution: {integrity: sha512-4tsKHUPLOVkyfEffZo1v6sFHvGFwAIIjt/W8IThbp08DYAsXZck+2pSHEG5W1+gQgEvFLdZkYvmJAbRM2EzMnA==} - engines: {node: '>=12'} - - d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - - d3-format@3.1.2: - resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} - engines: {node: '>=12'} - - d3-geo-projection@2.1.2: - resolution: {integrity: sha512-zft6RRvPaB1qplTodBVcSH5Ftvmvvg0qoDiqpt+fyNthGr/qr+DD30cizNDluXjW7jmo7EKUTjvFCAHofv08Ow==} - hasBin: true - - d3-geo-projection@4.0.0: - resolution: {integrity: sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==} - engines: {node: '>=12'} - hasBin: true - - d3-geo@1.12.1: - resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} - - d3-geo@1.6.4: - resolution: {integrity: sha512-O5Q3iftLc6/EdU1MHUm+O29NoKKN/cyQtySnD9/yEEcinN+q4ng+H56e2Yn1YWdfZBoiaRVtR2NoJ3ivKX5ptQ==} - - d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} - - d3-hexbin@0.2.2: - resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} - - d3-hexjson@1.1.1: - resolution: {integrity: sha512-WMF1juFJwAx6LzdEVKlsCGZz+7QUG7VMJDtg8uD3cfNwWOTgMiy6qBRRGU7LSY2KbmEObu3BV5ZQbq9l/BvUZQ==} - - d3-hierarchy@1.1.9: - resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} - - d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - - d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - - d3-octree@1.1.0: - resolution: {integrity: sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A==} - - d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - - d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - - d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - - d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - - d3-regression@1.3.10: - resolution: {integrity: sha512-PF8GWEL70cHHWpx2jUQXc68r1pyPHIA+St16muk/XRokETzlegj5LriNKg7o4LR0TySug4nHYPJNNRz/W+/Niw==} - - d3-sankey@0.9.1: - resolution: {integrity: sha512-nnRkDaUMjBdeuGg+kWGdA+tjG1AVTnJ+Ykw7ff7CZHVI17Hm5sy8n0UXykVffn13aNHwK5wPOdOt1gS1ZEaF+A==} - - d3-scale-chromatic@3.1.0: - resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} - engines: {node: '>=12'} - - d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - - d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - - d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - - d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - - d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - - d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - - d3-voronoi@1.1.4: - resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} - d@1.0.2: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} - dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - - danmu.js@1.2.1: - resolution: {integrity: sha512-evDEImUBo94c846fC92K//Dzll8jXnZ3zKmYlQHwMzmvw6IW2IyjWL3Ew2SqEAzuqauFnDkwJEgZauu3uW/p1Q==} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -2918,12 +2154,6 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dhtmlx-gantt@9.0.14: - resolution: {integrity: sha512-1dy27u2oqw3regBKm6Ww7FkexOtUmg+IhHtH6BG6crpBr8dLltjJKwdSj9tcs2YVY+Ocsa3ANVS14rrViEwKoQ==} - - diff-match-patch@1.0.5: - resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} @@ -2959,9 +2189,6 @@ packages: resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} engines: {node: '>=12'} - downloadjs@1.4.7: - resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -3030,9 +2257,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.0.0: - resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} - es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -3158,10 +2382,6 @@ packages: '@typescript-eslint/parser': optional: true - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3209,10 +2429,6 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -3231,16 +2447,6 @@ packages: event-emitter@0.3.5: resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.4: - resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - execa@9.6.0: resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} engines: {node: ^18.19.0 || >=20.5.0} @@ -3287,9 +2493,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -3302,9 +2505,6 @@ packages: picomatch: optional: true - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -3313,9 +2513,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-source@0.6.1: - resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} - fill-range@4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} engines: {node: '>=0.10.0'} @@ -3339,10 +2536,6 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - flru@1.0.2: - resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} - engines: {node: '>=6'} - follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -3368,10 +2561,6 @@ packages: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} - frac@1.1.2: - resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} - engines: {node: '>=0.8'} - fragment-cache@0.2.1: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} @@ -3403,20 +2592,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - geobuf@3.0.2: - resolution: {integrity: sha512-ASgKwEAQQRnyNFHNvpd5uAwstbVYmiTW0Caw3fBb509tNTqXyAAPMyFs5NNihsLZhLxU1j/kjFhkhLWA9djuVg==} - hasBin: true - - geojson-dissolve@3.1.0: - resolution: {integrity: sha512-JXHfn+A3tU392HA703gJbjmuHaQOAE/C1KzbELCczFRFux+GdY6zt1nKb1VMBHp4LWeE7gUY2ql+g06vJqhiwQ==} - - geojson-flatten@0.2.4: - resolution: {integrity: sha512-LiX6Jmot8adiIdZ/fthbcKKPOfWjTQchX/ggHnwMZ2e4b0I243N1ANUos0LvnzepTEsj0+D4fIJ5bKhBrWnAHA==} - hasBin: true - - geojson-linestring-dissolve@0.0.1: - resolution: {integrity: sha512-Y8I2/Ea28R/Xeki7msBcpMvJL2TaPfaPKP8xqueJfQ9/jEhps+iOJxOR2XCBGgVb12Z6XnDb1CMbaPfLepsLaw==} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -3429,10 +2604,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -3448,16 +2619,10 @@ packages: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} - gifuct-js@2.1.2: - resolution: {integrity: sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg==} - giget@2.0.0: resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} hasBin: true - gl-matrix@3.4.4: - resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3466,9 +2631,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true @@ -3507,9 +2669,6 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - grid-layout-plus@1.1.1: resolution: {integrity: sha512-7CWehJubrVC8Ps5QFUlnDsp0kiREvKfi3Pdjp21EyY8BNzSusqI3Utcxvu1Y9UUKe3YExvbhJzIxHK6rorbRaQ==} peerDependencies: @@ -3580,10 +2739,6 @@ packages: html-void-elements@2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - html2canvas@1.4.1: - resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} - engines: {node: '>=8.0.0'} - htmlparser2@3.10.1: resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} @@ -3594,14 +2749,6 @@ packages: i18next@20.6.1: resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - icss-replace-symbols@1.1.0: resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} @@ -3611,9 +2758,6 @@ packages: peerDependencies: postcss: ^8.1.0 - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3658,24 +2802,14 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - is-accessor-descriptor@1.0.1: resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} engines: {node: '>= 0.10'} - is-any-array@2.0.1: - resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} - is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -3866,9 +3000,6 @@ packages: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -3893,10 +3024,6 @@ packages: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -3904,9 +3031,6 @@ packages: js-base64@2.6.4: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - js-binary-schema-parser@2.0.3: - resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3914,9 +3038,6 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsbarcode@3.12.1: - resolution: {integrity: sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ==} - jsencrypt@3.5.4: resolution: {integrity: sha512-kNjfYEMNASxrDGsmcSQh/rUTmcoRfSUkxnAz+MMywM8jtGu+fFEZ3nJjHM58zscVnwR0fYmG9sGkTDjqUdpiwA==} @@ -3933,15 +3054,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3997,18 +3112,10 @@ packages: lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - loader-utils@1.4.2: resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} engines: {node: '>=4.0.0'} - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - local-pkg@1.1.1: resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} engines: {node: '>=14'} @@ -4059,15 +3166,9 @@ packages: lodash.toarray@4.4.0: resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - lottie-web@5.13.0: - resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -4112,9 +3213,6 @@ packages: resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} engines: {node: '>=4'} - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -4153,12 +3251,6 @@ packages: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.0: - resolution: {integrity: sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==} - - minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4178,18 +3270,6 @@ packages: engines: {node: '>=10'} hasBin: true - ml-array-max@1.2.4: - resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} - - ml-array-min@1.2.3: - resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==} - - ml-array-rescale@1.3.7: - resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==} - - ml-matrix@6.12.1: - resolution: {integrity: sha512-TJ+8eOFdp+INvzR4zAuwBQJznDUfktMtOB6g/hUcGh3rcyjxbz4Te57Pgri8Q9bhSQ7Zys4IYOGhFdnlgeB6Lw==} - mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} @@ -4231,9 +3311,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} @@ -4341,9 +3418,6 @@ packages: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} - parse-svg-path@0.1.2: - resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} - pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} @@ -4351,9 +3425,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-data-parser@0.1.0: - resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4374,9 +3445,6 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - path-source@0.1.3: - resolution: {integrity: sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==} - pathe@0.2.0: resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} @@ -4386,17 +3454,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pbf@3.3.0: - resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} - hasBin: true - - pdfast@0.2.0: - resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} - - pdfjs-dist@4.10.38: - resolution: {integrity: sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==} - engines: {node: '>=20'} - perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -4423,9 +3480,6 @@ packages: typescript: optional: true - pinyin-pro@3.27.0: - resolution: {integrity: sha512-Osdgjwe7Rm17N2paDMM47yW+jUIUH3+0RGo8QP39ZTLpTaJVDK0T58hOLaMQJbcMmAebVuK2ePunTEVEx1clNQ==} - pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -4436,15 +3490,6 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - point-at-length@1.1.0: - resolution: {integrity: sha512-nNHDk9rNEh/91o2Y8kHLzBLNpLf80RYd2gCun9ss+V0ytRSf6XhryBTx071fesktjbachRmGuUbId+JQmzhRXw==} - - points-on-curve@0.2.0: - resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} - - points-on-path@0.2.1: - resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -4554,9 +3599,6 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - print-js@1.6.0: - resolution: {integrity: sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==} - prismjs@1.30.0: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} @@ -4569,9 +3611,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - protocol-buffers-schema@3.6.0: - resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -4602,9 +3641,6 @@ packages: rd@2.0.1: resolution: {integrity: sha512-/XdKU4UazUZTXFmI0dpABt8jSXPWcEyaGdk340KdHnsEOdkTctlX23aAK7ChQDn39YGNlAJr1M5uvaKt4QnpNw==} - readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -4641,9 +3677,6 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true - regression@2.0.1: - resolution: {integrity: sha512-A4XYsc37dsBaNOgEjkJKzfJlE394IMmUPlI/p3TTI9u3T+2a+eox5Pr/CPUqF0eszeWZJPAc6QkroAhuUpWDJQ==} - repeat-element@1.1.4: resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} engines: {node: '>=0.10.0'} @@ -4656,10 +3689,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -4667,9 +3696,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve-protobuf-schema@2.1.0: - resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} - resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated @@ -4695,9 +3721,6 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - roughjs@4.5.2: - resolution: {integrity: sha512-2xSlLDKdsWyFxrveYWk9YQ/Y9UfK38EAMRNkYkMqYBJvPX8abCa9PN0x3w02H8Oa6/0bcZICJU+U95VumPqseg==} - run-applescript@7.1.0: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} @@ -4705,9 +3728,6 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -4726,9 +3746,6 @@ packages: safe-regex@1.1.0: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.91.0: resolution: {integrity: sha512-aFOZHGf+ur+bp1bCHZ+u8otKGh77ZtmFyXDo4tlYvT7PWql41Kwd8wdkPqhhT+h2879IVblcHFglIMofsFd1EA==} engines: {node: '>=14.0.0'} @@ -4738,10 +3755,6 @@ packages: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} - scroll-into-view-if-needed@2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} @@ -4778,10 +3791,6 @@ packages: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} - shapefile@0.6.6: - resolution: {integrity: sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==} - hasBin: true - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4814,15 +3823,6 @@ packages: resolution: {integrity: sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==} hasBin: true - simple-statistics@6.1.1: - resolution: {integrity: sha512-zGwn0DDRa9Zel4H4n2pjTFIyGoAGpnpjrGIctreCxj5XWrcx9v7Xy7270FkC967WMmcvuc8ZU7m0ZG+hGN7gAA==} - - simple-statistics@7.8.9: - resolution: {integrity: sha512-YT6MLqYsz7y1rQZOLFlOCCgSRpCi6bqY417yhoOLI7aVoBi29dD39EPrOE03W9DY25H0J0jizVsHZnkLzyGJFg==} - - simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - simplebar-core@1.3.2: resolution: {integrity: sha512-qKgTTuTqapjsFGkNhCjyPhysnbZGpQqNmjk0nOYjFN5ordC/Wjvg+RbYCyMSnW60l/Z0ZS82GbNltly6PMUH1w==} @@ -4831,13 +3831,6 @@ packages: peerDependencies: vue: '>=2.5.17' - simplify-geojson@1.0.5: - resolution: {integrity: sha512-02l1W4UipP5ivNVq6kX15mAzCRIV1oI3tz0FUEyOsNiv1ltuFDjbNhO+nbv/xhbDEtKqWLYuzpWhUsJrjR/ypA==} - hasBin: true - - simplify-geometry@0.0.2: - resolution: {integrity: sha512-ZEyrplkqgCqDlL7V8GbbYgTLlcnNF+MWWUdy8s8ZeJru50bnI71rDew/I+HG36QS2mPOYAq1ZjwNXxHJ8XOVBw==} - sirv@3.0.2: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} @@ -4853,9 +3846,6 @@ packages: slate@0.72.8: resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} - slice-source@0.4.1: - resolution: {integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==} - snabbdom@3.6.3: resolution: {integrity: sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==} engines: {node: '>=12.17.0'} @@ -4903,10 +3893,6 @@ packages: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} - ssf@0.11.2: - resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} - engines: {node: '>=0.8'} - ssr-window@3.0.0: resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} @@ -4926,9 +3912,6 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - stream-source@0.3.5: - resolution: {integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==} - strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -4953,9 +3936,6 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4999,10 +3979,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - svelte-eslint-parser@1.6.0: resolution: {integrity: sha512-qoB1ehychT6OxEtQAqc/guSqLS20SlA53Uijl7x375s8nlUT0lb9ol/gzraEEatQwsyPTJo87s2CmKL9Xab+Uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.30.3} @@ -5015,18 +3991,11 @@ packages: svg-baker@1.7.0: resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} - svg-path-parser@1.1.0: - resolution: {integrity: sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==} - svgo@2.8.2: resolution: {integrity: sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==} engines: {node: '>=10.13.0'} hasBin: true - swiper@11.2.10: - resolution: {integrity: sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==} - engines: {node: '>= 4.7.0'} - synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5038,34 +4007,11 @@ packages: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} - terser-webpack-plugin@5.4.0: - resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser@5.46.1: resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} engines: {node: '>=10'} hasBin: true - text-encoding@0.6.4: - resolution: {integrity: sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==} - deprecated: no longer maintained - - text-segmentation@1.0.3: - resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - tiny-emitter@2.1.0: resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} @@ -5099,14 +4045,6 @@ packages: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} engines: {node: '>=0.10.0'} - topojson-client@3.1.0: - resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} - hasBin: true - - topojson-server@3.0.1: - resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==} - hasBin: true - totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -5169,15 +4107,6 @@ packages: resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==} engines: {node: '>= 0.4'} - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typedarray@0.0.7: - resolution: {integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==} - - typeit@8.8.7: - resolution: {integrity: sha512-sSVpy+cjeFP6Z+fZqiHzUSShg5yYFeJEt/Qut/bX945+Axyq+Yq+GPOuuk+sofoccSv8nNX/ibOOHkbki2mEpg==} - typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -5290,16 +4219,10 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utrie@1.0.2: - resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vditor@3.11.2: - resolution: {integrity: sha512-8QguQQUPWbBFocnfQmWjz4jiykQnvsmCuhOomGIVVK7vc+dQq2h8w9qQQuEjUTZpnZT5fEdYbj4aLr1NGdAZaA==} - vite-dev-rpc@1.1.0: resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==} peerDependencies: @@ -5423,11 +4346,6 @@ packages: peerDependencies: vue: ^3.0.0 - vue-pdf-embed@2.1.3: - resolution: {integrity: sha512-EGgZNb8HRrAloBpb8p8CugDpJpoPbQ8CFfAYdWZgq2e5qBMP9JSeLzVQIAJkXsclHXRIS3O9fp3WQbP9T5Inwg==} - peerDependencies: - vue: ^3.3.0 - vue-router@4.5.1: resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} peerDependencies: @@ -5447,10 +4365,6 @@ packages: typescript: optional: true - watchpack@2.5.1: - resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} - engines: {node: '>=10.13.0'} - webpack-sources@3.3.4: resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} engines: {node: '>=10.13.0'} @@ -5458,16 +4372,6 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.105.4: - resolution: {integrity: sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -5492,26 +4396,10 @@ packages: wildcard@1.1.2: resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} - wmf@1.0.2: - resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} - engines: {node: '>=0.8'} - - wolfy87-eventemitter@5.2.9: - resolution: {integrity: sha512-P+6vtWyuDw+MB01X7UeF8TaHBvbCovf4HPEMF/SV7BdDc1SMTiBy13SRD71lQh4ExFTG1d/WNzDGDCyOKSMblw==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - word@0.3.0: - resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} - engines: {node: '>=0.8'} - - workerize-loader@2.0.2: - resolution: {integrity: sha512-HoZ6XY4sHWxA2w0WpzgBwUiR3dv1oo7bS+oCwIpb6n54MclQ/7KXdXsVIChTCygyuHtVuGBO1+i3HzTt699UJQ==} - peerDependencies: - webpack: '*' - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5524,21 +4412,6 @@ packages: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} - xgplayer-subtitles@3.0.23: - resolution: {integrity: sha512-deGdV75giVzfTTdG9XATmji39NHwKTpEelWt2rRx/RyXGgU2bQFp0Ft7yWaK2Uu8A/WVrP5fpxEAj4MstREMkQ==} - peerDependencies: - core-js: '>=3.12.1' - - xgplayer@3.0.23: - resolution: {integrity: sha512-Bn3zQfMMAZimlVG9EeIDybMcklc+6FH8Sv47KpTq4K6ofCzyhPG/KenxailDedlHmxjb5B2o+240TpJtMQ3oJA==} - peerDependencies: - core-js: '>=3.12.1' - - xlsx@0.18.5: - resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} - engines: {node: '>=0.8'} - hasBin: true - xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -5576,8 +4449,6 @@ packages: snapshots: - '@amap/amap-jsapi-types@0.0.15': {} - '@antfu/eslint-define-config@1.23.0-2': {} '@antfu/install-pkg@1.1.0': @@ -5587,209 +4458,6 @@ snapshots: '@antfu/utils@8.1.1': {} - '@antv/algorithm@0.1.26': - dependencies: - '@antv/util': 2.0.17 - tslib: 2.8.1 - - '@antv/component@2.1.11': - dependencies: - '@antv/g': 6.3.1 - '@antv/scale': 0.4.16 - '@antv/util': 3.3.11 - svg-path-parser: 1.1.0 - - '@antv/coord@0.4.7': - dependencies: - '@antv/scale': 0.4.16 - '@antv/util': 2.0.17 - gl-matrix: 3.4.4 - - '@antv/data-set@0.11.8': - dependencies: - '@antv/hierarchy': 0.6.14 - '@antv/util': 2.0.17 - d3-composite-projections: 1.5.0 - d3-dsv: 1.2.0 - d3-geo: 1.6.4 - d3-geo-projection: 2.1.2 - d3-hexjson: 1.1.1 - d3-hierarchy: 1.1.9 - d3-sankey: 0.9.1 - d3-voronoi: 1.1.4 - dagre: 0.8.5 - point-at-length: 1.1.0 - regression: 2.0.1 - simple-statistics: 6.1.1 - topojson-client: 3.1.0 - wolfy87-eventemitter: 5.2.9 - - '@antv/event-emitter@0.1.3': {} - - '@antv/expr@1.0.2': {} - - '@antv/g-canvas@2.2.0': - dependencies: - '@antv/g-lite': 2.7.0 - '@antv/g-math': 3.1.0 - '@antv/util': 3.3.11 - '@babel/runtime': 7.29.2 - gl-matrix: 3.4.4 - tslib: 2.8.1 - - '@antv/g-lite@2.7.0': - dependencies: - '@antv/g-math': 3.1.0 - '@antv/util': 3.3.11 - '@antv/vendor': 1.0.11 - '@babel/runtime': 7.29.2 - eventemitter3: 5.0.4 - gl-matrix: 3.4.4 - tslib: 2.8.1 - - '@antv/g-math@3.1.0': - dependencies: - '@antv/util': 3.3.11 - '@babel/runtime': 7.29.2 - gl-matrix: 3.4.4 - tslib: 2.8.1 - - '@antv/g-plugin-dragndrop@2.1.1': - dependencies: - '@antv/g-lite': 2.7.0 - '@antv/util': 3.3.11 - '@babel/runtime': 7.29.2 - tslib: 2.8.1 - - '@antv/g2@5.4.0': - dependencies: - '@antv/component': 2.1.11 - '@antv/coord': 0.4.7 - '@antv/event-emitter': 0.1.3 - '@antv/expr': 1.0.2 - '@antv/g': 6.3.1 - '@antv/g-canvas': 2.2.0 - '@antv/g-plugin-dragndrop': 2.1.1 - '@antv/scale': 0.5.2 - '@antv/util': 3.3.11 - '@antv/vendor': 1.0.11 - flru: 1.0.2 - pdfast: 0.2.0 - - '@antv/g6@5.0.49(workerize-loader@2.0.2(webpack@5.105.4))': - dependencies: - '@antv/algorithm': 0.1.26 - '@antv/component': 2.1.11 - '@antv/event-emitter': 0.1.3 - '@antv/g': 6.3.1 - '@antv/g-canvas': 2.2.0 - '@antv/g-plugin-dragndrop': 2.1.1 - '@antv/graphlib': 2.0.4 - '@antv/hierarchy': 0.6.14 - '@antv/layout': 1.2.14-beta.9(workerize-loader@2.0.2(webpack@5.105.4)) - '@antv/util': 3.3.11 - bubblesets-js: 2.3.4 - transitivePeerDependencies: - - workerize-loader - - '@antv/g@6.3.1': - dependencies: - '@antv/g-lite': 2.7.0 - '@antv/util': 3.3.11 - '@babel/runtime': 7.29.2 - gl-matrix: 3.4.4 - html2canvas: 1.4.1 - - '@antv/graphlib@2.0.4': - dependencies: - '@antv/event-emitter': 0.1.3 - - '@antv/hierarchy@0.6.14': {} - - '@antv/layout@1.2.14-beta.9(workerize-loader@2.0.2(webpack@5.105.4))': - dependencies: - '@antv/event-emitter': 0.1.3 - '@antv/graphlib': 2.0.4 - '@antv/util': 3.3.11 - '@naoak/workerize-transferable': 0.1.0(workerize-loader@2.0.2(webpack@5.105.4)) - comlink: 4.4.2 - d3-force: 3.0.0 - d3-force-3d: 3.0.6 - d3-octree: 1.1.0 - d3-quadtree: 3.0.1 - dagre: 0.8.5 - ml-matrix: 6.12.1 - tslib: 2.8.1 - transitivePeerDependencies: - - workerize-loader - - '@antv/scale@0.4.16': - dependencies: - '@antv/util': 3.3.11 - color-string: 1.9.1 - fecha: 4.2.3 - - '@antv/scale@0.5.2': - dependencies: - '@antv/util': 3.3.11 - color-string: 1.9.1 - fecha: 4.2.3 - - '@antv/util@2.0.17': - dependencies: - csstype: 3.2.3 - tslib: 2.8.1 - - '@antv/util@3.3.11': - dependencies: - fast-deep-equal: 3.1.3 - gl-matrix: 3.4.4 - tslib: 2.8.1 - - '@antv/vendor@1.0.11': - dependencies: - '@types/d3-array': 3.2.2 - '@types/d3-color': 3.1.3 - '@types/d3-dispatch': 3.0.7 - '@types/d3-dsv': 3.0.7 - '@types/d3-ease': 3.0.2 - '@types/d3-fetch': 3.0.7 - '@types/d3-force': 3.0.10 - '@types/d3-format': 3.0.4 - '@types/d3-geo': 3.1.0 - '@types/d3-hierarchy': 3.1.7 - '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.1.1 - '@types/d3-quadtree': 3.0.6 - '@types/d3-random': 3.0.3 - '@types/d3-scale': 4.0.9 - '@types/d3-scale-chromatic': 3.1.0 - '@types/d3-shape': 3.1.8 - '@types/d3-time': 3.0.4 - '@types/d3-timer': 3.0.2 - d3-array: 3.2.4 - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-force-3d: 3.0.6 - d3-format: 3.1.2 - d3-geo: 3.1.1 - d3-geo-projection: 4.0.0 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-regression: 1.3.10 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.1.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-timer: 3.0.1 - '@babel/code-frame@7.29.0': dependencies: '@babel/helper-validator-identifier': 7.28.5 @@ -6209,17 +4877,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@iconify-vue/mingcute@1.0.5(vue@3.5.20(typescript@5.8.3))': - dependencies: - '@iconify/css-vue': 1.0.2(vue@3.5.20(typescript@5.8.3)) - transitivePeerDependencies: - - vue - - '@iconify/css-vue@1.0.2(vue@3.5.20(typescript@5.8.3))': - dependencies: - '@iconify/types': 2.0.0 - vue: 3.5.20(typescript@5.8.3) - '@iconify/json@2.2.380': dependencies: '@iconify/types': 2.0.0 @@ -6292,6 +4949,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -6302,58 +4960,6 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@naoak/workerize-transferable@0.1.0(workerize-loader@2.0.2(webpack@5.105.4))': - dependencies: - workerize-loader: 2.0.2(webpack@5.105.4) - - '@napi-rs/canvas-android-arm64@0.1.97': - optional: true - - '@napi-rs/canvas-darwin-arm64@0.1.97': - optional: true - - '@napi-rs/canvas-darwin-x64@0.1.97': - optional: true - - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.97': - optional: true - - '@napi-rs/canvas-linux-arm64-gnu@0.1.97': - optional: true - - '@napi-rs/canvas-linux-arm64-musl@0.1.97': - optional: true - - '@napi-rs/canvas-linux-riscv64-gnu@0.1.97': - optional: true - - '@napi-rs/canvas-linux-x64-gnu@0.1.97': - optional: true - - '@napi-rs/canvas-linux-x64-musl@0.1.97': - optional: true - - '@napi-rs/canvas-win32-arm64-msvc@0.1.97': - optional: true - - '@napi-rs/canvas-win32-x64-msvc@0.1.97': - optional: true - - '@napi-rs/canvas@0.1.97': - optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.97 - '@napi-rs/canvas-darwin-arm64': 0.1.97 - '@napi-rs/canvas-darwin-x64': 0.1.97 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.97 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.97 - '@napi-rs/canvas-linux-arm64-musl': 0.1.97 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.97 - '@napi-rs/canvas-linux-x64-gnu': 0.1.97 - '@napi-rs/canvas-linux-x64-musl': 0.1.97 - '@napi-rs/canvas-win32-arm64-msvc': 0.1.97 - '@napi-rs/canvas-win32-x64-msvc': 0.1.97 - optional: true - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.9.1 @@ -6445,57 +5051,6 @@ snapshots: dependencies: quansync: 1.0.0 - '@resvg/resvg-js-android-arm-eabi@2.4.1': - optional: true - - '@resvg/resvg-js-android-arm64@2.4.1': - optional: true - - '@resvg/resvg-js-darwin-arm64@2.4.1': - optional: true - - '@resvg/resvg-js-darwin-x64@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm-gnueabihf@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm64-gnu@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm64-musl@2.4.1': - optional: true - - '@resvg/resvg-js-linux-x64-gnu@2.4.1': - optional: true - - '@resvg/resvg-js-linux-x64-musl@2.4.1': - optional: true - - '@resvg/resvg-js-win32-arm64-msvc@2.4.1': - optional: true - - '@resvg/resvg-js-win32-ia32-msvc@2.4.1': - optional: true - - '@resvg/resvg-js-win32-x64-msvc@2.4.1': - optional: true - - '@resvg/resvg-js@2.4.1': - optionalDependencies: - '@resvg/resvg-js-android-arm-eabi': 2.4.1 - '@resvg/resvg-js-android-arm64': 2.4.1 - '@resvg/resvg-js-darwin-arm64': 2.4.1 - '@resvg/resvg-js-darwin-x64': 2.4.1 - '@resvg/resvg-js-linux-arm-gnueabihf': 2.4.1 - '@resvg/resvg-js-linux-arm64-gnu': 2.4.1 - '@resvg/resvg-js-linux-arm64-musl': 2.4.1 - '@resvg/resvg-js-linux-x64-gnu': 2.4.1 - '@resvg/resvg-js-linux-x64-musl': 2.4.1 - '@resvg/resvg-js-win32-arm64-msvc': 2.4.1 - '@resvg/resvg-js-win32-ia32-msvc': 2.4.1 - '@resvg/resvg-js-win32-x64-msvc': 2.4.1 - '@rolldown/pluginutils@1.0.0-beta.29': {} '@rolldown/pluginutils@1.0.0-rc.12': {} @@ -6648,113 +5203,23 @@ snapshots: '@transloadit/prettier-bytes@0.0.7': {} - '@turf/boolean-clockwise@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - - '@turf/clone@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/flatten@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - - '@turf/helpers@6.5.0': {} - - '@turf/invariant@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/meta@3.14.0': {} - - '@turf/meta@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/rewind@6.5.0': - dependencies: - '@turf/boolean-clockwise': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 optional: true - '@types/bmapgl@0.0.7': {} - '@types/crypto-js@4.2.2': {} - '@types/d3-array@3.2.2': {} - - '@types/d3-color@3.1.3': {} - - '@types/d3-dispatch@3.0.7': {} - - '@types/d3-dsv@3.0.7': {} - - '@types/d3-ease@3.0.2': {} - - '@types/d3-fetch@3.0.7': - dependencies: - '@types/d3-dsv': 3.0.7 - - '@types/d3-force@3.0.10': {} - - '@types/d3-format@3.0.4': {} - - '@types/d3-geo@3.1.0': - dependencies: - '@types/geojson': 7946.0.16 - - '@types/d3-hierarchy@3.1.7': {} - - '@types/d3-interpolate@3.0.4': - dependencies: - '@types/d3-color': 3.1.3 - - '@types/d3-path@3.1.1': {} - - '@types/d3-quadtree@3.0.6': {} - - '@types/d3-random@3.0.3': {} - - '@types/d3-scale-chromatic@3.1.0': {} - - '@types/d3-scale@4.0.9': - dependencies: - '@types/d3-time': 3.0.4 - - '@types/d3-shape@3.1.8': - dependencies: - '@types/d3-path': 3.1.1 - - '@types/d3-time@3.0.4': {} - - '@types/d3-timer@3.0.2': {} - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + optional: true '@types/estree@1.0.8': {} '@types/event-emitter@0.3.5': {} - '@types/geojson@7946.0.16': {} - '@types/json-schema@7.0.15': {} '@types/lodash-es@4.17.12': @@ -6782,8 +5247,6 @@ snapshots: '@types/trusted-types@2.0.7': optional: true - '@types/web-animations-js@2.2.16': {} - '@types/web-bluetooth@0.0.20': {} '@types/web-bluetooth@0.0.21': {} @@ -7120,201 +5583,6 @@ snapshots: '@vexip-ui/utils@2.16.4': {} - '@visactor/vchart-theme@1.12.2(@visactor/vchart@2.0.4)': - dependencies: - '@visactor/vchart': 2.0.4 - - '@visactor/vchart@2.0.4': - dependencies: - '@visactor/vdataset': 1.0.23 - '@visactor/vlayouts': 1.0.23 - '@visactor/vrender-animate': 1.0.13 - '@visactor/vrender-components': 1.0.13 - '@visactor/vrender-core': 1.0.13 - '@visactor/vrender-kits': 1.0.13 - '@visactor/vscale': 1.0.23 - '@visactor/vutils': 1.0.23 - '@visactor/vutils-extension': 2.0.4 - - '@visactor/vdataset@0.18.18': - dependencies: - '@turf/flatten': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/rewind': 6.5.0 - '@visactor/vutils': 0.18.18 - d3-dsv: 2.0.0 - d3-geo: 1.12.1 - d3-hexbin: 0.2.2 - d3-hierarchy: 3.1.2 - eventemitter3: 4.0.7 - geobuf: 3.0.2 - geojson-dissolve: 3.1.0 - path-browserify: 1.0.1 - pbf: 3.3.0 - point-at-length: 1.1.0 - simple-statistics: 7.8.9 - simplify-geojson: 1.0.5 - topojson-client: 3.1.0 - - '@visactor/vdataset@1.0.23': - dependencies: - '@turf/flatten': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/rewind': 6.5.0 - '@visactor/vutils': 1.0.23 - d3-dsv: 2.0.0 - d3-geo: 1.12.1 - d3-hexbin: 0.2.2 - d3-hierarchy: 3.1.2 - eventemitter3: 4.0.7 - geobuf: 3.0.2 - geojson-dissolve: 3.1.0 - path-browserify: 1.0.1 - pbf: 3.3.0 - point-at-length: 1.1.0 - simple-statistics: 7.8.9 - simplify-geojson: 1.0.5 - topojson-client: 3.1.0 - - '@visactor/vlayouts@1.0.23': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@visactor/vscale': 1.0.23 - '@visactor/vutils': 1.0.23 - eventemitter3: 4.0.7 - - '@visactor/vrender-animate@1.0.13': - dependencies: - '@visactor/vrender-core': 1.0.13 - '@visactor/vutils': 1.0.6 - - '@visactor/vrender-animate@1.0.9': - dependencies: - '@visactor/vrender-core': 1.0.9 - '@visactor/vutils': 1.0.6 - - '@visactor/vrender-components@1.0.13': - dependencies: - '@visactor/vrender-animate': 1.0.13 - '@visactor/vrender-core': 1.0.13 - '@visactor/vrender-kits': 1.0.13 - '@visactor/vscale': 1.0.6 - '@visactor/vutils': 1.0.6 - - '@visactor/vrender-components@1.0.9': - dependencies: - '@visactor/vrender-animate': 1.0.9 - '@visactor/vrender-core': 1.0.9 - '@visactor/vrender-kits': 1.0.9 - '@visactor/vscale': 1.0.6 - '@visactor/vutils': 1.0.6 - - '@visactor/vrender-core@1.0.13': - dependencies: - '@visactor/vutils': 1.0.6 - color-convert: 2.0.1 - - '@visactor/vrender-core@1.0.9': - dependencies: - '@visactor/vutils': 1.0.6 - color-convert: 2.0.1 - - '@visactor/vrender-kits@1.0.13': - dependencies: - '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 1.0.13 - '@visactor/vutils': 1.0.6 - gifuct-js: 2.1.2 - lottie-web: 5.13.0 - roughjs: 4.5.2 - - '@visactor/vrender-kits@1.0.9': - dependencies: - '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 1.0.9 - '@visactor/vutils': 1.0.6 - gifuct-js: 2.1.2 - lottie-web: 5.13.0 - roughjs: 4.5.2 - - '@visactor/vscale@0.18.18': - dependencies: - '@visactor/vutils': 0.18.18 - - '@visactor/vscale@1.0.23': - dependencies: - '@visactor/vutils': 1.0.23 - - '@visactor/vscale@1.0.6': - dependencies: - '@visactor/vutils': 1.0.6 - - '@visactor/vtable-editors@1.19.8': {} - - '@visactor/vtable-gantt@1.19.8': - dependencies: - '@visactor/vdataset': 0.18.18 - '@visactor/vscale': 0.18.18 - '@visactor/vtable': 1.19.8 - '@visactor/vtable-editors': 1.19.8 - '@visactor/vutils': 0.19.7 - cssfontparser: 1.2.1 - - '@visactor/vtable@1.19.8': - dependencies: - '@visactor/vdataset': 0.18.18 - '@visactor/vrender-animate': 1.0.9 - '@visactor/vrender-components': 1.0.9 - '@visactor/vrender-core': 1.0.9 - '@visactor/vrender-kits': 1.0.9 - '@visactor/vscale': 0.18.18 - '@visactor/vtable-editors': 1.19.8 - '@visactor/vutils': 0.19.7 - '@visactor/vutils-extension': 1.11.14 - cssfontparser: 1.2.1 - gifuct-js: 2.1.2 - lodash: 4.17.21 - - '@visactor/vue-vtable@1.19.8': - dependencies: - '@visactor/vtable': 1.19.8 - '@visactor/vutils': 0.19.7 - - '@visactor/vutils-extension@1.11.14': - dependencies: - '@visactor/vdataset': 0.18.18 - '@visactor/vutils': 0.18.18 - - '@visactor/vutils-extension@2.0.4': - dependencies: - '@visactor/vdataset': 1.0.23 - '@visactor/vutils': 1.0.23 - - '@visactor/vutils@0.18.18': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - - '@visactor/vutils@0.19.7': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - - '@visactor/vutils@1.0.23': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - - '@visactor/vutils@1.0.6': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - '@vitejs/plugin-vue-jsx@5.1.1(vite@7.1.4(@types/node@24.3.0)(jiti@2.6.1)(sass@1.91.0)(terser@5.46.1)(tsx@4.20.5)(yaml@2.8.3))(vue@3.5.20(typescript@5.8.3))': dependencies: '@babel/core': 7.29.0 @@ -7513,12 +5781,6 @@ snapshots: '@vue/shared@3.5.31': {} - '@vueuse/components@13.9.0(vue@3.5.20(typescript@5.8.3))': - dependencies: - '@vueuse/core': 13.9.0(vue@3.5.20(typescript@5.8.3)) - '@vueuse/shared': 13.9.0(vue@3.5.20(typescript@5.8.3)) - vue: 3.5.20(typescript@5.8.3) - '@vueuse/core@12.0.0(typescript@5.8.3)': dependencies: '@types/web-bluetooth': 0.0.20 @@ -7657,109 +5919,12 @@ snapshots: slate: 0.72.8 snabbdom: 3.6.3 - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - abs-svg-path@0.1.1: {} - - acorn-import-phases@1.0.4(acorn@8.16.0): - dependencies: - acorn: 8.16.0 - acorn-jsx@5.3.2(acorn@8.16.0): dependencies: acorn: 8.16.0 acorn@8.16.0: {} - adler-32@1.3.1: {} - - ajv-formats@2.1.1(ajv@8.18.0): - optionalDependencies: - ajv: 8.18.0 - - ajv-keywords@5.1.0(ajv@8.18.0): - dependencies: - ajv: 8.18.0 - fast-deep-equal: 3.1.3 - ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 @@ -7767,13 +5932,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - alien-signals@2.0.8: {} ansi-colors@4.1.3: {} @@ -7814,8 +5972,6 @@ snapshots: call-bound: 1.0.4 is-array-buffer: 3.0.5 - array-source@0.0.4: {} - array-unique@0.3.2: {} arraybuffer.prototype.slice@1.0.4: @@ -7863,8 +6019,6 @@ snapshots: balanced-match@4.0.4: {} - base64-arraybuffer@1.0.2: {} - base@0.11.2: dependencies: cache-base: 1.0.1 @@ -7927,9 +6081,8 @@ snapshots: node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) - bubblesets-js@2.3.4: {} - - buffer-from@1.1.2: {} + buffer-from@1.1.2: + optional: true builtin-modules@5.0.0: {} @@ -8005,11 +6158,6 @@ snapshots: caniuse-lite@1.0.30001781: {} - cfb@1.2.2: - dependencies: - adler-32: 1.3.1 - crc-32: 1.2.2 - chalk@1.1.3: dependencies: ansi-styles: 2.2.1 @@ -8039,8 +6187,6 @@ snapshots: dependencies: readdirp: 4.1.2 - chrome-trace-event@1.0.4: {} - ci-info@4.4.0: {} citty@0.1.6: @@ -8078,8 +6224,6 @@ snapshots: clone@2.1.2: {} - codepage@1.15.0: {} - collection-visit@1.0.0: dependencies: map-visit: 1.0.0 @@ -8091,11 +6235,6 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.4 - colord@2.9.3: {} colorette@2.0.20: {} @@ -8104,9 +6243,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comlink@4.4.2: {} - - commander@2.20.3: {} + commander@2.20.3: + optional: true commander@7.2.0: {} @@ -8118,19 +6256,6 @@ snapshots: concat-map@0.0.1: {} - concat-stream@1.4.11: - dependencies: - inherits: 2.0.4 - readable-stream: 1.1.14 - typedarray: 0.0.7 - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - confbox@0.1.8: {} confbox@0.2.4: {} @@ -8153,17 +6278,11 @@ snapshots: dependencies: browserslist: 4.28.1 - core-js@3.49.0: {} - - core-util-is@1.0.3: {} - cors@2.8.6: dependencies: object-assign: 4.1.1 vary: 1.1.2 - crc-32@1.2.2: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -8172,10 +6291,6 @@ snapshots: crypto-js@4.2.0: {} - css-line-break@2.1.0: - dependencies: - utrie: 1.0.2 - css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -8198,176 +6313,17 @@ snapshots: cssesc@3.0.0: {} - cssfontparser@1.2.1: {} - csso@4.2.0: dependencies: css-tree: 1.1.3 csstype@3.2.3: {} - d3-array@1.2.4: {} - - d3-array@3.2.4: - dependencies: - internmap: 2.0.3 - - d3-binarytree@1.0.2: {} - - d3-collection@1.0.7: {} - - d3-color@3.1.0: {} - - d3-composite-projections@1.5.0: - dependencies: - d3-geo: 3.1.1 - d3-path: 3.1.0 - - d3-dispatch@3.0.1: {} - - d3-dsv@1.2.0: - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - - d3-dsv@2.0.0: - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - - d3-dsv@3.0.1: - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - - d3-ease@3.0.1: {} - - d3-fetch@3.0.1: - dependencies: - d3-dsv: 3.0.1 - - d3-force-3d@3.0.6: - dependencies: - d3-binarytree: 1.0.2 - d3-dispatch: 3.0.1 - d3-octree: 1.1.0 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - - d3-force@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - - d3-format@3.1.2: {} - - d3-geo-projection@2.1.2: - dependencies: - commander: 2.20.3 - d3-array: 1.2.4 - d3-geo: 1.6.4 - - d3-geo-projection@4.0.0: - dependencies: - commander: 7.2.0 - d3-array: 3.2.4 - d3-geo: 3.1.1 - - d3-geo@1.12.1: - dependencies: - d3-array: 1.2.4 - - d3-geo@1.6.4: - dependencies: - d3-array: 1.2.4 - - d3-geo@3.1.1: - dependencies: - d3-array: 3.2.4 - - d3-hexbin@0.2.2: {} - - d3-hexjson@1.1.1: - dependencies: - d3-array: 1.2.4 - - d3-hierarchy@1.1.9: {} - - d3-hierarchy@3.1.2: {} - - d3-interpolate@3.0.1: - dependencies: - d3-color: 3.1.0 - - d3-octree@1.1.0: {} - - d3-path@1.0.9: {} - - d3-path@3.1.0: {} - - d3-quadtree@3.0.1: {} - - d3-random@3.0.1: {} - - d3-regression@1.3.10: {} - - d3-sankey@0.9.1: - dependencies: - d3-array: 1.2.4 - d3-collection: 1.0.7 - d3-shape: 1.3.7 - - d3-scale-chromatic@3.1.0: - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - - d3-scale@4.0.2: - dependencies: - d3-array: 3.2.4 - d3-format: 3.1.2 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - - d3-shape@1.3.7: - dependencies: - d3-path: 1.0.9 - - d3-shape@3.2.0: - dependencies: - d3-path: 3.1.0 - - d3-time-format@4.1.0: - dependencies: - d3-time: 3.1.0 - - d3-time@3.1.0: - dependencies: - d3-array: 3.2.4 - - d3-timer@3.0.1: {} - - d3-voronoi@1.1.4: {} - d@1.0.2: dependencies: es5-ext: 0.10.64 type: 2.7.3 - dagre@0.8.5: - dependencies: - graphlib: 2.1.8 - lodash: 4.17.23 - - danmu.js@1.2.1: - dependencies: - event-emitter: 0.3.5 - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -8451,10 +6407,6 @@ snapshots: detect-libc@2.1.2: optional: true - dhtmlx-gantt@9.0.14: {} - - diff-match-patch@1.0.5: {} - dom-serializer@0.2.2: dependencies: domelementtype: 2.3.0 @@ -8499,8 +6451,6 @@ snapshots: dotenv@17.3.1: {} - downloadjs@1.4.7: {} - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8626,8 +6576,6 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.0.0: {} - es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -8804,11 +6752,6 @@ snapshots: optionalDependencies: '@typescript-eslint/parser': 8.35.1(eslint@9.34.0(jiti@2.6.1))(typescript@5.8.3) - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -8885,8 +6828,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@2.0.2: {} @@ -8900,12 +6841,6 @@ snapshots: d: 1.0.2 es5-ext: 0.10.64 - eventemitter3@4.0.7: {} - - eventemitter3@5.0.4: {} - - events@3.3.0: {} - execa@9.6.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 @@ -8985,8 +6920,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.1.0: {} - fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -8995,8 +6928,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - fecha@4.2.3: {} - figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -9005,10 +6936,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-source@0.6.1: - dependencies: - stream-source: 0.3.5 - fill-range@4.0.0: dependencies: extend-shallow: 2.0.1 @@ -9034,8 +6961,6 @@ snapshots: flatted@3.4.2: {} - flru@1.0.2: {} - follow-redirects@1.15.11: {} for-each@0.3.5: @@ -9057,8 +6982,6 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 - frac@1.1.2: {} - fragment-cache@0.2.1: dependencies: map-cache: 0.2.2 @@ -9089,27 +7012,6 @@ snapshots: gensync@1.0.0-beta.2: {} - geobuf@3.0.2: - dependencies: - concat-stream: 2.0.0 - pbf: 3.3.0 - shapefile: 0.6.6 - - geojson-dissolve@3.1.0: - dependencies: - '@turf/meta': 3.14.0 - geojson-flatten: 0.2.4 - geojson-linestring-dissolve: 0.0.1 - topojson-client: 3.1.0 - topojson-server: 3.0.1 - - geojson-flatten@0.2.4: - dependencies: - get-stdin: 6.0.0 - minimist: 1.2.0 - - geojson-linestring-dissolve@0.0.1: {} - get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -9130,8 +7032,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stdin@6.0.0: {} - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -9149,10 +7049,6 @@ snapshots: get-value@2.0.6: {} - gifuct-js@2.1.2: - dependencies: - js-binary-schema-parser: 2.0.3 - giget@2.0.0: dependencies: citty: 0.1.6 @@ -9162,8 +7058,6 @@ snapshots: nypm: 0.6.5 pathe: 2.0.3 - gl-matrix@3.4.4: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -9172,8 +7066,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.4.5: dependencies: foreground-child: 3.3.1 @@ -9213,10 +7105,6 @@ snapshots: graphemer@1.4.0: {} - graphlib@2.1.8: - dependencies: - lodash: 4.17.23 - grid-layout-plus@1.1.1(vue@3.5.20(typescript@5.8.3)): dependencies: '@vexip-ui/hooks': 2.9.4(vue@3.5.20(typescript@5.8.3)) @@ -9281,11 +7169,6 @@ snapshots: html-void-elements@2.0.1: {} - html2canvas@1.4.1: - dependencies: - css-line-break: 2.1.0 - text-segmentation: 1.0.3 - htmlparser2@3.10.1: dependencies: domelementtype: 1.3.1 @@ -9301,22 +7184,12 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - icss-replace-symbols@1.1.0: {} icss-utils@5.1.0(postcss@8.5.8): dependencies: postcss: 8.5.8 - ieee754@1.2.1: {} - ignore@5.3.2: {} ignore@7.0.5: {} @@ -9350,22 +7223,16 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - internmap@2.0.3: {} - is-accessor-descriptor@1.0.1: dependencies: hasown: 2.0.2 - is-any-array@2.0.1: {} - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-arrayish@0.3.4: {} - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -9536,8 +7403,6 @@ snapshots: dependencies: is-inside-container: 1.0.0 - isarray@0.0.1: {} - isarray@1.0.0: {} isarray@2.0.5: {} @@ -9560,26 +7425,16 @@ snapshots: dependencies: '@isaacs/cliui': 9.0.0 - jest-worker@27.5.1: - dependencies: - '@types/node': 24.3.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - jiti@2.6.1: {} js-base64@2.6.4: {} - js-binary-schema-parser@2.0.3: {} - js-tokens@4.0.0: {} js-yaml@4.1.1: dependencies: argparse: 2.0.1 - jsbarcode@3.12.1: {} - jsencrypt@3.5.4: {} jsesc@3.0.2: {} @@ -9588,12 +7443,8 @@ snapshots: json-buffer@3.0.1: {} - json-parse-even-better-errors@2.3.1: {} - json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} json5@1.0.2: @@ -9641,20 +7492,12 @@ snapshots: dependencies: immediate: 3.0.6 - loader-runner@4.3.1: {} - loader-utils@1.4.2: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.2 - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - local-pkg@1.1.1: dependencies: mlly: 1.8.2 @@ -9699,12 +7542,8 @@ snapshots: lodash.toarray@4.4.0: {} - lodash@4.17.21: {} - lodash@4.17.23: {} - lottie-web@5.13.0: {} - lru-cache@10.4.3: {} lru-cache@11.2.7: {} @@ -9745,8 +7584,6 @@ snapshots: dependencies: is-plain-obj: 1.1.0 - merge-stream@2.0.0: {} - merge2@1.4.1: {} micromatch@3.1.0: @@ -9799,10 +7636,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimist@1.2.0: {} - - minimist@1.2.6: {} - minimist@1.2.8: {} minipass@7.1.3: {} @@ -9816,25 +7649,6 @@ snapshots: mkdirp@3.0.1: {} - ml-array-max@1.2.4: - dependencies: - is-any-array: 2.0.1 - - ml-array-min@1.2.3: - dependencies: - is-any-array: 2.0.1 - - ml-array-rescale@1.3.7: - dependencies: - is-any-array: 2.0.1 - ml-array-max: 1.2.4 - ml-array-min: 1.2.3 - - ml-matrix@6.12.1: - dependencies: - is-any-array: 2.0.1 - ml-array-rescale: 1.3.7 - mlly@1.8.2: dependencies: acorn: 8.16.0 @@ -9876,8 +7690,6 @@ snapshots: natural-compare@1.4.0: {} - neo-async@2.6.2: {} - next-tick@1.1.0: {} node-addon-api@7.1.1: @@ -9987,14 +7799,10 @@ snapshots: parse-ms@4.0.0: {} - parse-svg-path@0.1.2: {} - pascalcase@0.1.1: {} path-browserify@1.0.1: {} - path-data-parser@0.1.0: {} - path-exists@4.0.0: {} path-key@3.1.1: {} @@ -10011,28 +7819,12 @@ snapshots: lru-cache: 11.2.7 minipass: 7.1.3 - path-source@0.1.3: - dependencies: - array-source: 0.0.4 - file-source: 0.6.1 - pathe@0.2.0: {} pathe@1.1.2: {} pathe@2.0.3: {} - pbf@3.3.0: - dependencies: - ieee754: 1.2.1 - resolve-protobuf-schema: 2.1.0 - - pdfast@0.2.0: {} - - pdfjs-dist@4.10.38: - optionalDependencies: - '@napi-rs/canvas': 0.1.97 - perfect-debounce@1.0.0: {} perfect-debounce@2.1.0: {} @@ -10050,8 +7842,6 @@ snapshots: optionalDependencies: typescript: 5.8.3 - pinyin-pro@3.27.0: {} - pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -10066,19 +7856,6 @@ snapshots: pluralize@8.0.0: {} - point-at-length@1.1.0: - dependencies: - abs-svg-path: 0.1.1 - isarray: 0.0.1 - parse-svg-path: 0.1.2 - - points-on-curve@0.2.0: {} - - points-on-path@0.2.1: - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - posix-character-classes@0.1.1: {} possible-typed-array-names@1.1.0: {} @@ -10180,8 +7957,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - print-js@1.6.0: {} - prismjs@1.30.0: {} progress@2.0.3: {} @@ -10191,8 +7966,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - protocol-buffers-schema@3.6.0: {} - proxy-from-env@1.1.0: {} punycode@2.3.1: {} @@ -10221,13 +7994,6 @@ snapshots: dependencies: '@types/node': 10.17.60 - readable-stream@1.1.14: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -10279,24 +8045,16 @@ snapshots: dependencies: jsesc: 3.0.2 - regression@2.0.1: {} - repeat-element@1.1.4: {} repeat-string@1.6.1: {} require-directory@2.1.1: {} - require-from-string@2.0.2: {} - resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} - resolve-protobuf-schema@2.1.0: - dependencies: - protocol-buffers-schema: 3.6.0 - resolve-url@0.2.1: {} ret@0.1.15: {} @@ -10341,20 +8099,12 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.0 fsevents: 2.3.3 - roughjs@4.5.2: - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - points-on-path: 0.2.1 - run-applescript@7.1.0: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - rw@1.3.3: {} - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -10380,8 +8130,6 @@ snapshots: dependencies: ret: 0.1.15 - safer-buffer@2.1.2: {} - sass@1.91.0: dependencies: chokidar: 4.0.3 @@ -10392,13 +8140,6 @@ snapshots: sax@1.6.0: {} - schema-utils@4.3.3: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) - scroll-into-view-if-needed@2.2.31: dependencies: compute-scroll-into-view: 1.0.20 @@ -10440,15 +8181,6 @@ snapshots: is-plain-object: 2.0.4 split-string: 3.1.0 - shapefile@0.6.6: - dependencies: - array-source: 0.0.4 - commander: 2.20.3 - path-source: 0.1.3 - slice-source: 0.4.1 - stream-source: 0.3.5 - text-encoding: 0.6.4 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -10487,14 +8219,6 @@ snapshots: simple-git-hooks@2.13.1: {} - simple-statistics@6.1.1: {} - - simple-statistics@7.8.9: {} - - simple-swizzle@0.2.4: - dependencies: - is-arrayish: 0.3.4 - simplebar-core@1.3.2: dependencies: lodash: 4.17.23 @@ -10508,14 +8232,6 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' - simplify-geojson@1.0.5: - dependencies: - concat-stream: 1.4.11 - minimist: 1.2.6 - simplify-geometry: 0.0.2 - - simplify-geometry@0.0.2: {} - sirv@3.0.2: dependencies: '@polka/url': 1.0.0-next.29 @@ -10535,8 +8251,6 @@ snapshots: is-plain-object: 5.0.0 tiny-warning: 1.0.3 - slice-source@0.4.1: {} - snabbdom@3.6.3: {} snapdragon-node@2.1.1: @@ -10576,6 +8290,7 @@ snapshots: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + optional: true source-map-url@0.4.1: {} @@ -10589,10 +8304,6 @@ snapshots: dependencies: extend-shallow: 3.0.2 - ssf@0.11.2: - dependencies: - frac: 1.1.2 - ssr-window@3.0.0: {} stable-hash-x@0.2.0: {} @@ -10609,8 +8320,6 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-source@0.3.5: {} - strict-uri-encode@1.1.0: {} string-width@4.2.3: @@ -10648,8 +8357,6 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - string_decoder@0.10.31: {} - string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -10686,10 +8393,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - svelte-eslint-parser@1.6.0: dependencies: eslint-scope: 8.4.0 @@ -10718,8 +8421,6 @@ snapshots: transitivePeerDependencies: - supports-color - svg-path-parser@1.1.0: {} - svgo@2.8.2: dependencies: commander: 7.2.0 @@ -10730,8 +8431,6 @@ snapshots: sax: 1.6.0 stable: 0.1.8 - swiper@11.2.10: {} - synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -10740,26 +8439,13 @@ snapshots: tapable@2.3.2: {} - terser-webpack-plugin@5.4.0(webpack@5.105.4): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.1 - webpack: 5.105.4 - terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 - - text-encoding@0.6.4: {} - - text-segmentation@1.0.3: - dependencies: - utrie: 1.0.2 + optional: true tiny-emitter@2.1.0: {} @@ -10794,14 +8480,6 @@ snapshots: regex-not: 1.0.2 safe-regex: 1.1.0 - topojson-client@3.1.0: - dependencies: - commander: 2.20.3 - - topojson-server@3.0.1: - dependencies: - commander: 2.20.3 - totalist@3.0.1: {} traverse@0.6.11: @@ -10896,14 +8574,6 @@ snapshots: typed-array-buffer: 1.0.3 typed-array-byte-offset: 1.0.4 - typedarray@0.0.6: {} - - typedarray@0.0.7: {} - - typeit@8.8.7: - dependencies: - '@types/web-animations-js': 2.2.16 - typescript@5.8.3: {} ufo@1.6.3: {} @@ -11038,16 +8708,8 @@ snapshots: util-deprecate@1.0.2: {} - utrie@1.0.2: - dependencies: - base64-arraybuffer: 1.0.2 - vary@1.1.2: {} - vditor@3.11.2: - dependencies: - diff-match-patch: 1.0.5 - vite-dev-rpc@1.1.0(vite@7.1.4(@types/node@24.3.0)(jiti@2.6.1)(sass@1.91.0)(terser@5.46.1)(tsx@4.20.5)(yaml@2.8.3)): dependencies: birpc: 2.9.0 @@ -11174,11 +8836,6 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.20(typescript@5.8.3) - vue-pdf-embed@2.1.3(vue@3.5.20(typescript@5.8.3)): - dependencies: - pdfjs-dist: 4.10.38 - vue: 3.5.20(typescript@5.8.3) - vue-router@4.5.1(vue@3.5.20(typescript@5.8.3)): dependencies: '@vue/devtools-api': 6.6.4 @@ -11200,47 +8857,10 @@ snapshots: optionalDependencies: typescript: 5.8.3 - watchpack@2.5.1: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - webpack-sources@3.3.4: {} webpack-virtual-modules@0.6.2: {} - webpack@5.105.4: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 - es-module-lexer: 2.0.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(webpack@5.105.4) - watchpack: 2.5.1 - webpack-sources: 3.3.4 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -11288,19 +8908,8 @@ snapshots: wildcard@1.1.2: {} - wmf@1.0.2: {} - - wolfy87-eventemitter@5.2.9: {} - word-wrap@1.2.5: {} - word@0.3.0: {} - - workerize-loader@2.0.2(webpack@5.105.4): - dependencies: - loader-utils: 2.0.4 - webpack: 5.105.4 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -11317,30 +8926,6 @@ snapshots: dependencies: is-wsl: 3.1.1 - xgplayer-subtitles@3.0.23(core-js@3.49.0): - dependencies: - core-js: 3.49.0 - eventemitter3: 4.0.7 - - xgplayer@3.0.23(core-js@3.49.0): - dependencies: - core-js: 3.49.0 - danmu.js: 1.2.1 - delegate: 3.2.0 - downloadjs: 1.4.7 - eventemitter3: 4.0.7 - xgplayer-subtitles: 3.0.23(core-js@3.49.0) - - xlsx@0.18.5: - dependencies: - adler-32: 1.3.1 - cfb: 1.2.2 - codepage: 1.15.0 - crc-32: 1.2.2 - ssf: 0.11.2 - wmf: 1.0.2 - word: 0.3.0 - xml-name-validator@4.0.0: {} y18n@5.0.8: {} diff --git a/src/components/custom/table-search-fields.vue b/src/components/custom/table-search-fields.vue index 389d01b..5e98fdf 100644 --- a/src/components/custom/table-search-fields.vue +++ b/src/components/custom/table-search-fields.vue @@ -18,6 +18,12 @@ export interface SearchField { label: string; /** 字段类型 */ type: 'input' | 'select' | 'date' | 'dateRange' | 'dict'; + /** date 字段的日期粒度 */ + dateType?: 'date' | 'month'; + /** dateRange 字段的日期范围粒度 */ + dateRangeType?: 'daterange' | 'monthrange'; + /** 日期字段提交格式 */ + valueFormat?: string; /** 占位列数,默认 1 */ span?: number; /** select 类型的选项 */ @@ -156,23 +162,23 @@ function handleSearch() { > }, // 工单(待补全) workOrder: {}, + // 工作报告 + workReport: { + draft: 'info', + pending_approval: 'warning', + approved: 'success', + rejected: 'danger' + }, // 个人事项 personalItem: { pending: 'info', @@ -91,8 +99,7 @@ const statusTagTypeRegistry: Record> overtimeApplication: { pending: 'warning', approved: 'success', - rejected: 'danger', - cancelled: 'info' + rejected: 'danger' } }; diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index ec4cba1..158df91 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -169,8 +169,10 @@ const local: App.I18n.Schema = { 'personal-center': 'Personal Center', 'personal-center_my-profile': 'My Profile', 'personal-center_my-item': 'My Items', - 'personal-center_my-weekly': 'My Weekly Report', - 'personal-center_my-monthly': 'My Monthly Report', + 'personal-center_work-report': 'Work Report', + 'personal-center_work-report_weekly': 'Weekly Report', + 'personal-center_work-report_monthly': 'Monthly Report', + 'personal-center_work-report_project': 'Project Fortnightly Report', 'personal-center_my-performance': 'My Performance', 'personal-center_my-application': 'My Application', 'personal-center_overtime-application': 'Overtime Application', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index a1eb0a5..0ffc266 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -169,8 +169,10 @@ const local: App.I18n.Schema = { 'personal-center': '个人中心', 'personal-center_my-profile': '个人信息', 'personal-center_my-item': '我的事项', - 'personal-center_my-weekly': '我的周报', - 'personal-center_my-monthly': '我的月报', + 'personal-center_work-report': '工作报告', + 'personal-center_work-report_weekly': '个人周报', + 'personal-center_work-report_monthly': '个人月报', + 'personal-center_work-report_project': '项目半月报', 'personal-center_my-performance': '我的绩效', 'personal-center_my-application': '我的申请', 'personal-center_overtime-application': '加班申请', diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 2fde25f..6512d52 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -27,12 +27,14 @@ export const views: Record Promise import("@/views/metrics/worktime/index.vue"), "personal-center_my-application": () => import("@/views/personal-center/my-application/index.vue"), "personal-center_my-item": () => import("@/views/personal-center/my-item/index.vue"), - "personal-center_my-monthly": () => import("@/views/personal-center/my-monthly/index.vue"), "personal-center_my-performance": () => import("@/views/personal-center/my-performance/index.vue"), "personal-center_my-profile": () => import("@/views/personal-center/my-profile/index.vue"), - "personal-center_my-weekly": () => import("@/views/personal-center/my-weekly/index.vue"), "personal-center_overtime-application": () => import("@/views/personal-center/overtime-application/index.vue"), "personal-center_pending-approval": () => import("@/views/personal-center/pending-approval/index.vue"), + "personal-center_work-report": () => import("@/views/personal-center/work-report/index.vue"), + "personal-center_work-report_monthly": () => import("@/views/personal-center/work-report/monthly/index.vue"), + "personal-center_work-report_project": () => import("@/views/personal-center/work-report/project/index.vue"), + "personal-center_work-report_weekly": () => import("@/views/personal-center/work-report/weekly/index.vue"), product_dashboard: () => import("@/views/product/dashboard/index.vue"), product_list: () => import("@/views/product/list/index.vue"), product_requirement: () => import("@/views/product/requirement/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index ed62104..882bf67 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -185,18 +185,6 @@ export const generatedRoutes: GeneratedRoute[] = [ keepAlive: true } }, - { - name: 'personal-center_my-monthly', - path: '/personal-center/my-monthly', - component: 'view.personal-center_my-monthly', - meta: { - title: 'personal-center_my-monthly', - i18nKey: 'route.personal-center_my-monthly', - icon: 'mdi:calendar-month-outline', - order: 2, - keepAlive: true - } - }, { name: 'personal-center_my-performance', path: '/personal-center/my-performance', @@ -221,18 +209,6 @@ export const generatedRoutes: GeneratedRoute[] = [ keepAlive: true } }, - { - name: 'personal-center_my-weekly', - path: '/personal-center/my-weekly', - component: 'view.personal-center_my-weekly', - meta: { - title: 'personal-center_my-weekly', - i18nKey: 'route.personal-center_my-weekly', - icon: 'mdi:calendar-week-outline', - order: 1, - keepAlive: true - } - }, { name: 'personal-center_overtime-application', path: '/personal-center/overtime-application', @@ -256,6 +232,53 @@ export const generatedRoutes: GeneratedRoute[] = [ order: 7, keepAlive: true } + }, + { + name: 'personal-center_work-report', + path: '/personal-center/work-report', + component: 'view.personal-center_work-report', + meta: { + title: 'personal-center_work-report', + i18nKey: 'route.personal-center_work-report', + icon: 'mdi:file-chart-outline', + order: 3, + keepAlive: true + }, + children: [ + { + name: 'personal-center_work-report_monthly', + path: '/personal-center/work-report/monthly', + component: 'view.personal-center_work-report_monthly', + meta: { + title: 'personal-center_work-report_monthly', + i18nKey: 'route.personal-center_work-report_monthly', + hideInMenu: true, + activeMenu: 'personal-center_work-report' + } + }, + { + name: 'personal-center_work-report_project', + path: '/personal-center/work-report/project', + component: 'view.personal-center_work-report_project', + meta: { + title: 'personal-center_work-report_project', + i18nKey: 'route.personal-center_work-report_project', + hideInMenu: true, + activeMenu: 'personal-center_work-report' + } + }, + { + name: 'personal-center_work-report_weekly', + path: '/personal-center/work-report/weekly', + component: 'view.personal-center_work-report_weekly', + meta: { + title: 'personal-center_work-report_weekly', + i18nKey: 'route.personal-center_work-report_weekly', + hideInMenu: true, + activeMenu: 'personal-center_work-report' + } + } + ] } ] }, diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 6c554bf..ada3daa 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -182,12 +182,14 @@ const routeMap: RouteMap = { "personal-center": "/personal-center", "personal-center_my-application": "/personal-center/my-application", "personal-center_my-item": "/personal-center/my-item", - "personal-center_my-monthly": "/personal-center/my-monthly", "personal-center_my-performance": "/personal-center/my-performance", "personal-center_my-profile": "/personal-center/my-profile", - "personal-center_my-weekly": "/personal-center/my-weekly", "personal-center_overtime-application": "/personal-center/overtime-application", "personal-center_pending-approval": "/personal-center/pending-approval", + "personal-center_work-report": "/personal-center/work-report", + "personal-center_work-report_monthly": "/personal-center/work-report/monthly", + "personal-center_work-report_project": "/personal-center/work-report/project", + "personal-center_work-report_weekly": "/personal-center/work-report/weekly", "product": "/product", "product_dashboard": "/product/dashboard", "product_list": "/product/list", diff --git a/src/service/api/index.ts b/src/service/api/index.ts index fad9494..f713367 100644 --- a/src/service/api/index.ts +++ b/src/service/api/index.ts @@ -10,3 +10,4 @@ export * from './project'; export * from './project-shared'; export * from './route'; export * from './system-manage'; +export * from './work-report'; diff --git a/src/service/api/overtime-application.ts b/src/service/api/overtime-application.ts index 53e27df..da8de68 100644 --- a/src/service/api/overtime-application.ts +++ b/src/service/api/overtime-application.ts @@ -1,13 +1,7 @@ import { WEB_SERVICE_PREFIX } from '@/constants/service'; import { request } from '../request'; import { type ProjectLocalDateValue, normalizeProjectLocalDate } from './project-shared'; -import { - type ServiceRequestResult, - mapServiceResult, - normalizeNullableStringId, - normalizeStringId, - safeJsonRequestConfig -} from './shared'; +import { type ServiceRequestResult, mapServiceResult, normalizeStringId, safeJsonRequestConfig } from './shared'; const OVERTIME_APPLICATION_PREFIX = `${WEB_SERVICE_PREFIX}/project/overtime-applications`; @@ -30,14 +24,14 @@ type OvertimeApplicationPageResponse = Omit & { id: StringIdResponse; - applicationId: StringIdResponse; - operatorUserId: StringIdResponse; - overtimeDateSnapshot: ProjectLocalDateValue; + overtimeApplicationId: StringIdResponse; + statusLogId: StringIdResponse; + auditorUserId: StringIdResponse; }; function normalizeBooleanFlag(value: boolean | number | string | null | undefined) { @@ -81,18 +75,16 @@ function normalizeOvertimeApplication( }; } -function normalizeStatusLog( - response: OvertimeApplicationStatusLogResponse -): Api.OvertimeApplication.OvertimeApplicationStatusLog { +function normalizeApprovalRecord( + response: OvertimeApplicationApprovalRecordResponse +): Api.OvertimeApplication.OvertimeApplicationApprovalRecord { return { ...response, id: normalizeStringId(response.id), - applicationId: normalizeStringId(response.applicationId), - operatorUserId: normalizeStringId(response.operatorUserId), - overtimeDateSnapshot: normalizeProjectLocalDate(response.overtimeDateSnapshot) ?? '', - fromStatus: normalizeNullableStringId(response.fromStatus), - reason: response.reason ?? null, - remark: response.remark ?? null + overtimeApplicationId: normalizeStringId(response.overtimeApplicationId), + statusLogId: normalizeStringId(response.statusLogId), + auditorUserId: normalizeStringId(response.auditorUserId), + opinion: response.opinion ?? null }; } @@ -240,15 +232,6 @@ export function fetchRejectOvertimeApplication(id: string, data: Api.OvertimeApp }); } -export function fetchCancelOvertimeApplication(id: string, data: Api.OvertimeApplication.StatusActionParams) { - return request({ - ...safeJsonRequestConfig, - url: `${OVERTIME_APPLICATION_PREFIX}/${id}/cancel`, - method: 'post', - data: toStatusActionRequest(data) - }); -} - export function fetchDeleteOvertimeApplication(id: string) { return request({ ...safeJsonRequestConfig, @@ -257,15 +240,15 @@ export function fetchDeleteOvertimeApplication(id: string) { }); } -export async function fetchGetOvertimeApplicationStatusLogs(id: string) { - const result = await request({ +export async function fetchGetOvertimeApplicationApprovalRecords(id: string) { + const result = await request({ ...safeJsonRequestConfig, - url: `${OVERTIME_APPLICATION_PREFIX}/${id}/status-logs`, + url: `${OVERTIME_APPLICATION_PREFIX}/${id}/approval-records`, method: 'get' }); - return mapServiceResult(result as ServiceRequestResult, data => - data.map(normalizeStatusLog) + return mapServiceResult(result as ServiceRequestResult, data => + data.map(normalizeApprovalRecord) ); } diff --git a/src/service/api/work-report.ts b/src/service/api/work-report.ts new file mode 100644 index 0000000..51275b6 --- /dev/null +++ b/src/service/api/work-report.ts @@ -0,0 +1,866 @@ +import { WEB_SERVICE_PREFIX } from '@/constants/service'; +import { request } from '../request'; +import { + type ServiceRequestResult, + mapServiceResult, + normalizeNullableStringId, + normalizeStringId, + safeJsonRequestConfig +} from './shared'; + +const WORK_REPORT_PREFIX = `${WEB_SERVICE_PREFIX}/project/work-reports`; +const WEEKLY_PREFIX = `${WORK_REPORT_PREFIX}/weekly`; +const MONTHLY_PREFIX = `${WORK_REPORT_PREFIX}/monthly`; +const PROJECT_PREFIX = `${WORK_REPORT_PREFIX}/project`; + +type StringIdResponse = string | number; +type MaybeStringIdResponse = string | number | null | undefined; + +type PageResponse = { + total: number | string; + list: T[]; +}; + +type ReviewItemResponse = Omit & { + id?: MaybeStringIdResponse; +}; + +type PlanItemResponse = Omit & { + id?: MaybeStringIdResponse; +}; + +type WeeklyTravelSegmentResponse = Omit & { + id?: MaybeStringIdResponse; +}; + +type WeeklyReportResponse = Omit< + Api.WorkReport.Weekly.WeeklyReport, + 'id' | 'reporterId' | 'supervisorUserId' | 'reviewItems' | 'planItems' | 'travelSegments' +> & { + id: StringIdResponse; + reporterId: StringIdResponse; + supervisorUserId: StringIdResponse; + reviewItems?: ReviewItemResponse[] | null; + planItems?: PlanItemResponse[] | null; + travelSegments?: WeeklyTravelSegmentResponse[] | null; +}; + +type MonthlyReportResponse = Omit< + Api.WorkReport.Monthly.MonthlyReport, + 'id' | 'reporterId' | 'supervisorUserId' | 'reviewItems' | 'planItems' +> & { + id: StringIdResponse; + reporterId: StringIdResponse; + supervisorUserId: StringIdResponse; + reviewItems?: ReviewItemResponse[] | null; + planItems?: PlanItemResponse[] | null; +}; + +type MemberSnapshotResponse = Omit & { + userId: StringIdResponse; +}; + +type ProjectReportItemResponse = Omit & { + id?: MaybeStringIdResponse; +}; + +type ProjectReportResponse = Omit< + Api.WorkReport.Project.ProjectReport, + 'id' | 'projectId' | 'projectOwnerId' | 'projectMemberSnapshot' | 'supervisorUserId' | 'currentItems' | 'nextItems' +> & { + id: StringIdResponse; + projectId: StringIdResponse; + projectOwnerId: StringIdResponse; + projectMemberSnapshot?: MemberSnapshotResponse[] | null; + supervisorUserId: StringIdResponse; + currentItems?: ProjectReportItemResponse[] | null; + nextItems?: ProjectReportItemResponse[] | null; +}; + +type ApprovalRecordResponse = Omit< + Api.WorkReport.Common.WorkReportApprovalRecord, + 'id' | 'statusLogId' | 'auditorUserId' +> & { + id: StringIdResponse; + statusLogId: StringIdResponse; + auditorUserId: StringIdResponse; +}; + +type MonthlyApprovalRecordResponse = Omit< + Api.WorkReport.Monthly.MonthlyReportApprovalRecord, + 'id' | 'statusLogId' | 'auditorUserId' +> & { + id: StringIdResponse; + statusLogId: StringIdResponse; + auditorUserId: StringIdResponse; +}; + +type ProjectOptionResponse = Omit & { + id: StringIdResponse; +}; + +function normalizeBooleanFlag(value: boolean | number | string | null | undefined) { + if (typeof value === 'boolean') return value; + if (typeof value === 'number') return value === 1; + if (typeof value === 'string') { + const normalized = value.trim().toLowerCase(); + return !['', '0', 'false', 'n', 'no'].includes(normalized); + } + return false; +} + +function normalizeApprovalConclusion(value: unknown) { + const conclusion = String(value || '') + .trim() + .toLowerCase(); + + if (conclusion === 'approve') return 'approved'; + if (conclusion === 'reject') return 'rejected'; + + return conclusion; +} + +function normalizeDateText(value: unknown) { + if (value === null || value === undefined) return undefined; + const text = String(value).trim(); + const commaDateMatch = text.match(/^(\d{4}),(\d{1,2}),(\d{1,2})$/); + + if (commaDateMatch) { + const [, year, month, day] = commaDateMatch; + return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`; + } + + return text || undefined; +} + +function normalizeTotal(total: number | string) { + const value = Number(total); + return Number.isFinite(value) ? Math.max(0, value) : 0; +} + +function sumWorkHours(items: Array<{ workHours?: number | string | null }> = []) { + return items.reduce((sum, item) => { + const value = Number(item.workHours ?? 0); + return Number.isFinite(value) ? sum + value : sum; + }, 0); +} + +function normalizeReportTotalWorkHours( + totalWorkHours: number | string | null | undefined, + fallbackTotalWorkHours: number +) { + const normalizedTotal = Number(totalWorkHours ?? 0); + + if ( + (totalWorkHours === null || + totalWorkHours === undefined || + totalWorkHours === '' || + (Number.isFinite(normalizedTotal) && normalizedTotal === 0)) && + fallbackTotalWorkHours > 0 + ) { + return fallbackTotalWorkHours; + } + + return totalWorkHours ?? 0; +} + +function appendValue(query: URLSearchParams, key: string, value: unknown) { + if (value === null || value === undefined || value === '') return; + query.append(key, String(value)); +} + +function appendArray(query: URLSearchParams, key: string, values?: Array | null) { + values?.forEach(value => appendValue(query, key, value)); +} + +function createBasePageQuery(params: Api.WorkReport.Common.WorkReportBaseSearchParams = {}) { + const query = new URLSearchParams(); + + appendValue(query, 'pageNo', params.pageNo ?? 1); + appendValue(query, 'pageSize', params.pageSize ?? 10); + appendValue(query, 'keyword', params.keyword); + appendValue(query, 'statusCode', params.statusCode); + appendValue(query, 'supervisorName', params.supervisorName); + appendArray(query, 'periodStartDate', params.periodStartDate); + appendArray(query, 'submitTime', params.submitTime); + + return query; +} + +function createWeeklyPageQuery(params: Api.WorkReport.Weekly.WeeklyReportSearchParams = {}) { + const query = createBasePageQuery(params); + appendValue(query, 'isBusinessTrip', params.isBusinessTrip); + return query.toString(); +} + +function createMonthlyPageQuery(params: Api.WorkReport.Monthly.MonthlyReportSearchParams = {}) { + return createBasePageQuery(params).toString(); +} + +function createProjectPageQuery(params: Api.WorkReport.Project.ProjectReportSearchParams = {}) { + const query = createBasePageQuery(params); + appendValue(query, 'projectId', params.projectId); + appendValue(query, 'flag', params.flag); + return query.toString(); +} + +function normalizeReviewItem(item: ReviewItemResponse): Api.WorkReport.Common.PersonalReportReviewItem { + return { + ...item, + id: normalizeNullableStringId(item.id) ?? undefined + }; +} + +function normalizePlanItem(item: PlanItemResponse): Api.WorkReport.Common.PersonalReportPlanItem { + return { + ...item, + id: normalizeNullableStringId(item.id) ?? undefined + }; +} + +function normalizeWeeklyTravelSegment( + item: WeeklyTravelSegmentResponse +): Api.WorkReport.Weekly.WeeklyReportTravelSegment { + return { + ...item, + id: normalizeNullableStringId(item.id) ?? undefined, + startDate: normalizeDateText(item.startDate), + endDate: normalizeDateText(item.endDate) + }; +} + +function normalizeWeeklyReport(response: WeeklyReportResponse): Api.WorkReport.Weekly.WeeklyReport { + const fallbackTotalWorkHours = sumWorkHours(response.reviewItems ?? []); + + return { + ...response, + id: normalizeStringId(response.id), + reporterId: normalizeStringId(response.reporterId), + supervisorUserId: normalizeStringId(response.supervisorUserId), + reporterDeptName: response.reporterDeptName ?? null, + reporterPostName: response.reporterPostName ?? null, + statusName: response.statusName || response.statusCode, + allowEdit: normalizeBooleanFlag(response.allowEdit), + terminal: normalizeBooleanFlag(response.terminal), + isBusinessTrip: normalizeBooleanFlag(response.isBusinessTrip), + totalWorkHours: normalizeReportTotalWorkHours(response.totalWorkHours, fallbackTotalWorkHours), + submitTime: response.submitTime ?? null, + reviewItems: response.reviewItems?.map(normalizeReviewItem) ?? [], + planItems: response.planItems?.map(normalizePlanItem) ?? [], + travelSegments: response.travelSegments?.map(normalizeWeeklyTravelSegment) ?? [] + }; +} + +function normalizeMonthlyReport(response: MonthlyReportResponse): Api.WorkReport.Monthly.MonthlyReport { + const fallbackTotalWorkHours = sumWorkHours(response.reviewItems ?? []); + + return { + ...response, + id: normalizeStringId(response.id), + reporterId: normalizeStringId(response.reporterId), + supervisorUserId: normalizeStringId(response.supervisorUserId), + reporterDeptName: response.reporterDeptName ?? null, + reporterPostName: response.reporterPostName ?? null, + statusName: response.statusName || response.statusCode, + allowEdit: normalizeBooleanFlag(response.allowEdit), + terminal: normalizeBooleanFlag(response.terminal), + totalWorkHours: normalizeReportTotalWorkHours(response.totalWorkHours, fallbackTotalWorkHours), + submitTime: response.submitTime ?? null, + reviewItems: response.reviewItems?.map(normalizeReviewItem) ?? [], + planItems: response.planItems?.map(normalizePlanItem) ?? [] + }; +} + +function normalizeMemberSnapshot(item: MemberSnapshotResponse): Api.WorkReport.Project.WorkReportMemberSnapshot { + return { + ...item, + userId: normalizeStringId(item.userId) + }; +} + +function normalizeProjectReportItem(item: ProjectReportItemResponse): Api.WorkReport.Project.ProjectReportItem { + return { + ...item, + id: normalizeNullableStringId(item.id) ?? undefined + }; +} + +function normalizeProjectReport(response: ProjectReportResponse): Api.WorkReport.Project.ProjectReport { + const fallbackTotalWorkHours = sumWorkHours(response.currentItems ?? []); + + return { + ...response, + id: normalizeStringId(response.id), + projectId: normalizeStringId(response.projectId), + projectOwnerId: normalizeStringId(response.projectOwnerId), + projectMemberSnapshot: response.projectMemberSnapshot?.map(normalizeMemberSnapshot) ?? [], + supervisorUserId: normalizeStringId(response.supervisorUserId), + statusName: response.statusName || response.statusCode, + allowEdit: normalizeBooleanFlag(response.allowEdit), + terminal: normalizeBooleanFlag(response.terminal), + totalWorkHours: normalizeReportTotalWorkHours(response.totalWorkHours, fallbackTotalWorkHours), + submitTime: response.submitTime ?? null, + currentItems: response.currentItems?.map(normalizeProjectReportItem) ?? [], + nextItems: response.nextItems?.map(normalizeProjectReportItem) ?? [] + }; +} + +function normalizeApprovalRecord(response: ApprovalRecordResponse): Api.WorkReport.Common.WorkReportApprovalRecord { + return { + ...response, + id: normalizeStringId(response.id), + statusLogId: normalizeStringId(response.statusLogId), + auditorUserId: normalizeStringId(response.auditorUserId), + conclusion: normalizeApprovalConclusion(response.conclusion), + opinion: response.opinion ?? null + }; +} + +function normalizeMonthlyApprovalRecord( + response: MonthlyApprovalRecordResponse +): Api.WorkReport.Monthly.MonthlyReportApprovalRecord { + return { + ...response, + id: normalizeStringId(response.id), + statusLogId: normalizeStringId(response.statusLogId), + auditorUserId: normalizeStringId(response.auditorUserId), + conclusion: normalizeApprovalConclusion(response.conclusion), + opinion: response.opinion ?? null + }; +} + +function normalizeProjectOption( + response: ProjectOptionResponse +): Api.WorkReport.Project.ProjectReportOwnerProjectOption { + return { + ...response, + id: normalizeStringId(response.id) + }; +} + +function mapPage(data: PageResponse, mapper: (item: TInput) => TOutput) { + return { + total: normalizeTotal(data.total), + list: data.list.map(mapper) + }; +} + +function toStatusActionRequest(data: Api.WorkReport.Common.StatusActionParams = {}) { + return { + reason: data.reason?.trim() || undefined + }; +} + +function toPersonalReviewItems(items: Api.WorkReport.Common.PersonalReportReviewItem[] = []) { + return items.map((item, index) => ({ + itemNumber: item.itemNumber ?? index + 1, + itemTitle: item.itemTitle?.trim() || '', + workHours: item.workHours ?? 0, + contentText: item.contentText?.trim() || '', + contentJson: item.contentJson ?? null, + reflectionText: item.reflectionText?.trim() || '' + })); +} + +function toPersonalPlanItems(items: Api.WorkReport.Common.PersonalReportPlanItem[] = []) { + return items.map((item, index) => ({ + itemNumber: item.itemNumber ?? index + 1, + itemTitle: item.itemTitle?.trim() || '', + targetText: item.targetText?.trim() || '', + targetJson: item.targetJson ?? null, + supportNeed: item.supportNeed?.trim() || '' + })); +} + +function toWeeklySaveRequest(data: Api.WorkReport.Weekly.WeeklyReportSaveParams) { + return { + periodKey: data.periodKey, + periodLabel: data.periodLabel, + periodStartDate: data.periodStartDate, + periodEndDate: data.periodEndDate, + isBusinessTrip: data.isBusinessTrip, + reviewItems: toPersonalReviewItems(data.reviewItems), + planItems: toPersonalPlanItems(data.planItems), + travelSegments: data.isBusinessTrip + ? data.travelSegments.map((item, index) => ({ + sort: item.sort ?? index + 1, + startDate: item.startDate || undefined, + endDate: item.endDate || undefined, + travelDays: item.travelDays ?? 0, + location: item.location?.trim() || '' + })) + : [] + }; +} + +function toMonthlySaveRequest(data: Api.WorkReport.Monthly.MonthlyReportSaveParams) { + return { + periodKey: data.periodKey, + periodLabel: data.periodLabel, + periodStartDate: data.periodStartDate, + periodEndDate: data.periodEndDate, + reviewItems: toPersonalReviewItems(data.reviewItems), + planItems: toPersonalPlanItems(data.planItems) + }; +} + +function toProjectItems(items: Api.WorkReport.Project.ProjectReportItem[] = []) { + return items.map(item => ({ + itemTitle: item.itemTitle?.trim() || '', + workHours: item.workHours ?? 0, + priorityCode: item.priorityCode || undefined, + progressRate: item.progressRate ?? 0 + })); +} + +function toProjectSaveRequest(data: Api.WorkReport.Project.ProjectReportSaveParams) { + return { + projectId: data.projectId, + periodKey: data.periodKey, + periodLabel: data.periodLabel, + periodStartDate: data.periodStartDate, + periodEndDate: data.periodEndDate, + flag: data.flag, + projectStatusDesc: data.projectStatusDesc?.trim() || '', + projectProgressPlan: data.projectProgressPlan?.trim() || '', + projectKeyPoints: data.projectKeyPoints?.trim() || '', + projectProblems: data.projectProblems?.trim() || '', + currentItems: toProjectItems(data.currentItems), + nextItems: toProjectItems(data.nextItems) + }; +} + +export async function fetchGetWorkReportStatusDict() { + const result = await request({ + ...safeJsonRequestConfig, + url: `${WORK_REPORT_PREFIX}/status/dict`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, data => data); +} + +export async function fetchGetWeeklyReportPage(params: Api.WorkReport.Weekly.WeeklyReportSearchParams = {}) { + const query = createWeeklyPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${WEEKLY_PREFIX}/page?${query}` : `${WEEKLY_PREFIX}/page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeWeeklyReport) + ); +} + +export async function fetchGetWeeklyReportApprovalPage(params: Api.WorkReport.Weekly.WeeklyReportSearchParams = {}) { + const query = createWeeklyPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${WEEKLY_PREFIX}/approval-page?${query}` : `${WEEKLY_PREFIX}/approval-page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeWeeklyReport) + ); +} + +export async function fetchGetWeeklyReportDetail(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/${id}`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeWeeklyReport); +} + +export async function fetchInitWeeklyReport() { + const result = await request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/init`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeWeeklyReport); +} + +export async function fetchPreviewWeeklyReportDefaultDraft( + params: Api.WorkReport.Weekly.WeeklyReportDefaultDraftParams +) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/default-draft`, + method: 'get', + params + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeWeeklyReport); +} + +export async function fetchCreateWeeklyReport(data: Api.WorkReport.Weekly.WeeklyReportSaveParams) { + const result = await request({ + ...safeJsonRequestConfig, + url: WEEKLY_PREFIX, + method: 'post', + data: toWeeklySaveRequest(data) + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeStringId); +} + +export function fetchUpdateWeeklyReport(id: string, data: Api.WorkReport.Weekly.WeeklyReportSaveParams) { + return request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/${id}`, + method: 'put', + data: toWeeklySaveRequest(data) + }); +} + +export function fetchSubmitWeeklyReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${WEEKLY_PREFIX}/${id}/submit`, method: 'post' }); +} + +export function fetchApproveWeeklyReport(id: string, data: Api.WorkReport.Common.StatusActionParams = {}) { + return request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/${id}/approve`, + method: 'post', + data: toStatusActionRequest(data) + }); +} + +export function fetchRejectWeeklyReport(id: string, data: Api.WorkReport.Common.StatusActionParams) { + return request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/${id}/reject`, + method: 'post', + data: toStatusActionRequest(data) + }); +} + +export function fetchDeleteWeeklyReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${WEEKLY_PREFIX}/${id}`, method: 'delete' }); +} + +export async function fetchGetWeeklyReportApprovalRecords(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${WEEKLY_PREFIX}/${id}/approval-records`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, data => + data.map(normalizeApprovalRecord) + ); +} + +export function fetchExportWeeklyReports(params: Api.WorkReport.Weekly.WeeklyReportSearchParams = {}) { + const query = createWeeklyPageQuery(params); + return request({ + url: query ? `${WEEKLY_PREFIX}/export?${query}` : `${WEEKLY_PREFIX}/export`, + method: 'get', + responseType: 'blob' + }); +} + +export function fetchExportWeeklyReportContent( + data: Api.WorkReport.Common.ContentExportParams +) { + return request({ + url: `${WEEKLY_PREFIX}/content-export`, + method: 'post', + data, + responseType: 'blob' + }); +} + +export async function fetchGetMonthlyReportPage(params: Api.WorkReport.Monthly.MonthlyReportSearchParams = {}) { + const query = createMonthlyPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${MONTHLY_PREFIX}/page?${query}` : `${MONTHLY_PREFIX}/page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeMonthlyReport) + ); +} + +export async function fetchGetMonthlyReportApprovalPage(params: Api.WorkReport.Monthly.MonthlyReportSearchParams = {}) { + const query = createMonthlyPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${MONTHLY_PREFIX}/approval-page?${query}` : `${MONTHLY_PREFIX}/approval-page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeMonthlyReport) + ); +} + +export async function fetchGetMonthlyReportDetail(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/${id}`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeMonthlyReport); +} + +export async function fetchInitMonthlyReport() { + const result = await request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/init`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeMonthlyReport); +} + +export async function fetchPreviewMonthlyReportDefaultDraft( + params: Api.WorkReport.Monthly.MonthlyReportDefaultDraftParams +) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/default-draft`, + method: 'get', + params + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeMonthlyReport); +} + +export async function fetchCreateMonthlyReport(data: Api.WorkReport.Monthly.MonthlyReportSaveParams) { + const result = await request({ + ...safeJsonRequestConfig, + url: MONTHLY_PREFIX, + method: 'post', + data: toMonthlySaveRequest(data) + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeStringId); +} + +export function fetchUpdateMonthlyReport(id: string, data: Api.WorkReport.Monthly.MonthlyReportSaveParams) { + return request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/${id}`, + method: 'put', + data: toMonthlySaveRequest(data) + }); +} + +export function fetchSubmitMonthlyReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${MONTHLY_PREFIX}/${id}/submit`, method: 'post' }); +} + +export function fetchApproveMonthlyReport(id: string, data: Api.WorkReport.Monthly.MonthlyReportApproveParams) { + return request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/${id}/approve`, + method: 'post', + data + }); +} + +export function fetchRejectMonthlyReport(id: string, data: Api.WorkReport.Common.StatusActionParams) { + return request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/${id}/reject`, + method: 'post', + data: toStatusActionRequest(data) + }); +} + +export function fetchDeleteMonthlyReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${MONTHLY_PREFIX}/${id}`, method: 'delete' }); +} + +export async function fetchGetMonthlyReportApprovalRecords(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${MONTHLY_PREFIX}/${id}/approval-records`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, data => + data.map(normalizeMonthlyApprovalRecord) + ); +} + +export function fetchExportMonthlyReports(params: Api.WorkReport.Monthly.MonthlyReportSearchParams = {}) { + const query = createMonthlyPageQuery(params); + return request({ + url: query ? `${MONTHLY_PREFIX}/export?${query}` : `${MONTHLY_PREFIX}/export`, + method: 'get', + responseType: 'blob' + }); +} + +export function fetchExportMonthlyReportContent( + data: Api.WorkReport.Common.ContentExportParams +) { + return request({ + url: `${MONTHLY_PREFIX}/content-export`, + method: 'post', + data, + responseType: 'blob' + }); +} + +export async function fetchGetProjectReportOwnerProjectOptions() { + const result = await request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/owner-project-options`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, data => + data.map(normalizeProjectOption) + ); +} + +export async function fetchGetProjectReportPage(params: Api.WorkReport.Project.ProjectReportSearchParams = {}) { + const query = createProjectPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${PROJECT_PREFIX}/page?${query}` : `${PROJECT_PREFIX}/page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeProjectReport) + ); +} + +export async function fetchGetProjectReportApprovalPage(params: Api.WorkReport.Project.ProjectReportSearchParams = {}) { + const query = createProjectPageQuery(params); + const result = await request>({ + ...safeJsonRequestConfig, + url: query ? `${PROJECT_PREFIX}/approval-page?${query}` : `${PROJECT_PREFIX}/approval-page`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult>, data => + mapPage(data, normalizeProjectReport) + ); +} + +export async function fetchGetProjectReportDetail(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${id}`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeProjectReport); +} + +export async function fetchInitProjectReport(projectId: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/init`, + method: 'get', + params: { projectId } + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeProjectReport); +} + +export async function fetchPreviewProjectReportDefaultDraft( + projectId: string, + params: Api.WorkReport.Project.ProjectReportDefaultDraftParams +) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${projectId}/default-draft`, + method: 'get', + params + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeProjectReport); +} + +export async function fetchCreateProjectReport(data: Api.WorkReport.Project.ProjectReportSaveParams) { + const result = await request({ + ...safeJsonRequestConfig, + url: PROJECT_PREFIX, + method: 'post', + data: toProjectSaveRequest(data) + }); + + return mapServiceResult(result as ServiceRequestResult, normalizeStringId); +} + +export function fetchUpdateProjectReport(id: string, data: Api.WorkReport.Project.ProjectReportSaveParams) { + return request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${id}`, + method: 'put', + data: toProjectSaveRequest(data) + }); +} + +export function fetchSubmitProjectReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${PROJECT_PREFIX}/${id}/submit`, method: 'post' }); +} + +export function fetchApproveProjectReport(id: string, data: Api.WorkReport.Common.StatusActionParams = {}) { + return request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${id}/approve`, + method: 'post', + data: toStatusActionRequest(data) + }); +} + +export function fetchRejectProjectReport(id: string, data: Api.WorkReport.Common.StatusActionParams) { + return request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${id}/reject`, + method: 'post', + data: toStatusActionRequest(data) + }); +} + +export function fetchDeleteProjectReport(id: string) { + return request({ ...safeJsonRequestConfig, url: `${PROJECT_PREFIX}/${id}`, method: 'delete' }); +} + +export async function fetchGetProjectReportApprovalRecords(id: string) { + const result = await request({ + ...safeJsonRequestConfig, + url: `${PROJECT_PREFIX}/${id}/approval-records`, + method: 'get' + }); + + return mapServiceResult(result as ServiceRequestResult, data => + data.map(normalizeApprovalRecord) + ); +} + +export function fetchExportProjectReports(params: Api.WorkReport.Project.ProjectReportSearchParams = {}) { + const query = createProjectPageQuery(params); + return request({ + url: query ? `${PROJECT_PREFIX}/export?${query}` : `${PROJECT_PREFIX}/export`, + method: 'get', + responseType: 'blob' + }); +} + +export function fetchExportProjectReportContent( + data: Api.WorkReport.Common.ContentExportParams +) { + return request({ + url: `${PROJECT_PREFIX}/content-export`, + method: 'post', + data, + responseType: 'blob' + }); +} diff --git a/src/service/request/index.ts b/src/service/request/index.ts index 62e197e..4d8c493 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -12,11 +12,13 @@ import type { RequestInstanceState } from './type'; const isHttpProxy = import.meta.env.DEV && import.meta.env.VITE_HTTP_PROXY === 'Y'; const { baseURL, otherBaseURL } = getServiceBaseURL(import.meta.env, isHttpProxy); +const REQUEST_TIMEOUT = 15 * 1000; export const request = withDedupe( createFlatRequest( { baseURL, + timeout: REQUEST_TIMEOUT, headers: { apifoxToken: 'XL299LiMEDZ0H5h3A29PxwQXdMJqWyY2' } @@ -126,6 +128,10 @@ export const request = withDedupe( let message = error.message; let backendErrorCode = ''; + if (error.code === 'ECONNABORTED' && error.message.includes('timeout')) { + message = '请求超时,请稍后重试'; + } + // 获取后端错误信息和错误码 if (error.code === BACKEND_ERROR_CODE) { message = error.response?.data?.msg || message; diff --git a/src/styles/scss/element-plus.scss b/src/styles/scss/element-plus.scss index 916aadc..110fffd 100644 --- a/src/styles/scss/element-plus.scss +++ b/src/styles/scss/element-plus.scss @@ -406,6 +406,7 @@ html .el-collapse { .business-table-action-cell { display: flex; width: 100%; + box-sizing: border-box; justify-content: center; gap: 8px; padding: 0 8px; diff --git a/src/typings/api/overtime-application.d.ts b/src/typings/api/overtime-application.d.ts index 3ea00f5..a592bdd 100644 --- a/src/typings/api/overtime-application.d.ts +++ b/src/typings/api/overtime-application.d.ts @@ -5,9 +5,9 @@ declare namespace Api { pageSize: number; } - type OvertimeApplicationStatusCode = 'pending' | 'approved' | 'rejected' | 'cancelled'; + type OvertimeApplicationStatusCode = 'pending' | 'approved' | 'rejected'; - type OvertimeApplicationActionType = 'submit' | 'resubmit' | 'approve' | 'reject' | 'cancel'; + type OvertimeApplicationActionType = 'submit' | 'resubmit' | 'approve' | 'reject'; interface OvertimeApplication { id: string; @@ -59,19 +59,15 @@ declare namespace Api { reason?: string | null; } - interface OvertimeApplicationStatusLog { + interface OvertimeApplicationApprovalRecord { id: string; - applicationId: string; - actionType: OvertimeApplicationActionType; - fromStatus?: string | null; - toStatus: string; - reason?: string | null; - operatorUserId: string; - operatorName: string; - applicantNameSnapshot: string; - overtimeDateSnapshot: string; - overtimeDurationSnapshot: string; - remark?: string | null; + overtimeApplicationId: string; + statusLogId: string; + approvalRound: number; + conclusion: string; + opinion?: string | null; + auditorUserId: string; + auditorName: string; createTime: string; } diff --git a/src/typings/api/work-report.d.ts b/src/typings/api/work-report.d.ts new file mode 100644 index 0000000..baf8884 --- /dev/null +++ b/src/typings/api/work-report.d.ts @@ -0,0 +1,290 @@ +declare namespace Api { + namespace WorkReport { + namespace Common { + interface PageParams { + pageNo: number; + pageSize: number; + } + + type ReportType = 'weekly' | 'monthly' | 'project'; + type WorkReportStatusCode = 'draft' | 'pending_approval' | 'approved' | 'rejected'; + + interface WorkReportStatusDict { + statusCode: WorkReportStatusCode | string; + statusName: string; + sort: number; + initialFlag: boolean; + terminalFlag: boolean; + allowEdit: boolean; + } + + interface WorkReportApprovalRecord { + id: string; + statusLogId: string; + approvalRound: number; + conclusion: string; + opinion?: string | null; + auditorUserId: string; + auditorName: string; + createTime: string; + } + + interface PersonalReportReviewItem { + id?: string; + itemNumber?: number | null; + itemTitle: string; + workHours?: number | null; + contentText?: string | null; + contentJson?: unknown; + reflectionText?: string | null; + } + + interface PersonalReportPlanItem { + id?: string; + itemNumber?: number | null; + itemTitle: string; + targetText?: string | null; + targetJson?: unknown; + supportNeed?: string | null; + } + + type WorkReportBaseSearchParams = CommonType.RecordNullable< + Pick & { + keyword: string; + statusCode: WorkReportStatusCode | string; + periodStartDate: string[]; + submitTime: string[]; + supervisorName: string; + } + >; + + type ContentExportParams = Partial & { + exportAll?: boolean; + ids?: string[]; + }; + + interface StatusActionParams { + reason?: string | null; + } + + interface PageResult { + total: number; + list: T[]; + } + } + + namespace Weekly { + interface WeeklyReportTravelSegment { + id?: string; + sort?: number | null; + startDate?: string | null; + endDate?: string | null; + travelDays?: number | null; + location?: string | null; + } + + interface WeeklyReport { + id: string; + reporterId: string; + reporterName: string; + reporterDeptName?: string | null; + reporterPostName?: string | null; + supervisorUserId: string; + supervisorName: string; + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + statusCode: Common.WorkReportStatusCode | string; + statusName: string; + allowEdit: boolean; + terminal: boolean; + isBusinessTrip: boolean; + totalTravelDays?: number | string | null; + totalWorkHours?: number | string | null; + approvalComment?: string | null; + lastStatusReason?: string | null; + submitTime?: string | null; + approvalTime?: string | null; + createTime?: string | null; + updateTime?: string | null; + reviewItems: Common.PersonalReportReviewItem[]; + planItems: Common.PersonalReportPlanItem[]; + travelSegments: WeeklyReportTravelSegment[]; + } + + type WeeklyReportSearchParams = Common.WorkReportBaseSearchParams & { + isBusinessTrip?: boolean | string | null; + }; + + interface WeeklyReportSaveParams { + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + isBusinessTrip: boolean; + reviewItems: Common.PersonalReportReviewItem[]; + planItems: Common.PersonalReportPlanItem[]; + travelSegments: WeeklyReportTravelSegment[]; + } + + type WeeklyReportDefaultDraftParams = Pick< + WeeklyReportSaveParams, + 'periodKey' | 'periodLabel' | 'periodStartDate' | 'periodEndDate' + >; + } + + namespace Monthly { + interface MonthlyReport { + id: string; + reporterId: string; + reporterName: string; + reporterDeptName?: string | null; + reporterPostName?: string | null; + supervisorUserId: string; + supervisorName: string; + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + statusCode: Common.WorkReportStatusCode | string; + statusName: string; + allowEdit: boolean; + terminal: boolean; + totalWorkHours?: number | string | null; + approvalComment?: string | null; + lastStatusReason?: string | null; + submitTime?: string | null; + approvalTime?: string | null; + createTime?: string | null; + updateTime?: string | null; + reviewItems: Common.PersonalReportReviewItem[]; + planItems: Common.PersonalReportPlanItem[]; + } + + type MonthlyReportSearchParams = Common.WorkReportBaseSearchParams; + + interface MonthlyReportSaveParams { + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + reviewItems: Common.PersonalReportReviewItem[]; + planItems: Common.PersonalReportPlanItem[]; + } + + type MonthlyReportDefaultDraftParams = Pick< + MonthlyReportSaveParams, + 'periodKey' | 'periodLabel' | 'periodStartDate' | 'periodEndDate' + >; + + interface MonthlyReportApproveParams extends Common.StatusActionParams { + meetingDate?: string | null; + strengthDesc?: string | null; + strengthExample?: string | null; + weaknessDesc?: string | null; + weaknessExample?: string | null; + improvementSuggestion?: string | null; + performanceResult?: string | null; + employeeSignName?: string | null; + employeeSignedDate?: string | null; + supervisorSignName?: string | null; + supervisorSignedDate?: string | null; + } + + interface MonthlyReportApprovalRecord extends Common.WorkReportApprovalRecord { + meetingDate?: string | null; + strengthDesc?: string | null; + strengthExample?: string | null; + weaknessDesc?: string | null; + weaknessExample?: string | null; + improvementSuggestion?: string | null; + performanceResult?: string | null; + employeeSignName?: string | null; + employeeSignedDate?: string | null; + supervisorSignName?: string | null; + supervisorSignedDate?: string | null; + } + } + + namespace Project { + interface WorkReportMemberSnapshot { + userId: string; + userName: string; + } + + interface ProjectReportItem { + id?: string; + itemTitle: string; + workHours?: number | null; + priorityCode?: string | null; + progressRate?: number | null; + } + + interface ProjectReportOwnerProjectOption { + id: string; + projectCode: string; + projectName: string; + } + + interface ProjectReport { + id: string; + projectId: string; + projectName: string; + projectOwnerId: string; + projectOwnerName: string; + technicalOwnerName?: string | null; + projectMemberSnapshot: WorkReportMemberSnapshot[]; + supervisorUserId: string; + supervisorName: string; + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + flag: number; + statusCode: Common.WorkReportStatusCode | string; + statusName: string; + allowEdit: boolean; + terminal: boolean; + projectStatusDesc?: string | null; + projectProgressPlan?: string | null; + projectKeyPoints?: string | null; + projectProblems?: string | null; + totalWorkHours?: number | string | null; + approvalComment?: string | null; + lastStatusReason?: string | null; + submitTime?: string | null; + approvalTime?: string | null; + createTime?: string | null; + updateTime?: string | null; + currentItems: ProjectReportItem[]; + nextItems: ProjectReportItem[]; + } + + type ProjectReportSearchParams = Common.WorkReportBaseSearchParams & { + projectId?: string | null; + flag?: number | null; + }; + + interface ProjectReportSaveParams { + projectId: string; + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + flag: number; + projectStatusDesc?: string | null; + projectProgressPlan?: string | null; + projectKeyPoints?: string | null; + projectProblems?: string | null; + currentItems: ProjectReportItem[]; + nextItems: ProjectReportItem[]; + } + + type ProjectReportDefaultDraftParams = Pick< + ProjectReportSaveParams, + 'periodKey' | 'periodLabel' | 'periodStartDate' | 'periodEndDate' | 'flag' + >; + } + } +} diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index 094386a..adb9911 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -36,12 +36,14 @@ declare module "@elegant-router/types" { "personal-center": "/personal-center"; "personal-center_my-application": "/personal-center/my-application"; "personal-center_my-item": "/personal-center/my-item"; - "personal-center_my-monthly": "/personal-center/my-monthly"; "personal-center_my-performance": "/personal-center/my-performance"; "personal-center_my-profile": "/personal-center/my-profile"; - "personal-center_my-weekly": "/personal-center/my-weekly"; "personal-center_overtime-application": "/personal-center/overtime-application"; "personal-center_pending-approval": "/personal-center/pending-approval"; + "personal-center_work-report": "/personal-center/work-report"; + "personal-center_work-report_monthly": "/personal-center/work-report/monthly"; + "personal-center_work-report_project": "/personal-center/work-report/project"; + "personal-center_work-report_weekly": "/personal-center/work-report/weekly"; "product": "/product"; "product_dashboard": "/product/dashboard"; "product_list": "/product/list"; @@ -143,12 +145,14 @@ declare module "@elegant-router/types" { | "metrics_worktime" | "personal-center_my-application" | "personal-center_my-item" - | "personal-center_my-monthly" | "personal-center_my-performance" | "personal-center_my-profile" - | "personal-center_my-weekly" | "personal-center_overtime-application" | "personal-center_pending-approval" + | "personal-center_work-report" + | "personal-center_work-report_monthly" + | "personal-center_work-report_project" + | "personal-center_work-report_weekly" | "product_dashboard" | "product_list" | "product_requirement" diff --git a/src/views/personal-center/my-monthly/index.vue b/src/views/personal-center/my-monthly/index.vue deleted file mode 100644 index cee5721..0000000 --- a/src/views/personal-center/my-monthly/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/views/personal-center/my-weekly/index.vue b/src/views/personal-center/my-weekly/index.vue deleted file mode 100644 index 34c3ea2..0000000 --- a/src/views/personal-center/my-weekly/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/views/personal-center/overtime-application/index.vue b/src/views/personal-center/overtime-application/index.vue index 63aedb6..34282f6 100644 --- a/src/views/personal-center/overtime-application/index.vue +++ b/src/views/personal-center/overtime-application/index.vue @@ -1,20 +1,14 @@ + + diff --git a/src/views/personal-center/overtime-application/modules/overtime-application-detail-dialog.vue b/src/views/personal-center/overtime-application/modules/overtime-application-detail-dialog.vue index 9e0b965..97654b3 100644 --- a/src/views/personal-center/overtime-application/modules/overtime-application-detail-dialog.vue +++ b/src/views/personal-center/overtime-application/modules/overtime-application-detail-dialog.vue @@ -1,22 +1,28 @@ diff --git a/src/views/personal-center/work-report/monthly/index.vue b/src/views/personal-center/work-report/monthly/index.vue new file mode 100644 index 0000000..81ffa12 --- /dev/null +++ b/src/views/personal-center/work-report/monthly/index.vue @@ -0,0 +1,345 @@ + + + diff --git a/src/views/personal-center/work-report/monthly/modules/approval-page.vue b/src/views/personal-center/work-report/monthly/modules/approval-page.vue new file mode 100644 index 0000000..ddc0d74 --- /dev/null +++ b/src/views/personal-center/work-report/monthly/modules/approval-page.vue @@ -0,0 +1,1779 @@ + + + + + diff --git a/src/views/personal-center/work-report/monthly/modules/approval-record-dialog.vue b/src/views/personal-center/work-report/monthly/modules/approval-record-dialog.vue new file mode 100644 index 0000000..6d516eb --- /dev/null +++ b/src/views/personal-center/work-report/monthly/modules/approval-record-dialog.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/monthly/modules/detail-page.vue b/src/views/personal-center/work-report/monthly/modules/detail-page.vue new file mode 100644 index 0000000..af3eac5 --- /dev/null +++ b/src/views/personal-center/work-report/monthly/modules/detail-page.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/monthly/modules/fill-page.vue b/src/views/personal-center/work-report/monthly/modules/fill-page.vue new file mode 100644 index 0000000..030c5a0 --- /dev/null +++ b/src/views/personal-center/work-report/monthly/modules/fill-page.vue @@ -0,0 +1,2195 @@ + + + + + diff --git a/src/views/personal-center/work-report/monthly/modules/search-panel.vue b/src/views/personal-center/work-report/monthly/modules/search-panel.vue new file mode 100644 index 0000000..171d18e --- /dev/null +++ b/src/views/personal-center/work-report/monthly/modules/search-panel.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/personal-center/work-report/project/index.vue b/src/views/personal-center/work-report/project/index.vue new file mode 100644 index 0000000..f033913 --- /dev/null +++ b/src/views/personal-center/work-report/project/index.vue @@ -0,0 +1,363 @@ + + + diff --git a/src/views/personal-center/work-report/project/modules/approval-record-dialog.vue b/src/views/personal-center/work-report/project/modules/approval-record-dialog.vue new file mode 100644 index 0000000..d7680a0 --- /dev/null +++ b/src/views/personal-center/work-report/project/modules/approval-record-dialog.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/project/modules/detail-page.vue b/src/views/personal-center/work-report/project/modules/detail-page.vue new file mode 100644 index 0000000..4a50ad3 --- /dev/null +++ b/src/views/personal-center/work-report/project/modules/detail-page.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/project/modules/fill-page.vue b/src/views/personal-center/work-report/project/modules/fill-page.vue new file mode 100644 index 0000000..259ff1e --- /dev/null +++ b/src/views/personal-center/work-report/project/modules/fill-page.vue @@ -0,0 +1,1057 @@ + + + + + diff --git a/src/views/personal-center/work-report/project/modules/search-panel.vue b/src/views/personal-center/work-report/project/modules/search-panel.vue new file mode 100644 index 0000000..7afba75 --- /dev/null +++ b/src/views/personal-center/work-report/project/modules/search-panel.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/personal-center/work-report/shared/components/action-dialog.vue b/src/views/personal-center/work-report/shared/components/action-dialog.vue new file mode 100644 index 0000000..520e513 --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/action-dialog.vue @@ -0,0 +1,341 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/approval-record-dialog.vue b/src/views/personal-center/work-report/shared/components/approval-record-dialog.vue new file mode 100644 index 0000000..a290367 --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/approval-record-dialog.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/create-dialog.vue b/src/views/personal-center/work-report/shared/components/create-dialog.vue new file mode 100644 index 0000000..7211f57 --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/create-dialog.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/detail-dialog.vue b/src/views/personal-center/work-report/shared/components/detail-dialog.vue new file mode 100644 index 0000000..1d1cac6 --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/detail-dialog.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/operate-dialog.vue b/src/views/personal-center/work-report/shared/components/operate-dialog.vue new file mode 100644 index 0000000..fe2fc2c --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/operate-dialog.vue @@ -0,0 +1,564 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/page-dialog.vue b/src/views/personal-center/work-report/shared/components/page-dialog.vue new file mode 100644 index 0000000..c9afdf9 --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/page-dialog.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/components/prototype-page-dialog.vue b/src/views/personal-center/work-report/shared/components/prototype-page-dialog.vue new file mode 100644 index 0000000..d40633d --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/prototype-page-dialog.vue @@ -0,0 +1,774 @@ + + + diff --git a/src/views/personal-center/work-report/shared/components/search-panel.vue b/src/views/personal-center/work-report/shared/components/search-panel.vue new file mode 100644 index 0000000..d9d735c --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/search-panel.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/personal-center/work-report/shared/components/tabs.vue b/src/views/personal-center/work-report/shared/components/tabs.vue new file mode 100644 index 0000000..9f4ff6d --- /dev/null +++ b/src/views/personal-center/work-report/shared/components/tabs.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/personal-center/work-report/shared/types.ts b/src/views/personal-center/work-report/shared/types.ts new file mode 100644 index 0000000..0e6cdb5 --- /dev/null +++ b/src/views/personal-center/work-report/shared/types.ts @@ -0,0 +1,521 @@ +import dayjs from 'dayjs'; +import type { PaginationData } from '@sa/hooks'; +import { getStatusTagType } from '@/constants/status-tag'; + +export type WorkReportType = Api.WorkReport.Common.ReportType; +export type WorkReportRow = + | Api.WorkReport.Weekly.WeeklyReport + | Api.WorkReport.Monthly.MonthlyReport + | Api.WorkReport.Project.ProjectReport; +export type WorkReportSearchParams = + | Api.WorkReport.Weekly.WeeklyReportSearchParams + | Api.WorkReport.Monthly.MonthlyReportSearchParams + | Api.WorkReport.Project.ProjectReportSearchParams; +export type WorkReportSaveParams = + | Api.WorkReport.Weekly.WeeklyReportSaveParams + | Api.WorkReport.Monthly.MonthlyReportSaveParams + | Api.WorkReport.Project.ProjectReportSaveParams; + +export interface WorkReportStructuredTask { + title: string; + detail?: string; + priority?: string | null; + progress?: number | null; + hours?: number | null; + kind?: string | null; +} + +export interface WorkReportStructuredSection { + category: string; + tasks: WorkReportStructuredTask[]; +} + +export const WORK_REPORT_PROJECT_OWNER_PERMISSION = 'project:work-report:project-owner'; + +export const WORK_REPORT_TYPE_LABEL: Record = { + weekly: '个人周报', + monthly: '个人月报', + project: '项目半月报' +}; + +export const WORK_REPORT_STATUS_LABEL: Record = { + draft: '待提交', + pending_approval: '待审批', + approved: '已通过', + rejected: '已退回' +}; + +export const PROJECT_REPORT_FLAG_OPTIONS = [ + { label: '上半月', value: 1 }, + { label: '下半月', value: 2 } +]; + +export const BOOLEAN_TRUE_FALSE_OPTIONS = [ + { label: '是', value: 'true' }, + { label: '否', value: 'false' } +]; + +export function getProjectReportFlagLabel(flag?: number | null) { + return PROJECT_REPORT_FLAG_OPTIONS.find(item => item.value === flag)?.label || '--'; +} + +export function getWorkReportStatusLabel(statusCode?: string | null, statusName?: string | null) { + return statusName || WORK_REPORT_STATUS_LABEL[statusCode || ''] || statusCode || '--'; +} + +export function resolveWorkReportStatusTagType(statusCode?: string | null) { + return getStatusTagType('workReport', statusCode); +} + +export function formatEmptyText(value?: string | number | null) { + if (value === null || value === undefined || value === '') { + return '0'; + } + + return String(value); +} + +export function formatDate(value?: string | null) { + return value ? dayjs(value).format('YYYY-MM-DD') : '--'; +} + +export function formatDateTime(value?: string | null) { + return value ? dayjs(value).format('YYYY-MM-DD HH:mm') : '--'; +} + +export function formatPeriodLabel(value?: string | null) { + return String(value || '') + .trim() + .replace(/\s*(周报|月报|项目半月报|半月报)\s*$/u, ''); +} + +export function formatPeriod(row: Pick) { + return formatPeriodLabel(row.periodLabel) || `${formatDate(row.periodStartDate)} 至 ${formatDate(row.periodEndDate)}`; +} + +export function createInitBaseSearchParams() { + return { + pageNo: 1, + pageSize: 10, + keyword: undefined, + statusCode: undefined, + periodStartDate: undefined, + submitTime: undefined, + supervisorName: undefined + }; +} + +export function createWeeklySearchParams(): Api.WorkReport.Weekly.WeeklyReportSearchParams { + return { + ...createInitBaseSearchParams(), + isBusinessTrip: undefined + }; +} + +export function createMonthlySearchParams(): Api.WorkReport.Monthly.MonthlyReportSearchParams { + return createInitBaseSearchParams(); +} + +export function createProjectSearchParams(): Api.WorkReport.Project.ProjectReportSearchParams { + return { + ...createInitBaseSearchParams(), + projectId: undefined, + flag: undefined + }; +} + +export function transformWorkReportPage( + response: { data: Api.WorkReport.Common.PageResult | null; error: unknown }, + pageNo: number, + pageSize: number +): PaginationData { + if (!response.error && response.data) { + return { + data: response.data.list, + pageNum: pageNo, + pageSize, + total: response.data.total + }; + } + + return { + data: [], + pageNum: 1, + pageSize, + total: 0 + }; +} + +export function createBlankReviewItem(index = 0): Api.WorkReport.Common.PersonalReportReviewItem { + return { + itemNumber: index + 1, + itemTitle: '', + workHours: 0, + contentText: '', + contentJson: null, + reflectionText: '' + }; +} + +export function createBlankPlanItem(index = 0): Api.WorkReport.Common.PersonalReportPlanItem { + return { + itemNumber: index + 1, + itemTitle: '', + targetText: '', + targetJson: null, + supportNeed: '' + }; +} + +export function createBlankProjectItem(): Api.WorkReport.Project.ProjectReportItem { + return { + itemTitle: '', + workHours: 0, + priorityCode: undefined, + progressRate: 0 + }; +} + +function isRecord(value: unknown): value is Record { + return Boolean(value) && typeof value === 'object' && !Array.isArray(value); +} + +function normalizeNumber(value: unknown): number | null { + if (typeof value === 'number' && Number.isFinite(value)) return value; + if (typeof value === 'string' && value.trim()) { + const numberValue = Number(value); + return Number.isFinite(numberValue) ? numberValue : null; + } + return null; +} + +function normalizeStructuredTask(value: unknown): WorkReportStructuredTask | null { + if (!isRecord(value)) return null; + + const title = String(value.title ?? value.name ?? '').trim(); + if (!title) return null; + + return { + title, + detail: String(value.detail ?? value.content ?? '').trim(), + priority: value.priority === null || value.priority === undefined ? null : String(value.priority), + progress: normalizeNumber(value.progress), + hours: normalizeNumber(value.hours), + kind: value.kind === null || value.kind === undefined ? null : String(value.kind) + }; +} + +function normalizeStructuredSection(value: unknown): WorkReportStructuredSection | null { + if (!isRecord(value)) return null; + + const category = String(value.category ?? value.title ?? value.name ?? '').trim(); + const rawTasks = Array.isArray(value.tasks) ? value.tasks : []; + const tasks = rawTasks.map(normalizeStructuredTask).filter(Boolean) as WorkReportStructuredTask[]; + + if (!category && !tasks.length) return null; + + return { + category: category || '工作内容', + tasks + }; +} + +function parseJsonLike(value: unknown): unknown { + if (typeof value !== 'string') return value; + + try { + return JSON.parse(value); + } catch { + return null; + } +} + +export function getStructuredTasks(value: unknown): WorkReportStructuredTask[] { + const parsed = parseJsonLike(value); + + if (Array.isArray(parsed)) { + return parsed.map(normalizeStructuredTask).filter(Boolean) as WorkReportStructuredTask[]; + } + + if (isRecord(parsed) && Array.isArray(parsed.tasks)) { + return parsed.tasks.map(normalizeStructuredTask).filter(Boolean) as WorkReportStructuredTask[]; + } + + return []; +} + +export function getStructuredSections(value: unknown): WorkReportStructuredSection[] { + const parsed = parseJsonLike(value); + + if (Array.isArray(parsed)) { + return parsed.map(normalizeStructuredSection).filter(Boolean) as WorkReportStructuredSection[]; + } + + if (isRecord(parsed) && Array.isArray(parsed.sections)) { + return parsed.sections.map(normalizeStructuredSection).filter(Boolean) as WorkReportStructuredSection[]; + } + + return []; +} + +function joinTextValues(...values: Array) { + return values + .map(value => value?.trim()) + .filter(Boolean) + .join('\n'); +} + +function mergeStructuredSections(sections: WorkReportStructuredSection[]) { + const sectionMap = new Map(); + + sections.forEach(section => { + const category = section.category || '工作内容'; + const existing = sectionMap.get(category); + if (existing) { + existing.tasks.push(...section.tasks); + } else { + sectionMap.set(category, { category, tasks: [...section.tasks] }); + } + }); + + return Array.from(sectionMap.values()); +} + +function mergeStructuredJson(current: unknown, next: unknown) { + const currentSections = getStructuredSections(current); + const nextSections = getStructuredSections(next); + const sections = mergeStructuredSections([...currentSections, ...nextSections]); + if (sections.length) return JSON.stringify({ sections }); + + const tasks = [...getStructuredTasks(current), ...getStructuredTasks(next)]; + if (tasks.length) return JSON.stringify({ tasks }); + + return current ?? next ?? null; +} + +function groupPersonalReportItemsByTitle( + items: T[], + merge: (target: T, source: T) => void +) { + const groupedItems: T[] = []; + const itemMap = new Map(); + + items.forEach((item, index) => { + const title = item.itemTitle.trim(); + const key = title || `__blank_${index}`; + const existing = itemMap.get(key); + + if (existing) { + merge(existing, item); + return; + } + + itemMap.set(key, item); + groupedItems.push(item); + }); + + return groupedItems.map((item, index) => ({ + ...item, + itemNumber: index + 1 + })); +} + +export function normalizeReviewItems(items?: Api.WorkReport.Common.PersonalReportReviewItem[] | null) { + const list = items?.length ? items : [createBlankReviewItem()]; + + const normalizedItems = list.map((item, index) => ({ + ...item, + itemNumber: item.itemNumber ?? index + 1, + itemTitle: item.itemTitle || '', + workHours: item.workHours ?? 0, + contentText: item.contentText || '', + contentJson: item.contentJson ?? null, + reflectionText: item.reflectionText || '' + })); + + return groupPersonalReportItemsByTitle(normalizedItems, (target, source) => { + target.workHours = Number(target.workHours || 0) + Number(source.workHours || 0); + target.contentText = joinTextValues(target.contentText, source.contentText); + target.contentJson = mergeStructuredJson(target.contentJson, source.contentJson); + target.reflectionText = joinTextValues(target.reflectionText, source.reflectionText); + }); +} + +export function normalizePlanItems(items?: Api.WorkReport.Common.PersonalReportPlanItem[] | null) { + const list = items?.length ? items : [createBlankPlanItem()]; + + const normalizedItems = list.map((item, index) => ({ + ...item, + itemNumber: item.itemNumber ?? index + 1, + itemTitle: item.itemTitle || '', + targetText: item.targetText || '', + targetJson: item.targetJson ?? null, + supportNeed: item.supportNeed || '' + })); + + return groupPersonalReportItemsByTitle(normalizedItems, (target, source) => { + target.targetText = joinTextValues(target.targetText, source.targetText); + target.targetJson = mergeStructuredJson(target.targetJson, source.targetJson); + target.supportNeed = joinTextValues(target.supportNeed, source.supportNeed); + }); +} + +export function normalizeProjectItems(items?: Api.WorkReport.Project.ProjectReportItem[] | null) { + const list = items?.length ? items : [createBlankProjectItem()]; + + return list.map(item => ({ + ...item, + itemTitle: item.itemTitle || '', + workHours: item.workHours ?? 0, + priorityCode: item.priorityCode || undefined, + progressRate: item.progressRate ?? 0 + })); +} + +export function createWeeklySaveParams( + base?: Partial +): Api.WorkReport.Weekly.WeeklyReportSaveParams { + return { + periodKey: base?.periodKey || '', + periodLabel: base?.periodLabel || '', + periodStartDate: base?.periodStartDate || '', + periodEndDate: base?.periodEndDate || '', + isBusinessTrip: base?.isBusinessTrip ?? false, + reviewItems: normalizeReviewItems(base?.reviewItems), + planItems: normalizePlanItems(base?.planItems), + travelSegments: base?.travelSegments?.length ? base.travelSegments : [] + }; +} + +export function createMonthlySaveParams( + base?: Partial +): Api.WorkReport.Monthly.MonthlyReportSaveParams { + return { + periodKey: base?.periodKey || '', + periodLabel: base?.periodLabel || '', + periodStartDate: base?.periodStartDate || '', + periodEndDate: base?.periodEndDate || '', + reviewItems: normalizeReviewItems(base?.reviewItems), + planItems: normalizePlanItems(base?.planItems) + }; +} + +export function createProjectSaveParams( + base?: Partial +): Api.WorkReport.Project.ProjectReportSaveParams { + const defaultParams: Api.WorkReport.Project.ProjectReportSaveParams = { + projectId: '', + periodKey: '', + periodLabel: '', + periodStartDate: '', + periodEndDate: '', + flag: 1, + projectStatusDesc: '', + projectProgressPlan: '', + projectKeyPoints: '', + projectProblems: '', + currentItems: [createBlankProjectItem()], + nextItems: [createBlankProjectItem()] + }; + + return { + ...Object.assign(defaultParams, base), + currentItems: normalizeProjectItems(base?.currentItems), + nextItems: normalizeProjectItems(base?.nextItems) + }; +} + +type NavigatorWithLegacySave = Navigator & { + msSaveOrOpenBlob?: (blob: Blob, defaultName?: string) => boolean; +}; + +export function downloadBlob(blob: Blob, filename: string) { + if (!(blob instanceof Blob)) { + window.$message?.error(getBlobErrorMessage(blob) || '导出失败:接口未返回文件流'); + return; + } + + const downloadFile = + blob instanceof File ? blob : new File([blob], filename, { type: blob.type || 'application/octet-stream' }); + const legacyNavigator = window.navigator as NavigatorWithLegacySave; + + if (typeof legacyNavigator.msSaveOrOpenBlob === 'function') { + legacyNavigator.msSaveOrOpenBlob(downloadFile, filename); + window.$message?.success('导出文件已开始下载'); + return; + } + + const url = window.URL.createObjectURL(downloadFile); + const link = document.createElement('a'); + link.href = url; + link.download = filename; + link.style.display = 'none'; + link.rel = 'noopener'; + + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + + window.setTimeout(() => { + window.URL.revokeObjectURL(url); + }, 1000); + window.$message?.success('导出文件已开始下载'); +} + +function getBlobErrorMessage(value: unknown) { + if (!isRecord(value)) return ''; + + const message = value.msg || value.message || value.error; + return typeof message === 'string' && message.trim() ? message.trim() : ''; +} + +function safeDecodeFilename(value: string) { + try { + return decodeURIComponent(value); + } catch { + return value; + } +} + +function getResponseHeader(headers: unknown, headerName: string) { + if (!headers) return ''; + + if (typeof (headers as { get?: unknown }).get === 'function') { + const value = (headers as { get: (name: string) => unknown }).get(headerName); + return value === null || value === undefined ? '' : String(value); + } + + if (!isRecord(headers)) return ''; + + const matchedKey = Object.keys(headers).find(key => key.toLowerCase() === headerName.toLowerCase()); + if (!matchedKey) return ''; + + const value = headers[matchedKey]; + return value === null || value === undefined ? '' : String(value); +} + +export function getFilenameFromDisposition(disposition?: string | null) { + if (!disposition) return ''; + + const filenameStarMatch = disposition.match(/filename\*=UTF-8''([^;]+)/i); + if (filenameStarMatch?.[1]) { + return safeDecodeFilename(filenameStarMatch[1].replace(/^"|"$/g, '')); + } + + const filenameMatch = disposition.match(/filename="?([^";]+)"?/i); + if (filenameMatch?.[1]) { + return safeDecodeFilename(filenameMatch[1]); + } + + return ''; +} + +export function resolveExportFilename(result: { response?: { headers?: unknown } }, fallbackName: string) { + const disposition = getResponseHeader(result.response?.headers, 'content-disposition'); + return getFilenameFromDisposition(disposition) || fallbackName; +} + +export function createWorkReportContentExportFallbackName(reportType: WorkReportType, reportCount: number) { + const extension = reportCount === 1 ? 'docx' : 'zip'; + return `${WORK_REPORT_TYPE_LABEL[reportType]}_${dayjs().format('YYYY-MM-DD')}.${extension}`; +} diff --git a/src/views/personal-center/work-report/shared/utils.ts b/src/views/personal-center/work-report/shared/utils.ts new file mode 100644 index 0000000..3461b2b --- /dev/null +++ b/src/views/personal-center/work-report/shared/utils.ts @@ -0,0 +1,194 @@ +import dayjs from 'dayjs'; +import isoWeek from 'dayjs/plugin/isoWeek'; +import weekday from 'dayjs/plugin/weekday'; +import type { WorkReportType } from './types'; + +dayjs.extend(isoWeek); +dayjs.extend(weekday); + +export interface WorkReportPeriodOption { + key: string; + label: string; + description: string; + reportType: WorkReportType; + flag?: number; + period: { + periodKey: string; + periodLabel: string; + periodStartDate: string; + periodEndDate: string; + }; +} + +function formatRangeLabel(start: dayjs.Dayjs, end: dayjs.Dayjs) { + return `${start.format('YYYY-MM-DD')} 至 ${end.format('YYYY-MM-DD')}`; +} + +export function formatPeriodDisplayLabel(label?: string | null) { + return String(label || '') + .trim() + .replace(/\s*(周报|月报|项目半月报|半月报)\s*$/u, ''); +} + +export function getIsoWeekDisplay(date: string | dayjs.Dayjs) { + const selectedDate = dayjs(date); + if (!selectedDate.isValid()) return ''; + return `${selectedDate.format('YYYY')} 第${String(selectedDate.isoWeek()).padStart(2, '0')} 周`; +} + +/* eslint-disable-next-line max-params */ +function buildPeriod(reportType: WorkReportType, start: dayjs.Dayjs, end: dayjs.Dayjs, label: string, flag?: number) { + const startText = start.format('YYYY-MM-DD'); + const endText = end.format('YYYY-MM-DD'); + + return { + periodKey: flag ? `${reportType}-${startText}-${endText}-${flag}` : `${reportType}-${startText}-${endText}`, + periodLabel: label, + periodStartDate: startText, + periodEndDate: endText + }; +} + +export function buildWeeklyPeriodFromDate(date: string | dayjs.Dayjs) { + const selectedDate = dayjs(date); + const start = selectedDate.startOf('isoWeek'); + const end = selectedDate.endOf('isoWeek'); + + return buildPeriod('weekly', start, end, `${formatRangeLabel(start, end)} 周报`); +} + +export function buildMonthlyPeriodFromMonth(month: string | dayjs.Dayjs) { + const selectedMonth = dayjs(month); + const start = selectedMonth.startOf('month'); + const end = selectedMonth.endOf('month'); + + return buildPeriod('monthly', start, end, `${selectedMonth.format('YYYY-MM')} 月报`); +} + +export function buildProjectPeriodFromMonth(month: string | dayjs.Dayjs, flag: number) { + const selectedMonth = dayjs(month); + const monthStart = selectedMonth.startOf('month'); + + if (flag === 2) { + const start = monthStart.date(16); + const end = selectedMonth.endOf('month'); + return buildPeriod('project', start, end, `${selectedMonth.format('YYYY-MM')} 下半月`, 2); + } + + const start = monthStart.startOf('month'); + const end = monthStart.date(15); + return buildPeriod('project', start, end, `${selectedMonth.format('YYYY-MM')} 上半月`, 1); +} + +export function getWeeklyPeriodOptions(now = dayjs()): WorkReportPeriodOption[] { + const thisWeekStart = now.startOf('isoWeek'); + const thisWeekEnd = now.endOf('isoWeek'); + const lastWeekStart = thisWeekStart.subtract(1, 'week'); + const lastWeekEnd = thisWeekEnd.subtract(1, 'week'); + + return [ + { + key: 'current-week', + label: '本周', + description: formatRangeLabel(thisWeekStart, thisWeekEnd), + reportType: 'weekly', + period: buildPeriod('weekly', thisWeekStart, thisWeekEnd, `${formatRangeLabel(thisWeekStart, thisWeekEnd)} 周报`) + }, + { + key: 'last-week', + label: '上周', + description: formatRangeLabel(lastWeekStart, lastWeekEnd), + reportType: 'weekly', + period: buildPeriod('weekly', lastWeekStart, lastWeekEnd, `${formatRangeLabel(lastWeekStart, lastWeekEnd)} 周报`) + } + ]; +} + +export function getMonthlyPeriodOptions(now = dayjs()): WorkReportPeriodOption[] { + const thisMonthStart = now.startOf('month'); + const thisMonthEnd = now.endOf('month'); + const lastMonth = now.subtract(1, 'month'); + const lastMonthStart = lastMonth.startOf('month'); + const lastMonthEnd = lastMonth.endOf('month'); + + return [ + { + key: 'current-month', + label: '本月', + description: thisMonthStart.format('YYYY-MM'), + reportType: 'monthly', + period: buildPeriod('monthly', thisMonthStart, thisMonthEnd, `${thisMonthStart.format('YYYY-MM')} 月报`) + }, + { + key: 'last-month', + label: '上月', + description: lastMonthStart.format('YYYY-MM'), + reportType: 'monthly', + period: buildPeriod('monthly', lastMonthStart, lastMonthEnd, `${lastMonthStart.format('YYYY-MM')} 月报`) + } + ]; +} + +export function getProjectPeriodOptions(now = dayjs()): WorkReportPeriodOption[] { + const currentMonthStart = now.startOf('month'); + const currentMonthEnd = now.endOf('month'); + const currentFirstHalfEnd = currentMonthStart.date(15); + const currentSecondHalfStart = currentMonthStart.date(16); + const previousMonth = now.subtract(1, 'month'); + const previousMonthStart = previousMonth.startOf('month'); + const previousMonthEnd = previousMonth.endOf('month'); + const previousSecondHalfStart = previousMonthStart.date(16); + const isCurrentFirstHalf = now.date() <= 15; + + const currentOption: WorkReportPeriodOption = isCurrentFirstHalf + ? { + key: 'current-first-half', + label: '上半月', + description: `${now.format('YYYY-MM')} 上半月`, + reportType: 'project', + flag: 1, + period: buildPeriod('project', currentMonthStart, currentFirstHalfEnd, `${now.format('YYYY-MM')} 上半月`, 1) + } + : { + key: 'current-second-half', + label: '下半月', + description: `${now.format('YYYY-MM')} 下半月`, + reportType: 'project', + flag: 2, + period: buildPeriod('project', currentSecondHalfStart, currentMonthEnd, `${now.format('YYYY-MM')} 下半月`, 2) + }; + + const previousOption: WorkReportPeriodOption = isCurrentFirstHalf + ? { + key: 'previous-second-half', + label: '下半月', + description: `${previousMonth.format('YYYY-MM')} 下半月`, + reportType: 'project', + flag: 2, + period: buildPeriod( + 'project', + previousSecondHalfStart, + previousMonthEnd, + `${previousMonth.format('YYYY-MM')} 下半月`, + 2 + ) + } + : { + key: 'previous-first-half', + label: '上半月', + description: `${now.format('YYYY-MM')} 上半月`, + reportType: 'project', + flag: 1, + period: buildPeriod('project', currentMonthStart, currentFirstHalfEnd, `${now.format('YYYY-MM')} 上半月`, 1) + }; + + return [currentOption, previousOption]; +} + +export function getReportTypePeriodOptions(now = dayjs()) { + return { + weekly: getWeeklyPeriodOptions(now), + monthly: getMonthlyPeriodOptions(now), + project: getProjectPeriodOptions(now) + } as const; +} diff --git a/src/views/personal-center/work-report/weekly/index.vue b/src/views/personal-center/work-report/weekly/index.vue new file mode 100644 index 0000000..544f7de --- /dev/null +++ b/src/views/personal-center/work-report/weekly/index.vue @@ -0,0 +1,373 @@ + + + diff --git a/src/views/personal-center/work-report/weekly/modules/approval-record-dialog.vue b/src/views/personal-center/work-report/weekly/modules/approval-record-dialog.vue new file mode 100644 index 0000000..69bbe0a --- /dev/null +++ b/src/views/personal-center/work-report/weekly/modules/approval-record-dialog.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/weekly/modules/detail-page.vue b/src/views/personal-center/work-report/weekly/modules/detail-page.vue new file mode 100644 index 0000000..d8a98c9 --- /dev/null +++ b/src/views/personal-center/work-report/weekly/modules/detail-page.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/views/personal-center/work-report/weekly/modules/fill-page.vue b/src/views/personal-center/work-report/weekly/modules/fill-page.vue new file mode 100644 index 0000000..3f472d7 --- /dev/null +++ b/src/views/personal-center/work-report/weekly/modules/fill-page.vue @@ -0,0 +1,2505 @@ + + + + + diff --git a/src/views/personal-center/work-report/weekly/modules/search-panel.vue b/src/views/personal-center/work-report/weekly/modules/search-panel.vue new file mode 100644 index 0000000..2e3cb7a --- /dev/null +++ b/src/views/personal-center/work-report/weekly/modules/search-panel.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/workbench/index.vue b/src/views/workbench/index.vue index 11e7166..8ff50f1 100644 --- a/src/views/workbench/index.vue +++ b/src/views/workbench/index.vue @@ -91,7 +91,7 @@ onBeforeRouteLeave(async (_to, _from, next) => {