commit 781d598ae7d51991fc9185f96fb27bcdb597f6fe Author: ch <852066789@qq.com> Date: Wed Aug 27 18:12:34 2025 +0800 feat: 初始化订单审批系统项目- 创建项目基础结构和配置文件 - 添加全局样式和工具函数 - 实现订单状态和审批状态的格式化及颜色处理- 添加金额和日期格式化函数 - 实现防抖和节流函数 - 添加微信小程序环境检查和文件预览URL生成函数 - 实现复制到剪贴板功能 - 添加项目路由配置 - 实现HTTP客户端和拦截器 - 添加订单、审批记录等类型定义 diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..f826b16 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "Bash(npm install)", + "Bash(npm run dev:*)" + ], + "deny": [], + "ask": [] + } +} \ No newline at end of file diff --git a/.env b/.env new file mode 100644 index 0000000..210856b --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +VITE_API_BASE_URL=http://localhost:8080 +VITE_APP_TITLE=订单审批系统 +VITE_FILE_BASE_URL=http://localhost:8080 \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..210856b --- /dev/null +++ b/.env.development @@ -0,0 +1,3 @@ +VITE_API_BASE_URL=http://localhost:8080 +VITE_APP_TITLE=订单审批系统 +VITE_FILE_BASE_URL=http://localhost:8080 \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..09f84c7 --- /dev/null +++ b/.env.production @@ -0,0 +1,3 @@ +VITE_API_BASE_URL=https://your-api-domain.com +VITE_APP_TITLE=订单审批系统 +VITE_FILE_BASE_URL=https://your-api-domain.com \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..85dcda7 --- /dev/null +++ b/README.md @@ -0,0 +1,203 @@ +# 微信小程序H5审批系统 + +基于Vue 3 + TypeScript + Vant 4开发的移动端H5应用,主要用于在微信小程序WebView中运行的订单审批系统。 + +## 项目特性 + +- 🚀 Vue 3 + TypeScript + Vite 开发 +- 📱 Vant 4 移动端组件库 +- 🎯 专为微信小程序WebView优化 +- 📋 订单列表查看和搜索 +- 📄 订单详情展示 +- ✅ 审批操作功能 +- 📊 审批历史记录 +- 📎 附件预览功能 + +## 技术栈 + +- **前端框架**: Vue 3 +- **开发语言**: TypeScript +- **构建工具**: Vite +- **UI组件库**: Vant 4 +- **路由管理**: Vue Router 4 +- **状态管理**: Pinia +- **HTTP客户端**: Axios +- **样式预处理**: Sass + +## 目录结构 + +``` +oms_h5/ +├── public/ # 静态资源 +├── src/ +│ ├── api/ # API接口 +│ ├── components/ # 公共组件 +│ ├── views/ # 页面组件 +│ │ ├── List/ # 列表页面 +│ │ └── Detail/ # 详情页面 +│ ├── store/ # 状态管理 +│ ├── utils/ # 工具函数 +│ ├── types/ # TypeScript类型定义 +│ ├── styles/ # 全局样式 +│ └── router/ # 路由配置 +├── docs/ # 文档和设计稿 +│ └── ui-mockups/ # UI设计图 +├── package.json +└── vite.config.ts +``` + +## 开发环境搭建 + +### 环境要求 + +- Node.js >= 16 +- npm >= 7 或 yarn >= 1.22 + +### 安装依赖 + +```bash +npm install +# 或 +yarn install +``` + +### 启动开发服务器 + +```bash +npm run dev +# 或 +yarn dev +``` + +### 构建生产版本 + +```bash +npm run build +# 或 +yarn build +``` + +### 预览构建结果 + +```bash +npm run preview +# 或 +yarn preview +``` + +## 环境配置 + +项目支持多环境配置,通过`.env`文件管理: + +- `.env` - 通用环境变量 +- `.env.development` - 开发环境 +- `.env.production` - 生产环境 + +主要配置项: + +```bash +VITE_API_BASE_URL=http://localhost:8080 # API基础URL +VITE_APP_TITLE=订单审批系统 # 应用标题 +VITE_FILE_BASE_URL=http://localhost:8080 # 文件服务URL +``` + +## 主要功能 + +### 1. 订单列表 +- ✅ 订单列表展示 +- ✅ 下拉刷新和上拉加载 +- ✅ 搜索功能 +- ✅ 状态筛选 +- ✅ 订单状态标识 + +### 2. 订单详情 +- ✅ 订单基本信息展示 +- ✅ 产品信息列表(软件/硬件/维保) +- ✅ 合同附件展示和预览 +- ✅ 审批历史时间线 + +### 3. 审批操作 +- ✅ 审批通过/驳回 +- ✅ 审批意见输入 +- ✅ 操作结果反馈 + +### 4. 微信小程序适配 +- ✅ WebView环境检测 +- ✅ 移动端样式适配 +- ✅ 触摸手势支持 + +## API接口 + +### 订单列表接口 +``` +POST /project/order/list +``` + +### 订单详情接口 +``` +GET /project/order/h5/approve/:id +``` + +### 审批操作接口 +``` +POST /project/order/order/approve +``` + +## 开发规范 + +### 代码风格 +项目使用ESLint + Prettier进行代码规范检查和格式化。 + +```bash +npm run lint # 代码检查 +npm run type-check # 类型检查 +``` + +### Git提交规范 +建议使用Angular提交信息规范: + +``` +feat: 新增功能 +fix: 修复问题 +docs: 文档更新 +style: 代码格式调整 +refactor: 代码重构 +test: 测试相关 +chore: 构建/工具链更新 +``` + +## 部署说明 + +### 生产构建 +```bash +npm run build +``` + +构建完成后,`dist`目录包含所有静态资源文件。 + +### 服务器配置 +由于是SPA应用,需要配置服务器将所有路由指向`index.html`。 + +#### Nginx配置示例 +```nginx +location / { + try_files $uri $uri/ /index.html; +} +``` + +### 微信小程序配置 +1. 在微信小程序管理后台配置业务域名 +2. 确保HTTPS协议部署 +3. 配置webview组件的src属性 + +## 浏览器兼容性 + +- Chrome >= 64 +- Firefox >= 78 +- Safari >= 12 +- 微信内置浏览器 +- 各主流移动端浏览器 + +## 许可证 + +MIT License \ No newline at end of file diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..a606bd4 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,87 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const createPinia: typeof import('pinia')['createPinia'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const defineStore: typeof import('pinia')['defineStore'] + const effectScope: typeof import('vue')['effectScope'] + const getActivePinia: typeof import('pinia')['getActivePinia'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const mapActions: typeof import('pinia')['mapActions'] + const mapGetters: typeof import('pinia')['mapGetters'] + const mapState: typeof import('pinia')['mapState'] + const mapStores: typeof import('pinia')['mapStores'] + const mapWritableState: typeof import('pinia')['mapWritableState'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const setActivePinia: typeof import('pinia')['setActivePinia'] + const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const storeToRefs: typeof import('pinia')['storeToRefs'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useLink: typeof import('vue-router')['useLink'] + const useModel: typeof import('vue')['useModel'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..13e3588 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,27 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + VanButton: typeof import('vant/es')['Button'] + VanEmpty: typeof import('vant/es')['Empty'] + VanField: typeof import('vant/es')['Field'] + VanIcon: typeof import('vant/es')['Icon'] + VanList: typeof import('vant/es')['List'] + VanLoading: typeof import('vant/es')['Loading'] + VanNavBar: typeof import('vant/es')['NavBar'] + VanPopup: typeof import('vant/es')['Popup'] + VanPullRefresh: typeof import('vant/es')['PullRefresh'] + VanSearch: typeof import('vant/es')['Search'] + VanStep: typeof import('vant/es')['Step'] + VanSteps: typeof import('vant/es')['Steps'] + VanTab: typeof import('vant/es')['Tab'] + VanTabs: typeof import('vant/es')['Tabs'] + } +} diff --git a/docs/ui-mockups/README.md b/docs/ui-mockups/README.md new file mode 100644 index 0000000..069a871 --- /dev/null +++ b/docs/ui-mockups/README.md @@ -0,0 +1,72 @@ +# UI设计图存放目录 + +此目录用于存放项目相关的UI设计图和原型图。 + +## 目录结构 + +``` +ui-mockups/ +├── README.md # 本文件 +├── wireframes/ # 线框图 +│ ├── list-page.png # 列表页面线框图 +│ └── detail-page.png # 详情页面线框图 +├── designs/ # 设计稿 +│ ├── list-page.png # 列表页面设计稿 +│ └── detail-page.png # 详情页面设计稿 +├── prototypes/ # 交互原型 +└── specifications/ # 设计规范 + └── style-guide.md # 样式指南 +``` + +## 设计要求 + +### 1. 移动端适配 +- 屏幕宽度:375px - 414px +- 适配iPhone和Android主流设备 +- 支持横竖屏切换 + +### 2. 微信小程序WebView适配 +- 适配微信小程序导航栏高度 +- 考虑安全区域(刘海屏等) +- 遵循微信小程序设计规范 + +### 3. 页面设计规范 + +#### 列表页面 +- 顶部搜索栏 +- 筛选条件(状态筛选) +- 工单卡片列表 +- 下拉刷新、上拉加载更多 +- 空状态提示 + +#### 详情页面 +- 工单基本信息展示 +- 产品信息列表 +- 附件展示区域 +- 审批历史时间线 +- 底部审批操作按钮 + +### 4. 交互设计 +- 页面切换动画 +- 加载状态提示 +- 操作反馈(成功/失败提示) +- 确认弹窗设计 + +### 5. 视觉设计 +- 主色调:#1890ff(蓝色) +- 辅助色:#52c41a(成功绿)、#f5222d(错误红) +- 背景色:#f5f5f5 +- 文字颜色:#333333(主要)、#666666(次要)、#999999(辅助) + +## 文件命名规范 + +- 使用英文命名,单词间用连字符分隔 +- 包含页面/组件名称和版本号 +- 示例:`order-list-v1.0.png`、`approval-dialog-v2.1.png` + +## 版本管理 + +每次设计更新时请: +1. 更新版本号 +2. 在文件名中体现版本 +3. 保留历史版本以便回溯 \ No newline at end of file diff --git a/docs/ui-mockups/designs/2.1.1-审批列表@2x.png b/docs/ui-mockups/designs/2.1.1-审批列表@2x.png new file mode 100644 index 0000000..344f142 Binary files /dev/null and b/docs/ui-mockups/designs/2.1.1-审批列表@2x.png differ diff --git a/docs/ui-mockups/designs/2.2.1-审批详情@2x.png b/docs/ui-mockups/designs/2.2.1-审批详情@2x.png new file mode 100644 index 0000000..144f7e4 Binary files /dev/null and b/docs/ui-mockups/designs/2.2.1-审批详情@2x.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..2a3a9e4 --- /dev/null +++ b/index.html @@ -0,0 +1,30 @@ + + + + + + + + + + 订单审批系统 + + + +
+ + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a7a00d0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4357 @@ +{ + "name": "oms-h5", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "oms-h5", + "version": "1.0.0", + "dependencies": { + "@vant/touch-emulator": "^1.4.0", + "axios": "^1.5.0", + "pinia": "^2.1.6", + "vant": "^4.6.6", + "vue": "^3.3.4", + "vue-router": "^4.2.4" + }, + "devDependencies": { + "@types/node": "^20.5.9", + "@vitejs/plugin-vue": "^4.3.4", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.47.0", + "eslint-plugin-vue": "^9.17.0", + "prettier": "^3.0.2", + "sass": "^1.66.1", + "typescript": "~5.1.6", + "unplugin-auto-import": "^0.16.6", + "unplugin-vue-components": "^0.25.2", + "vite": "^4.4.9", + "vue-tsc": "^1.8.8" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.11.tgz", + "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vant/popperjs": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.3.0.tgz", + "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==", + "license": "MIT" + }, + "node_modules/@vant/touch-emulator": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vant/touch-emulator/-/touch-emulator-1.4.0.tgz", + "integrity": "sha512-Zt+zISV0+wpOew2S1siOJ3G22y+hapHAKmXM+FhpvWzsRc4qahaYXatCAITuuXt0EcDp7WvEeTO4F7p9AtX/pw==", + "license": "MIT" + }, + "node_modules/@vant/use": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vant/use/-/use-1.6.0.tgz", + "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.20.tgz", + "integrity": "sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@vue/shared": "3.5.20", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.20.tgz", + "integrity": "sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.20", + "@vue/shared": "3.5.20" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.20.tgz", + "integrity": "sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@vue/compiler-core": "3.5.20", + "@vue/compiler-dom": "3.5.20", + "@vue/compiler-ssr": "3.5.20", + "@vue/shared": "3.5.20", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.20.tgz", + "integrity": "sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.20", + "@vue/shared": "3.5.20" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-8.0.0.tgz", + "integrity": "sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0" + }, + "peerDependencies": { + "eslint": ">= 8.0.0", + "prettier": ">= 3.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.20.tgz", + "integrity": "sha512-hS8l8x4cl1fmZpSQX/NXlqWKARqEsNmfkwOIYqtR2F616NGfsLUm0G6FQBK6uDKUCVyi1YOL8Xmt/RkZcd/jYQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.20" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.20.tgz", + "integrity": "sha512-vyQRiH5uSZlOa+4I/t4Qw/SsD/gbth0SW2J7oMeVlMFMAmsG1rwDD6ok0VMmjXY3eI0iHNSSOBilEDW98PLRKw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.20", + "@vue/shared": "3.5.20" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.20.tgz", + "integrity": "sha512-KBHzPld/Djw3im0CQ7tGCpgRedryIn4CcAl047EhFTCCPT2xFf4e8j6WeKLgEEoqPSl9TYqShc3Q6tpWpz/Xgw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.20", + "@vue/runtime-core": "3.5.20", + "@vue/shared": "3.5.20", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.20.tgz", + "integrity": "sha512-HthAS0lZJDH21HFJBVNTtx+ULcIbJQRpjSVomVjfyPkFSpCwvsPTA+jIzOaUm3Hrqx36ozBHePztQFg6pj5aKg==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.20", + "@vue/shared": "3.5.20" + }, + "peerDependencies": { + "vue": "3.5.20" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.20.tgz", + "integrity": "sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==", + "license": "MIT" + }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz", + "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.18", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", + "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", + "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sass": { + "version": "1.91.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.91.0.tgz", + "integrity": "sha512-aFOZHGf+ur+bp1bCHZ+u8otKGh77ZtmFyXDo4tlYvT7PWql41Kwd8wdkPqhhT+h2879IVblcHFglIMofsFd1EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unimport": { + "version": "3.14.6", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.14.6.tgz", + "integrity": "sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.3", + "local-pkg": "^1.0.0", + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "pathe": "^2.0.1", + "picomatch": "^4.0.2", + "pkg-types": "^1.3.0", + "scule": "^1.3.0", + "strip-literal": "^2.1.1", + "unplugin": "^1.16.1" + } + }, + "node_modules/unimport/node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unimport/node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unimport/node_modules/local-pkg/node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/unimport/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/unplugin": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unplugin-auto-import": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz", + "integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.5", + "fast-glob": "^3.3.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "minimatch": "^9.0.3", + "unimport": "^3.4.0", + "unplugin": "^1.5.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unplugin-auto-import/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.25.2.tgz", + "integrity": "sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.5", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.3.0", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "minimatch": "^9.0.3", + "resolve": "^1.22.2", + "unplugin": "^1.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unplugin-vue-components/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/unplugin-vue-components/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/unplugin-vue-components/node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unplugin-vue-components/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unplugin-vue-components/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vant": { + "version": "4.9.21", + "resolved": "https://registry.npmjs.org/vant/-/vant-4.9.21.tgz", + "integrity": "sha512-hXUoZMrLLjykimFRLDlGNd+K2iYSRh9YwLMKnsVdVZ+9inUKxpqnjhOqlZwocbnYkvJlS+febf9u9aJpDol4Pw==", + "license": "MIT", + "dependencies": { + "@vant/popperjs": "^1.3.0", + "@vant/use": "^1.6.0", + "@vue/shared": "^3.5.17" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.14.tgz", + "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.20.tgz", + "integrity": "sha512-2sBz0x/wis5TkF1XZ2vH25zWq3G1bFEPOfkBcx2ikowmphoQsPH6X0V3mmPCXA2K1N/XGTnifVyDQP4GfDDeQw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.20", + "@vue/compiler-sfc": "3.5.20", + "@vue/runtime-dom": "3.5.20", + "@vue/server-renderer": "3.5.20", + "@vue/shared": "3.5.20" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-router": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", + "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f8d6683 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "oms-h5", + "version": "1.0.0", + "type": "module", + "description": "微信小程序H5审批系统", + "scripts": { + "dev": "vite", + "build": "vue-tsc && vite build", + "preview": "vite preview", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "type-check": "vue-tsc --noEmit" + }, + "dependencies": { + "vue": "^3.3.4", + "vue-router": "^4.2.4", + "pinia": "^2.1.6", + "vant": "^4.6.6", + "axios": "^1.5.0", + "@vant/touch-emulator": "^1.4.0" + }, + "devDependencies": { + "@types/node": "^20.5.9", + "@vitejs/plugin-vue": "^4.3.4", + "@vue/eslint-config-prettier": "^8.0.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "eslint": "^8.47.0", + "eslint-plugin-vue": "^9.17.0", + "prettier": "^3.0.2", + "sass": "^1.66.1", + "typescript": "~5.1.6", + "vite": "^4.4.9", + "vue-tsc": "^1.8.8", + "unplugin-auto-import": "^0.16.6", + "unplugin-vue-components": "^0.25.2" + } +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..bef77aa --- /dev/null +++ b/src/App.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/api/order.ts b/src/api/order.ts new file mode 100644 index 0000000..6c6cf60 --- /dev/null +++ b/src/api/order.ts @@ -0,0 +1,46 @@ +import http from '@/utils/http' +import type { ApiResponse, Order, OrderDetailResponse, ListParams, ApprovalParams } from '@/types' +import type { AxiosResponse } from 'axios' + +/** + * 获取订单列表 + */ +export const getOrderList = (params: ListParams): Promise>> => { + // 创建FormData对象 + const formData = new FormData() + + // 添加参数到FormData + if (params.approve) formData.append('approve', params.approve) + formData.append('page', params.page.toString()) + formData.append('pageSize', params.pageSize.toString()) + if (params.keyword) formData.append('keyword', params.keyword) + + return http.post('/project/order/list', formData) +} + +/** + * 获取订单详情 + */ +export const getOrderDetail = (id: string | number): Promise>> => { + return http.get(`/project/order/h5/approve/${id}`) +} + +/** + * 提交审批结果 + */ +export const submitApproval = (params: any): Promise>> => { + // 创建FormData对象 + const formData = new FormData() + + // 将所有参数添加到FormData中 + Object.keys(params).forEach(key => { + if (params[key] !== undefined && params[key] !== null) { + formData.append(key, params[key].toString()) + } + }) + + return http.post('/project/order/order/approve', formData) +} \ No newline at end of file diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..73bd050 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,16 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} + +interface ImportMetaEnv { + readonly VITE_API_BASE_URL: string + readonly VITE_APP_TITLE: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..835e083 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,19 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import { createPinia } from 'pinia' + +// Vant样式 +import 'vant/lib/index.css' +// 触摸模拟器 (开发环境使用) +import '@vant/touch-emulator' + +// 全局样式 +import '@/styles/index.scss' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) + +app.mount('#app') \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..ed7d1c1 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,44 @@ +import { createRouter, createWebHistory } from 'vue-router' +import type { RouteRecordRaw } from 'vue-router' + +const routes: RouteRecordRaw[] = [ + { + path: '/', + redirect: '/list' + }, + { + path: '/list', + name: 'OrderList', + component: () => import('@/views/List/index.vue'), + meta: { + title: '订单列表' + } + }, + { + path: '/detail/:id', + name: 'OrderDetail', + component: () => import('@/views/Detail/index.vue'), + meta: { + title: '订单详情' + } + } +] + +const router = createRouter({ + history: createWebHistory(), + routes, + scrollBehavior() { + return { top: 0 } + } +}) + +// 全局路由守卫 +router.beforeEach((to, from, next) => { + // 设置页面标题 + if (to.meta?.title) { + document.title = to.meta.title as string + } + next() +}) + +export default router \ No newline at end of file diff --git a/src/store/order.ts b/src/store/order.ts new file mode 100644 index 0000000..8c2d3d9 --- /dev/null +++ b/src/store/order.ts @@ -0,0 +1,159 @@ +import { defineStore } from 'pinia' +import type { Order, OrderDetailResponse, ListParams } from '@/types' +import { getOrderList, getOrderDetail } from '@/api/order' + +interface OrderState { + // 列表相关 + orderList: Order[] + loading: boolean + finished: boolean + currentPage: number + pageSize: number + total: number + keyword: string + + // 详情相关 + currentOrder: any | null // 临时改为any来避免类型问题 + detailLoading: boolean +} + +export const useOrderStore = defineStore('order', { + state: (): OrderState => ({ + orderList: [], + loading: false, + finished: false, + currentPage: 1, + pageSize: 20, + total: 0, + keyword: '', + + currentOrder: null, + detailLoading: false + }), + + getters: { + // 获取当前订单基本信息 + currentOrderInfo: (state) => state.currentOrder?.projectOrderInfo, + + // 获取审批历史 + approvalHistory: (state) => state.currentOrder?.approveLog || [], + + // 获取当前用户信息 + currentUser: (state) => state.currentOrder?.user, + + // 检查是否还有更多数据 + hasMore: (state) => state.orderList.length < state.total + }, + + actions: { + /** + * 加载订单列表 + */ + async loadOrderList(refresh = false) { + if (this.loading) return + + if (refresh) { + this.currentPage = 1 + this.finished = false + this.orderList = [] + } + + this.loading = true + + try { + const params: ListParams = { + approve:'approve', + page: this.currentPage, + pageSize: this.pageSize, + keyword: this.keyword || undefined + } + + const response = await getOrderList(params) + const { total, rows } = response.data + + if (refresh) { + this.orderList = rows + } else { + this.orderList.push(...rows) + } + + this.total = total + this.currentPage++ + + // 判断是否已加载完所有数据 + if (this.orderList.length >= total) { + this.finished = true + } + + return response + } catch (error) { + console.error('加载订单列表失败:', error) + throw error + } finally { + this.loading = false + } + }, + + /** + * 搜索订单 + */ + async searchOrders(keyword: string) { + this.keyword = keyword + await this.loadOrderList(true) + }, + + /** + * 获取订单详情 + */ + async fetchOrderDetail(id: string | number) { + this.detailLoading = true + console.log('开始获取订单详情,ID:', id) + + try { + const response = await getOrderDetail(id) + console.log('API响应:', response) + console.log('响应数据:', response.data) + console.log('实际数据:', response.data.data) + + // 直接获取数据对象 + const orderData = response.data.data + console.log('订单数据对象:', orderData) + + // 确保数据存在再赋值 + if (orderData) { + this.currentOrder = orderData + console.log('赋值后的存储数据:', this.currentOrder) + console.log('项目订单信息:', this.currentOrder.projectOrderInfo) + } else { + console.error('订单数据为空') + } + + return response + } catch (error) { + console.error('获取订单详情失败:', error) + throw error + } finally { + this.detailLoading = false + } + }, + + /** + * 清空当前订单详情 + */ + clearCurrentOrder() { + this.currentOrder = null + }, + + /** + * 重置列表状态 + */ + resetListState() { + this.orderList = [] + this.currentPage = 1 + this.finished = false + this.loading = false + this.keyword = '' + this.total = 0 + } + } +}) \ No newline at end of file diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..2515ecd --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,294 @@ +// 全局CSS变量 +:root { + // 主色系 + --primary-color: #1890ff; + --primary-color-dark: #096dd9; + --primary-color-light: #e6f7ff; + + // 功能色系 + --success-color: #52c41a; + --warning-color: #faad14; + --error-color: #f5222d; + --info-color: #1890ff; + + // 中性色系 + --text-color-primary: #333333; + --text-color-secondary: #666666; + --text-color-tertiary: #999999; + --text-color-disabled: #cccccc; + + --background-color-primary: #ffffff; + --background-color-secondary: #f5f5f5; + --background-color-tertiary: #fafafa; + + --border-color: #d9d9d9; + --divider-color: #f0f0f0; + + // 间距 + --spacing-xs: 4px; + --spacing-sm: 8px; + --spacing-md: 12px; + --spacing-lg: 16px; + --spacing-xl: 20px; + --spacing-xxl: 24px; + + // 圆角 + --border-radius-sm: 4px; + --border-radius-md: 8px; + --border-radius-lg: 12px; + + // 阴影 + --shadow-light: 0 1px 3px rgba(0, 0, 0, 0.12); + --shadow-medium: 0 4px 12px rgba(0, 0, 0, 0.15); + --shadow-heavy: 0 8px 24px rgba(0, 0, 0, 0.12); +} + +// 重置样式 +* { + box-sizing: border-box; +} + +html, body { + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--text-color-primary); + background-color: var(--background-color-secondary); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; +} + +// 滚动条样式 +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: var(--background-color-secondary); +} + +::-webkit-scrollbar-thumb { + background: var(--border-color); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-color-tertiary); +} + +// 通用工具类 +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.flex { + display: flex; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.flex-column { + flex-direction: column; +} + +.flex-1 { + flex: 1; +} + +.overflow-hidden { + overflow: hidden; +} + +.text-ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.text-primary { + color: var(--primary-color) !important; +} + +.text-success { + color: var(--success-color) !important; +} + +.text-warning { + color: var(--warning-color) !important; +} + +.text-error { + color: var(--error-color) !important; +} + +.text-secondary { + color: var(--text-color-secondary) !important; +} + +.text-tertiary { + color: var(--text-color-tertiary) !important; +} + +// 自定义状态标签样式 +.status-tag { + display: inline-block; + padding: 2px 8px; + font-size: 12px; + border-radius: var(--border-radius-sm); + font-weight: 500; + + &.pending { + background-color: #fff7e6; + color: var(--warning-color); + border: 1px solid #ffd591; + } + + &.approved { + background-color: #f6ffed; + color: var(--success-color); + border: 1px solid #b7eb8f; + } + + &.rejected { + background-color: #fff2f0; + color: var(--error-color); + border: 1px solid #ffb3b3; + } +} + +// 页面容器 +.page-container { + min-height: 100vh; + background-color: var(--background-color-secondary); +} + +.page-content { + padding: var(--spacing-lg); +} + +// 卡片样式 +.card { + background: var(--background-color-primary); + border-radius: var(--border-radius-md); + box-shadow: var(--shadow-light); + margin-bottom: var(--spacing-lg); + overflow: hidden; +} + +.card-header { + padding: var(--spacing-lg); + border-bottom: 1px solid var(--divider-color); + font-weight: 500; +} + +.card-body { + padding: var(--spacing-lg); +} + +// 列表项样式 +.list-item { + padding: var(--spacing-lg); + background: var(--background-color-primary); + border-bottom: 1px solid var(--divider-color); + + &:last-child { + border-bottom: none; + } + + &:active { + background-color: var(--background-color-tertiary); + } +} + +// 空状态样式 +.empty-state { + padding: 60px var(--spacing-lg); + text-align: center; + color: var(--text-color-tertiary); + + .empty-icon { + font-size: 64px; + color: var(--text-color-disabled); + margin-bottom: var(--spacing-lg); + } + + .empty-text { + font-size: 16px; + margin-bottom: var(--spacing-sm); + } + + .empty-desc { + font-size: 14px; + } +} + +// 加载状态样式 +.loading-container { + padding: var(--spacing-xl); + text-align: center; +} + +// Vant组件自定义样式 +.van-nav-bar { + background: var(--background-color-primary); + + .van-nav-bar__title { + font-weight: 500; + } +} + +.van-search { + padding: var(--spacing-lg) var(--spacing-lg) 0; + background: transparent; + + .van-search__content { + background: var(--background-color-primary); + border: 1px solid var(--border-color); + } +} + +.van-pull-refresh { + background: var(--background-color-secondary); +} + +.van-list { + background: var(--background-color-secondary); +} + +// 响应式适配 +@media (max-width: 375px) { + .page-content { + padding: var(--spacing-md); + } + + .card-header, + .card-body { + padding: var(--spacing-md); + } + + .list-item { + padding: var(--spacing-md); + } +} \ No newline at end of file diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..de3d60a --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,190 @@ +// 通用API响应类型 +export interface ApiResponse { + code: number + msg: string | null + data: T + total?: number +} + +// 订单状态类型 +export type OrderStatus = '0' | '1' | '2' // 待审批、已审批、已拒绝 + +// 审批状态类型 +export type ApprovalStatus = 1 | 2 | 3 // 待审批、驳回、通过 + +// 订单信息类型 +export interface Order { + id: number + projectId: number + projectCode: string + projectName: string + versionCode: string + industryType: string + bgProperty: string + province: string + orderCode: string + customerName: string + customerCode: string + customerPhone: string + customerUserName: string + shipmentAmount: number + orderStatus: OrderStatus + duty: string + dutyName: string + agentName: string + agentCode: string + businessPerson: string + businessEmail: string + businessPhone: string + currencyType: string + partnerCode: string + partnerName: string + projectPartnerName: string + actualPurchaseAmount: number + deliveryTime: string + estimatedOrderTime: string + orderEndTime: string + approveTime: string + discountFold: number + supplier: string + createTime: string + updateTime: string + remark: string +} + +// 审批记录类型 +export interface ApprovalRecord { + id?: number + todoId: string + businessKey: string + processKey: string + processName: string + taskName: string + approveUserName: string + allApproveUserName: string + nextAllApproveUserName: string + approveUser: string + applyUserName: string + applyTime: string + extendField1: string + extendField2?: string + taskId: string + processInstanceId: string + approveOpinion?: string + approveStatus?: ApprovalStatus + approveTime: string + formKey?: string + roleName: string + recoveryType?: number + variables?: any +} + +// 附件文件类型 +export interface AttachmentFile { + id: number + orderId: number + fileName: string + uploadUser: string + uploadUserName: string + uploadTime: string + filePath: string + fileType: string + fileSort: string + fileVersionCode: string +} + +// 产品信息类型 +export interface ProductInfo { + id: number + projectId: number + productBomCode: string + productName: string + model: string + productCode?: string + productDesc: string + quantity: number + cataloguePrice: number + catalogueAllPrice: number + price: number + allPrice: number + allPriceDisCount?: number + guidanceDiscount: number + vendorCode?: string + discount: number + type: string + value?: string + remark: string +} + +// 用户信息类型 +export interface UserInfo { + userId: number + userName: string + loginName: string + userType: string + email: string + phonenumber: string + sex: string + avatar: string + status: string + delFlag: string + loginIp: string + loginDate: string + pwdUpdateDate: string + admin: boolean +} + +// 订单详情响应类型 +export interface OrderDetailResponse { + todo?: any + approveLog: ApprovalRecord[] + projectOrderInfo: Order & { + contractFileList: AttachmentFile[] + configFileList?: AttachmentFile[] + contractTableData: Record + softwareProjectProductInfoList: ProductInfo[] + hardwareProjectProductInfoList: ProductInfo[] + maintenanceProjectProductInfoList: ProductInfo[] + } + user: UserInfo +} + +// 列表查询参数 +export interface ListParams { + approve?: string + page: number + pageSize: number + keyword?: string +} + +// 审批操作参数 +export interface ApprovalParams { + allApproveUserName?: string + applyTime?: string + applyUserName?: string + approveOpinion?: string + approveStatus?: ApprovalStatus + approveTime?: string + approveUser?: string + approveUserName?: string + businessKey?: string + createBy?: string + createTime?: string + extendField1?: string + extendField2?: string + formKey?: string + id?: number + nextAllApproveUserName?: string + processInstanceId?: string + processKey?: string + processName?: string + recoveryType?: number + remark?: string + roleName?: string + taskId?: string + taskName?: string + todoId?: string + updateBy?: string + updateTime?: string + [property: string]: any +} \ No newline at end of file diff --git a/src/utils/http.ts b/src/utils/http.ts new file mode 100644 index 0000000..95225bb --- /dev/null +++ b/src/utils/http.ts @@ -0,0 +1,113 @@ +import axios from 'axios' +import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios' +import type { ApiResponse } from '@/types' +import { showToast, showFailToast } from 'vant' + +class HttpClient { + private instance: AxiosInstance + + constructor(baseURL: string = '/api') { + this.instance = axios.create({ + baseURL, + timeout: 30000, + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + } + }) + + this.setupInterceptors() + } + + private setupInterceptors(): void { + // 请求拦截器 + this.instance.interceptors.request.use( + (config) => { + // 在这里可以添加token等认证信息 + const token = localStorage.getItem('token') + if (token) { + config.headers.Authorization = `Bearer ${token}` + } + + // 如果数据是FormData,删除Content-Type让浏览器自动设置 + if (config.data instanceof FormData) { + delete config.headers['Content-Type'] + } + + return config + }, + (error) => { + return Promise.reject(error) + } + ) + + // 响应拦截器 + this.instance.interceptors.response.use( + (response: AxiosResponse) => { + // 直接返回完整响应对象 + return response + }, + (error) => { + let message = '网络错误' + + if (error.response) { + const { status, data } = error.response + switch (status) { + case 401: + message = '未授权,请重新登录' + // 这里可以处理登录跳转逻辑 + break + case 403: + message = '拒绝访问' + break + case 404: + message = '请求地址不存在' + break + case 500: + message = '服务器内部错误' + break + default: + message = data?.msg || `请求失败 (${status})` + } + } else if (error.request) { + message = '网络连接失败' + } + + showFailToast(message) + return Promise.reject(error) + } + ) + } + + public async get( + url: string, + config?: AxiosRequestConfig + ): Promise> { + return this.instance.get(url, config) + } + + public async post( + url: string, + data?: any, + config?: AxiosRequestConfig + ): Promise> { + return this.instance.post(url, data, config) + } + + public async put( + url: string, + data?: any, + config?: AxiosRequestConfig + ): Promise> { + return this.instance.put(url, data, config) + } + + public async delete( + url: string, + config?: AxiosRequestConfig + ): Promise> { + return this.instance.delete(url, config) + } +} + +export const http = new HttpClient() +export default http \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..fbc4a23 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,211 @@ +import type { OrderStatus, ApprovalStatus } from '@/types' + +/** + * 格式化订单状态 + */ +export const formatOrderStatus = (status: OrderStatus): string => { + const statusMap = { + '0': '待审批', + '1': '已审批', + '2': '已拒绝' + } + return statusMap[status] || '未知状态' +} + +/** + * 获取订单状态颜色 + */ +export const getOrderStatusColor = (status: OrderStatus): string => { + const colorMap = { + '0': '#fa8c16', // 橙色 - 待审批 + '1': '#52c41a', // 绿色 - 已审批 + '2': '#f5222d' // 红色 - 已拒绝 + } + return colorMap[status] || '#666666' +} + +/** + * 格式化审批状态 + */ +export const formatApprovalStatus = (status?: ApprovalStatus): string => { + if (status === undefined || status === null) return '待审批' + + const statusMap = { + 1: '待审批', + 2: '已驳回', + 3: '已通过' + } + return statusMap[status] || '待审批' +} + +/** + * 获取审批状态颜色 + */ +export const getApprovalStatusColor = (status?: ApprovalStatus): string => { + if (status === undefined || status === null) return '#fa8c16' + + const colorMap = { + 1: '#fa8c16', // 橙色 - 待审批 + 2: '#f5222d', // 红色 - 已驳回 + 3: '#52c41a' // 绿色 - 已通过 + } + return colorMap[status] || '#fa8c16' +} + +/** + * 格式化金额 + */ +export const formatAmount = (amount: number): string => { + return new Intl.NumberFormat('zh-CN', { + style: 'currency', + currency: 'CNY', + minimumFractionDigits: 2 + }).format(amount) +} + +/** + * 格式化日期 + */ +export const formatDate = (date: string | Date, format: string = 'YYYY-MM-DD'): string => { + if (!date) return '' + + const d = new Date(date) + if (isNaN(d.getTime())) return '' + + const year = d.getFullYear() + const month = String(d.getMonth() + 1).padStart(2, '0') + const day = String(d.getDate()).padStart(2, '0') + const hours = String(d.getHours()).padStart(2, '0') + const minutes = String(d.getMinutes()).padStart(2, '0') + const seconds = String(d.getSeconds()).padStart(2, '0') + + return format + .replace('YYYY', year.toString()) + .replace('MM', month) + .replace('DD', day) + .replace('HH', hours) + .replace('mm', minutes) + .replace('ss', seconds) +} + +/** + * 格式化相对时间 + */ +export const formatRelativeTime = (date: string | Date): string => { + if (!date) return '' + + const d = new Date(date) + if (isNaN(d.getTime())) return '' + + const now = new Date() + const diff = now.getTime() - d.getTime() + + const minute = 60 * 1000 + const hour = 60 * minute + const day = 24 * hour + + if (diff < minute) { + return '刚刚' + } else if (diff < hour) { + return `${Math.floor(diff / minute)}分钟前` + } else if (diff < day) { + return `${Math.floor(diff / hour)}小时前` + } else if (diff < 3 * day) { + return `${Math.floor(diff / day)}天前` + } else { + return formatDate(date, 'YYYY-MM-DD') + } +} + +/** + * 防抖函数 + */ +export const debounce = any>( + func: T, + wait: number +): ((...args: Parameters) => void) => { + let timeout: NodeJS.Timeout | null = null + + return (...args: Parameters) => { + if (timeout) clearTimeout(timeout) + timeout = setTimeout(() => func(...args), wait) + } +} + +/** + * 节流函数 + */ +export const throttle = any>( + func: T, + wait: number +): ((...args: Parameters) => void) => { + let timeout: NodeJS.Timeout | null = null + let previous = 0 + + return (...args: Parameters) => { + const now = Date.now() + const remaining = wait - (now - previous) + + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout) + timeout = null + } + previous = now + func(...args) + } else if (!timeout) { + timeout = setTimeout(() => { + previous = Date.now() + timeout = null + func(...args) + }, remaining) + } + } +} + +/** + * 检查是否在微信小程序环境 + */ +export const isWeixinMiniProgram = (): boolean => { + return (window as any).__wxjs_environment === 'miniprogram' +} + +/** + * 获取文件预览URL + */ +export const getFilePreviewUrl = (filePath: string): string => { + if (!filePath) return '' + + // 如果已经是完整URL,直接返回 + if (filePath.startsWith('http')) { + return filePath + } + + // 拼接基础URL + const baseUrl = import.meta.env.VITE_FILE_BASE_URL || '/api' + return `${baseUrl}${filePath}` +} + +/** + * 复制到剪贴板 + */ +export const copyToClipboard = async (text: string): Promise => { + try { + if (navigator.clipboard) { + await navigator.clipboard.writeText(text) + return true + } else { + // 降级方案 + const textarea = document.createElement('textarea') + textarea.value = text + document.body.appendChild(textarea) + textarea.select() + document.execCommand('copy') + document.body.removeChild(textarea) + return true + } + } catch (error) { + console.error('复制失败:', error) + return false + } +} \ No newline at end of file diff --git a/src/views/Detail/index.vue b/src/views/Detail/index.vue new file mode 100644 index 0000000..5d59086 --- /dev/null +++ b/src/views/Detail/index.vue @@ -0,0 +1,999 @@ + + + + + \ No newline at end of file diff --git a/src/views/List/index.vue b/src/views/List/index.vue new file mode 100644 index 0000000..77e59dc --- /dev/null +++ b/src/views/List/index.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7441aa8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, + "types": ["vite/client"] + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..246d6b6 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,65 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { resolve } from 'path' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { VantResolver } from 'unplugin-vue-components/resolvers' + +export default defineConfig({ + plugins: [ + vue(), + AutoImport({ + imports: ['vue', 'vue-router', 'pinia'], + resolvers: [VantResolver()] + }), + Components({ + resolvers: [VantResolver()] + }) + ], + resolve: { + alias: { + '@': resolve(__dirname, 'src') + } + }, + server: { + host: '0.0.0.0', + port: 3000, + open: true, + proxy: { + '/api': { + target: 'http://192.168.2.134:28080', + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/api/, ''), + configure: (proxy, options) => { + // proxy.on('proxyReq', (proxyReq, req, res) => { + // // 设置请求头 + // proxyReq.setHeader('Access-Control-Allow-Origin', '*') + // proxyReq.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH,OPTIONS') + // proxyReq.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With') + // }) + proxy.on('proxyReq', (proxyReq, req, res) => { + proxyReq.setHeader('Origin', options.target); + proxyReq.setHeader('Referer', options.target); + }); + proxy.on('proxyRes', (proxyRes, req, res) => { + res.setHeader('Access-Control-Allow-Origin', '*'); + }); + } + } + } + }, + build: { + target: 'es2015', + outDir: 'dist', + assetsDir: 'assets', + sourcemap: false, + rollupOptions: { + output: { + chunkFileNames: 'js/[name]-[hash].js', + entryFileNames: 'js/[name]-[hash].js', + assetFileNames: '[ext]/[name]-[hash].[ext]' + } + } + } +}) \ No newline at end of file diff --git a/概要设计文档.md b/概要设计文档.md new file mode 100644 index 0000000..7a5399d --- /dev/null +++ b/概要设计文档.md @@ -0,0 +1,2563 @@ +# 微信小程序H5审批系统 - 概要设计文档 + +## 1. 项目概述 + +### 1.1 项目背景 +开发一个运行在微信小程序WebView中的H5应用,主要用于处理审批流程,包括列表查看、详情展示和审批操作。 + +### 1.2 项目目标 +- 提供流畅的审批流程体验 +- 适配微信小程序WebView环境 +- 支持移动端友好的界面设计 +- 高效的接口调用和数据展示 + +## 2. 技术架构 + +### 2.1 技术栈选择 +- **前端框架**: Vue 3 + TypeScript +- **构建工具**: Vite +- **UI组件库**: Vant 4 (专为移动端设计) +- **HTTP客户端**: Axios +- **路由管理**: Vue Router 4 +- **状态管理**: Pinia +- **样式预处理器**: SCSS + +### 2.2 项目结构 +``` +oms_h5/ +├── public/ +│ └── index.html +├── src/ +│ ├── api/ # API接口管理 +│ ├── components/ # 公共组件 +│ ├── views/ # 页面组件 +│ │ ├── List/ # 列表页面 +│ │ └── Detail/ # 详情页面 +│ ├── store/ # 状态管理 +│ ├── utils/ # 工具函数 +│ ├── types/ # TypeScript类型定义 +│ └── styles/ # 全局样式 +├── package.json +└── vite.config.ts +``` + +## 3. 功能模块设计 + +### 3.1 列表页面模块 +**功能描述**: 展示待审批/已审批的工单列表 + +**主要功能**: +- 工单列表展示(支持分页) +- 搜索和筛选功能 +- 下拉刷新和上拉加载更多 +- 状态标识(待审批、已审批、已拒绝等) + +**接口需求**: +```typescript +// 获取工单列表 +POST /project/order/list +参数: { + page: number, + pageSize: number, + keyword?: string +} +响应结果示例:{ + "total": 1, + "rows": [ + { + "createBy": "1", + "createTime": "2025-05-30", + "updateBy": "1", + "updateTime": "2025-08-25 16:52:35", + "remark": "", + "id": 92, + "projectId": 92, + "projectCode": "V004592", + "projectName": "黑龙江省佳木斯附属第一医院2点胖终端云桌面项目", + "versionCode": "2", + "industryType": "zf", + "bgProperty": "SY", + "province": "黑龙江省", + "orderCode": "ZGXS-20250530HLJ001-VDI", + "customerName": "佳木斯大学附属第一医院", + "customerCode": "CU-HLJ-0002", + "customerPhone": "13352549898", + "customerUserName": "刘芸芸1111", + "shipmentAmount": 754169.99, + "orderStatus": "1", + "duty": "1", + "dutyName": "SIP管理员", + "agentName": "北京", + "agentCode": "BJS", + "notifier": "", + "city": "", + "businessPerson": "严浩", + "businessEmail": "", + "deleteFileId": null, + "businessPhone": "13512345457", + "currencyType": "rmb", + "partnerCode": "AGT-HLJ-0001", + "partnerName": "哈尔滨惠普天地电子有限公司", + "projectPartnerName": "哈尔滨惠普天地电子有限公司", + "productCodeList": null, + "actualPurchaseAmount": 777314.52, + "deliveryTime": "2025-06-04", + "deliveryTimeStart": null, + "deliveryTimeEnd": null, + "estimatedOrderTime": "2025-05-30", + "estimatedOrderTimeStart": null, + "estimatedOrderTimeEnd": null, + "orderEndTime": "2025-08-23", + "orderEndTimeStart": null, + "orderEndTimeEnd": null, + "updateTimeStart": null, + "updateTimeEnd": null, + "productSn": null, + "companyDelivery": "", + "notifierEmail": "", + "notifierPhone": "232", + "notifierAddress": "江西省南昌市高新区艾溪湖北路88号恒大中心A座1209室", + "dutyEmail": "mula.liu@163.com", + "dutyPhone": "18980500203", + "orderChannel": "1", + "partnerEmail": "", + "partnerUserName": "张树志", + "partnerPhone": "13936302299", + "systemUserId": "101", + "level": "02", + "processType": "0", + "processTemplate": "0", + "deliveryStatus": "1", + "signStatus": "0", + "outerStatus": "2", + "approveTime": "2025-08-19 16:46:26", + "approveTimeStart": null, + "approveTimeEnd": null, + "discountFold": 0.985, + "supplier": "紫光汇智信息技术有限公司", + "approve": null, + "contractFileList": null, + "configFileList": null, + "contractTableData": null, + "softwareProjectProductInfoList": null, + "hardwareProjectProductInfoList": null, + "maintenanceProjectProductInfoList": null + } + ], + "code": 0, + "msg": null +} +``` + +### 3.2 详情页面模块 +**功能描述**: 展示工单详细信息和审批操作 + +**主要功能**: +- 工单详情信息展示 +- 审批历史记录 +- 附件预览(图片、文档) +- 审批操作按钮 + +**接口需求**: +```typescript +//获取工单详情 +GET /project/order/h5/approve/:id +响应结果示例:{ + "msg": "操作成功", + "code": 0, + "data": { + "todo": null, + "approveLog": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1959901714317623296", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-25 16:52", + "extendField1": "2", + "extendField2": null, + "taskId": "d9112b0c-8190-11f0-9558-00ff5af4ad6e", + "processInstanceId": "d9073ff2-8190-11f0-9558-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-25 16:52", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725697524154368", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "ea7cc1f5-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:46", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725696983089152", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "ea62d151-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:46", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725664577896448", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "e5c75020-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:45", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725605962498048", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "dd73d001-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:45", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725543777746944", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "d49d6449-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:45", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725482201169920", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "cbdd1896-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:45", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725474777251840", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:45", + "extendField1": "2", + "extendField2": null, + "taskId": "cad54577-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "cad4f74d-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 16:45", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725223014154240", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:44", + "extendField1": "2", + "extendField2": null, + "taskId": "a707c62f-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 2, + "approveTime": "2025-08-19 16:44", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725148452012032", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:43", + "extendField1": "2", + "extendField2": null, + "taskId": "9c6ee9ee-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:43", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725089270382592", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:43", + "extendField1": "2", + "extendField2": null, + "taskId": "94060d0f-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:43", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957725013399617536", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:43", + "extendField1": "2", + "extendField2": null, + "taskId": "893e58a7-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:43", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957724844406915072", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:42", + "extendField1": "2", + "extendField2": null, + "taskId": "713a6d64-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:42", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957724837054300160", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:42", + "extendField1": "2", + "extendField2": null, + "taskId": "70350b45-7cd8-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "7034960b-7cd8-11f0-9d19-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 16:42", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957722192403021824", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:31", + "extendField1": "2", + "extendField2": null, + "taskId": "f8610aba-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 2, + "approveTime": "2025-08-19 16:34", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957722191861956608", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:31", + "extendField1": "2", + "extendField2": null, + "taskId": "f8474126-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 2, + "approveTime": "2025-08-19 16:32", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957721464309596160", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:29", + "extendField1": "2", + "extendField2": null, + "taskId": "90e30db5-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 16:29", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957721248911114240", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:28", + "extendField1": "2", + "extendField2": null, + "taskId": "7246e6f6-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:29", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957721083399684096", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:27", + "extendField1": "2", + "extendField2": null, + "taskId": "5ac0b73e-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:28", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957721011224100864", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:27", + "extendField1": "2", + "extendField2": null, + "taskId": "5080342b-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:27", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957721003959566336", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:27", + "extendField1": "2", + "extendField2": null, + "taskId": "4f7db83c-7cd6-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "4f7d4302-7cd6-11f0-9d19-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 16:27", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957718697583099904", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:18", + "extendField1": "2", + "extendField2": null, + "taskId": "07bc3b77-7cd5-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "22222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:25", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957718697063006208", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:18", + "extendField1": "2", + "extendField2": null, + "taskId": "07a38353-7cd5-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:25", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957718386881642496", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:16", + "extendField1": "2", + "extendField2": null, + "taskId": "db8f0722-7cd4-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "22222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:17", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957717953127694336", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:15", + "extendField1": "2", + "extendField2": null, + "taskId": "9deb9bd3-7cd4-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "1111", + "approveStatus": 3, + "approveTime": "2025-08-19 16:16", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957716431245459456", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:09", + "extendField1": "2", + "extendField2": null, + "taskId": "c5a4c98b-7cd3-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 16:12", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957715433122742272", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:05", + "extendField1": "2", + "extendField2": null, + "taskId": "37ce0e98-7cd3-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": "3323", + "approveStatus": 3, + "approveTime": "2025-08-19 16:08", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957715293167206400", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 16:04", + "extendField1": "2", + "extendField2": null, + "taskId": "23f04d69-7cd3-11f0-9d19-00ff5af4ad6e", + "processInstanceId": "23efd82f-7cd3-11f0-9d19-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 16:04", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957704066462433280", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 15:19", + "extendField1": "2", + "extendField2": null, + "taskId": "e88135d0-7ccc-11f0-beda-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": "3323", + "approveStatus": 2, + "approveTime": "2025-08-19 15:24", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957703758516633600", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 15:18", + "extendField1": "2", + "extendField2": null, + "taskId": "bcbde7df-7ccc-11f0-beda-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 15:19", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957700862039343104", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 15:07", + "extendField1": "2", + "extendField2": null, + "taskId": "211fc290-7ccb-11f0-beda-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 15:18", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957697883508883456", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 14:55", + "extendField1": "2", + "extendField2": null, + "taskId": "79d8d70b-7cc9-11f0-9a78-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 15:07", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957688080812261376", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 14:16", + "extendField1": "2", + "extendField2": null, + "taskId": "08ce3094-7cc4-11f0-9bae-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 3, + "approveTime": "2025-08-19 14:55", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957687534197981184", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 14:14", + "extendField1": "2", + "extendField2": null, + "taskId": "bb25f895-7cc3-11f0-9bae-00ff5af4ad6e", + "processInstanceId": "bb207a4b-7cc3-11f0-9bae-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 14:14", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631351906942976", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao,yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:31", + "extendField1": "2", + "extendField2": null, + "taskId": "8b247b6c-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 10:31", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631318734192640", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao,yeyuhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:30", + "extendField1": "2", + "extendField2": null, + "taskId": "866daa0b-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "333", + "approveStatus": 3, + "approveTime": "2025-08-19 10:30", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631266485747712", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:30", + "extendField1": "2", + "extendField2": null, + "taskId": "7f012e8c-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "333", + "approveStatus": 3, + "approveTime": "2025-08-19 10:30", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631193739739136", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:30", + "extendField1": "2", + "extendField2": null, + "taskId": "74a904d4-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 10:30", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631126723149824", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:30", + "extendField1": "2", + "extendField2": null, + "taskId": "6b2430a1-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "1111", + "approveStatus": 3, + "approveTime": "2025-08-19 10:30", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957631119043379200", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:30", + "extendField1": "2", + "extendField2": null, + "taskId": "6a1384e2-7ca4-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "6a135dc8-7ca4-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 10:30", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957624416474284032", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:03", + "extendField1": "2", + "extendField2": null, + "taskId": "b18ffb64-7ca0-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "8f6619d1-7ca0-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 10:03", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957624359704379392", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:03", + "extendField1": "2", + "extendField2": null, + "taskId": "a97e1825-7ca0-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "8f6619d1-7ca0-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "2222", + "approveStatus": 3, + "approveTime": "2025-08-19 10:03", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957624290053767168", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:02", + "extendField1": "2", + "extendField2": null, + "taskId": "9f98383d-7ca0-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "8f6619d1-7ca0-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "222", + "approveStatus": 3, + "approveTime": "2025-08-19 10:03", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957624183778492416", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:02", + "extendField1": "2", + "extendField2": null, + "taskId": "907d7d5a-7ca0-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "8f6619d1-7ca0-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 3, + "approveTime": "2025-08-19 10:02", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957624175926755328", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 10:02", + "extendField1": "2", + "extendField2": null, + "taskId": "8f668f0b-7ca0-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "8f6619d1-7ca0-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 10:02", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957622615423369216", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "公司领导", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:56", + "extendField1": "2", + "extendField2": null, + "taskId": "b19dac21-7c9f-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 3, + "approveTime": "2025-08-19 09:59", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957622573463552000", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:56", + "extendField1": "2", + "extendField2": null, + "taskId": "aba707c2-7c9f-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "11111", + "approveStatus": 3, + "approveTime": "2025-08-19 09:56", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957621528939249664", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:51", + "extendField1": "2", + "extendField2": null, + "taskId": "1737ea43-7c9f-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "1111", + "approveStatus": 3, + "approveTime": "2025-08-19 09:56", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957621436836528128", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:51", + "extendField1": "2", + "extendField2": null, + "taskId": "0a20a08b-7c9f-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "3333", + "approveStatus": 3, + "approveTime": "2025-08-19 09:51", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957621289033449472", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:51", + "extendField1": "2", + "extendField2": null, + "taskId": "f51e3578-7c9e-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 3, + "approveTime": "2025-08-19 09:51", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957621281395621888", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-19 09:50", + "extendField1": "2", + "extendField2": null, + "taskId": "f40fab99-7c9e-11f0-a0bc-00ff5af4ad6e", + "processInstanceId": "f40ee83f-7c9e-11f0-a0bc-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-19 09:51", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957359153359142912", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "领导1", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 16:29", + "extendField1": "2", + "extendField2": null, + "taskId": "7166641f-7c0d-11f0-918a-00ff5af4ad6e", + "processInstanceId": "2a05fd7c-7c0d-11f0-918a-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 2, + "approveTime": "2025-08-19 09:50", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957359035453063168", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "省代", + "approveUserName": "chenhao", + "allApproveUserName": "chenhao", + "nextAllApproveUserName": "chenhao", + "approveUser": "101", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 16:28", + "extendField1": "2", + "extendField2": null, + "taskId": "60a28d20-7c0d-11f0-918a-00ff5af4ad6e", + "processInstanceId": "2a05fd7c-7c0d-11f0-918a-00ff5af4ad6e", + "approveOpinion": "省代处理", + "approveStatus": 3, + "approveTime": "2025-08-18 16:29", + "formKey": null, + "roleName": "商务,公司领导,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957358840313069568", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "chenhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 16:28", + "extendField1": "2", + "extendField2": null, + "taskId": "44e98928-7c0d-11f0-918a-00ff5af4ad6e", + "processInstanceId": "2a05fd7c-7c0d-11f0-918a-00ff5af4ad6e", + "approveOpinion": "1111", + "approveStatus": 3, + "approveTime": "2025-08-18 16:28", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957358658997501952", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 16:27", + "extendField1": "2", + "extendField2": null, + "taskId": "2b25ec85-7c0d-11f0-918a-00ff5af4ad6e", + "processInstanceId": "2a05fd7c-7c0d-11f0-918a-00ff5af4ad6e", + "approveOpinion": "111", + "approveStatus": 3, + "approveTime": "2025-08-18 16:28", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957358650931855360", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 16:27", + "extendField1": "2", + "extendField2": null, + "taskId": "2a070ef6-7c0d-11f0-918a-00ff5af4ad6e", + "processInstanceId": "2a05fd7c-7c0d-11f0-918a-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-18 16:27", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957343264068911104", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "商务1", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 15:26", + "extendField1": "2", + "extendField2": null, + "taskId": "9f65135c-7c04-11f0-b9d1-00ff5af4ad6e", + "processInstanceId": "4257a391-7bfc-11f0-b9d1-00ff5af4ad6e", + "approveOpinion": "dsf", + "approveStatus": 2, + "approveTime": "2025-08-18 16:26", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957328206144258048", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "产品经理", + "approveUserName": "yeyuhao", + "allApproveUserName": "yeyuhao", + "nextAllApproveUserName": "SIP管理员", + "approveUser": "102", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 14:26", + "extendField1": "2", + "extendField2": null, + "taskId": "438a0929-7bfc-11f0-b9d1-00ff5af4ad6e", + "processInstanceId": "4257a391-7bfc-11f0-b9d1-00ff5af4ad6e", + "approveOpinion": "测试数据", + "approveStatus": 3, + "approveTime": "2025-08-18 15:26", + "formKey": null, + "roleName": "产品经理,省代,公司领导", + "recoveryType": null, + "variables": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": null, + "todoId": "1957328197785010176", + "businessKey": "ZGXS-20250530HLJ001-VDI", + "processKey": "order_approve_online", + "processName": "订单审批流程", + "taskName": "售前", + "approveUserName": "SIP管理员", + "allApproveUserName": "SIP管理员", + "nextAllApproveUserName": "yeyuhao", + "approveUser": "1", + "applyUserName": "SIP管理员", + "applyTime": "2025-08-18 14:26", + "extendField1": "2", + "extendField2": null, + "taskId": "425f44ba-7bfc-11f0-b9d1-00ff5af4ad6e", + "processInstanceId": "4257a391-7bfc-11f0-b9d1-00ff5af4ad6e", + "approveOpinion": null, + "approveStatus": null, + "approveTime": "2025-08-18 14:26", + "formKey": null, + "roleName": "超级管理员,鼎盛", + "recoveryType": null, + "variables": null + } + ], + "projectOrderInfo": { + "createBy": "1", + "createTime": "2025-05-30", + "updateBy": "1", + "updateTime": "2025-08-25 16:52:35", + "remark": "", + "id": 92, + "projectId": 92, + "projectCode": "V004592", + "projectName": "黑龙江省佳木斯附属第一医院2点胖终端云桌面项目", + "versionCode": "2", + "industryType": "zf", + "bgProperty": "SY", + "province": "黑龙江省", + "orderCode": "ZGXS-20250530HLJ001-VDI", + "customerName": "佳木斯大学附属第一医院", + "customerCode": "CU-HLJ-0002", + "customerPhone": "13352549898", + "customerUserName": "刘芸芸1111", + "shipmentAmount": 754169.99, + "orderStatus": "1", + "duty": "1", + "dutyName": "SIP管理员", + "agentName": "北京", + "agentCode": "BJS", + "notifier": "", + "city": "", + "businessPerson": "严浩", + "businessEmail": "", + "deleteFileId": null, + "businessPhone": "13512345457", + "currencyType": "rmb", + "partnerCode": "AGT-HLJ-0001", + "partnerName": "哈尔滨惠普天地电子有限公司", + "projectPartnerName": "哈尔滨惠普天地电子有限公司", + "productCodeList": null, + "actualPurchaseAmount": 777314.52, + "deliveryTime": "2025-06-04", + "deliveryTimeStart": null, + "deliveryTimeEnd": null, + "estimatedOrderTime": "2025-05-30", + "estimatedOrderTimeStart": null, + "estimatedOrderTimeEnd": null, + "orderEndTime": "2025-08-23", + "orderEndTimeStart": null, + "orderEndTimeEnd": null, + "updateTimeStart": null, + "updateTimeEnd": null, + "productSn": null, + "companyDelivery": "", + "notifierEmail": "", + "notifierPhone": "232", + "notifierAddress": "江西省南昌市高新区艾溪湖北路88号恒大中心A座1209室", + "dutyEmail": "mula.liu@163.com", + "dutyPhone": "18980500203", + "orderChannel": "1", + "partnerEmail": "", + "partnerUserName": "张树志", + "partnerPhone": "13936302299", + "systemUserId": "101", + "level": "02", + "processType": "0", + "processTemplate": "0", + "deliveryStatus": "1", + "signStatus": "0", + "outerStatus": "2", + "approveTime": "2025-08-19 16:46:26", + "approveTimeStart": null, + "approveTimeEnd": null, + "discountFold": 0.985, + "supplier": "紫光汇智信息技术有限公司", + "approve": null, + "contractFileList": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 27, + "orderId": 92, + "fileName": "AGT-AHS-0001.jpg", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-15", + "filePath": "/profile/2025/07/15/AGT-AHS-0001_20250715162608A004.jpg", + "fileType": "2", + "fileSort": "1", + "fileVersionCode": "2" + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 28, + "orderId": 92, + "fileName": "微信图片_2025-07-08_102450_731.png", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-15", + "filePath": "/profile/2025/07/15/微信图片_2025-07-08_102450_731_20250715163137A005.png", + "fileType": "2", + "fileSort": "3", + "fileVersionCode": "2" + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 30, + "orderId": 92, + "fileName": "AGT-AHS-0001 (4) (1).jpg", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-17", + "filePath": "/profile/2025/07/17/AGT-AHS-0001 (4) (1)_20250717145740A001.jpg", + "fileType": "2", + "fileSort": "0", + "fileVersionCode": "2" + } + ], + "configFileList": null, + "contractTableData": { + "2": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 30, + "orderId": 92, + "fileName": "AGT-AHS-0001 (4) (1).jpg", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-17", + "filePath": "/profile/2025/07/17/AGT-AHS-0001 (4) (1)_20250717145740A001.jpg", + "fileType": "2", + "fileSort": "0", + "fileVersionCode": "2" + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 27, + "orderId": 92, + "fileName": "AGT-AHS-0001.jpg", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-15", + "filePath": "/profile/2025/07/15/AGT-AHS-0001_20250715162608A004.jpg", + "fileType": "2", + "fileSort": "1", + "fileVersionCode": "2" + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": -1, + "orderId": null, + "fileName": "(请上传现金折扣审批邮件信息).pdf/.jpg/.png", + "uploadUser": null, + "uploadUserName": null, + "uploadTime": null, + "filePath": null, + "fileType": null, + "fileSort": "2", + "fileVersionCode": null + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "id": 28, + "orderId": 92, + "fileName": "微信图片_2025-07-08_102450_731.png", + "uploadUser": "101", + "uploadUserName": "chenhao", + "uploadTime": "2025-07-15", + "filePath": "/profile/2025/07/15/微信图片_2025-07-08_102450_731_20250715163137A005.png", + "fileType": "2", + "fileSort": "3", + "fileVersionCode": "2" + } + ] + }, + "softwareProjectProductInfoList": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": "", + "id": 515, + "projectId": 92, + "productBomCode": "3130A4N9", + "productName": "VDI-ONEStor", + "model": "VDI-ONEStor-upgrade", + "productCode": null, + "productDesc": "H3C VDI云桌面分布式存储软件(VDI-ONEStor)-块存储标准版升级企业版License-管理2个物理CPU", + "quantity": 5, + "cataloguePrice": 62500.00, + "catalogueAllPrice": 312500.00, + "price": 53756.53, + "allPrice": 268782.65, + "allPriceDisCount": null, + "guidanceDiscount": 0.0800, + "vendorCode": "P001", + "discount": 0.8601, + "type": "1", + "value": "" + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": "", + "id": 516, + "projectId": 92, + "productBomCode": "3130A4N9", + "productName": "VDI-ONEStor", + "model": "VDI-ONEStor-upgrade", + "productCode": null, + "productDesc": "H3C VDI云桌面分布式存储软件(VDI-ONEStor)-块存储标准版升级企业版License-管理2个物理CPU", + "quantity": 10, + "cataloguePrice": 62500.00, + "catalogueAllPrice": 625000.00, + "price": 47783.58, + "allPrice": 477835.80, + "allPriceDisCount": null, + "guidanceDiscount": 0.0800, + "vendorCode": "P001", + "discount": 0.7645, + "type": "1", + "value": "" + } + ], + "hardwareProjectProductInfoList": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": "", + "id": 233, + "projectId": 92, + "productBomCode": "9801A5KA", + "productName": "胖终端x86一体机", + "model": "C6530V-38-G2", + "productCode": "9801H0BA", + "productDesc": "H3C C6530V G2 云终端一体机-Intel 6核 2.5GHz/8GB DDR4/256GB SSD/4*USB3.0/2*USB2.0/1*HDMI/23.8寸/1000M/Wi-Fi", + "quantity": 2, + "cataloguePrice": 39500.00, + "catalogueAllPrice": 79000.00, + "price": 3774.90, + "allPrice": 7549.80, + "allPriceDisCount": null, + "guidanceDiscount": 0.1000, + "vendorCode": "P001", + "discount": 0.0956, + "type": "2", + "value": null + } + ], + "maintenanceProjectProductInfoList": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": "", + "id": 518, + "projectId": 92, + "productBomCode": "8813A3YB", + "productName": "现场维保-3Y", + "model": "SV-MA-SFT-3Y", + "productCode": null, + "productDesc": "H3C 软件技术支持服务(三年)", + "quantity": 2, + "cataloguePrice": 1.00, + "catalogueAllPrice": 2.00, + "price": 0.87, + "allPrice": 1.74, + "allPriceDisCount": null, + "guidanceDiscount": 0.3000, + "vendorCode": null, + "discount": 0.8700, + "type": "11", + "value": "3" + } + ] + }, + "user": { + "createBy": "admin", + "createTime": "2025-04-10 15:57:30", + "updateBy": "", + "updateTime": "2025-08-20 09:05:21", + "remark": "管理员", + "userId": 1, + "userIdList": null, + "deptId": 103, + "parentId": null, + "roleId": null, + "loginName": "admin", + "userName": "SIP管理员", + "userType": "00", + "email": "mula.liu@163.com", + "phonenumber": "18980500203", + "sex": "0", + "avatar": "/profile/avatar/2025/04/11/blob_20250411032004A001.png", + "status": "0", + "delFlag": "0", + "loginIp": "127.0.0.1", + "loginDate": "2025-08-20 09:05:21", + "pwdUpdateDate": "2025-04-11 14:54:45", + "dept": { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "deptId": 103, + "parentId": 101, + "ancestors": "0,100,101", + "deptName": "软件开发事业部", + "orderNum": 1, + "leader": "", + "phone": null, + "email": null, + "status": "0", + "delFlag": null, + "parentName": null + }, + "roles": [ + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "roleId": 1, + "roleName": "超级管理员", + "roleKey": "admin", + "roleSort": "1", + "dataScope": "1", + "status": "0", + "delFlag": null, + "flag": false, + "menuIds": null, + "deptIds": null, + "permissions": null, + "admin": true + }, + { + "createBy": null, + "createTime": null, + "updateBy": null, + "updateTime": null, + "remark": null, + "roleId": 104, + "roleName": "鼎盛", + "roleKey": "ds", + "roleSort": "1", + "dataScope": "1", + "status": "0", + "delFlag": null, + "flag": false, + "menuIds": null, + "deptIds": null, + "permissions": [], + "admin": false + } + ], + "roleIds": null, + "postIds": null, + "admin": true + } + } +} +``` + +### 3.3 审批操作模块 +**功能描述**: 处理审批通过、拒绝等操作 + +**主要功能**: +- 审批意见输入 +- 审批结果提交 +- 操作结果反馈 + +**接口需求**: +```typescript +// 提交审批结果 +//审批 +POST /project/order/order/approve +参数:{ + allApproveUserName?: string; + /** + * 发起时间 + */ + applyTime?: string; + /** + * 发起人姓名 + */ + applyUserName?: string; + /** + * 审批意见 + */ + approveOpinion?: string; + /** + * 审批结果 3 通过 2 驳回 1待审批 + */ + approveStatus?: number; + approveTime?: string; + approveUser?: string; + /** + * 审批人姓名 + */ + approveUserName?: string; + /** + * 业务主键 + */ + businessKey?: string; + /** + * 创建者 + */ + createBy?: string; + /** + * 创建时间 + */ + createTime?: string; + /** + * 扩展字段1 + */ + extendField1?: string; + /** + * 扩展字段2 + */ + extendField2?: string; + formKey?: string; + id?: number; + nextAllApproveUserName?: string; + processInstanceId?: string; + /** + * 流程key + */ + processKey?: string; + /** + * 流程名称 + */ + processName?: string; + recoveryType?: number; + /** + * 备注 + */ + remark?: string; + roleName?: string; + taskId?: string; + /** + * 任务名称 + */ + taskName?: string; + /** + * 流程id + */ + todoId?: string; + /** + * 更新者 + */ + updateBy?: string; + /** + * 更新时间 + */ + updateTime?: string; + [property: string]: any; +} +``` + +## 4. 微信小程序适配 + +### 4.1 WebView适配 +- 设置viewport适配移动端 +- 处理微信小程序的安全域名限制 +- 适配微信小程序的返回机制 + +### 4.2 微信JS-SDK集成 +- 配置微信JS-SDK +- 实现分享功能 +- 处理网络状态监听 + +### 4.3 样式适配 +- 响应式设计 +- 安全区域适配(刘海屏等) +- 深色模式支持 + +## 5. 数据流设计 + +### 5.1 数据状态管理 +```typescript +interface AppState { + user: UserInfo; + orderList: Order[]; + currentOrder: Order | null; + loading: boolean; +} +``` + +### 5.2 API数据格式规范 +```typescript +interface ApiResponse { + code: number; + message: string; + data: T; +} + +interface Order { + id: string; + title: string; + status: 'pending' | 'approved' | 'rejected'; + createdAt: string; + applicant: string; + content: string; + attachments?: string[]; + approvalHistory: ApprovalRecord[]; +} + +interface ApprovalRecord { + id: string; + approver: string; + action: 'approve' | 'reject'; + comment: string; + createdAt: string; +} +``` + +## 6. 页面路由设计 + +```typescript +const routes = [ + { + path: '/', + redirect: '/list' + }, + { + path: '/list', + name: 'OrderList', + component: () => import('@/views/List/index.vue') + }, + { + path: '/detail/:id', + name: 'OrderDetail', + component: () => import('@/views/Detail/index.vue') + } +] +``` + +## 7. 性能优化策略 + +### 7.1 代码层面 +- 组件懒加载 +- 图片懒加载 +- API请求缓存 +- 防抖和节流 + +### 7.2 构建优化 +- 代码分割 +- 资源压缩 +- CDN部署 + +## 8. 安全考虑 + +### 8.1 数据安全 +- HTTPS通信 +- 接口鉴权 +- 敏感信息加密 + +### 8.2 XSS防护 +- 输入内容过滤 +- CSP策略配置 + +## 9. 测试策略 + +### 9.1 单元测试 +- 组件测试 +- 工具函数测试 + +### 9.2 集成测试 +- API接口测试 +- 页面交互测试 + +### 9.3 兼容性测试 +- 微信小程序WebView测试 +- 不同设备适配测试 + +## 10. 部署方案 + +### 10.1 开发环境 +- 本地开发服务器 +- 热重载支持 + +### 10.2 生产环境 +- 静态资源CDN部署 +- 域名HTTPS配置 +- 微信小程序业务域名配置 + +--- + +**文档版本**: v1.0 +**创建时间**: 2025-08-27 +**负责人**: 开发团队 \ No newline at end of file