移动系统liao
2025-03-19 16b063870156db78148440971ab46c649e3e6018
测试定版,
15个文件已修改
40个文件已添加
6500 ■■■■■ 已修改文件
AdminwebPages/adminpageView/.editorconfig 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/.gitattributes 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/.gitignore 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/.prettierrc.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/.vscode/extensions.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/README.md 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/env.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/eslint.config.ts 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/index.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/package.json 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/pnpm-lock.yaml 3625 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/Api/EzApiBaseTypes.d.ts 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/Api/apis.ts 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/App.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/assets/base.css 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/assets/logo.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/assets/main.css 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/HelloWorld.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/TheWelcome.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/WelcomeItem.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/icons/IconCommunity.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/icons/IconDocumentation.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/icons/IconEcosystem.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/icons/IconSupport.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/components/icons/IconTooling.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/main.ts 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/router/index.ts 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/store/index.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/store/types.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/stores/counter.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/views/AboutView.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/views/HomeView.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/src/views/cylsgPayrollReport.vue 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/tsconfig.app.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/tsconfig.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/tsconfig.node.json 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/vite.config.ts 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/ECTESTOA/OAServices.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Application/CyOS/CyOSSDriver.cs 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Application/CyOS/CyOSSettingController.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Application/CyOS/CyOSStaffController.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Application/CyOS/CyOsDeliverManage.cs 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Application/Transfer/UserTransfer.cs 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/ECTEModel/EC_DriverRecord.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/ECTEModel/OA_DeliverPlan.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/ECTEModel/OA_DeliverPlanPaiche.cs 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/ECTEModel/OA_DeliverTixing.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/UserModel/User.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.Model/utilityViewModel/ECTESTOAPermissions.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.utility/CommonHelper.cs 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.utility/Extend/StringEx.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.utility/cylsg.utility.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cylsg/cylsg.utility/untilityModels.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
AdminwebPages/adminpageView/.editorconfig
New file
@@ -0,0 +1,9 @@
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
max_line_length = 100
AdminwebPages/adminpageView/.gitattributes
New file
@@ -0,0 +1 @@
* text=auto eol=lf
AdminwebPages/adminpageView/.gitignore
New file
@@ -0,0 +1,30 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.tsbuildinfo
AdminwebPages/adminpageView/.prettierrc.json
New file
@@ -0,0 +1,6 @@
{
  "$schema": "https://json.schemastore.org/prettierrc",
  "semi": false,
  "singleQuote": true,
  "printWidth": 100
}
AdminwebPages/adminpageView/.vscode/extensions.json
New file
@@ -0,0 +1,8 @@
{
  "recommendations": [
    "Vue.volar",
    "dbaeumer.vscode-eslint",
    "EditorConfig.EditorConfig",
    "esbenp.prettier-vscode"
  ]
}
AdminwebPages/adminpageView/README.md
New file
@@ -0,0 +1,39 @@
# adminpageView
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
## Customize configuration
See [Vite Configuration Reference](https://vite.dev/config/).
## Project Setup
```sh
pnpm install
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```
AdminwebPages/adminpageView/env.d.ts
New file
@@ -0,0 +1 @@
/// <reference types="vite/client" />
AdminwebPages/adminpageView/eslint.config.ts
New file
@@ -0,0 +1,24 @@
import pluginVue from 'eslint-plugin-vue'
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
// import { configureVueProject } from '@vue/eslint-config-typescript'
// configureVueProject({ scriptLangs: ['ts', 'tsx'] })
// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup
export default defineConfigWithVueTs(
  {
    name: 'app/files-to-lint',
    files: ['**/*.{ts,mts,tsx,vue}'],
  },
  {
    name: 'app/files-to-ignore',
    ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
  },
  pluginVue.configs['flat/essential'],
  vueTsConfigs.recommended,
  skipFormatting,
)
AdminwebPages/adminpageView/index.html
New file
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>
AdminwebPages/adminpageView/package.json
New file
@@ -0,0 +1,45 @@
{
  "name": "adminpageview",
  "version": "0.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "run-p type-check \"build-only {@}\" --",
    "preview": "vite preview",
    "build-only": "vite build",
    "type-check": "vue-tsc --build",
    "lint": "eslint . --fix",
    "format": "prettier --write src/"
  },
  "dependencies": {
    "@types/qs": "^6.9.18",
    "axios": "^1.8.3",
    "element-plus": "^2.9.6",
    "moment": "^2.30.1",
    "pinia": "^3.0.1",
    "plus-pro-components": "^0.1.21",
    "qs": "^6.14.0",
    "vue": "^3.5.13",
    "vue-router": "^4.5.0"
  },
  "devDependencies": {
    "@tsconfig/node22": "^22.0.0",
    "@types/node": "^22.13.9",
    "@types/nprogress": "^0.2.3",
    "@vitejs/plugin-vue": "^5.2.1",
    "@vitejs/plugin-vue-jsx": "^4.1.1",
    "@vue/eslint-config-prettier": "^10.2.0",
    "@vue/eslint-config-typescript": "^14.5.0",
    "@vue/tsconfig": "^0.7.0",
    "eslint": "^9.21.0",
    "eslint-plugin-vue": "~10.0.0",
    "jiti": "^2.4.2",
    "npm-run-all2": "^7.0.2",
    "prettier": "3.5.3",
    "typescript": "~5.8.0",
    "vite": "^6.2.1",
    "vite-plugin-vue-devtools": "^7.7.2",
    "vue-tsc": "^2.2.8"
  }
}
AdminwebPages/adminpageView/pnpm-lock.yaml
New file
@@ -0,0 +1,3625 @@
lockfileVersion: '9.0'
settings:
  autoInstallPeers: true
  excludeLinksFromLockfile: false
importers:
  .:
    dependencies:
      '@types/qs':
        specifier: ^6.9.18
        version: 6.9.18
      axios:
        specifier: ^1.8.3
        version: 1.8.3
      element-plus:
        specifier: ^2.9.6
        version: 2.9.6(vue@3.5.13(typescript@5.8.2))
      moment:
        specifier: ^2.30.1
        version: 2.30.1
      pinia:
        specifier: ^3.0.1
        version: 3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
      plus-pro-components:
        specifier: ^0.1.21
        version: 0.1.21(element-plus@2.9.6(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
      qs:
        specifier: ^6.14.0
        version: 6.14.0
      vue:
        specifier: ^3.5.13
        version: 3.5.13(typescript@5.8.2)
      vue-router:
        specifier: ^4.5.0
        version: 4.5.0(vue@3.5.13(typescript@5.8.2))
    devDependencies:
      '@tsconfig/node22':
        specifier: ^22.0.0
        version: 22.0.0
      '@types/node':
        specifier: ^22.13.9
        version: 22.13.10
      '@types/nprogress':
        specifier: ^0.2.3
        version: 0.2.3
      '@vitejs/plugin-vue':
        specifier: ^5.2.1
        version: 5.2.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))
      '@vitejs/plugin-vue-jsx':
        specifier: ^4.1.1
        version: 4.1.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))
      '@vue/eslint-config-prettier':
        specifier: ^10.2.0
        version: 10.2.0(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3)
      '@vue/eslint-config-typescript':
        specifier: ^14.5.0
        version: 14.5.0(eslint-plugin-vue@10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2))))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@vue/tsconfig':
        specifier: ^0.7.0
        version: 0.7.0(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
      eslint:
        specifier: ^9.21.0
        version: 9.22.0(jiti@2.4.2)
      eslint-plugin-vue:
        specifier: ~10.0.0
        version: 10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2)))
      jiti:
        specifier: ^2.4.2
        version: 2.4.2
      npm-run-all2:
        specifier: ^7.0.2
        version: 7.0.2
      prettier:
        specifier: 3.5.3
        version: 3.5.3
      typescript:
        specifier: ~5.8.0
        version: 5.8.2
      vite:
        specifier: ^6.2.1
        version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
      vite-plugin-vue-devtools:
        specifier: ^7.7.2
        version: 7.7.2(rollup@4.35.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))
      vue-tsc:
        specifier: ^2.2.8
        version: 2.2.8(typescript@5.8.2)
packages:
  '@ampproject/remapping@2.3.0':
    resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
    engines: {node: '>=6.0.0'}
  '@antfu/utils@0.7.10':
    resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
  '@babel/code-frame@7.26.2':
    resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
    engines: {node: '>=6.9.0'}
  '@babel/compat-data@7.26.8':
    resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==}
    engines: {node: '>=6.9.0'}
  '@babel/core@7.26.10':
    resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==}
    engines: {node: '>=6.9.0'}
  '@babel/generator@7.26.10':
    resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-annotate-as-pure@7.25.9':
    resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-compilation-targets@7.26.5':
    resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-create-class-features-plugin@7.26.9':
    resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0
  '@babel/helper-member-expression-to-functions@7.25.9':
    resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-module-imports@7.25.9':
    resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-module-transforms@7.26.0':
    resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0
  '@babel/helper-optimise-call-expression@7.25.9':
    resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-plugin-utils@7.26.5':
    resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-replace-supers@7.26.5':
    resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0
  '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
    resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-string-parser@7.25.9':
    resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-validator-identifier@7.25.9':
    resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-validator-option@7.25.9':
    resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
    engines: {node: '>=6.9.0'}
  '@babel/helpers@7.26.10':
    resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==}
    engines: {node: '>=6.9.0'}
  '@babel/parser@7.26.10':
    resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==}
    engines: {node: '>=6.0.0'}
    hasBin: true
  '@babel/plugin-proposal-decorators@7.25.9':
    resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-syntax-decorators@7.25.9':
    resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-syntax-import-attributes@7.26.0':
    resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-syntax-import-meta@7.10.4':
    resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-syntax-jsx@7.25.9':
    resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-syntax-typescript@7.25.9':
    resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/plugin-transform-typescript@7.26.8':
    resolution: {integrity: sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/template@7.26.9':
    resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
    engines: {node: '>=6.9.0'}
  '@babel/traverse@7.26.10':
    resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==}
    engines: {node: '>=6.9.0'}
  '@babel/types@7.26.10':
    resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
    engines: {node: '>=6.9.0'}
  '@ctrl/tinycolor@3.6.1':
    resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
    engines: {node: '>=10'}
  '@element-plus/icons-vue@2.3.1':
    resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
    peerDependencies:
      vue: ^3.2.0
  '@esbuild/aix-ppc64@0.25.1':
    resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
    engines: {node: '>=18'}
    cpu: [ppc64]
    os: [aix]
  '@esbuild/android-arm64@0.25.1':
    resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [android]
  '@esbuild/android-arm@0.25.1':
    resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==}
    engines: {node: '>=18'}
    cpu: [arm]
    os: [android]
  '@esbuild/android-x64@0.25.1':
    resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [android]
  '@esbuild/darwin-arm64@0.25.1':
    resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [darwin]
  '@esbuild/darwin-x64@0.25.1':
    resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [darwin]
  '@esbuild/freebsd-arm64@0.25.1':
    resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [freebsd]
  '@esbuild/freebsd-x64@0.25.1':
    resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [freebsd]
  '@esbuild/linux-arm64@0.25.1':
    resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [linux]
  '@esbuild/linux-arm@0.25.1':
    resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==}
    engines: {node: '>=18'}
    cpu: [arm]
    os: [linux]
  '@esbuild/linux-ia32@0.25.1':
    resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==}
    engines: {node: '>=18'}
    cpu: [ia32]
    os: [linux]
  '@esbuild/linux-loong64@0.25.1':
    resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==}
    engines: {node: '>=18'}
    cpu: [loong64]
    os: [linux]
  '@esbuild/linux-mips64el@0.25.1':
    resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==}
    engines: {node: '>=18'}
    cpu: [mips64el]
    os: [linux]
  '@esbuild/linux-ppc64@0.25.1':
    resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==}
    engines: {node: '>=18'}
    cpu: [ppc64]
    os: [linux]
  '@esbuild/linux-riscv64@0.25.1':
    resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==}
    engines: {node: '>=18'}
    cpu: [riscv64]
    os: [linux]
  '@esbuild/linux-s390x@0.25.1':
    resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==}
    engines: {node: '>=18'}
    cpu: [s390x]
    os: [linux]
  '@esbuild/linux-x64@0.25.1':
    resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [linux]
  '@esbuild/netbsd-arm64@0.25.1':
    resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [netbsd]
  '@esbuild/netbsd-x64@0.25.1':
    resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [netbsd]
  '@esbuild/openbsd-arm64@0.25.1':
    resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [openbsd]
  '@esbuild/openbsd-x64@0.25.1':
    resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [openbsd]
  '@esbuild/sunos-x64@0.25.1':
    resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [sunos]
  '@esbuild/win32-arm64@0.25.1':
    resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==}
    engines: {node: '>=18'}
    cpu: [arm64]
    os: [win32]
  '@esbuild/win32-ia32@0.25.1':
    resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==}
    engines: {node: '>=18'}
    cpu: [ia32]
    os: [win32]
  '@esbuild/win32-x64@0.25.1':
    resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==}
    engines: {node: '>=18'}
    cpu: [x64]
    os: [win32]
  '@eslint-community/eslint-utils@4.5.1':
    resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==}
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
    peerDependencies:
      eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
  '@eslint-community/regexpp@4.12.1':
    resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
    engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
  '@eslint/config-array@0.19.2':
    resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/config-helpers@0.1.0':
    resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/core@0.12.0':
    resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/eslintrc@3.3.0':
    resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/js@9.22.0':
    resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/object-schema@2.1.6':
    resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@eslint/plugin-kit@0.2.7':
    resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@floating-ui/core@1.6.9':
    resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
  '@floating-ui/dom@1.6.13':
    resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
  '@floating-ui/utils@0.2.9':
    resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
  '@humanfs/core@0.19.1':
    resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
    engines: {node: '>=18.18.0'}
  '@humanfs/node@0.16.6':
    resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
    engines: {node: '>=18.18.0'}
  '@humanwhocodes/module-importer@1.0.1':
    resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
    engines: {node: '>=12.22'}
  '@humanwhocodes/retry@0.3.1':
    resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
    engines: {node: '>=18.18'}
  '@humanwhocodes/retry@0.4.2':
    resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
    engines: {node: '>=18.18'}
  '@jridgewell/gen-mapping@0.3.8':
    resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
    engines: {node: '>=6.0.0'}
  '@jridgewell/resolve-uri@3.1.2':
    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
    engines: {node: '>=6.0.0'}
  '@jridgewell/set-array@1.2.1':
    resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
    engines: {node: '>=6.0.0'}
  '@jridgewell/sourcemap-codec@1.5.0':
    resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
  '@jridgewell/trace-mapping@0.3.25':
    resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
  '@nodelib/fs.scandir@2.1.5':
    resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
    engines: {node: '>= 8'}
  '@nodelib/fs.stat@2.0.5':
    resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
    engines: {node: '>= 8'}
  '@nodelib/fs.walk@1.2.8':
    resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
    engines: {node: '>= 8'}
  '@pkgr/core@0.1.1':
    resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
    engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
  '@polka/url@1.0.0-next.28':
    resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
  '@rollup/pluginutils@5.1.4':
    resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
    engines: {node: '>=14.0.0'}
    peerDependencies:
      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
    peerDependenciesMeta:
      rollup:
        optional: true
  '@rollup/rollup-android-arm-eabi@4.35.0':
    resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==}
    cpu: [arm]
    os: [android]
  '@rollup/rollup-android-arm64@4.35.0':
    resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==}
    cpu: [arm64]
    os: [android]
  '@rollup/rollup-darwin-arm64@4.35.0':
    resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==}
    cpu: [arm64]
    os: [darwin]
  '@rollup/rollup-darwin-x64@4.35.0':
    resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==}
    cpu: [x64]
    os: [darwin]
  '@rollup/rollup-freebsd-arm64@4.35.0':
    resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==}
    cpu: [arm64]
    os: [freebsd]
  '@rollup/rollup-freebsd-x64@4.35.0':
    resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==}
    cpu: [x64]
    os: [freebsd]
  '@rollup/rollup-linux-arm-gnueabihf@4.35.0':
    resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==}
    cpu: [arm]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-arm-musleabihf@4.35.0':
    resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==}
    cpu: [arm]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-arm64-gnu@4.35.0':
    resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-arm64-musl@4.35.0':
    resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==}
    cpu: [arm64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-loongarch64-gnu@4.35.0':
    resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==}
    cpu: [loong64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-powerpc64le-gnu@4.35.0':
    resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==}
    cpu: [ppc64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-riscv64-gnu@4.35.0':
    resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==}
    cpu: [riscv64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-s390x-gnu@4.35.0':
    resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==}
    cpu: [s390x]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-x64-gnu@4.35.0':
    resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==}
    cpu: [x64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-x64-musl@4.35.0':
    resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==}
    cpu: [x64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-win32-arm64-msvc@4.35.0':
    resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==}
    cpu: [arm64]
    os: [win32]
  '@rollup/rollup-win32-ia32-msvc@4.35.0':
    resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==}
    cpu: [ia32]
    os: [win32]
  '@rollup/rollup-win32-x64-msvc@4.35.0':
    resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==}
    cpu: [x64]
    os: [win32]
  '@sec-ant/readable-stream@0.4.1':
    resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
  '@sindresorhus/merge-streams@4.0.0':
    resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
    engines: {node: '>=18'}
  '@sxzz/popperjs-es@2.11.7':
    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
  '@tsconfig/node22@22.0.0':
    resolution: {integrity: sha512-twLQ77zevtxobBOD4ToAtVmuYrpeYUh3qh+TEp+08IWhpsrIflVHqQ1F1CiPxQGL7doCdBIOOCF+1Tm833faNg==}
  '@types/estree@1.0.6':
    resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
  '@types/json-schema@7.0.15':
    resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
  '@types/lodash-es@4.17.12':
    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
  '@types/lodash@4.17.16':
    resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
  '@types/node@22.13.10':
    resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==}
  '@types/nprogress@0.2.3':
    resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
  '@types/qs@6.9.18':
    resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==}
  '@types/web-bluetooth@0.0.16':
    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
  '@typescript-eslint/eslint-plugin@8.26.1':
    resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
      eslint: ^8.57.0 || ^9.0.0
      typescript: '>=4.8.4 <5.9.0'
  '@typescript-eslint/parser@8.26.1':
    resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
      typescript: '>=4.8.4 <5.9.0'
  '@typescript-eslint/scope-manager@8.26.1':
    resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@typescript-eslint/type-utils@8.26.1':
    resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
      typescript: '>=4.8.4 <5.9.0'
  '@typescript-eslint/types@8.26.1':
    resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@typescript-eslint/typescript-estree@8.26.1':
    resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      typescript: '>=4.8.4 <5.9.0'
  '@typescript-eslint/utils@8.26.1':
    resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
      typescript: '>=4.8.4 <5.9.0'
  '@typescript-eslint/visitor-keys@8.26.1':
    resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  '@vitejs/plugin-vue-jsx@4.1.2':
    resolution: {integrity: sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA==}
    engines: {node: ^18.0.0 || >=20.0.0}
    peerDependencies:
      vite: ^5.0.0 || ^6.0.0
      vue: ^3.0.0
  '@vitejs/plugin-vue@5.2.2':
    resolution: {integrity: sha512-IY0aPonWZI2huxrWjoSBUQX14GThitmr1sc2OUJymcgnY5RlUI7HoXGAnFEoVNRsck/kS6inGvxCN6CoHu86yQ==}
    engines: {node: ^18.0.0 || >=20.0.0}
    peerDependencies:
      vite: ^5.0.0 || ^6.0.0
      vue: ^3.2.25
  '@volar/language-core@2.4.12':
    resolution: {integrity: sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==}
  '@volar/source-map@2.4.12':
    resolution: {integrity: sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==}
  '@volar/typescript@2.4.12':
    resolution: {integrity: sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==}
  '@vue/babel-helper-vue-transform-on@1.4.0':
    resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==}
  '@vue/babel-plugin-jsx@1.4.0':
    resolution: {integrity: sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==}
    peerDependencies:
      '@babel/core': ^7.0.0-0
    peerDependenciesMeta:
      '@babel/core':
        optional: true
  '@vue/babel-plugin-resolve-type@1.4.0':
    resolution: {integrity: sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@vue/compiler-core@3.5.13':
    resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
  '@vue/compiler-dom@3.5.13':
    resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
  '@vue/compiler-sfc@3.5.13':
    resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
  '@vue/compiler-ssr@3.5.13':
    resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
  '@vue/compiler-vue2@2.7.16':
    resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
  '@vue/devtools-api@6.6.4':
    resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
  '@vue/devtools-api@7.7.2':
    resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==}
  '@vue/devtools-core@7.7.2':
    resolution: {integrity: sha512-lexREWj1lKi91Tblr38ntSsy6CvI8ba7u+jmwh2yruib/ltLUcsIzEjCnrkh1yYGGIKXbAuYV2tOG10fGDB9OQ==}
    peerDependencies:
      vue: ^3.0.0
  '@vue/devtools-kit@7.7.2':
    resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==}
  '@vue/devtools-shared@7.7.2':
    resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==}
  '@vue/eslint-config-prettier@10.2.0':
    resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==}
    peerDependencies:
      eslint: '>= 8.21.0'
      prettier: '>= 3.0.0'
  '@vue/eslint-config-typescript@14.5.0':
    resolution: {integrity: sha512-5oPOyuwkw++AP5gHDh5YFmST50dPfWOcm3/W7Nbh42IK5O3H74ytWAw0TrCRTaBoD/02khnWXuZf1Bz1xflavQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^9.10.0
      eslint-plugin-vue: ^9.28.0 || ^10.0.0
      typescript: '>=4.8.4'
    peerDependenciesMeta:
      typescript:
        optional: true
  '@vue/language-core@2.2.8':
    resolution: {integrity: sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==}
    peerDependencies:
      typescript: '*'
    peerDependenciesMeta:
      typescript:
        optional: true
  '@vue/reactivity@3.5.13':
    resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
  '@vue/runtime-core@3.5.13':
    resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
  '@vue/runtime-dom@3.5.13':
    resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
  '@vue/server-renderer@3.5.13':
    resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
    peerDependencies:
      vue: 3.5.13
  '@vue/shared@3.5.13':
    resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
  '@vue/tsconfig@0.7.0':
    resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==}
    peerDependencies:
      typescript: 5.x
      vue: ^3.4.0
    peerDependenciesMeta:
      typescript:
        optional: true
      vue:
        optional: true
  '@vueuse/core@9.13.0':
    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
  '@vueuse/metadata@9.13.0':
    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
  '@vueuse/shared@9.13.0':
    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
  acorn-jsx@5.3.2:
    resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
    peerDependencies:
      acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
  acorn@8.14.1:
    resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
    engines: {node: '>=0.4.0'}
    hasBin: true
  ajv@6.12.6:
    resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
  alien-signals@1.0.4:
    resolution: {integrity: sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==}
  ansi-styles@4.3.0:
    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
    engines: {node: '>=8'}
  ansi-styles@6.2.1:
    resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
    engines: {node: '>=12'}
  argparse@2.0.1:
    resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
  async-validator@4.2.5:
    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
  asynckit@0.4.0:
    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
  axios@1.8.3:
    resolution: {integrity: sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==}
  balanced-match@1.0.2:
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
  birpc@0.2.19:
    resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==}
  boolbase@1.0.0:
    resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
  brace-expansion@1.1.11:
    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
  brace-expansion@2.0.1:
    resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
  braces@3.0.3:
    resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
    engines: {node: '>=8'}
  browserslist@4.24.4:
    resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
    hasBin: true
  bundle-name@4.1.0:
    resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
    engines: {node: '>=18'}
  call-bind-apply-helpers@1.0.2:
    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
    engines: {node: '>= 0.4'}
  call-bound@1.0.4:
    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
    engines: {node: '>= 0.4'}
  callsites@3.1.0:
    resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
    engines: {node: '>=6'}
  caniuse-lite@1.0.30001705:
    resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==}
  chalk@4.1.2:
    resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
    engines: {node: '>=10'}
  color-convert@2.0.1:
    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
    engines: {node: '>=7.0.0'}
  color-name@1.1.4:
    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
  combined-stream@1.0.8:
    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
    engines: {node: '>= 0.8'}
  concat-map@0.0.1:
    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
  convert-source-map@2.0.0:
    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
  copy-anything@3.0.5:
    resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
    engines: {node: '>=12.13'}
  cross-spawn@7.0.6:
    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
    engines: {node: '>= 8'}
  cssesc@3.0.0:
    resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
    engines: {node: '>=4'}
    hasBin: true
  csstype@3.1.3:
    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
  dayjs@1.11.13:
    resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
  de-indent@1.0.2:
    resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
  debug@4.4.0:
    resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
    engines: {node: '>=6.0'}
    peerDependencies:
      supports-color: '*'
    peerDependenciesMeta:
      supports-color:
        optional: true
  deep-is@0.1.4:
    resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
  default-browser-id@5.0.0:
    resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
    engines: {node: '>=18'}
  default-browser@5.2.1:
    resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
    engines: {node: '>=18'}
  define-lazy-prop@3.0.0:
    resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
    engines: {node: '>=12'}
  delayed-stream@1.0.0:
    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
    engines: {node: '>=0.4.0'}
  dunder-proto@1.0.1:
    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
    engines: {node: '>= 0.4'}
  electron-to-chromium@1.5.119:
    resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==}
  element-plus@2.9.6:
    resolution: {integrity: sha512-D9zU28Ce0s/9O/Vp3ewemikxzFVA6gdZyMwmWijHijo+t5/9H3sHRTIm1WlfeNpFW2Yq0y8nHXD0fU5YxU6qlQ==}
    peerDependencies:
      vue: ^3.2.0
  entities@4.5.0:
    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
    engines: {node: '>=0.12'}
  error-stack-parser-es@0.1.5:
    resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==}
  es-define-property@1.0.1:
    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
    engines: {node: '>= 0.4'}
  es-errors@1.3.0:
    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
    engines: {node: '>= 0.4'}
  es-object-atoms@1.1.1:
    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
    engines: {node: '>= 0.4'}
  es-set-tostringtag@2.1.0:
    resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
    engines: {node: '>= 0.4'}
  esbuild@0.25.1:
    resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
    engines: {node: '>=18'}
    hasBin: true
  escalade@3.2.0:
    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
    engines: {node: '>=6'}
  escape-html@1.0.3:
    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
  escape-string-regexp@4.0.0:
    resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
    engines: {node: '>=10'}
  eslint-config-prettier@10.1.1:
    resolution: {integrity: sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==}
    hasBin: true
    peerDependencies:
      eslint: '>=7.0.0'
  eslint-plugin-prettier@5.2.3:
    resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==}
    engines: {node: ^14.18.0 || >=16.0.0}
    peerDependencies:
      '@types/eslint': '>=8.0.0'
      eslint: '>=8.0.0'
      eslint-config-prettier: '*'
      prettier: '>=3.0.0'
    peerDependenciesMeta:
      '@types/eslint':
        optional: true
      eslint-config-prettier:
        optional: true
  eslint-plugin-vue@10.0.0:
    resolution: {integrity: sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
      vue-eslint-parser: ^10.0.0
  eslint-scope@8.3.0:
    resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  eslint-visitor-keys@3.4.3:
    resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
  eslint-visitor-keys@4.2.0:
    resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  eslint@9.22.0:
    resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    hasBin: true
    peerDependencies:
      jiti: '*'
    peerDependenciesMeta:
      jiti:
        optional: true
  espree@10.3.0:
    resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
  esquery@1.6.0:
    resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
    engines: {node: '>=0.10'}
  esrecurse@4.3.0:
    resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
    engines: {node: '>=4.0'}
  estraverse@5.3.0:
    resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
    engines: {node: '>=4.0'}
  estree-walker@2.0.2:
    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
  esutils@2.0.3:
    resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
    engines: {node: '>=0.10.0'}
  execa@9.5.2:
    resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==}
    engines: {node: ^18.19.0 || >=20.5.0}
  fast-deep-equal@3.1.3:
    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
  fast-diff@1.3.0:
    resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
  fast-glob@3.3.3:
    resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
    engines: {node: '>=8.6.0'}
  fast-json-stable-stringify@2.1.0:
    resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
  fast-levenshtein@2.0.6:
    resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
  fastq@1.19.1:
    resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
  figures@6.1.0:
    resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
    engines: {node: '>=18'}
  file-entry-cache@8.0.0:
    resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
    engines: {node: '>=16.0.0'}
  fill-range@7.1.1:
    resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
    engines: {node: '>=8'}
  find-up@5.0.0:
    resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
    engines: {node: '>=10'}
  flat-cache@4.0.1:
    resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
    engines: {node: '>=16'}
  flatted@3.3.3:
    resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
  follow-redirects@1.15.9:
    resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
    engines: {node: '>=4.0'}
    peerDependencies:
      debug: '*'
    peerDependenciesMeta:
      debug:
        optional: true
  form-data@4.0.2:
    resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
    engines: {node: '>= 6'}
  fs-extra@11.3.0:
    resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==}
    engines: {node: '>=14.14'}
  fsevents@2.3.3:
    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
    os: [darwin]
  function-bind@1.1.2:
    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
  gensync@1.0.0-beta.2:
    resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
    engines: {node: '>=6.9.0'}
  get-intrinsic@1.3.0:
    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
    engines: {node: '>= 0.4'}
  get-proto@1.0.1:
    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
    engines: {node: '>= 0.4'}
  get-stream@9.0.1:
    resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
    engines: {node: '>=18'}
  glob-parent@5.1.2:
    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
    engines: {node: '>= 6'}
  glob-parent@6.0.2:
    resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
    engines: {node: '>=10.13.0'}
  globals@11.12.0:
    resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
    engines: {node: '>=4'}
  globals@14.0.0:
    resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
    engines: {node: '>=18'}
  gopd@1.2.0:
    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
    engines: {node: '>= 0.4'}
  graceful-fs@4.2.11:
    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
  graphemer@1.4.0:
    resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
  has-flag@4.0.0:
    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
    engines: {node: '>=8'}
  has-symbols@1.1.0:
    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
    engines: {node: '>= 0.4'}
  has-tostringtag@1.0.2:
    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
    engines: {node: '>= 0.4'}
  hasown@2.0.2:
    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
    engines: {node: '>= 0.4'}
  he@1.2.0:
    resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
    hasBin: true
  hookable@5.5.3:
    resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
  human-signals@8.0.0:
    resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
    engines: {node: '>=18.18.0'}
  ignore@5.3.2:
    resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
    engines: {node: '>= 4'}
  import-fresh@3.3.1:
    resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
    engines: {node: '>=6'}
  imurmurhash@0.1.4:
    resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
    engines: {node: '>=0.8.19'}
  is-docker@3.0.0:
    resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
    hasBin: true
  is-extglob@2.1.1:
    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
    engines: {node: '>=0.10.0'}
  is-glob@4.0.3:
    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
    engines: {node: '>=0.10.0'}
  is-inside-container@1.0.0:
    resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
    engines: {node: '>=14.16'}
    hasBin: true
  is-number@7.0.0:
    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
    engines: {node: '>=0.12.0'}
  is-plain-obj@4.1.0:
    resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
    engines: {node: '>=12'}
  is-stream@4.0.1:
    resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
    engines: {node: '>=18'}
  is-unicode-supported@2.1.0:
    resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
    engines: {node: '>=18'}
  is-what@4.1.16:
    resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
    engines: {node: '>=12.13'}
  is-wsl@3.1.0:
    resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
    engines: {node: '>=16'}
  isexe@2.0.0:
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
  isexe@3.1.1:
    resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
    engines: {node: '>=16'}
  jiti@2.4.2:
    resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
    hasBin: true
  js-tokens@4.0.0:
    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
  js-yaml@4.1.0:
    resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
    hasBin: true
  jsesc@3.1.0:
    resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
    engines: {node: '>=6'}
    hasBin: true
  json-buffer@3.0.1:
    resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
  json-parse-even-better-errors@4.0.0:
    resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==}
    engines: {node: ^18.17.0 || >=20.5.0}
  json-schema-traverse@0.4.1:
    resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
  json-stable-stringify-without-jsonify@1.0.1:
    resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
  json5@2.2.3:
    resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
    engines: {node: '>=6'}
    hasBin: true
  jsonfile@6.1.0:
    resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
  keyv@4.5.4:
    resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
  kolorist@1.8.0:
    resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
  levn@0.4.1:
    resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
    engines: {node: '>= 0.8.0'}
  locate-path@6.0.0:
    resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
    engines: {node: '>=10'}
  lodash-es@4.17.21:
    resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
  lodash-unified@1.0.3:
    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
    peerDependencies:
      '@types/lodash-es': '*'
      lodash: '*'
      lodash-es: '*'
  lodash.merge@4.6.2:
    resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
  lodash@4.17.21:
    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
  lru-cache@5.1.1:
    resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
  magic-string@0.30.17:
    resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
  math-intrinsics@1.1.0:
    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
    engines: {node: '>= 0.4'}
  memoize-one@6.0.0:
    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
  memorystream@0.3.1:
    resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
    engines: {node: '>= 0.10.0'}
  merge2@1.4.1:
    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
    engines: {node: '>= 8'}
  micromatch@4.0.8:
    resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
    engines: {node: '>=8.6'}
  mime-db@1.52.0:
    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
    engines: {node: '>= 0.6'}
  mime-types@2.1.35:
    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
    engines: {node: '>= 0.6'}
  minimatch@3.1.2:
    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
  minimatch@9.0.5:
    resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
    engines: {node: '>=16 || 14 >=14.17'}
  mitt@3.0.1:
    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
  moment@2.30.1:
    resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
  mrmime@2.0.1:
    resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
    engines: {node: '>=10'}
  ms@2.1.3:
    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
  muggle-string@0.4.1:
    resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
  nanoid@3.3.10:
    resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==}
    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
    hasBin: true
  nanoid@5.1.4:
    resolution: {integrity: sha512-GTFcMIDgR7tqji/LpSY8rtg464VnJl/j6ypoehYnuGb+Y8qZUdtKB8WVCXon0UEZgFDbuUxpIl//6FHLHgXSNA==}
    engines: {node: ^18 || >=20}
    hasBin: true
  natural-compare@1.4.0:
    resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
  node-releases@2.0.19:
    resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
  normalize-wheel-es@1.2.0:
    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
  npm-normalize-package-bin@4.0.0:
    resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==}
    engines: {node: ^18.17.0 || >=20.5.0}
  npm-run-all2@7.0.2:
    resolution: {integrity: sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA==}
    engines: {node: ^18.17.0 || >=20.5.0, npm: '>= 9'}
    hasBin: true
  npm-run-path@6.0.0:
    resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
    engines: {node: '>=18'}
  nth-check@2.1.1:
    resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
  object-inspect@1.13.4:
    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
    engines: {node: '>= 0.4'}
  open@10.1.0:
    resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
    engines: {node: '>=18'}
  optionator@0.9.4:
    resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
    engines: {node: '>= 0.8.0'}
  p-limit@3.1.0:
    resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
    engines: {node: '>=10'}
  p-locate@5.0.0:
    resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
    engines: {node: '>=10'}
  parent-module@1.0.1:
    resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
    engines: {node: '>=6'}
  parse-ms@4.0.0:
    resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
    engines: {node: '>=18'}
  path-browserify@1.0.1:
    resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
  path-exists@4.0.0:
    resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
    engines: {node: '>=8'}
  path-key@3.1.1:
    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
    engines: {node: '>=8'}
  path-key@4.0.0:
    resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
    engines: {node: '>=12'}
  pathe@2.0.3:
    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
  perfect-debounce@1.0.0:
    resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
  picocolors@1.1.1:
    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
  picomatch@2.3.1:
    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
    engines: {node: '>=8.6'}
  picomatch@4.0.2:
    resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
    engines: {node: '>=12'}
  pidtree@0.6.0:
    resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
    engines: {node: '>=0.10'}
    hasBin: true
  pinia@3.0.1:
    resolution: {integrity: sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==}
    peerDependencies:
      typescript: '>=4.4.4'
      vue: ^2.7.0 || ^3.5.11
    peerDependenciesMeta:
      typescript:
        optional: true
  plus-pro-components@0.1.21:
    resolution: {integrity: sha512-/0WdoMm9Dhs58T+gLzL1ZjvSEWicHEGy5dl5S4+h+k7eY/BznjH2R5bcmsoQ6HHomyw7RODwxarzD4On00sVWQ==}
    peerDependencies:
      element-plus: ^2.3.4
      vue: ^3.2.0
  postcss-selector-parser@6.1.2:
    resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
    engines: {node: '>=4'}
  postcss@8.5.3:
    resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
    engines: {node: ^10 || ^12 || >=14}
  prelude-ls@1.2.1:
    resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
    engines: {node: '>= 0.8.0'}
  prettier-linter-helpers@1.0.0:
    resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
    engines: {node: '>=6.0.0'}
  prettier@3.5.3:
    resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
    engines: {node: '>=14'}
    hasBin: true
  pretty-ms@9.2.0:
    resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==}
    engines: {node: '>=18'}
  proxy-from-env@1.1.0:
    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
  punycode@2.3.1:
    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
    engines: {node: '>=6'}
  qs@6.14.0:
    resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
    engines: {node: '>=0.6'}
  queue-microtask@1.2.3:
    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
  read-package-json-fast@4.0.0:
    resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==}
    engines: {node: ^18.17.0 || >=20.5.0}
  resolve-from@4.0.0:
    resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
    engines: {node: '>=4'}
  reusify@1.1.0:
    resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
  rfdc@1.4.1:
    resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
  rollup@4.35.0:
    resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==}
    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
    hasBin: true
  run-applescript@7.0.0:
    resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
    engines: {node: '>=18'}
  run-parallel@1.2.0:
    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
  semver@6.3.1:
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
    hasBin: true
  semver@7.7.1:
    resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
    engines: {node: '>=10'}
    hasBin: true
  shebang-command@2.0.0:
    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
    engines: {node: '>=8'}
  shebang-regex@3.0.0:
    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
    engines: {node: '>=8'}
  shell-quote@1.8.2:
    resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
    engines: {node: '>= 0.4'}
  side-channel-list@1.0.0:
    resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
    engines: {node: '>= 0.4'}
  side-channel-map@1.0.1:
    resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
    engines: {node: '>= 0.4'}
  side-channel-weakmap@1.0.2:
    resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
    engines: {node: '>= 0.4'}
  side-channel@1.1.0:
    resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
    engines: {node: '>= 0.4'}
  signal-exit@4.1.0:
    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
    engines: {node: '>=14'}
  sirv@3.0.1:
    resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
    engines: {node: '>=18'}
  sortablejs@1.15.6:
    resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==}
  source-map-js@1.2.1:
    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
    engines: {node: '>=0.10.0'}
  speakingurl@14.0.1:
    resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
    engines: {node: '>=0.10.0'}
  strip-final-newline@4.0.0:
    resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
    engines: {node: '>=18'}
  strip-json-comments@3.1.1:
    resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
    engines: {node: '>=8'}
  superjson@2.2.2:
    resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
    engines: {node: '>=16'}
  supports-color@7.2.0:
    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
    engines: {node: '>=8'}
  synckit@0.9.2:
    resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
    engines: {node: ^14.18.0 || >=16.0.0}
  to-regex-range@5.0.1:
    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
    engines: {node: '>=8.0'}
  totalist@3.0.1:
    resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
    engines: {node: '>=6'}
  ts-api-utils@2.0.1:
    resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
    engines: {node: '>=18.12'}
    peerDependencies:
      typescript: '>=4.8.4'
  tslib@2.8.1:
    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
  type-check@0.4.0:
    resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
    engines: {node: '>= 0.8.0'}
  typescript-eslint@8.26.1:
    resolution: {integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
      typescript: '>=4.8.4 <5.9.0'
  typescript@5.8.2:
    resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
    engines: {node: '>=14.17'}
    hasBin: true
  undici-types@6.20.0:
    resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
  unicorn-magic@0.3.0:
    resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
    engines: {node: '>=18'}
  universalify@2.0.1:
    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
    engines: {node: '>= 10.0.0'}
  update-browserslist-db@1.1.3:
    resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
    hasBin: true
    peerDependencies:
      browserslist: '>= 4.21.0'
  uri-js@4.4.1:
    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
  util-deprecate@1.0.2:
    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
  vite-hot-client@0.2.4:
    resolution: {integrity: sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==}
    peerDependencies:
      vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0
  vite-plugin-inspect@0.8.9:
    resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==}
    engines: {node: '>=14'}
    peerDependencies:
      '@nuxt/kit': '*'
      vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1
    peerDependenciesMeta:
      '@nuxt/kit':
        optional: true
  vite-plugin-vue-devtools@7.7.2:
    resolution: {integrity: sha512-5V0UijQWiSBj32blkyPEqIbzc6HO9c1bwnBhx+ay2dzU0FakH+qMdNUT8nF9BvDE+i6I1U8CqCuJiO20vKEdQw==}
    engines: {node: '>=v14.21.3'}
    peerDependencies:
      vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0
  vite-plugin-vue-inspector@5.3.1:
    resolution: {integrity: sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==}
    peerDependencies:
      vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0
  vite@6.2.2:
    resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==}
    engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
    hasBin: true
    peerDependencies:
      '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
      jiti: '>=1.21.0'
      less: '*'
      lightningcss: ^1.21.0
      sass: '*'
      sass-embedded: '*'
      stylus: '*'
      sugarss: '*'
      terser: ^5.16.0
      tsx: ^4.8.1
      yaml: ^2.4.2
    peerDependenciesMeta:
      '@types/node':
        optional: true
      jiti:
        optional: true
      less:
        optional: true
      lightningcss:
        optional: true
      sass:
        optional: true
      sass-embedded:
        optional: true
      stylus:
        optional: true
      sugarss:
        optional: true
      terser:
        optional: true
      tsx:
        optional: true
      yaml:
        optional: true
  vscode-uri@3.1.0:
    resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
  vue-demi@0.14.10:
    resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
    engines: {node: '>=12'}
    hasBin: true
    peerDependencies:
      '@vue/composition-api': ^1.0.0-rc.1
      vue: ^3.0.0-0 || ^2.6.0
    peerDependenciesMeta:
      '@vue/composition-api':
        optional: true
  vue-eslint-parser@10.1.1:
    resolution: {integrity: sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==}
    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
    peerDependencies:
      eslint: ^8.57.0 || ^9.0.0
  vue-router@4.5.0:
    resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==}
    peerDependencies:
      vue: ^3.2.0
  vue-tsc@2.2.8:
    resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==}
    hasBin: true
    peerDependencies:
      typescript: '>=5.0.0'
  vue@3.5.13:
    resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
    peerDependencies:
      typescript: '*'
    peerDependenciesMeta:
      typescript:
        optional: true
  which@2.0.2:
    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
    engines: {node: '>= 8'}
    hasBin: true
  which@5.0.0:
    resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==}
    engines: {node: ^18.17.0 || >=20.5.0}
    hasBin: true
  word-wrap@1.2.5:
    resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
    engines: {node: '>=0.10.0'}
  xml-name-validator@4.0.0:
    resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
    engines: {node: '>=12'}
  yallist@3.1.1:
    resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
  yocto-queue@0.1.0:
    resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
    engines: {node: '>=10'}
  yoctocolors@2.1.1:
    resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
    engines: {node: '>=18'}
snapshots:
  '@ampproject/remapping@2.3.0':
    dependencies:
      '@jridgewell/gen-mapping': 0.3.8
      '@jridgewell/trace-mapping': 0.3.25
  '@antfu/utils@0.7.10': {}
  '@babel/code-frame@7.26.2':
    dependencies:
      '@babel/helper-validator-identifier': 7.25.9
      js-tokens: 4.0.0
      picocolors: 1.1.1
  '@babel/compat-data@7.26.8': {}
  '@babel/core@7.26.10':
    dependencies:
      '@ampproject/remapping': 2.3.0
      '@babel/code-frame': 7.26.2
      '@babel/generator': 7.26.10
      '@babel/helper-compilation-targets': 7.26.5
      '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10)
      '@babel/helpers': 7.26.10
      '@babel/parser': 7.26.10
      '@babel/template': 7.26.9
      '@babel/traverse': 7.26.10
      '@babel/types': 7.26.10
      convert-source-map: 2.0.0
      debug: 4.4.0
      gensync: 1.0.0-beta.2
      json5: 2.2.3
      semver: 6.3.1
    transitivePeerDependencies:
      - supports-color
  '@babel/generator@7.26.10':
    dependencies:
      '@babel/parser': 7.26.10
      '@babel/types': 7.26.10
      '@jridgewell/gen-mapping': 0.3.8
      '@jridgewell/trace-mapping': 0.3.25
      jsesc: 3.1.0
  '@babel/helper-annotate-as-pure@7.25.9':
    dependencies:
      '@babel/types': 7.26.10
  '@babel/helper-compilation-targets@7.26.5':
    dependencies:
      '@babel/compat-data': 7.26.8
      '@babel/helper-validator-option': 7.25.9
      browserslist: 4.24.4
      lru-cache: 5.1.1
      semver: 6.3.1
  '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-annotate-as-pure': 7.25.9
      '@babel/helper-member-expression-to-functions': 7.25.9
      '@babel/helper-optimise-call-expression': 7.25.9
      '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10)
      '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
      '@babel/traverse': 7.26.10
      semver: 6.3.1
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-member-expression-to-functions@7.25.9':
    dependencies:
      '@babel/traverse': 7.26.10
      '@babel/types': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-module-imports@7.25.9':
    dependencies:
      '@babel/traverse': 7.26.10
      '@babel/types': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-module-imports': 7.25.9
      '@babel/helper-validator-identifier': 7.25.9
      '@babel/traverse': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-optimise-call-expression@7.25.9':
    dependencies:
      '@babel/types': 7.26.10
  '@babel/helper-plugin-utils@7.26.5': {}
  '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-member-expression-to-functions': 7.25.9
      '@babel/helper-optimise-call-expression': 7.25.9
      '@babel/traverse': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
    dependencies:
      '@babel/traverse': 7.26.10
      '@babel/types': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-string-parser@7.25.9': {}
  '@babel/helper-validator-identifier@7.25.9': {}
  '@babel/helper-validator-option@7.25.9': {}
  '@babel/helpers@7.26.10':
    dependencies:
      '@babel/template': 7.26.9
      '@babel/types': 7.26.10
  '@babel/parser@7.26.10':
    dependencies:
      '@babel/types': 7.26.10
  '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10)
      '@babel/helper-plugin-utils': 7.26.5
      '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.10)
    transitivePeerDependencies:
      - supports-color
  '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-plugin-utils': 7.26.5
  '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-plugin-utils': 7.26.5
  '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-plugin-utils': 7.26.5
  '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-plugin-utils': 7.26.5
  '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-plugin-utils': 7.26.5
  '@babel/plugin-transform-typescript@7.26.8(@babel/core@7.26.10)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/helper-annotate-as-pure': 7.25.9
      '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10)
      '@babel/helper-plugin-utils': 7.26.5
      '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
      '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10)
    transitivePeerDependencies:
      - supports-color
  '@babel/template@7.26.9':
    dependencies:
      '@babel/code-frame': 7.26.2
      '@babel/parser': 7.26.10
      '@babel/types': 7.26.10
  '@babel/traverse@7.26.10':
    dependencies:
      '@babel/code-frame': 7.26.2
      '@babel/generator': 7.26.10
      '@babel/parser': 7.26.10
      '@babel/template': 7.26.9
      '@babel/types': 7.26.10
      debug: 4.4.0
      globals: 11.12.0
    transitivePeerDependencies:
      - supports-color
  '@babel/types@7.26.10':
    dependencies:
      '@babel/helper-string-parser': 7.25.9
      '@babel/helper-validator-identifier': 7.25.9
  '@ctrl/tinycolor@3.6.1': {}
  '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      vue: 3.5.13(typescript@5.8.2)
  '@esbuild/aix-ppc64@0.25.1':
    optional: true
  '@esbuild/android-arm64@0.25.1':
    optional: true
  '@esbuild/android-arm@0.25.1':
    optional: true
  '@esbuild/android-x64@0.25.1':
    optional: true
  '@esbuild/darwin-arm64@0.25.1':
    optional: true
  '@esbuild/darwin-x64@0.25.1':
    optional: true
  '@esbuild/freebsd-arm64@0.25.1':
    optional: true
  '@esbuild/freebsd-x64@0.25.1':
    optional: true
  '@esbuild/linux-arm64@0.25.1':
    optional: true
  '@esbuild/linux-arm@0.25.1':
    optional: true
  '@esbuild/linux-ia32@0.25.1':
    optional: true
  '@esbuild/linux-loong64@0.25.1':
    optional: true
  '@esbuild/linux-mips64el@0.25.1':
    optional: true
  '@esbuild/linux-ppc64@0.25.1':
    optional: true
  '@esbuild/linux-riscv64@0.25.1':
    optional: true
  '@esbuild/linux-s390x@0.25.1':
    optional: true
  '@esbuild/linux-x64@0.25.1':
    optional: true
  '@esbuild/netbsd-arm64@0.25.1':
    optional: true
  '@esbuild/netbsd-x64@0.25.1':
    optional: true
  '@esbuild/openbsd-arm64@0.25.1':
    optional: true
  '@esbuild/openbsd-x64@0.25.1':
    optional: true
  '@esbuild/sunos-x64@0.25.1':
    optional: true
  '@esbuild/win32-arm64@0.25.1':
    optional: true
  '@esbuild/win32-ia32@0.25.1':
    optional: true
  '@esbuild/win32-x64@0.25.1':
    optional: true
  '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0(jiti@2.4.2))':
    dependencies:
      eslint: 9.22.0(jiti@2.4.2)
      eslint-visitor-keys: 3.4.3
  '@eslint-community/regexpp@4.12.1': {}
  '@eslint/config-array@0.19.2':
    dependencies:
      '@eslint/object-schema': 2.1.6
      debug: 4.4.0
      minimatch: 3.1.2
    transitivePeerDependencies:
      - supports-color
  '@eslint/config-helpers@0.1.0': {}
  '@eslint/core@0.12.0':
    dependencies:
      '@types/json-schema': 7.0.15
  '@eslint/eslintrc@3.3.0':
    dependencies:
      ajv: 6.12.6
      debug: 4.4.0
      espree: 10.3.0
      globals: 14.0.0
      ignore: 5.3.2
      import-fresh: 3.3.1
      js-yaml: 4.1.0
      minimatch: 3.1.2
      strip-json-comments: 3.1.1
    transitivePeerDependencies:
      - supports-color
  '@eslint/js@9.22.0': {}
  '@eslint/object-schema@2.1.6': {}
  '@eslint/plugin-kit@0.2.7':
    dependencies:
      '@eslint/core': 0.12.0
      levn: 0.4.1
  '@floating-ui/core@1.6.9':
    dependencies:
      '@floating-ui/utils': 0.2.9
  '@floating-ui/dom@1.6.13':
    dependencies:
      '@floating-ui/core': 1.6.9
      '@floating-ui/utils': 0.2.9
  '@floating-ui/utils@0.2.9': {}
  '@humanfs/core@0.19.1': {}
  '@humanfs/node@0.16.6':
    dependencies:
      '@humanfs/core': 0.19.1
      '@humanwhocodes/retry': 0.3.1
  '@humanwhocodes/module-importer@1.0.1': {}
  '@humanwhocodes/retry@0.3.1': {}
  '@humanwhocodes/retry@0.4.2': {}
  '@jridgewell/gen-mapping@0.3.8':
    dependencies:
      '@jridgewell/set-array': 1.2.1
      '@jridgewell/sourcemap-codec': 1.5.0
      '@jridgewell/trace-mapping': 0.3.25
  '@jridgewell/resolve-uri@3.1.2': {}
  '@jridgewell/set-array@1.2.1': {}
  '@jridgewell/sourcemap-codec@1.5.0': {}
  '@jridgewell/trace-mapping@0.3.25':
    dependencies:
      '@jridgewell/resolve-uri': 3.1.2
      '@jridgewell/sourcemap-codec': 1.5.0
  '@nodelib/fs.scandir@2.1.5':
    dependencies:
      '@nodelib/fs.stat': 2.0.5
      run-parallel: 1.2.0
  '@nodelib/fs.stat@2.0.5': {}
  '@nodelib/fs.walk@1.2.8':
    dependencies:
      '@nodelib/fs.scandir': 2.1.5
      fastq: 1.19.1
  '@pkgr/core@0.1.1': {}
  '@polka/url@1.0.0-next.28': {}
  '@rollup/pluginutils@5.1.4(rollup@4.35.0)':
    dependencies:
      '@types/estree': 1.0.6
      estree-walker: 2.0.2
      picomatch: 4.0.2
    optionalDependencies:
      rollup: 4.35.0
  '@rollup/rollup-android-arm-eabi@4.35.0':
    optional: true
  '@rollup/rollup-android-arm64@4.35.0':
    optional: true
  '@rollup/rollup-darwin-arm64@4.35.0':
    optional: true
  '@rollup/rollup-darwin-x64@4.35.0':
    optional: true
  '@rollup/rollup-freebsd-arm64@4.35.0':
    optional: true
  '@rollup/rollup-freebsd-x64@4.35.0':
    optional: true
  '@rollup/rollup-linux-arm-gnueabihf@4.35.0':
    optional: true
  '@rollup/rollup-linux-arm-musleabihf@4.35.0':
    optional: true
  '@rollup/rollup-linux-arm64-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-arm64-musl@4.35.0':
    optional: true
  '@rollup/rollup-linux-loongarch64-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-powerpc64le-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-riscv64-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-s390x-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-x64-gnu@4.35.0':
    optional: true
  '@rollup/rollup-linux-x64-musl@4.35.0':
    optional: true
  '@rollup/rollup-win32-arm64-msvc@4.35.0':
    optional: true
  '@rollup/rollup-win32-ia32-msvc@4.35.0':
    optional: true
  '@rollup/rollup-win32-x64-msvc@4.35.0':
    optional: true
  '@sec-ant/readable-stream@0.4.1': {}
  '@sindresorhus/merge-streams@4.0.0': {}
  '@sxzz/popperjs-es@2.11.7': {}
  '@tsconfig/node22@22.0.0': {}
  '@types/estree@1.0.6': {}
  '@types/json-schema@7.0.15': {}
  '@types/lodash-es@4.17.12':
    dependencies:
      '@types/lodash': 4.17.16
  '@types/lodash@4.17.16': {}
  '@types/node@22.13.10':
    dependencies:
      undici-types: 6.20.0
  '@types/nprogress@0.2.3': {}
  '@types/qs@6.9.18': {}
  '@types/web-bluetooth@0.0.16': {}
  '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
    dependencies:
      '@eslint-community/regexpp': 4.12.1
      '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@typescript-eslint/scope-manager': 8.26.1
      '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@typescript-eslint/visitor-keys': 8.26.1
      eslint: 9.22.0(jiti@2.4.2)
      graphemer: 1.4.0
      ignore: 5.3.2
      natural-compare: 1.4.0
      ts-api-utils: 2.0.1(typescript@5.8.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
    dependencies:
      '@typescript-eslint/scope-manager': 8.26.1
      '@typescript-eslint/types': 8.26.1
      '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
      '@typescript-eslint/visitor-keys': 8.26.1
      debug: 4.4.0
      eslint: 9.22.0(jiti@2.4.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@typescript-eslint/scope-manager@8.26.1':
    dependencies:
      '@typescript-eslint/types': 8.26.1
      '@typescript-eslint/visitor-keys': 8.26.1
  '@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
    dependencies:
      '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
      '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      debug: 4.4.0
      eslint: 9.22.0(jiti@2.4.2)
      ts-api-utils: 2.0.1(typescript@5.8.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@typescript-eslint/types@8.26.1': {}
  '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)':
    dependencies:
      '@typescript-eslint/types': 8.26.1
      '@typescript-eslint/visitor-keys': 8.26.1
      debug: 4.4.0
      fast-glob: 3.3.3
      is-glob: 4.0.3
      minimatch: 9.0.5
      semver: 7.7.1
      ts-api-utils: 2.0.1(typescript@5.8.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
    dependencies:
      '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2))
      '@typescript-eslint/scope-manager': 8.26.1
      '@typescript-eslint/types': 8.26.1
      '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
      eslint: 9.22.0(jiti@2.4.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@typescript-eslint/visitor-keys@8.26.1':
    dependencies:
      '@typescript-eslint/types': 8.26.1
      eslint-visitor-keys: 4.2.0
  '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10)
      '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10)
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
      vue: 3.5.13(typescript@5.8.2)
    transitivePeerDependencies:
      - supports-color
  '@vitejs/plugin-vue@5.2.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
      vue: 3.5.13(typescript@5.8.2)
  '@volar/language-core@2.4.12':
    dependencies:
      '@volar/source-map': 2.4.12
  '@volar/source-map@2.4.12': {}
  '@volar/typescript@2.4.12':
    dependencies:
      '@volar/language-core': 2.4.12
      path-browserify: 1.0.1
      vscode-uri: 3.1.0
  '@vue/babel-helper-vue-transform-on@1.4.0': {}
  '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.26.10)':
    dependencies:
      '@babel/helper-module-imports': 7.25.9
      '@babel/helper-plugin-utils': 7.26.5
      '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10)
      '@babel/template': 7.26.9
      '@babel/traverse': 7.26.10
      '@babel/types': 7.26.10
      '@vue/babel-helper-vue-transform-on': 1.4.0
      '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.26.10)
      '@vue/shared': 3.5.13
    optionalDependencies:
      '@babel/core': 7.26.10
    transitivePeerDependencies:
      - supports-color
  '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.26.10)':
    dependencies:
      '@babel/code-frame': 7.26.2
      '@babel/core': 7.26.10
      '@babel/helper-module-imports': 7.25.9
      '@babel/helper-plugin-utils': 7.26.5
      '@babel/parser': 7.26.10
      '@vue/compiler-sfc': 3.5.13
    transitivePeerDependencies:
      - supports-color
  '@vue/compiler-core@3.5.13':
    dependencies:
      '@babel/parser': 7.26.10
      '@vue/shared': 3.5.13
      entities: 4.5.0
      estree-walker: 2.0.2
      source-map-js: 1.2.1
  '@vue/compiler-dom@3.5.13':
    dependencies:
      '@vue/compiler-core': 3.5.13
      '@vue/shared': 3.5.13
  '@vue/compiler-sfc@3.5.13':
    dependencies:
      '@babel/parser': 7.26.10
      '@vue/compiler-core': 3.5.13
      '@vue/compiler-dom': 3.5.13
      '@vue/compiler-ssr': 3.5.13
      '@vue/shared': 3.5.13
      estree-walker: 2.0.2
      magic-string: 0.30.17
      postcss: 8.5.3
      source-map-js: 1.2.1
  '@vue/compiler-ssr@3.5.13':
    dependencies:
      '@vue/compiler-dom': 3.5.13
      '@vue/shared': 3.5.13
  '@vue/compiler-vue2@2.7.16':
    dependencies:
      de-indent: 1.0.2
      he: 1.2.0
  '@vue/devtools-api@6.6.4': {}
  '@vue/devtools-api@7.7.2':
    dependencies:
      '@vue/devtools-kit': 7.7.2
  '@vue/devtools-core@7.7.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      '@vue/devtools-kit': 7.7.2
      '@vue/devtools-shared': 7.7.2
      mitt: 3.0.1
      nanoid: 5.1.4
      pathe: 2.0.3
      vite-hot-client: 0.2.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))
      vue: 3.5.13(typescript@5.8.2)
    transitivePeerDependencies:
      - vite
  '@vue/devtools-kit@7.7.2':
    dependencies:
      '@vue/devtools-shared': 7.7.2
      birpc: 0.2.19
      hookable: 5.5.3
      mitt: 3.0.1
      perfect-debounce: 1.0.0
      speakingurl: 14.0.1
      superjson: 2.2.2
  '@vue/devtools-shared@7.7.2':
    dependencies:
      rfdc: 1.4.1
  '@vue/eslint-config-prettier@10.2.0(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3)':
    dependencies:
      eslint: 9.22.0(jiti@2.4.2)
      eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.2))
      eslint-plugin-prettier: 5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3)
      prettier: 3.5.3
    transitivePeerDependencies:
      - '@types/eslint'
  '@vue/eslint-config-typescript@14.5.0(eslint-plugin-vue@10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2))))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
    dependencies:
      '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      eslint: 9.22.0(jiti@2.4.2)
      eslint-plugin-vue: 10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2)))
      fast-glob: 3.3.3
      typescript-eslint: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      vue-eslint-parser: 10.1.1(eslint@9.22.0(jiti@2.4.2))
    optionalDependencies:
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  '@vue/language-core@2.2.8(typescript@5.8.2)':
    dependencies:
      '@volar/language-core': 2.4.12
      '@vue/compiler-dom': 3.5.13
      '@vue/compiler-vue2': 2.7.16
      '@vue/shared': 3.5.13
      alien-signals: 1.0.4
      minimatch: 9.0.5
      muggle-string: 0.4.1
      path-browserify: 1.0.1
    optionalDependencies:
      typescript: 5.8.2
  '@vue/reactivity@3.5.13':
    dependencies:
      '@vue/shared': 3.5.13
  '@vue/runtime-core@3.5.13':
    dependencies:
      '@vue/reactivity': 3.5.13
      '@vue/shared': 3.5.13
  '@vue/runtime-dom@3.5.13':
    dependencies:
      '@vue/reactivity': 3.5.13
      '@vue/runtime-core': 3.5.13
      '@vue/shared': 3.5.13
      csstype: 3.1.3
  '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      '@vue/compiler-ssr': 3.5.13
      '@vue/shared': 3.5.13
      vue: 3.5.13(typescript@5.8.2)
  '@vue/shared@3.5.13': {}
  '@vue/tsconfig@0.7.0(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))':
    optionalDependencies:
      typescript: 5.8.2
      vue: 3.5.13(typescript@5.8.2)
  '@vueuse/core@9.13.0(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      '@types/web-bluetooth': 0.0.16
      '@vueuse/metadata': 9.13.0
      '@vueuse/shared': 9.13.0(vue@3.5.13(typescript@5.8.2))
      vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
    transitivePeerDependencies:
      - '@vue/composition-api'
      - vue
  '@vueuse/metadata@9.13.0': {}
  '@vueuse/shared@9.13.0(vue@3.5.13(typescript@5.8.2))':
    dependencies:
      vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
    transitivePeerDependencies:
      - '@vue/composition-api'
      - vue
  acorn-jsx@5.3.2(acorn@8.14.1):
    dependencies:
      acorn: 8.14.1
  acorn@8.14.1: {}
  ajv@6.12.6:
    dependencies:
      fast-deep-equal: 3.1.3
      fast-json-stable-stringify: 2.1.0
      json-schema-traverse: 0.4.1
      uri-js: 4.4.1
  alien-signals@1.0.4: {}
  ansi-styles@4.3.0:
    dependencies:
      color-convert: 2.0.1
  ansi-styles@6.2.1: {}
  argparse@2.0.1: {}
  async-validator@4.2.5: {}
  asynckit@0.4.0: {}
  axios@1.8.3:
    dependencies:
      follow-redirects: 1.15.9
      form-data: 4.0.2
      proxy-from-env: 1.1.0
    transitivePeerDependencies:
      - debug
  balanced-match@1.0.2: {}
  birpc@0.2.19: {}
  boolbase@1.0.0: {}
  brace-expansion@1.1.11:
    dependencies:
      balanced-match: 1.0.2
      concat-map: 0.0.1
  brace-expansion@2.0.1:
    dependencies:
      balanced-match: 1.0.2
  braces@3.0.3:
    dependencies:
      fill-range: 7.1.1
  browserslist@4.24.4:
    dependencies:
      caniuse-lite: 1.0.30001705
      electron-to-chromium: 1.5.119
      node-releases: 2.0.19
      update-browserslist-db: 1.1.3(browserslist@4.24.4)
  bundle-name@4.1.0:
    dependencies:
      run-applescript: 7.0.0
  call-bind-apply-helpers@1.0.2:
    dependencies:
      es-errors: 1.3.0
      function-bind: 1.1.2
  call-bound@1.0.4:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      get-intrinsic: 1.3.0
  callsites@3.1.0: {}
  caniuse-lite@1.0.30001705: {}
  chalk@4.1.2:
    dependencies:
      ansi-styles: 4.3.0
      supports-color: 7.2.0
  color-convert@2.0.1:
    dependencies:
      color-name: 1.1.4
  color-name@1.1.4: {}
  combined-stream@1.0.8:
    dependencies:
      delayed-stream: 1.0.0
  concat-map@0.0.1: {}
  convert-source-map@2.0.0: {}
  copy-anything@3.0.5:
    dependencies:
      is-what: 4.1.16
  cross-spawn@7.0.6:
    dependencies:
      path-key: 3.1.1
      shebang-command: 2.0.0
      which: 2.0.2
  cssesc@3.0.0: {}
  csstype@3.1.3: {}
  dayjs@1.11.13: {}
  de-indent@1.0.2: {}
  debug@4.4.0:
    dependencies:
      ms: 2.1.3
  deep-is@0.1.4: {}
  default-browser-id@5.0.0: {}
  default-browser@5.2.1:
    dependencies:
      bundle-name: 4.1.0
      default-browser-id: 5.0.0
  define-lazy-prop@3.0.0: {}
  delayed-stream@1.0.0: {}
  dunder-proto@1.0.1:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-errors: 1.3.0
      gopd: 1.2.0
  electron-to-chromium@1.5.119: {}
  element-plus@2.9.6(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      '@ctrl/tinycolor': 3.6.1
      '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2))
      '@floating-ui/dom': 1.6.13
      '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
      '@types/lodash': 4.17.16
      '@types/lodash-es': 4.17.12
      '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.8.2))
      async-validator: 4.2.5
      dayjs: 1.11.13
      escape-html: 1.0.3
      lodash: 4.17.21
      lodash-es: 4.17.21
      lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21)
      memoize-one: 6.0.0
      normalize-wheel-es: 1.2.0
      vue: 3.5.13(typescript@5.8.2)
    transitivePeerDependencies:
      - '@vue/composition-api'
  entities@4.5.0: {}
  error-stack-parser-es@0.1.5: {}
  es-define-property@1.0.1: {}
  es-errors@1.3.0: {}
  es-object-atoms@1.1.1:
    dependencies:
      es-errors: 1.3.0
  es-set-tostringtag@2.1.0:
    dependencies:
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      has-tostringtag: 1.0.2
      hasown: 2.0.2
  esbuild@0.25.1:
    optionalDependencies:
      '@esbuild/aix-ppc64': 0.25.1
      '@esbuild/android-arm': 0.25.1
      '@esbuild/android-arm64': 0.25.1
      '@esbuild/android-x64': 0.25.1
      '@esbuild/darwin-arm64': 0.25.1
      '@esbuild/darwin-x64': 0.25.1
      '@esbuild/freebsd-arm64': 0.25.1
      '@esbuild/freebsd-x64': 0.25.1
      '@esbuild/linux-arm': 0.25.1
      '@esbuild/linux-arm64': 0.25.1
      '@esbuild/linux-ia32': 0.25.1
      '@esbuild/linux-loong64': 0.25.1
      '@esbuild/linux-mips64el': 0.25.1
      '@esbuild/linux-ppc64': 0.25.1
      '@esbuild/linux-riscv64': 0.25.1
      '@esbuild/linux-s390x': 0.25.1
      '@esbuild/linux-x64': 0.25.1
      '@esbuild/netbsd-arm64': 0.25.1
      '@esbuild/netbsd-x64': 0.25.1
      '@esbuild/openbsd-arm64': 0.25.1
      '@esbuild/openbsd-x64': 0.25.1
      '@esbuild/sunos-x64': 0.25.1
      '@esbuild/win32-arm64': 0.25.1
      '@esbuild/win32-ia32': 0.25.1
      '@esbuild/win32-x64': 0.25.1
  escalade@3.2.0: {}
  escape-html@1.0.3: {}
  escape-string-regexp@4.0.0: {}
  eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)):
    dependencies:
      eslint: 9.22.0(jiti@2.4.2)
  eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.1.1(eslint@9.22.0(jiti@2.4.2)))(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3):
    dependencies:
      eslint: 9.22.0(jiti@2.4.2)
      prettier: 3.5.3
      prettier-linter-helpers: 1.0.0
      synckit: 0.9.2
    optionalDependencies:
      eslint-config-prettier: 10.1.1(eslint@9.22.0(jiti@2.4.2))
  eslint-plugin-vue@10.0.0(eslint@9.22.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2))):
    dependencies:
      '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2))
      eslint: 9.22.0(jiti@2.4.2)
      natural-compare: 1.4.0
      nth-check: 2.1.1
      postcss-selector-parser: 6.1.2
      semver: 7.7.1
      vue-eslint-parser: 10.1.1(eslint@9.22.0(jiti@2.4.2))
      xml-name-validator: 4.0.0
  eslint-scope@8.3.0:
    dependencies:
      esrecurse: 4.3.0
      estraverse: 5.3.0
  eslint-visitor-keys@3.4.3: {}
  eslint-visitor-keys@4.2.0: {}
  eslint@9.22.0(jiti@2.4.2):
    dependencies:
      '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2))
      '@eslint-community/regexpp': 4.12.1
      '@eslint/config-array': 0.19.2
      '@eslint/config-helpers': 0.1.0
      '@eslint/core': 0.12.0
      '@eslint/eslintrc': 3.3.0
      '@eslint/js': 9.22.0
      '@eslint/plugin-kit': 0.2.7
      '@humanfs/node': 0.16.6
      '@humanwhocodes/module-importer': 1.0.1
      '@humanwhocodes/retry': 0.4.2
      '@types/estree': 1.0.6
      '@types/json-schema': 7.0.15
      ajv: 6.12.6
      chalk: 4.1.2
      cross-spawn: 7.0.6
      debug: 4.4.0
      escape-string-regexp: 4.0.0
      eslint-scope: 8.3.0
      eslint-visitor-keys: 4.2.0
      espree: 10.3.0
      esquery: 1.6.0
      esutils: 2.0.3
      fast-deep-equal: 3.1.3
      file-entry-cache: 8.0.0
      find-up: 5.0.0
      glob-parent: 6.0.2
      ignore: 5.3.2
      imurmurhash: 0.1.4
      is-glob: 4.0.3
      json-stable-stringify-without-jsonify: 1.0.1
      lodash.merge: 4.6.2
      minimatch: 3.1.2
      natural-compare: 1.4.0
      optionator: 0.9.4
    optionalDependencies:
      jiti: 2.4.2
    transitivePeerDependencies:
      - supports-color
  espree@10.3.0:
    dependencies:
      acorn: 8.14.1
      acorn-jsx: 5.3.2(acorn@8.14.1)
      eslint-visitor-keys: 4.2.0
  esquery@1.6.0:
    dependencies:
      estraverse: 5.3.0
  esrecurse@4.3.0:
    dependencies:
      estraverse: 5.3.0
  estraverse@5.3.0: {}
  estree-walker@2.0.2: {}
  esutils@2.0.3: {}
  execa@9.5.2:
    dependencies:
      '@sindresorhus/merge-streams': 4.0.0
      cross-spawn: 7.0.6
      figures: 6.1.0
      get-stream: 9.0.1
      human-signals: 8.0.0
      is-plain-obj: 4.1.0
      is-stream: 4.0.1
      npm-run-path: 6.0.0
      pretty-ms: 9.2.0
      signal-exit: 4.1.0
      strip-final-newline: 4.0.0
      yoctocolors: 2.1.1
  fast-deep-equal@3.1.3: {}
  fast-diff@1.3.0: {}
  fast-glob@3.3.3:
    dependencies:
      '@nodelib/fs.stat': 2.0.5
      '@nodelib/fs.walk': 1.2.8
      glob-parent: 5.1.2
      merge2: 1.4.1
      micromatch: 4.0.8
  fast-json-stable-stringify@2.1.0: {}
  fast-levenshtein@2.0.6: {}
  fastq@1.19.1:
    dependencies:
      reusify: 1.1.0
  figures@6.1.0:
    dependencies:
      is-unicode-supported: 2.1.0
  file-entry-cache@8.0.0:
    dependencies:
      flat-cache: 4.0.1
  fill-range@7.1.1:
    dependencies:
      to-regex-range: 5.0.1
  find-up@5.0.0:
    dependencies:
      locate-path: 6.0.0
      path-exists: 4.0.0
  flat-cache@4.0.1:
    dependencies:
      flatted: 3.3.3
      keyv: 4.5.4
  flatted@3.3.3: {}
  follow-redirects@1.15.9: {}
  form-data@4.0.2:
    dependencies:
      asynckit: 0.4.0
      combined-stream: 1.0.8
      es-set-tostringtag: 2.1.0
      mime-types: 2.1.35
  fs-extra@11.3.0:
    dependencies:
      graceful-fs: 4.2.11
      jsonfile: 6.1.0
      universalify: 2.0.1
  fsevents@2.3.3:
    optional: true
  function-bind@1.1.2: {}
  gensync@1.0.0-beta.2: {}
  get-intrinsic@1.3.0:
    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
  get-proto@1.0.1:
    dependencies:
      dunder-proto: 1.0.1
      es-object-atoms: 1.1.1
  get-stream@9.0.1:
    dependencies:
      '@sec-ant/readable-stream': 0.4.1
      is-stream: 4.0.1
  glob-parent@5.1.2:
    dependencies:
      is-glob: 4.0.3
  glob-parent@6.0.2:
    dependencies:
      is-glob: 4.0.3
  globals@11.12.0: {}
  globals@14.0.0: {}
  gopd@1.2.0: {}
  graceful-fs@4.2.11: {}
  graphemer@1.4.0: {}
  has-flag@4.0.0: {}
  has-symbols@1.1.0: {}
  has-tostringtag@1.0.2:
    dependencies:
      has-symbols: 1.1.0
  hasown@2.0.2:
    dependencies:
      function-bind: 1.1.2
  he@1.2.0: {}
  hookable@5.5.3: {}
  human-signals@8.0.0: {}
  ignore@5.3.2: {}
  import-fresh@3.3.1:
    dependencies:
      parent-module: 1.0.1
      resolve-from: 4.0.0
  imurmurhash@0.1.4: {}
  is-docker@3.0.0: {}
  is-extglob@2.1.1: {}
  is-glob@4.0.3:
    dependencies:
      is-extglob: 2.1.1
  is-inside-container@1.0.0:
    dependencies:
      is-docker: 3.0.0
  is-number@7.0.0: {}
  is-plain-obj@4.1.0: {}
  is-stream@4.0.1: {}
  is-unicode-supported@2.1.0: {}
  is-what@4.1.16: {}
  is-wsl@3.1.0:
    dependencies:
      is-inside-container: 1.0.0
  isexe@2.0.0: {}
  isexe@3.1.1: {}
  jiti@2.4.2: {}
  js-tokens@4.0.0: {}
  js-yaml@4.1.0:
    dependencies:
      argparse: 2.0.1
  jsesc@3.1.0: {}
  json-buffer@3.0.1: {}
  json-parse-even-better-errors@4.0.0: {}
  json-schema-traverse@0.4.1: {}
  json-stable-stringify-without-jsonify@1.0.1: {}
  json5@2.2.3: {}
  jsonfile@6.1.0:
    dependencies:
      universalify: 2.0.1
    optionalDependencies:
      graceful-fs: 4.2.11
  keyv@4.5.4:
    dependencies:
      json-buffer: 3.0.1
  kolorist@1.8.0: {}
  levn@0.4.1:
    dependencies:
      prelude-ls: 1.2.1
      type-check: 0.4.0
  locate-path@6.0.0:
    dependencies:
      p-locate: 5.0.0
  lodash-es@4.17.21: {}
  lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21):
    dependencies:
      '@types/lodash-es': 4.17.12
      lodash: 4.17.21
      lodash-es: 4.17.21
  lodash.merge@4.6.2: {}
  lodash@4.17.21: {}
  lru-cache@5.1.1:
    dependencies:
      yallist: 3.1.1
  magic-string@0.30.17:
    dependencies:
      '@jridgewell/sourcemap-codec': 1.5.0
  math-intrinsics@1.1.0: {}
  memoize-one@6.0.0: {}
  memorystream@0.3.1: {}
  merge2@1.4.1: {}
  micromatch@4.0.8:
    dependencies:
      braces: 3.0.3
      picomatch: 2.3.1
  mime-db@1.52.0: {}
  mime-types@2.1.35:
    dependencies:
      mime-db: 1.52.0
  minimatch@3.1.2:
    dependencies:
      brace-expansion: 1.1.11
  minimatch@9.0.5:
    dependencies:
      brace-expansion: 2.0.1
  mitt@3.0.1: {}
  moment@2.30.1: {}
  mrmime@2.0.1: {}
  ms@2.1.3: {}
  muggle-string@0.4.1: {}
  nanoid@3.3.10: {}
  nanoid@5.1.4: {}
  natural-compare@1.4.0: {}
  node-releases@2.0.19: {}
  normalize-wheel-es@1.2.0: {}
  npm-normalize-package-bin@4.0.0: {}
  npm-run-all2@7.0.2:
    dependencies:
      ansi-styles: 6.2.1
      cross-spawn: 7.0.6
      memorystream: 0.3.1
      minimatch: 9.0.5
      pidtree: 0.6.0
      read-package-json-fast: 4.0.0
      shell-quote: 1.8.2
      which: 5.0.0
  npm-run-path@6.0.0:
    dependencies:
      path-key: 4.0.0
      unicorn-magic: 0.3.0
  nth-check@2.1.1:
    dependencies:
      boolbase: 1.0.0
  object-inspect@1.13.4: {}
  open@10.1.0:
    dependencies:
      default-browser: 5.2.1
      define-lazy-prop: 3.0.0
      is-inside-container: 1.0.0
      is-wsl: 3.1.0
  optionator@0.9.4:
    dependencies:
      deep-is: 0.1.4
      fast-levenshtein: 2.0.6
      levn: 0.4.1
      prelude-ls: 1.2.1
      type-check: 0.4.0
      word-wrap: 1.2.5
  p-limit@3.1.0:
    dependencies:
      yocto-queue: 0.1.0
  p-locate@5.0.0:
    dependencies:
      p-limit: 3.1.0
  parent-module@1.0.1:
    dependencies:
      callsites: 3.1.0
  parse-ms@4.0.0: {}
  path-browserify@1.0.1: {}
  path-exists@4.0.0: {}
  path-key@3.1.1: {}
  path-key@4.0.0: {}
  pathe@2.0.3: {}
  perfect-debounce@1.0.0: {}
  picocolors@1.1.1: {}
  picomatch@2.3.1: {}
  picomatch@4.0.2: {}
  pidtree@0.6.0: {}
  pinia@3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      '@vue/devtools-api': 7.7.2
      vue: 3.5.13(typescript@5.8.2)
    optionalDependencies:
      typescript: 5.8.2
  plus-pro-components@0.1.21(element-plus@2.9.6(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2))
      element-plus: 2.9.6(vue@3.5.13(typescript@5.8.2))
      lodash-es: 4.17.21
      sortablejs: 1.15.6
      vue: 3.5.13(typescript@5.8.2)
  postcss-selector-parser@6.1.2:
    dependencies:
      cssesc: 3.0.0
      util-deprecate: 1.0.2
  postcss@8.5.3:
    dependencies:
      nanoid: 3.3.10
      picocolors: 1.1.1
      source-map-js: 1.2.1
  prelude-ls@1.2.1: {}
  prettier-linter-helpers@1.0.0:
    dependencies:
      fast-diff: 1.3.0
  prettier@3.5.3: {}
  pretty-ms@9.2.0:
    dependencies:
      parse-ms: 4.0.0
  proxy-from-env@1.1.0: {}
  punycode@2.3.1: {}
  qs@6.14.0:
    dependencies:
      side-channel: 1.1.0
  queue-microtask@1.2.3: {}
  read-package-json-fast@4.0.0:
    dependencies:
      json-parse-even-better-errors: 4.0.0
      npm-normalize-package-bin: 4.0.0
  resolve-from@4.0.0: {}
  reusify@1.1.0: {}
  rfdc@1.4.1: {}
  rollup@4.35.0:
    dependencies:
      '@types/estree': 1.0.6
    optionalDependencies:
      '@rollup/rollup-android-arm-eabi': 4.35.0
      '@rollup/rollup-android-arm64': 4.35.0
      '@rollup/rollup-darwin-arm64': 4.35.0
      '@rollup/rollup-darwin-x64': 4.35.0
      '@rollup/rollup-freebsd-arm64': 4.35.0
      '@rollup/rollup-freebsd-x64': 4.35.0
      '@rollup/rollup-linux-arm-gnueabihf': 4.35.0
      '@rollup/rollup-linux-arm-musleabihf': 4.35.0
      '@rollup/rollup-linux-arm64-gnu': 4.35.0
      '@rollup/rollup-linux-arm64-musl': 4.35.0
      '@rollup/rollup-linux-loongarch64-gnu': 4.35.0
      '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0
      '@rollup/rollup-linux-riscv64-gnu': 4.35.0
      '@rollup/rollup-linux-s390x-gnu': 4.35.0
      '@rollup/rollup-linux-x64-gnu': 4.35.0
      '@rollup/rollup-linux-x64-musl': 4.35.0
      '@rollup/rollup-win32-arm64-msvc': 4.35.0
      '@rollup/rollup-win32-ia32-msvc': 4.35.0
      '@rollup/rollup-win32-x64-msvc': 4.35.0
      fsevents: 2.3.3
  run-applescript@7.0.0: {}
  run-parallel@1.2.0:
    dependencies:
      queue-microtask: 1.2.3
  semver@6.3.1: {}
  semver@7.7.1: {}
  shebang-command@2.0.0:
    dependencies:
      shebang-regex: 3.0.0
  shebang-regex@3.0.0: {}
  shell-quote@1.8.2: {}
  side-channel-list@1.0.0:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4
  side-channel-map@1.0.1:
    dependencies:
      call-bound: 1.0.4
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4
  side-channel-weakmap@1.0.2:
    dependencies:
      call-bound: 1.0.4
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4
      side-channel-map: 1.0.1
  side-channel@1.1.0:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4
      side-channel-list: 1.0.0
      side-channel-map: 1.0.1
      side-channel-weakmap: 1.0.2
  signal-exit@4.1.0: {}
  sirv@3.0.1:
    dependencies:
      '@polka/url': 1.0.0-next.28
      mrmime: 2.0.1
      totalist: 3.0.1
  sortablejs@1.15.6: {}
  source-map-js@1.2.1: {}
  speakingurl@14.0.1: {}
  strip-final-newline@4.0.0: {}
  strip-json-comments@3.1.1: {}
  superjson@2.2.2:
    dependencies:
      copy-anything: 3.0.5
  supports-color@7.2.0:
    dependencies:
      has-flag: 4.0.0
  synckit@0.9.2:
    dependencies:
      '@pkgr/core': 0.1.1
      tslib: 2.8.1
  to-regex-range@5.0.1:
    dependencies:
      is-number: 7.0.0
  totalist@3.0.1: {}
  ts-api-utils@2.0.1(typescript@5.8.2):
    dependencies:
      typescript: 5.8.2
  tslib@2.8.1: {}
  type-check@0.4.0:
    dependencies:
      prelude-ls: 1.2.1
  typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
    dependencies:
      '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
      eslint: 9.22.0(jiti@2.4.2)
      typescript: 5.8.2
    transitivePeerDependencies:
      - supports-color
  typescript@5.8.2: {}
  undici-types@6.20.0: {}
  unicorn-magic@0.3.0: {}
  universalify@2.0.1: {}
  update-browserslist-db@1.1.3(browserslist@4.24.4):
    dependencies:
      browserslist: 4.24.4
      escalade: 3.2.0
      picocolors: 1.1.1
  uri-js@4.4.1:
    dependencies:
      punycode: 2.3.1
  util-deprecate@1.0.2: {}
  vite-hot-client@0.2.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)):
    dependencies:
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
  vite-plugin-inspect@0.8.9(rollup@4.35.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)):
    dependencies:
      '@antfu/utils': 0.7.10
      '@rollup/pluginutils': 5.1.4(rollup@4.35.0)
      debug: 4.4.0
      error-stack-parser-es: 0.1.5
      fs-extra: 11.3.0
      open: 10.1.0
      perfect-debounce: 1.0.0
      picocolors: 1.1.1
      sirv: 3.0.1
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
    transitivePeerDependencies:
      - rollup
      - supports-color
  vite-plugin-vue-devtools@7.7.2(rollup@4.35.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      '@vue/devtools-core': 7.7.2(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))(vue@3.5.13(typescript@5.8.2))
      '@vue/devtools-kit': 7.7.2
      '@vue/devtools-shared': 7.7.2
      execa: 9.5.2
      sirv: 3.0.1
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
      vite-plugin-inspect: 0.8.9(rollup@4.35.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))
      vite-plugin-vue-inspector: 5.3.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2))
    transitivePeerDependencies:
      - '@nuxt/kit'
      - rollup
      - supports-color
      - vue
  vite-plugin-vue-inspector@5.3.1(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)):
    dependencies:
      '@babel/core': 7.26.10
      '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10)
      '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10)
      '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10)
      '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10)
      '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10)
      '@vue/compiler-dom': 3.5.13
      kolorist: 1.8.0
      magic-string: 0.30.17
      vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)
    transitivePeerDependencies:
      - supports-color
  vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2):
    dependencies:
      esbuild: 0.25.1
      postcss: 8.5.3
      rollup: 4.35.0
    optionalDependencies:
      '@types/node': 22.13.10
      fsevents: 2.3.3
      jiti: 2.4.2
  vscode-uri@3.1.0: {}
  vue-demi@0.14.10(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      vue: 3.5.13(typescript@5.8.2)
  vue-eslint-parser@10.1.1(eslint@9.22.0(jiti@2.4.2)):
    dependencies:
      debug: 4.4.0
      eslint: 9.22.0(jiti@2.4.2)
      eslint-scope: 8.3.0
      eslint-visitor-keys: 4.2.0
      espree: 10.3.0
      esquery: 1.6.0
      lodash: 4.17.21
      semver: 7.7.1
    transitivePeerDependencies:
      - supports-color
  vue-router@4.5.0(vue@3.5.13(typescript@5.8.2)):
    dependencies:
      '@vue/devtools-api': 6.6.4
      vue: 3.5.13(typescript@5.8.2)
  vue-tsc@2.2.8(typescript@5.8.2):
    dependencies:
      '@volar/typescript': 2.4.12
      '@vue/language-core': 2.2.8(typescript@5.8.2)
      typescript: 5.8.2
  vue@3.5.13(typescript@5.8.2):
    dependencies:
      '@vue/compiler-dom': 3.5.13
      '@vue/compiler-sfc': 3.5.13
      '@vue/runtime-dom': 3.5.13
      '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.2))
      '@vue/shared': 3.5.13
    optionalDependencies:
      typescript: 5.8.2
  which@2.0.2:
    dependencies:
      isexe: 2.0.0
  which@5.0.0:
    dependencies:
      isexe: 3.1.1
  word-wrap@1.2.5: {}
  xml-name-validator@4.0.0: {}
  yallist@3.1.1: {}
  yocto-queue@0.1.0: {}
  yoctocolors@2.1.1: {}
AdminwebPages/adminpageView/public/favicon.ico
AdminwebPages/adminpageView/src/Api/EzApiBaseTypes.d.ts
New file
@@ -0,0 +1,112 @@
/*
 * @FilePath: EzApiBaseTypes.d.ts
 * @Author: 小飞侠
 * @Date: 2024-04-15 15:31:08
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-02-06 12:53:28
 * Copyright: 2024  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
 */
/**
 * 通用返回定义
 */
export interface EzResult<T> {
  /** 成EzCoreResult功状态 */
  code: number;
  /** 标准状态 */
  statusCode?: number | null;
  /** 是否成功 */
  success?: boolean;
  data?: T | null;
  /** 错误消息 */
  error?: any | null;
  /** 消息 */
  message: string | null;
  /** 附加值 */
  extras?: any | null;
  /** 时间戳 */
  timestamp: number | null;
}
/**
 * 类型基础,主要是定义创建人创建时间修改人修改时间,已经删除标志
 */
export interface EzBaseModel {
  /**
   * 创建人
   */
  createBy?: string | null;
  /**
   * 创建时间
   */
  createTime?: Date | null;
  /**
   * 修改时间
   */
  upDataTime?: Date | null;
  /**
   * 修改人
   */
  upDataBy?: string | null;
  /**
   * 删除标志
   */
  isDeleted?: boolean;
  /** 是否有效 */
  isEN?: boolean;
  /**
   * 排序
   */
  sort?: number | null;
}
/** 页面搜索基类 */
export interface EzPageModel {
  /** 页面号*/
  pageIndex: number;
  /** 每页行好设置 */
  pageSize: number;
  /** 总行数 */
  totalCount?: number;
}
/**boolean类型返回通用定义 */
export interface BoolResult extends EzResult<boolean> {}
/**boolean类型返回通用定义 */
export interface StringResult extends EzResult<string> {}
/** 区域坐标集合 */
export interface ZoneInfo {
  /**  区域坐标表集合  */
  coords: Array<GeoCoordinate>;
  /** 中心点坐标 */
  centrecoord?: GeoCoordinate;
  /** 地址 */
  address?: string;
  /** id */
  id?: string;
}
/** 经纬度坐标 */
export interface GeoCoordinate {
  /** 纬度 */
  latitude: number;
  /** 经度 */
  longitude: number;
}
/** 枚举属性列表类型 */
export interface EmunPrList {
  /** key */
  key?: string;
  /** 值 */
  value?: number;
  /** 描述 */
  description?: string;
}
/**通用枚举返回属性 */
export interface EmunPrResult extends EzResult<EmunPrList[]> {}
/** 排序枚举 */
export interface EzSort {
  prop: string;
  order: string; // 'asc' 或 'desc'
}
AdminwebPages/adminpageView/src/Api/apis.ts
New file
@@ -0,0 +1,220 @@
import type { EzResult } from "./EzApiBaseTypes";
import axios from "axios";
  /** 获取DFlFunInfo列表 */
  export const GetTransferOrder=(data:Request) => {
    return axios.post<EzResult<RetPageDataWeChatTransferOrder>>("https://yocaisim.51zhengcai.com/api/UserTransfer/GetTransferOrder", data);
  };
/**
 * SSPageByWhereOrder,根据where查询条件和order排序获取列表
 */
export interface Request {
  order?: SSOrder;
  page?: PageModel;
  /**
   * 判断条件 必须是json格式的字符串{xxx:ddd}
   */
  where?: object | string;
}
/**
* SSOrder,排序方式
*/
export interface SSOrder {
  des?: OrderByType;
  /**
   * 属性名称
   */
  name?: null | string;
}
/**
* OrderByType
*/
export enum OrderByType {
  Asc = "Asc",
  Desc = "Desc",
}
/**
* PageModel
*/
export interface PageModel {
  pageIndex?: number;
  pageSize?: number;
  totalCount?: number;
}
/**
* RetPageData_WeChatTransferOrder,通用返回参数
*/
export interface RetPageDataWeChatTransferOrder {
  /**
   * 数据
   */
  data?: WeChatTransferOrder[] | null;
  page?: PageModel;
}
/**
* WeChatTransferOrder,转账单账模型
*/
export interface WeChatTransferOrder {
  /**
   * 重新支付订单列表
   */
  agWeChatTransferOrders?: WeChatTransferOrder[] | null;
  /**
   * 获取或设置微信批次单号。
   */
  batchId?: null | string;
  /**
   * 获取或设置批次的名称。
   * 示例: "2019年1月深圳分部报销单"
   */
  batchName?: null | string;
  /**
   * 获取或设置批次的备注。
   * 示例: "2019年1月深圳分部报销单"
   */
  batchRemark?: null | string;
  /**
   * 获取或设置批次状态。
   */
  batchStatus?: null | string;
  /**
   * 获取或设置关闭批次的原因。
   * 示例: "OVERDUE_CLOSE"
   */
  closeReason?: null | string;
  /**
   * 创建人
   */
  createBy?: null | string;
  /**
   * 创建时间
   */
  createTime?: Date | null;
  /**
   * 错误标识
   */
  errorCode?: null | string;
  /**
   * 错误消息
   */
  errorMsg?: null | string;
  /**
   * 获取或设置批次中的失败总金额。
   * 示例: 100000
   */
  failAmount?: number | null;
  /**
   * 获取或设置批次中的失败项目数。
   * 示例: 1
   */
  failNum?: number | null;
  /**
   * ID
   */
  id?: number;
  /**
   * 是否删除
   */
  isDeleted?: boolean;
  /**
   * 是否有效
   */
  isEn?: boolean;
  /**
   * 是否已经完成处理  默认未处理
   */
  isSetOK?: boolean;
  /**
   * 获取或设置商户批次单号。
   */
  outBatchNumber?: null | string;
  /**
   * 标注
   */
  remake?: null | string;
  /**
   * 再次发起时 的描述
   */
  remakeDes?: null | string;
  /**
   * 排序
   */
  sort?: number | null;
  /**
   * 获取或设置批次中的成功总金额。
   * 示例: 3900000
   */
  successAmount?: number | null;
  /**
   * 获取或设置批次中的成功项目数。
   * 示例: 199
   */
  successNum?: number | null;
  /**
   * 租户
   */
  tenantID?: number | null;
  /**
   * 获取或设置批次中的总金额。
   * 示例: 4000000
   */
  totalAmount?: number | null;
  /**
   * 获取或设置批次中的项目总数。
   * 示例: 200
   */
  totalNum?: number | null;
  /**
   * 获取或设置转账场景标识符。
   * 示例: "1000"
   */
  transferSceneId?: null | string;
  /**
   * 修改人
   */
  upDataBy?: null | string;
  /**时间筛选数组 */
  DataTime?:Date[]|string;
  /**
   * 修改时间
   */
  upDataTime?: string | null;
  /**
   * 用户ID。
   */
  userID?: number;
  /**
   * 用户身份证
   */
  userIDCode?: null | string;
  /**
   * 名字
   */
  userName?: null | string;
  /**
   * 是否重新发起支付,当支付失败后,超出重新的支付单失败后,需要重新更换单号重新发起新的支付请求,重新发起支付请求单
   */
  weChatTransferOrderPrId?: number | null;
  YiTiXianGz?:number
   ZhongGz?:number
   itCode?:string|null
}
AdminwebPages/adminpageView/src/App.vue
New file
@@ -0,0 +1,27 @@
<!--
 * @FilePath: App.vue
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:36:48
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-18 10:33:24
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
-->
<script setup lang="ts">
import { RouterLink, RouterView } from 'vue-router'
</script>
<template>
<div  style="width: 100%; background-color: burlywood; height: 100%;">
  <RouterView />
</div>
</template>
<style lang="scss">
</style>
AdminwebPages/adminpageView/src/assets/base.css
New file
@@ -0,0 +1,86 @@
/* color palette from <https://github.com/vuejs/theme> */
:root {
  --vt-c-white: #ffffff;
  --vt-c-white-soft: #f8f8f8;
  --vt-c-white-mute: #f2f2f2;
  --vt-c-black: #181818;
  --vt-c-black-soft: #222222;
  --vt-c-black-mute: #282828;
  --vt-c-indigo: #2c3e50;
  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
  --vt-c-text-light-1: var(--vt-c-indigo);
  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
  --vt-c-text-dark-1: var(--vt-c-white);
  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
}
/* semantic color variables for this project */
:root {
  --color-background: var(--vt-c-white);
  --color-background-soft: var(--vt-c-white-soft);
  --color-background-mute: var(--vt-c-white-mute);
  --color-border: var(--vt-c-divider-light-2);
  --color-border-hover: var(--vt-c-divider-light-1);
  --color-heading: var(--vt-c-text-light-1);
  --color-text: var(--vt-c-text-light-1);
  --section-gap: 160px;
}
@media (prefers-color-scheme: dark) {
  :root {
    --color-background: var(--vt-c-black);
    --color-background-soft: var(--vt-c-black-soft);
    --color-background-mute: var(--vt-c-black-mute);
    --color-border: var(--vt-c-divider-dark-2);
    --color-border-hover: var(--vt-c-divider-dark-1);
    --color-heading: var(--vt-c-text-dark-1);
    --color-text: var(--vt-c-text-dark-2);
  }
}
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  font-weight: normal;
}
body {
  min-height: 100vh;
  color: var(--color-text);
  background: var(--color-background);
  transition:
    color 0.5s,
    background-color 0.5s;
  line-height: 1.6;
  font-family:
    Inter,
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    Roboto,
    Oxygen,
    Ubuntu,
    Cantarell,
    'Fira Sans',
    'Droid Sans',
    'Helvetica Neue',
    sans-serif;
  font-size: 15px;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
AdminwebPages/adminpageView/src/assets/logo.svg
New file
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
AdminwebPages/adminpageView/src/assets/main.css
New file
@@ -0,0 +1,16 @@
@import './base.css';
*{
  margin: 0 ;
  padding: 0;
}
#app {
  width: 100vw;
  height: 100vh;
  margin: 10px 0px 0px 0px ;
  padding: 2px;
  font-weight: normal;
}
AdminwebPages/adminpageView/src/components/HelloWorld.vue
New file
@@ -0,0 +1,41 @@
<script setup lang="ts">
defineProps<{
  msg: string
}>()
</script>
<template>
  <div class="greetings">
    <h1 class="green">{{ msg }}</h1>
    <h3>
      You’ve successfully created a project with
      <a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a> +
      <a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>. What's next?
    </h3>
  </div>
</template>
<style scoped>
h1 {
  font-weight: 500;
  font-size: 2.6rem;
  position: relative;
  top: -10px;
}
h3 {
  font-size: 1.2rem;
}
.greetings h1,
.greetings h3 {
  text-align: center;
}
@media (min-width: 1024px) {
  .greetings h1,
  .greetings h3 {
    text-align: left;
  }
}
</style>
AdminwebPages/adminpageView/src/components/TheWelcome.vue
New file
@@ -0,0 +1,94 @@
<script setup lang="ts">
import WelcomeItem from './WelcomeItem.vue'
import DocumentationIcon from './icons/IconDocumentation.vue'
import ToolingIcon from './icons/IconTooling.vue'
import EcosystemIcon from './icons/IconEcosystem.vue'
import CommunityIcon from './icons/IconCommunity.vue'
import SupportIcon from './icons/IconSupport.vue'
const openReadmeInEditor = () => fetch('/__open-in-editor?file=README.md')
</script>
<template>
  <WelcomeItem>
    <template #icon>
      <DocumentationIcon />
    </template>
    <template #heading>Documentation</template>
    Vue’s
    <a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a>
    provides you with all information you need to get started.
  </WelcomeItem>
  <WelcomeItem>
    <template #icon>
      <ToolingIcon />
    </template>
    <template #heading>Tooling</template>
    This project is served and bundled with
    <a href="https://vite.dev/guide/features.html" target="_blank" rel="noopener">Vite</a>. The
    recommended IDE setup is
    <a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VSCode</a>
    +
    <a href="https://github.com/johnsoncodehk/volar" target="_blank" rel="noopener">Volar</a>. If
    you need to test your components and web pages, check out
    <a href="https://vitest.dev/" target="_blank" rel="noopener">Vitest</a>
    and
    <a href="https://www.cypress.io/" target="_blank" rel="noopener">Cypress</a>
    /
    <a href="https://playwright.dev/" target="_blank" rel="noopener">Playwright</a>.
    <br />
    More instructions are available in
    <a href="javascript:void(0)" @click="openReadmeInEditor"><code>README.md</code></a
    >.
  </WelcomeItem>
  <WelcomeItem>
    <template #icon>
      <EcosystemIcon />
    </template>
    <template #heading>Ecosystem</template>
    Get official tools and libraries for your project:
    <a href="https://pinia.vuejs.org/" target="_blank" rel="noopener">Pinia</a>,
    <a href="https://router.vuejs.org/" target="_blank" rel="noopener">Vue Router</a>,
    <a href="https://test-utils.vuejs.org/" target="_blank" rel="noopener">Vue Test Utils</a>, and
    <a href="https://github.com/vuejs/devtools" target="_blank" rel="noopener">Vue Dev Tools</a>. If
    you need more resources, we suggest paying
    <a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">Awesome Vue</a>
    a visit.
  </WelcomeItem>
  <WelcomeItem>
    <template #icon>
      <CommunityIcon />
    </template>
    <template #heading>Community</template>
    Got stuck? Ask your question on
    <a href="https://chat.vuejs.org" target="_blank" rel="noopener">Vue Land</a>
    (our official Discord server), or
    <a href="https://stackoverflow.com/questions/tagged/vue.js" target="_blank" rel="noopener"
      >StackOverflow</a
    >. You should also follow the official
    <a href="https://bsky.app/profile/vuejs.org" target="_blank" rel="noopener">@vuejs.org</a>
    Bluesky account or the
    <a href="https://x.com/vuejs" target="_blank" rel="noopener">@vuejs</a>
    X account for latest news in the Vue world.
  </WelcomeItem>
  <WelcomeItem>
    <template #icon>
      <SupportIcon />
    </template>
    <template #heading>Support Vue</template>
    As an independent project, Vue relies on community backing for its sustainability. You can help
    us by
    <a href="https://vuejs.org/sponsor/" target="_blank" rel="noopener">becoming a sponsor</a>.
  </WelcomeItem>
</template>
AdminwebPages/adminpageView/src/components/WelcomeItem.vue
New file
@@ -0,0 +1,87 @@
<template>
  <div class="item">
    <i>
      <slot name="icon"></slot>
    </i>
    <div class="details">
      <h3>
        <slot name="heading"></slot>
      </h3>
      <slot></slot>
    </div>
  </div>
</template>
<style scoped>
.item {
  margin-top: 2rem;
  display: flex;
  position: relative;
}
.details {
  flex: 1;
  margin-left: 1rem;
}
i {
  display: flex;
  place-items: center;
  place-content: center;
  width: 32px;
  height: 32px;
  color: var(--color-text);
}
h3 {
  font-size: 1.2rem;
  font-weight: 500;
  margin-bottom: 0.4rem;
  color: var(--color-heading);
}
@media (min-width: 1024px) {
  .item {
    margin-top: 0;
    padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
  }
  i {
    top: calc(50% - 25px);
    left: -26px;
    position: absolute;
    border: 1px solid var(--color-border);
    background: var(--color-background);
    border-radius: 8px;
    width: 50px;
    height: 50px;
  }
  .item:before {
    content: ' ';
    border-left: 1px solid var(--color-border);
    position: absolute;
    left: 0;
    bottom: calc(50% + 25px);
    height: calc(50% - 25px);
  }
  .item:after {
    content: ' ';
    border-left: 1px solid var(--color-border);
    position: absolute;
    left: 0;
    top: calc(50% + 25px);
    height: calc(50% - 25px);
  }
  .item:first-of-type:before {
    display: none;
  }
  .item:last-of-type:after {
    display: none;
  }
}
</style>
AdminwebPages/adminpageView/src/components/icons/IconCommunity.vue
New file
@@ -0,0 +1,7 @@
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
    <path
      d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
    />
  </svg>
</template>
AdminwebPages/adminpageView/src/components/icons/IconDocumentation.vue
New file
@@ -0,0 +1,7 @@
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
    <path
      d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
    />
  </svg>
</template>
AdminwebPages/adminpageView/src/components/icons/IconEcosystem.vue
New file
@@ -0,0 +1,7 @@
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
    <path
      d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
    />
  </svg>
</template>
AdminwebPages/adminpageView/src/components/icons/IconSupport.vue
New file
@@ -0,0 +1,7 @@
<template>
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
    <path
      d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
    />
  </svg>
</template>
AdminwebPages/adminpageView/src/components/icons/IconTooling.vue
New file
@@ -0,0 +1,19 @@
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
<template>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    aria-hidden="true"
    role="img"
    class="iconify iconify--mdi"
    width="24"
    height="24"
    preserveAspectRatio="xMidYMid meet"
    viewBox="0 0 24 24"
  >
    <path
      d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
      fill="currentColor"
    ></path>
  </svg>
</template>
AdminwebPages/adminpageView/src/main.ts
New file
@@ -0,0 +1,35 @@
/*
 * @FilePath: main.ts
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:36:48
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-18 11:55:41
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
 */
import './assets/main.css'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import PlusProComponents from 'plus-pro-components'
import 'plus-pro-components/index.css'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
const app = createApp(App)
app.use(ElementPlus,
  {
    locale: zhCn
  }
)
app.use(PlusProComponents
)
app.use(createPinia())
app.use(router)
app.mount('#app')
AdminwebPages/adminpageView/src/router/index.ts
New file
@@ -0,0 +1,37 @@
/*
 * @FilePath: index.ts
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:36:48
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-18 10:10:00
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
 */
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: ()=>import('@/views/cylsgPayrollReport.vue'),
    },
    {
      path: '/Report',
      name: 'Report',
      component: HomeView,
    },
    {
      path: '/about',
      name: 'about',
      // route level code-splitting
      // this generates a separate chunk (About.[hash].js) for this route
      // which is lazy-loaded when the route is visited.
      component: () => import('../views/AboutView.vue'),
    },
  ],
})
export default router
AdminwebPages/adminpageView/src/store/index.ts
New file
@@ -0,0 +1,9 @@
import type { App } from "vue";
import { createPinia } from "pinia";
const store = createPinia();
export function setupStore(app: App<Element>) {
  app.use(store);
}
export { store };
AdminwebPages/adminpageView/src/store/types.ts
New file
@@ -0,0 +1,51 @@
import type { RouteRecordName } from "vue-router";
export type cacheType = {
  mode: string;
  name?: RouteRecordName;
};
export type positionType = {
  startIndex?: number;
  length?: number;
};
export type appType = {
  sidebar: {
    opened: boolean;
    withoutAnimation: boolean;
    // 判断是否手动点击Collapse
    isClickCollapse: boolean;
  };
  layout: string;
  device: string;
  isShowDouble: boolean;
  viewportSize: { width: number; height: number };
  sortSwap: boolean;
};
export type multiType = {
  path: string;
  name: string;
  meta: any;
  query?: object;
  params?: object;
};
export type setType = {
  title: string;
  fixedHeader: boolean;
  hiddenSideBar: boolean;
};
export type userType = {
  avatar?: string;
  username?: string;
  nickname?: string;
  roles?: Array<string>;
  permissions?: Array<string>;
  verifyCode?: string;
  currentPage?: number;
  isRemembered?: boolean;
  loginDay?: number;
};
AdminwebPages/adminpageView/src/stores/counter.ts
New file
@@ -0,0 +1,12 @@
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  function increment() {
    count.value++
  }
  return { count, doubleCount, increment }
})
AdminwebPages/adminpageView/src/views/AboutView.vue
New file
@@ -0,0 +1,15 @@
<template>
  <div class="about">
    <h1>This is an about page</h1>
  </div>
</template>
<style>
@media (min-width: 1024px) {
  .about {
    min-height: 100vh;
    display: flex;
    align-items: center;
  }
}
</style>
AdminwebPages/adminpageView/src/views/HomeView.vue
New file
@@ -0,0 +1,24 @@
<!--
 * @FilePath: HomeView.vue
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:36:48
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-18 10:06:57
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
-->
<script setup lang="ts">
import TheWelcome from '../components/TheWelcome.vue'
import reportview from '../views/cylsgPayrollReport.vue';
</script>
<template>
    <reportview />
</template>
AdminwebPages/adminpageView/src/views/cylsgPayrollReport.vue
New file
@@ -0,0 +1,282 @@
<!--
 * @FilePath: cylsgPayrollReport.vue
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:45:10
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-19 11:33:32
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
-->
<!-- -->
<template>
  <div>
    <el-card>
      <PlusForm v-model="formdata" :columns="FromColumns" :row-props="{ gutter: 100 }" :col-props="{
        span: 4
      }" @submit="mysubmit">
        <template #footer="{ handleSubmit }">
          <div style="margin: 0 auto">
            <el-button type="primary" @click="handleSubmit">搜索</el-button>
          </div>
        </template>
      </PlusForm>
    </el-card>
    <PlusTable ref="plusTableInstance" :columns="tableConfig" :table-data="tableData" table-title="表格" show-summary
      :summary-method="getSummaries" :pagination="{ total, modelValue: pageInfo }"
      @paginationChange="handlePaginationChange" adaptive />
  </div>
</template>
<script setup lang='tsx'>
import { GetTransferOrder, OrderByType, type WeChatTransferOrder } from '@/Api/apis';
import moment from 'moment';
import { valueEquals } from 'element-plus';
import type { PlusColumn, PlusTableInstance, PageInfo } from 'plus-pro-components'
import { useTable } from 'plus-pro-components'
import { h, onMounted, ref, type VNode } from 'vue'
const formdata = ref<WeChatTransferOrder>({
  userName: null,
  userIDCode: null,
  DataTime: [],
  itCode: null
})
const FromColumns: PlusColumn[] = [
  {
    label: '姓名',
    prop: 'userName',
    tooltip: '名称最多显示6个字符'
  },
  {
    label: '身份证号码',
    labelWidth: 110,
    width: 200,
    prop: 'userIDCode',
    tooltip: '名称最多显示6个字符'
  }
  ,
  {
    label: '电话号码',
    labelWidth: 110,
    width: 200,
    prop: 'itCode',
    tooltip: '名称最多显示6个字符'
  },
  {
    label: '支付时间',
    labelWidth: 110,
    width: 400,
    colProps: {
      span: 8
    },
    prop: 'DataTime',
    tooltip: '支付时间',
    valueType: 'date-picker',
    fieldProps: {
      type: 'datetimerange',
      startPlaceholder: '请选择开始时间',
      endPlaceholder: '请选择结束时间',
      rangeSeparator: '-',
      valueFormat: 'YYYY-MM-DDTHH:mm:ss',
    },
  }
]
const tableConfig = ref<PlusColumn[]>(
  [
    {
      label: '姓名',
      prop: 'userName',
      width: 80
    },
    {
      label: '身份证',
      prop: 'userIDCode',
      width: 170
    },
    {
      label: '电话号码',
      prop: 'itCode',
      width: 120
    },
    {
      width: 100,
      label: '总额度',
      prop: 'totalAmount',
      render: (value) => {
        let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
        return <span>{formattedAmount}元</span>
      }
    },
    {
      width: 100,
      label: '成功额度',
      prop: 'successAmount',
      sortable: true,
      render: (value) => {
        let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
        return <span>{formattedAmount}元</span>
      }
    },
    {
      width: 100,
      label: '失败额度',
      prop: 'failAmount',
      sortable: true,
      render: (value) => {
        let formattedAmount = ((value ?? 0) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
        return <span>{formattedAmount}元</span>
      }
    },
    {
      width: 180,
      label: '提现时间',
      prop: 'upDataTime',
      render: (value) => {
        return <span>{moment(value).format('YYYY-MM-DD HH:mm:ss')}</span>
      }
    },
    {
      label: '腾讯单号',
      prop: 'batchId'
    },
    {
      label: '客户单号',
      prop: 'outBatchNumber'
    },
    {
      width: 100,
      label: '总工资',
      prop: 'zhongGz',
      render: (value) => {
        let formattedAmount = ((value ?? 0)).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
        return <span>{formattedAmount}元</span>
      }
    },
    {
      width: 100,
      label: '已提工资',
      prop: 'yiTiXianGz',
      render: (value) => {
        let formattedAmount = ((value ?? 0)).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
        return <span>{formattedAmount}元</span>
      }
    }
  ]
);
const { tableData, pageInfo, total, loadingStatus } = useTable<WeChatTransferOrder[]>()
onMounted(() => {
  getList();
})
const getList = async () => {
  loadingStatus.value = true
  if (formdata.value.DataTime && Array.isArray(formdata.value.DataTime) && formdata.value.DataTime.length === 2) {
    debugger
    formdata.value.upDataTime = `${formdata.value.DataTime[0]}~${formdata.value.DataTime[1].toString()}`;
  } else {
  }
  GetTransferOrder({
    page: { pageIndex: pageInfo.value.page, pageSize: pageInfo.value.pageSize },
     where: JSON.stringify(formdata.value),
     order:{
       name:"upDataTime",
       des:OrderByType.Desc
     }
  }).then((res) => {
    if (res.data.code == 1) {
      tableData.value = res.data.data?.data as WeChatTransferOrder[];
      total.value = res.data.data?.page?.totalCount as number;
    }
  }).finally(() => {
    loadingStatus.value = false
  })
}
const mysubmit = () => {
  getList();
}
const getSummaries = (param: any) => {
  const { columns, data } = param
  const sums: (string | VNode)[] = []
  columns.forEach((column: { property: string | number; }, index: number) => {
    if (index === 0) {
      sums[index] = h('div', { style: { textDecoration: 'underline' } }, [
        '统计',
      ])
      return
    }
    if (column.property == "totalAmount") {
      const values = data.map((x:any) => x.totalAmount);
      let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
      sums[index] = formattedAmount
      return
    }
    if (column.property == "successAmount") {
      const values = data.map((x: { successAmount: any; }) => x.successAmount);
      let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
      sums[index] = formattedAmount
      return
    }
    if (column.property == "failAmount") {
      const values = data.map((x: { failAmount: any; }) => x.failAmount);
      let formattedAmount = (values.reduce((prev: any, cur: any) => prev + cur) / 100).toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' });
      sums[index] = formattedAmount
      return
    }
  })
  return sums
}
const handlePaginationChange = (_pageInfo: PageInfo): void => {
  pageInfo.value = _pageInfo
  getList()
}
</script>
<style lang='scss' scoped></style>
AdminwebPages/adminpageView/tsconfig.app.json
New file
@@ -0,0 +1,12 @@
{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
  "exclude": ["src/**/__tests__/*"],
  "compilerOptions": {
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}
AdminwebPages/adminpageView/tsconfig.json
New file
@@ -0,0 +1,14 @@
{
  "files": [],
  "references": [
    {
      "path": "./tsconfig.node.json"
    },
    {
      "path": "./tsconfig.app.json"
    }
  ],
  "compilerOptions": {
    "types": ["plus-pro-components/global"]
  }
}
AdminwebPages/adminpageView/tsconfig.node.json
New file
@@ -0,0 +1,19 @@
{
  "extends": "@tsconfig/node22/tsconfig.json",
  "include": [
    "vite.config.*",
    "vitest.config.*",
    "cypress.config.*",
    "nightwatch.conf.*",
    "playwright.config.*",
    "eslint.config.*"
  ],
  "compilerOptions": {
    "noEmit": true,
    "module": "ESNext",
    "moduleResolution": "Bundler",
    "types": ["node"]
  }
}
AdminwebPages/adminpageView/vite.config.ts
New file
@@ -0,0 +1,52 @@
/*
 * @FilePath: vite.config.ts
 * @Author: 小飞侠
 * @Date: 2025-03-17 09:36:48
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-03-17 17:37:57
 * Copyright: 2025  MinTinge CO.,LTD. All Rights Reserved.
 * @Descripttion: 写入你的描述
 */
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    vueDevTools(),
  ],
  // // 服务端渲染
  // server: {
  //   // 本地跨域代理 https://cn.vitejs.dev/config/server-options.html#server-proxy
  //   proxy: {
  //     "/api": {
  //       // 这里填写后端地址
  //       target: "http://localhost:5000",
  //       changeOrigin: true,
  //       rewrite: path => path.replace(/^\/api/, "/api")
  //     },
  //     "/ws": {
  //       target: "https://apis.map.qq.com/",
  //       changeOrigin: true,
  //       rewrite: path => path.replace(/^\/ws/, "/ws")
  //     }
  //   },
  // },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})
cylsg/ECTESTOA/OAServices.cs
@@ -99,7 +99,7 @@
                    }
                }
                _redisService.Add(ECTESTOAPermissionsKey + UserID, ret, 180);
                _redisService.Add(ECTESTOAPermissionsKey + UserID, ret, 60);
                
            }
cylsg/cylsg.Application/CyOS/CyOSSDriver.cs
@@ -3,6 +3,7 @@
using ECTESTOA;
using EzCoreNet.Redis;
using Furion.LinqBuilder;
using Microsoft.AspNetCore.Http.HttpResults;
using Models;
using System;
using System.Collections.Generic;
@@ -43,7 +44,7 @@
                throw Oops.Oh("没有权限");
            }
            Expression<Func<OA_DeliverPlan, bool>> SearchList = (x) => true;
            Expression<Func<OA_DeliverPlanPaiche, bool>> SearchList = (x) => true;
            SearchList = SearchList.And(x => x.FirmId == _oAServices.firmId);
            SearchList = SearchList.And(x => x.DriverId == Permissions.KeyId);//只看自己
            SearchList = SearchList.And(x => x.ShifouDelivery != 2);//过滤有效
@@ -58,11 +59,11 @@
            }
            if (Param.TimeStart != null)
            {
                SearchList = SearchList.And(x => x.CreateTime > Param.TimeStart);
                SearchList = SearchList.And(x => x.DeliverTime >= Param.TimeStart.Value.Date);
            }
            if (Param.TimeEnd != null)
            {
                SearchList = SearchList.And(x => x.CreateTime < Param.TimeEnd.Value.AddDays(1));
                SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.Date.AddDays(1));
            }
            if (Param.DeliveredState != null)
            {
@@ -78,8 +79,8 @@
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _client.Queryable<OA_DeliverPlan>().Includes(x=>x.SentStaff)
                .Where(SearchList).OrderByDescending(x => x.CreateTime.Value.Date).OrderBy(x => SqlFunc.Asc(x.Sort)).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            var data = await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.Manager)
                .Where(SearchList).OrderByDescending(x => x.DeliverTime.Value.Date).OrderBy(x => SqlFunc.Asc(x.Sort)).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            Param.page.TotalCount = totle;
@@ -99,14 +100,14 @@
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        public async Task<OA_DeliverPlan> GetDeliverPlanInfo(Guid KeyId)
        public async Task<OA_DeliverPlanPaiche> GetDeliverPlanInfo(Guid KeyId)
        {
            
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            return await _client.Queryable<OA_DeliverPlan>().Includes(x=>x.Attachments.Where(y=>y.AttachmentType==3).ToList()).Includes(x=>x.Manager).Includes(x=>x.SentStaff)
            return await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.Attachments).Includes(x=>x.Manager).Includes(x=>x.DeliverPlans)
                .Where(x => x.DriverId == Permissions.KeyId && x.Keyid == KeyId&&x.ShifouDelivery!=2).FirstAsync();
        }
@@ -124,7 +125,7 @@
            {
                throw Oops.Oh("没有权限");
            }
             var a= await _client.Queryable<OA_DeliverPlan>().Where(x => x.DriverId == Permissions.KeyId && x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
             var a= await _client.Queryable<OA_DeliverPlanPaiche>().Where(x => x.DriverId == Permissions.KeyId && x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
            if(a==null)
                throw Oops.Oh("没有权限");
            if(a.Deliveredstatus!= DeliveredType.Undeliver)
@@ -146,7 +147,7 @@
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        public async Task<bool> FinishDeliverPlan(OA_DeliverPlan Param)
        public async Task<bool> FinishDeliverPlan(OA_DeliverPlanPaiche Param)
        {
            if(Param.Keyid==null)
                throw Oops.Oh("ID错误");
@@ -157,12 +158,19 @@
            {
                throw Oops.Oh("没有权限");
            }
            var a = await _client.Queryable<OA_DeliverPlan>().Where(x => x.DriverId == Permissions.KeyId && x.Keyid == Param.Keyid && x.ShifouDelivery != 2).FirstAsync();
            var a = await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.DeliverPlans).Where(x => x.DriverId == Permissions.KeyId && x.Keyid == Param.Keyid && x.ShifouDelivery != 2).FirstAsync();
            if (a == null)
                throw Oops.Oh("没有权限");
            if (a.Deliveredstatus != DeliveredType.Deliver)
            {
                throw Oops.Oh("订单状态结束");
            }
            foreach (var item in a.DeliverPlans)
            {
                //同步 送货单状态
                item.Updater = Permissions.MemberId;
                item.LastUpdateTime = DateTime.Now;
                item.Deliveredstatus= Param.Deliveredstatus;
            }
            foreach (var item in Param.Attachments)
            {
@@ -200,14 +208,124 @@
            a.Wentifankui = Param.Wentifankui;
            a.Deliveredstatus= Param.Deliveredstatus;
            a.Attachments = Param.Attachments;
            return await _client.UpdateNav(a).Include(x=>x.Attachments,new SqlSugar.UpdateNavOptions()
                { 
                   OneToManyInsertOrUpdate = true,//配置启用 插入、更新或删除模式
                }).ExecuteCommandAsync();
                }).Include(x=>x.DeliverPlans,new UpdateNavOptions()
                {
                    OneToManyInsertOrUpdate=true,
                }
                ).ExecuteCommandAsync();
            //await _client.AsTenant().BeginTranAsync();
            //try
            //{
            //    await _client.UpdateNav(a).Include(x => x.Attachments, new SqlSugar.UpdateNavOptions()
            //    {
            //        OneToManyInsertOrUpdate = true,//配置启用 插入、更新或删除模式
            //    }).ExecuteCommandAsync();
            //    if (a.DeliverPlans?.Count > 0)
            //        await _client.Updateable(a.DeliverPlans).ExecuteCommandAsync();
            //    await _client.AsTenant().CommitTranAsync();
            //}
            //catch (Exception)
            //{
            //    await _client.AsTenant().RollbackTranAsync();
            //    throw;
            //}
            //return true;
        }
        /// <summary>
        /// 获取打卡记录
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<DeliverRecordPageRet> GetDriverRecords(DeliverRecordSearchParam Param)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            Expression<Func<OA_DriverRecord, bool>> SearchList = (x) => true;
            SearchList = SearchList.And(x => x.CreaterID == Permissions.MemberId);//只看自己
            SearchList = SearchList.And(x => x.ClockType !=  DriverClockType.RoughDraft);//不看草稿
            if (Param.CarID != null)
            {
                SearchList = SearchList.And(x => x.CarID == Param.CarID);
            }
            if (Param.TimeStart != null)
            {
                SearchList = SearchList.And(x => x.CreatTime >= Param.TimeStart.Value.Date);
            }
            if (Param.TimeEnd != null)
            {
                SearchList = SearchList.And(x => x.CreatTime < Param.TimeEnd.Value.Date.AddDays(1));
            }
            if (Param.ClockType != null)
            {
                    SearchList = SearchList.And(x => x.ClockType == Param.ClockType);
            }
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _client.Queryable<OA_DriverRecord>().Includes(x => x.Car)
                .Where(SearchList).OrderByDescending(x => x.CreatTime.Date).Mapper((x)=>
                {
                    if (x.CreatTime.AddMinutes(30) < DateTime.Now)
                        x.CanEdit = true;
                    else
                        x.CanEdit = false;
                })
                .ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            Param.page.TotalCount = totle;
            var count = await _client.Queryable<OA_DriverRecord>().Where(x => x.CreatTime.Date == DateTime.Now.Date && x.ClockType != DriverClockType.RoughDraft&& x.CreaterID==Permissions.MemberId).CountAsync();
            return new DeliverRecordPageRet
            {
                Data = data,
                page = Param.page,
                 NextClockType= count switch
                 {
                      1=> DriverClockType.Clockout,
                      2=> DriverClockType.Unknown,
                      0=> DriverClockType.ClockIn,
                      _=> DriverClockType.Unknown
                 }
            };
        }
        /// <summary>
        /// 获取草稿记录   没有代表没有
        /// </summary>
        /// <returns></returns>
        public async Task<OA_DriverRecord> GetClockRoughDraft()
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
          return await _client.Queryable<OA_DriverRecord>()
                .Where(x => x.CreaterID == Permissions.MemberId
                && x.ClockType == DriverClockType.RoughDraft
                && x.CreatTime.Date == DateTime.Now.Date).Includes(x=>x.Attachments).Includes(x=>x.CarConditionAttachments).FirstAsync();
        }
        /// <summary>
        /// 上班打卡 上下班打卡都调用一个字段
        /// </summary>     
@@ -217,10 +335,44 @@
        {
            if (Param.ClockType == DriverClockType.Unknown)
                throw Oops.Oh("类型不可为未知");
            Param.Id =  Guid.NewGuid();
            if (Param.Attachments!=null)
            foreach (var item in Param.Attachments)
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
          if (Param.ClockType!= DriverClockType.RoughDraft)
            {
             var clockid=  await   _client.Queryable<OA_DriverRecord>().Where(x => x.CreaterID == Permissions.MemberId
                && x.CreatTime.Date == DateTime.Now.Date
                && x.ClockType == Param.ClockType
                ).Select(x => x.Id).FirstAsync();
                if(clockid!=null)
                {
                    throw Oops.Oh("今天已经打过该类型的卡了");
                }
            }
            var carId = await _client.Queryable<OA_CarManage>().Where(x => x.StaffID == Permissions.KeyId && x.MemberID == _oAServices.firmId).Select(x => x.Keyid).FirstAsync();
            if(carId==null||carId==0)
            {
                throw Oops.Oh("该司机未分配车辆,不需要打卡");
            }
            OA_DriverRecord data = null;
             data=   await  _client.Queryable<OA_DriverRecord>().Where(x =>
             //x.Id == Param.Id&&  最多每天只能有一个草稿
              x.CreatTime.Date == DateTime.Now.Date
             && x.CreaterID == Permissions.MemberId
             && x.ClockType == DriverClockType.RoughDraft).FirstAsync();
            Param.CarID = carId;
            if (Param.Attachments != null)
                foreach (var item in Param.Attachments)
                {
                    if (string.IsNullOrWhiteSpace(item.PlanAttachment))
                    {
                        throw Oops.Oh("有附件地址为空");
@@ -233,13 +385,14 @@
                        throw Oops.Oh("请输入正确的附件地址");
                    }
                    item.AttachmentType =4;
                    item.AttachmentType = 4;
                    item.CreateTime = DateTime.Now;
                    item.Operator = Permissions.Name;
                }
             if(Param.CarConditionAttachments!=null)
            if (Param.CarConditionAttachments != null)
                foreach (var item in Param.CarConditionAttachments)
                {
                    if (string.IsNullOrWhiteSpace(item.PlanAttachment))
@@ -260,11 +413,147 @@
                }
            Param.EmptyCause = Param.EmptyCause ?? "";
            Param.CarCondition = Param.CarCondition ?? "";
            Param.Remark = Param.Remark ?? "";
            Param.CreatTime = DateTime.Now;
            Param.CreaterID = Permissions.MemberId;
            Param.Creater = Permissions.Name;
           return await  _client.InsertNav(Param).Include(x => x.Attachments).Include(x => x.Attachments).ExecuteCommandAsync();
            if (data == null)
            {
                //没有单子
                Param.Id = Guid.NewGuid();
                if (!(carId > 0))
                {
                    throw Oops.Oh("没找到匹配车辆");
                }
                return await _client.InsertNav(Param).Include(x => x.Attachments).Include(x => x.CarConditionAttachments).ExecuteCommandAsync();
            }
           
            else
            {
                data.CarID = Param.CarID;
                data.CreatTime= Param.CreatTime;
                data.Attachments = Param.Attachments;//导航更行分类条件不起作用,这里更新将 这两个合并操作
                data.CarCondition=Param.CarCondition;
                data.CarConditionAttachments = Param.CarConditionAttachments;
                if (data.CarConditionAttachments == null)
                    data.CarConditionAttachments = new List<OA_attachment>();
                if (data.Attachments != null)
                    data.CarConditionAttachments.AddRange(data.Attachments);
                data.ClockType = Param.ClockType;
                data.EmptyCause = Param.EmptyCause;
                return await _client.UpdateNav(data)
                   //分开导航会产生冲突应该sqlsun的bug
                //    .Include(x => x.Attachments,new UpdateNavOptions
                //{
                //     OneToManyInsertOrUpdate = true,
                //})
                    .Include(x => x.CarConditionAttachments,new UpdateNavOptions
                {
                    OneToManyInsertOrUpdate = true,
                }).ExecuteCommandAsync();
            }
        }
        /// <summary>
        /// 修改打卡记录 支持半小时内修改记录
        /// </summary>
        public async Task<bool > UpdataDriverRecord(OA_DriverRecord Param)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            var data = await _client.Queryable<OA_DriverRecord>()
                   .Includes(x => x.Attachments)
                   .Includes(x => x.CarConditionAttachments)
                   .Where(x => x.CreaterID == Permissions.MemberId && x.Id == Param.Id).FirstAsync();
            if (data != null)
                throw Oops.Oh("没有权限");
            if(data.CreatTime.AddMinutes(30)<DateTime.Now)
            {
                throw Oops.Oh("只能在半小时之内修改");
            }
            if(Param.Attachments!=null)
            {
                foreach (var attachment in Param.Attachments)
                {
                    if (attachment.Keyid > 0)
                        continue;
                    else
                    {
                        attachment.AttachmentType = 4;
                        attachment.CreateTime = DateTime.Now;
                        attachment.Operator = Permissions.Name;
                    }
                }
            }
            if (Param.CarConditionAttachments != null)
            {
                foreach (var attachment in Param.CarConditionAttachments)
                {
                    if (attachment.Keyid > 0)
                        continue;
                    else
                    {
                        attachment.AttachmentType = 5;
                        attachment.CreateTime = DateTime.Now;
                        attachment.Operator = Permissions.Name;
                    }
                }
            }
            data.Attachments = Param.Attachments;
            data.CarConditionAttachments = Param.CarConditionAttachments;
            data.CarCondition = Param.CarCondition;
        return  await   _client.UpdateNav(data).Include(x => x.Attachments, new UpdateNavOptions
            {
                OneToManyInsertOrUpdate = true,
            }).Include(x => x.CarConditionAttachments, new UpdateNavOptions
            {
                OneToManyInsertOrUpdate = true,
            }).ExecuteCommandAsync();
        }
        /// <summary>
        /// 打卡记录详情
        /// </summary>
        public async Task<OA_DriverRecord> GetDriverRecordInfo(Guid  Id)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
         var data=   await _client.Queryable<OA_DriverRecord>()
                 .Includes(x => x.Car)
                .Includes(x=>x.Attachments)
                .Includes(x=>x.CarConditionAttachments)
                .Where(x => x.CreaterID == Permissions.MemberId&&x.Id== Id).FirstAsync();
            if (data == null)
                throw Oops.Oh("没有权限");
            return data;
        }
        /// <summary>
@@ -290,4 +579,59 @@
        }
    }
    /// <summary>
    /// 司机打卡记录搜索选项
    /// </summary>
    public class DeliverRecordSearchParam
    {
        /// <summary>
        /// 起始时间
        /// </summary>
        public DateTime? TimeStart { get; set; }
        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? TimeEnd { get; set; }
        /// <summary>
        /// 司机KeyID
        /// </summary>
        public int? DeliverMemudID { get; set; }
        /// <summary>
        /// 车辆ID
        /// </summary>
        public int?  CarID { get; set; }
        /// <summary>
        /// 打卡 类型
        /// </summary>
        public DriverClockType? ClockType { get; set; }
        /// <summary>
        /// 页面参数
        /// </summary>
        public PageModel page { get; set; }
    }
    /// <summary>
    /// 打卡记录输出
    /// </summary>
    public class DeliverRecordPageRet
    {
        /// <summary>
        /// 数据列表
        /// </summary>
        public List<OA_DriverRecord> Data { get; set; }
        /// <summary>
        /// 页面参数
        /// </summary>
        public PageModel page { get; set; }
        /// <summary>
        /// 下一次打卡状态 为空时不显示按钮
        /// </summary>
        public DriverClockType? NextClockType { get; set; } = null;
    }
}
cylsg/cylsg.Application/CyOS/CyOSSettingController.cs
@@ -7,6 +7,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ProductOfflineGetSameCityTemplateResponse.Types.Template.Types;
namespace cylsg.Application.CyOS
{
@@ -41,7 +42,7 @@
                Name = x.Name,
                Keyid = x.Keyid,
                Remark = x.Remark,
            }).WithCache(3600).ToListAsync();
            }).WithCache(60).ToListAsync();
        }
        /// <summary>
        /// 获取科目列表
@@ -56,7 +57,7 @@
                SubjectName = x.SubjectName,
                Keyid = x.Keyid,
                Remark = x.Remark,
            }).WithCache(3600).ToListAsync();
            }).WithCache(60).ToListAsync();
        }
        /// <summary>
        /// 获取流水号
@@ -102,7 +103,7 @@
                MemberId = x.MemberId,
                Keyid = x.Keyid,
            }).WithCache(1800).ToListAsync();
            }).WithCache(60).ToListAsync();
        }
@@ -114,14 +115,15 @@
        [AllowAnonymous]
        public async Task<List<OaStaff>> GetDriversOfWithin7days()
        {
            var list = await _client.Queryable<OA_DeliverPlan>().Where(x => SqlFunc.ToDate(x.DeliverTime) < DateTime.Now.AddDays(8).Date && SqlFunc.ToDate(x.DeliverTime) >= DateTime.Now.Date).GroupBy(x => x.DriverId).Select(x => x.DriverId).ToListAsync();
            return await _client.Queryable<OaStaff>().In(list).Where(x => x.Status == "在职" && x.FirmId == _oAServices.firmId && x.BF_IsDriver).Select(x => new OaStaff
            var list = await _client.Queryable<OA_DeliverPlanPaiche>().Where(x =>( x.DeliverTime.Value.Date < DateTime.Now.AddDays(8).Date) && (x.DeliverTime.Value.Date >= DateTime.Now.Date)).Select(x => x.DriverId).ToListAsync();
            return await _client.Queryable<OaStaff>().Where(x=>list.Contains(x.Keyid)).Where(x => x.Status == "在职" && x.FirmId == _oAServices.firmId && x.BF_IsDriver).Select(x => new OaStaff
            {
                Name = x.Name,
                MemberId = x.MemberId,
                Keyid = x.Keyid,
            }).WithCache(1800).ToListAsync();
            }).WithCache(60).ToListAsync();
            ////      return await _client.Queryable<OA_DeliverPlan>()
            ////.LeftJoin<OaStaff>((dp, os) => dp.DriverId == os.Keyid)
            ////.Where((dp, os) => SqlFunc.ToDate(dp.DeliverTime) < DateTime.Now.AddDays(8).Date
cylsg/cylsg.Application/CyOS/CyOSStaffController.cs
@@ -500,9 +500,9 @@
                throw Oops.Oh("没有权限");
            }
            Expression<Func<OA_DeliverPlan, bool>> SearchList = (x) => true;
            Expression<Func<OA_DeliverPlanPaiche, bool>> SearchList = (x) => true;
            SearchList = SearchList.And(x => x.FirmId == _OAServices.firmId);
            SearchList = SearchList.And(x => x.Creater == Permissions.MemberId);//只看自己
            SearchList = SearchList.And(x => x.BusinessManagerId == Permissions.KeyId);//只看自己 客户经理是自己
            SearchList = SearchList.And(x => x.ShifouDelivery !=2);//过滤有效
            if (Param.DeliverKeyID!=null)
            {
@@ -515,11 +515,11 @@
            }
            if (Param.TimeStart != null)
            {
                SearchList = SearchList.And(x => x.CreateTime > Param.TimeStart);
                SearchList = SearchList.And(x => x.DeliverTime >= Param.TimeStart.Value.Date);
            }
            if (Param.TimeEnd != null)
            {
                SearchList = SearchList.And(x => x.CreateTime < Param.TimeEnd.Value.AddDays(1));
                SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.Date.AddDays(1));
            }
            if (Param.DeliveredState != null)
            {
@@ -535,7 +535,7 @@
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _SugarClient.Queryable<OA_DeliverPlan>().Includes(x => x.Driver)
            var data = await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Driver).Includes(x=>x.DeliverPlans)
                .Where(SearchList).OrderByDescending(x => x.CreateTime.Value.Date).OrderBy(x=>SqlFunc.Asc(x.Sort)).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            Param.page.TotalCount = totle;
@@ -557,15 +557,15 @@
        /// </summary>
        /// <param name="KeyId"></param>
        /// <returns></returns>
        public async Task<OA_DeliverPlan> GetDeliverPlanInfo(Guid KeyId)
        public async Task<OA_DeliverPlanPaiche> GetDeliverPlanInfo(Guid KeyId)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            return await _SugarClient.Queryable<OA_DeliverPlan>().Includes(x => x.Attachments).Includes(x=>x.Driver).Includes(x=>x.Manager)
                .Where(x => x.Creater == Permissions.MemberId && x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
            return await _SugarClient.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Attachments).Includes(x=>x.Driver).Includes(x=>x.DeliverPlans)
                .Where(x => x.BusinessManagerId == Permissions.KeyId && x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
        }
@@ -679,7 +679,7 @@
        /// <summary>
        /// 数据列表
        /// </summary>
        public List<OA_DeliverPlan> Data { get; set; }
        public List<OA_DeliverPlanPaiche> Data { get; set; }
        /// <summary>
        /// 页面参数
cylsg/cylsg.Application/CyOS/CyOsDeliverManage.cs
@@ -5,12 +5,14 @@
using EzCoreNet.Redis;
using Furion.LinqBuilder;
using Models;
using StackExchange.Profiling;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using TencentCloud.Iecp.V20210914.Models;
namespace cylsg.Application.CyOS
{
@@ -34,9 +36,29 @@
        }
        [HttpGet]
        [AllowAnonymous]
        public async Task<string> testc()
        public async Task<OA_DriverRecord> testc()
        {
            return await CreatDeliverPlanSn();
            OA_DriverRecord data = null;
            data = await _client.Queryable<OA_DriverRecord>().Where(x =>
             x.Id == new Guid("BE15D584-DFE3-438D-863B-705DB1AB14ED")
           ).Includes(x=>x.Attachments).FirstAsync();
            data.Attachments?.Add(new OA_attachment
            {
                PlanAttachment = "1111",
                AttachmentType = 4,
                Operator= "sdasd"
            });
            data.CarConditionAttachments = null;
            await _client.UpdateNav(data).Include(x => x.CarConditionAttachments,new UpdateNavOptions
            {
                OneToManyInsertOrUpdate=true,
            }).ExecuteCommandAsync();
            return await _client.Queryable<OA_DriverRecord>().Where(x => x.Id == new Guid("BE15D584-DFE3-438D-863B-705DB1AB14ED")).Includes(x => x.Attachments).Includes(x => x.CarConditionAttachments).FirstAsync();
        }
        /// <summary>
@@ -114,12 +136,14 @@
        }
        /// <summary>
        /// 受理
        /// 受理       弃用,用  CreatDeliverPlan 代替
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        [Obsolete]
        public async Task<int> AcceptAppointmentDeliver(int KeiId)
        {
            throw Oops.Oh("已经启用");
            if (!(KeiId > 0))
                throw Oops.Oh("Keyid不能为空");
@@ -150,20 +174,41 @@
        /// <param name="Param"> 只需要传递</param>
        /// <returns></returns>
        [HttpPost]
        public async Task<int> CreatDeliverPlan(OA_DeliverPlan Param)
        public async Task<int> CreatDeliverPlan(OA_DeliverPlanPaiche Param)
        {
            OA_CarManage car = null;
            if (Param.DriverId != null)
                car = await _client.Queryable<OA_CarManage>().Where(x => x.StaffID == Param.DriverId && x.MemberID == _oAServices.firmId).FirstAsync();
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            OA_DeliverTixing? tixing=null;
            if(Param.DeliverTixingId>0)
            {
                //是提醒订单,需要执行提醒单 状态干煸
                tixing = await _client.Queryable<OA_DeliverTixing>().Where(x => x.Keyid == Param.DeliverTixingId).FirstAsync();
                if(tixing == null)
                {
                    throw Oops.Oh("提醒单不存在了");
                }
                if(tixing.Chulistatus != AppointmentDeliverState.unAccept)
                    throw Oops.Oh("提醒单已经处理了");
                tixing.Chulistatus= AppointmentDeliverState.Accept;
                tixing.ChuliTime = DateTime.Now;
                tixing.ChuliRen=Permissions.MemberId;
                tixing.LastUpdateTime = DateTime.Now;
                tixing.Updater = Permissions.MemberId;
            }
            OA_CarManage car = null;
            if (Param.DriverId != null)
                car = await _client.Queryable<OA_CarManage>().Where(x => x.StaffID == Param.DriverId && x.MemberID == _oAServices.firmId).FirstAsync();
            OA_CorporateClients cor = null;
            if (Param.BuyerId != null)
                cor = await _client.Queryable<OA_CorporateClients>().Where(x => x.Keyid == Param.BuyerId).FirstAsync();
            OA_DeliverPlan DeliverPlan = new OA_DeliverPlan()
            OA_DeliverPlanPaiche DeliverPlan = new OA_DeliverPlanPaiche()
            {
                Keyid = Guid.NewGuid(),
                FirmId = _oAServices.firmId,
@@ -178,7 +223,7 @@
                Transferstatus = 1,
                Sort = 1,
                Sort = Param.Sort,
                Creater = Param.Creater ?? Permissions.MemberId,
                CreateTime = DateTime.Now,
                DriverId = Param.DriverId,
@@ -192,7 +237,28 @@
                Lianxiren = Param.Lianxiren,
                Deliveredstatus = (int)DeliveredType.Undeliver,
                CompanyName = Param.CompanyName,
            }; return await _client.Insertable(DeliverPlan).ExecuteCommandAsync();
            };
            try
            {
                if (tixing!=null)
                {
                    tixing.DeliverPlanPaicheId = DeliverPlan.Keyid;
                     await _client.Updateable(tixing).ExecuteCommandAsync();
                }
                return await _client.Insertable(DeliverPlan).ExecuteCommandAsync();
            }
            catch (Exception)
            {
                throw;
            }
        }
@@ -210,7 +276,7 @@
                throw Oops.Oh("没有权限");
            }
            Expression<Func<OA_DeliverPlan, bool>> SearchList = (x) => true;
            Expression<Func<OA_DeliverPlanPaiche, bool>> SearchList = (x) => true;
            SearchList = SearchList.And(x => x.FirmId == _oAServices.firmId);
            //SearchList = SearchList.And(x => x.Creater == Permissions.MemberId);//只看自己
            SearchList = SearchList.And(x => x.ShifouDelivery != 2);//过滤有效
@@ -225,11 +291,11 @@
            }
            if (Param.TimeStart != null)
            {
                SearchList = SearchList.And(x => x.DeliverTime > Param.TimeStart);
                SearchList = SearchList.And(x => x.DeliverTime >= Param.TimeStart.Value.Date);
            }
            if (Param.TimeEnd != null)
            {
                SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.AddDays(1));
                SearchList = SearchList.And(x => x.DeliverTime < Param.TimeEnd.Value.Date.AddDays(1));
            }
            if (Param.DeliveredState != null)
            {
@@ -245,8 +311,8 @@
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _client.Queryable<OA_DeliverPlan>().Includes(x => x.Driver).Includes(x => x.SentStaff)
                .Where(SearchList).OrderBy(x => x.Dizhi).OrderBy(x => x.Sort).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            var data = await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Driver).Includes(x => x.SentStaff).Includes(x=>x.DeliverPlans)
                .Where(SearchList).OrderBy(x => x.DeliverTime).OrderBy(x => x.Sort).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            Param.page.TotalCount = totle;
            return new DeliverOderPageRet
@@ -265,7 +331,7 @@
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        public async Task<bool> UpDataDeliverPlans(OA_DeliverPlan Param)
        public async Task<bool> UpDataDeliverPlans(OA_DeliverPlanPaiche Param)
        {
            if (Param.Keyid == null)
@@ -274,16 +340,28 @@
            {
                throw Oops.Oh("没有权限");
            }
            var data = await _client.Queryable<OA_DeliverPlan>().Where(x => x.ShifouDelivery != 2 && x.Keyid == Param.Keyid).FirstAsync();
            var data = await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.DeliverPlans).Where(x => x.ShifouDelivery != 2 && x.Keyid == Param.Keyid).FirstAsync();
            data.LastUpdateTime = DateTime.Now;
            data.Updater = Permissions.MemberId;
            if (data.DriverId != Param.DriverId)
            {
                data.DriverId = Param.DriverId;
                var car = await _client.Queryable<OA_CarManage>().Where(x => x.StaffID == Param.DriverId && x.MemberID == _oAServices.firmId).FirstAsync();
                data.CarId = car == null ? 0 : car.Keyid;
                foreach (var item in data.DeliverPlans)
                {
                    item.DriverId = Param.DriverId;
                    item.CarId = car == null ? 0 : car.Keyid;
                    item.Updater = Permissions.MemberId;
                    item.LastUpdateTime = DateTime.Now;
                    item.DeliverTime = Param.DeliverTime;
                }
            }
            data.DeliverTime = Param.DeliverTime;
            data.Remark = Param.Remark;
@@ -311,22 +389,91 @@
            return await _client.UpdateNav(data).Include(x => x.Attachments, new UpdateNavOptions()
            {
                OneToManyInsertOrUpdate = true,
            }).Include(x => x.DeliverPlans, new UpdateNavOptions()
            {
                OneToManyInsertOrUpdate = true,
            }).ExecuteCommandAsync();
        }
        /// <summary>
        /// 修改订单
        /// 撤销订单
        /// </summary>
        /// <param name="KeyId"></param>
        /// <returns></returns>
        public async Task<int > UndoDeliverPlans(Guid KeyId)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            var data= await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x=>x.DeliverPlans).Includes(x=>x.DelvceTiXing).Where(x=>x.Keyid == KeyId).FirstAsync();
            if (data != null)
            {
                if (data.Deliveredstatus != DeliveredType.Delivered)
                {
                    await _client.AsTenant().BeginTranAsync();
                    try
                    {
                        if (data.DelvceTiXing != null)
                        {
                            data.DelvceTiXing.Chulistatus = AppointmentDeliverState.unAccept;
                            data.DelvceTiXing.LastUpdateTime = DateTime.Now;
                            data.DelvceTiXing.Updater = Permissions.MemberId;
                            data.DelvceTiXing.ChuliTime = DateTime.Now;
                            data.DelvceTiXing.ChuliRen = Permissions.MemberId;
                            await _client.Updateable(data.DelvceTiXing).ExecuteCommandAsync();
                        }
                        if (data.DeliverPlans != null)
                        {
                            foreach (var item in data.DeliverPlans)
                            {
                                item.DriverId = 0;
                                item.DeliverPlanPaicheid = Guid.Empty;
                                item.Deliveredstatus = DeliveredType.Undeliver;
                                item.Updater = Permissions.MemberId;
                                item.LastUpdateTime = DateTime.Now;
                            }
                            await _client.Updateable(data.DeliverPlans).ExecuteCommandAsync();
                        }
                         var a = await _client.Deleteable(data).ExecuteCommandAsync();
                        await _client.AsTenant().CommitTranAsync();
                        return a;
                    }
                    catch (Exception)
                    {
                        await _client.AsTenant().RollbackTranAsync();
                        throw;
                    }
                }
                else
                {
                    throw Oops.Oh("配送已完成,无法撤销");
                }
            }
            else
                throw Oops.Oh("没有找到订单");
        }
        /// <summary>
        /// 修改订单 弃用
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        [Obsolete]
        public async Task<bool> SortDeliverPlans(SortPlanIn Param)
        {
            throw Oops.Oh("已经弃用");
            if (!await CheckRols())
            {
@@ -349,15 +496,92 @@
        /// </summary>
        /// <param name="KeyId"></param>
        /// <returns></returns>
        public async Task<OA_DeliverPlan> GetDeliverPlanInfo(Guid KeyId)
        public async Task<OA_DeliverPlanPaiche> GetDeliverPlanInfo(Guid KeyId)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            return await _client.Queryable<OA_DeliverPlan>().Includes(x => x.SentStaff).Includes(x => x.Attachments).Includes(x => x.Driver).Includes(x => x.Manager)
            return await _client.Queryable<OA_DeliverPlanPaiche>().Includes(x => x.Attachments).Includes(x => x.Driver).Includes(x => x.Manager).Includes(x=>x.DeliverPlans)
                .Where(x => x.Keyid == KeyId && x.ShifouDelivery != 2).FirstAsync();
        }
        /// <summary>
        /// 打卡记录详情
        /// </summary>
        public async Task<OA_DriverRecord> GetDriverRecordInfo(Guid Id)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            var data = await _client.Queryable<OA_DriverRecord>()
                .Includes(x=>x.Car)
                   .Includes(x => x.Attachments)
                   .Includes(x => x.CarConditionAttachments)
                   .Where(x =>  x.Id == Id).FirstAsync();
            if (data == null)
                throw Oops.Oh("没有权限");
            return data;
        }
        /// <summary>
        /// 获取车辆打卡记录
        /// </summary>
        /// <param name="Param"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<DeliverRecordPageRet> GetDriverRecords(DeliverRecordSearchParam Param)
        {
            if (!await CheckRols())
            {
                throw Oops.Oh("没有权限");
            }
            Expression<Func<OA_DriverRecord, bool>> SearchList = (x) => true;
            SearchList = SearchList.And(x => x.ClockType != DriverClockType.RoughDraft);//不看草稿
            if (Param.CarID != null)
            {
                SearchList = SearchList.And(x => x.CarID == Param.CarID);
            }
            if (Param.TimeStart != null)
            {
                SearchList = SearchList.And(x => x.CreatTime >= Param.TimeStart.Value.Date);
            }
            if (Param.TimeEnd != null)
            {
                SearchList = SearchList.And(x => x.CreatTime < Param.TimeEnd.Value.Date.AddDays(1));
            }
            if (Param.ClockType != null)
            {
                SearchList = SearchList.And(x => x.ClockType == Param.ClockType);
            }
            //强制增加员工过滤
            RefAsync<int> totle = 0;
            var data = await _client.Queryable<OA_DriverRecord>().Includes(x=>x.Car)
                .Where(SearchList).OrderByDescending(x => x.CreatTime.Date).ToPageListAsync(Param.page.PageIndex, Param.page.PageSize, totle);
            Param.page.TotalCount = totle;
           // var count = await _client.Queryable<OA_DriverRecord>().Where(x => x.CreatTime.Date == DateTime.Now.Date).CountAsync();
            return new DeliverRecordPageRet
            {
                Data = data,
                page = Param.page
            };
        }
        /// <summary>
@@ -382,6 +606,8 @@
                return false;
        }
        /// <summary>
        /// 生成sn号
        /// </summary>
@@ -390,7 +616,7 @@
        {
            // var sn = await _client.Queryable<OA_DeliverPlan>().Where(x => x.CreateTime >= DateTime.Now.Date && x.CreateTime < DateTime.Now.AddDays(1).Date).OrderByDescending(x => x.SellerOrderId).Select(x => x.SellerOrderId).FirstAsync();
            var sn = await _client.Queryable<OA_DeliverPlan>().Where(x => x.CreateTime.Value.Date == DateTime.Now.Date).OrderByDescending(x => x.SellerOrderId).Select(x => x.SellerOrderId).FirstAsync();
            var sn = await _client.Queryable<OA_DeliverPlanPaiche>().Where(x => x.CreateTime.Value.Date == DateTime.Now.Date).OrderByDescending(x => x.SellerOrderId).Select(x => x.SellerOrderId).FirstAsync();
            if (sn != null)
            {
                try
cylsg/cylsg.Application/Transfer/UserTransfer.cs
@@ -1,6 +1,7 @@
using cylsg.Core;
using cylsg.Model.TransferOrder;
using cylsg.Model.UserModel;
using cylsg.Model.utilityViewModel;
using cylsg.utility;
using cylsg.utility.Extend;
using Cylsg.Filter;
@@ -19,6 +20,7 @@
using System.Text;
using System.Threading.Tasks;
using TencentCloud.Ame.V20190916.Models;
using TencentCloud.Domain.V20180808.Models;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ChannelsLeadsGetLeadsInfoByComponentIdResponse.Types;
namespace cylsg.Application.Transfer
@@ -285,7 +287,7 @@
                SearchList = SearchList.And(x =>x.IsSetOK==param.IsSetOK);
            }
            if (param.HasSendOk == false)
                SearchList= SearchList.And(x =>( x.FailNum >0||x.BatchStatus!= "FINISHED")||(x.BatchStatus==null&&x.ErrorCode== "NOT_ENOUGH")); //NOT_ENOUGH 是账户没有钱
                SearchList= SearchList.And(x =>( x.FailNum >0||x.BatchStatus!= "FINISHED")||(x.BatchStatus==null&&x.ErrorCode== "NOT_ENOUGH")||x.FailAmount>0); //NOT_ENOUGH 是账户没有钱
            else
                //有一笔大余0 的视为失败
                SearchList= SearchList.And(x => x.FailNum ==0&&x.BatchStatus=="FINISHED");
@@ -358,7 +360,7 @@
            {
                throw Oops.Oh("已经处理不再处理");
            }
           if(!((TOrder.ErrorCode== "INVALID_REQUEST"&&TOrder.ErrorMsg== "对应单号已超出重试期,请查单确认后决定是否换单请求")|| (TOrder.ErrorCode == "NOT_ENOUGH")))
           if(!((TOrder.ErrorCode== "INVALID_REQUEST"&&TOrder.ErrorMsg== "对应单号已超出重试期,请查单确认后决定是否换单请求")|| (TOrder.ErrorCode == "NOT_ENOUGH")||(TOrder.FailAmount>0)))
            {
                //不满足冲洗支付要求
                throw Oops.Oh("不满足重新支付要求");
@@ -883,9 +885,76 @@
        }
        /// <summary>
        /// 获取列表详情
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [AllowAnonymous]
        public async Task<RetPageData<WeChatTransferOrder>> GetTransferOrder(SSPageByWhereOrder Param)
        {
            if (Param.Page == null)
                throw Oops.Oh("参数错误");
            Expression<Func<WeChatTransferOrder, bool>> where = null;
            if (!string.IsNullOrEmpty( Param.Where as string))
            {
              //where =   CommonHelper.FormatWhereExpression<WeChatTransferOrder>(Param.Where);
 where =   CommonHelper.FormatWhereExpression<WeChatTransferOrder>(Param.Where as string);
            }
            Expression<Func<WeChatTransferOrder, object>> order = null;
            if (Param.Order?.Name!=null)
            {
                 order = CommonHelper.FormatPropertyExpression<WeChatTransferOrder>(Param.Order.Name);
            }
            RefAsync<int> title = 0;
            var BR = new BaseRepository<WeChatTransferOrder>();
          var data=  await BR.AsQueryable().Includes(x=>x.user,u=>u.Worek).Select(x=>new WeChatTransferOrder
          {
               UserIDCode= x.user.Worek.IdCode,
                UserName=x.user.Worek.name,
                 TotalAmount=x.TotalAmount,
               TotalNum=x.TotalNum,
              BatchId=x.BatchId,
               SuccessNum=x.SuccessNum,
              OutBatchNumber=x.OutBatchNumber,
              BatchName = x.BatchName,
              BatchStatus=x.BatchStatus,
              UserID= x.UserID,
              UpDataTime=x.UpDataTime,
              YiTiXianGz=x.user.Worek.YiTiXianJine,
               ZhongGz=x.user.Worek.TiXianZonge,
              ItCode=x.user.ItCode,
              SuccessAmount= x.SuccessAmount,
              FailAmount=x.FailAmount
          }).MergeTable().WhereIF(where != null, where).OrderByIF(order!=null,order,Param.Order?.Des?? OrderByType.Asc).ToPageListAsync(Param.Page.PageIndex,Param.Page.PageSize, title);
            Param.Page.TotalCount = title;
            return new RetPageData<WeChatTransferOrder>()
            {
                 data= data,
                  Page=Param.Page,
             };
;        }
    }
    /// <summary>
    ///
    /// 收索
    /// </summary>
    public class SearchTransferOder
    {
@@ -961,4 +1030,7 @@
    }
}
cylsg/cylsg.Model/ECTEModel/EC_DriverRecord.cs
@@ -16,14 +16,17 @@
        /// <summary>
        /// id   Key
        /// </summary>
        [SugarColumn(IsPrimaryKey =true)]
        public Guid? Id { get; set; }
        /// <summary>
        /// 里程表 公里
        /// </summary>
        public int Mileage { get; set; } = 0;
        /// <summary>
        /// 车辆里程表图片
        /// </summary>
        public string? MileageImg { get; set; }
        /// <summary>
        /// 车况
        /// </summary>
@@ -56,12 +59,13 @@
        /// <summary>
        /// 创建人对象
        /// </summary>
        public OaStaff? Staff { get; set; }
        [Navigate(NavigateType.OneToOne, nameof(OaStaff.MemberId), nameof(CreaterID))]
        public OaStaff? CreaterStaff { get; set; }
        /// <summary>
        /// 车辆
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(CarID), nameof(OA_CarManage.Keyid))]
        public OA_CarManage Car { get; set; }
        /// <summary>
        ///  创建人
@@ -88,6 +92,15 @@
        public DriverClockType ClockType { get; set; } = DriverClockType.Unknown;
        /// <summary>
        /// 是否可以编辑
        /// </summary>
        [SugarColumn(IsIgnore =true)]
        public bool  CanEdit  { get; set; }=false;
    }
    /// <summary>
    /// 打卡类型
@@ -105,7 +118,11 @@
        /// <summary>
        /// 下班打卡
        /// </summary>
        Clockout
        Clockout,
        /// <summary>
        /// 草稿
        /// </summary>
        RoughDraft
    }
}
cylsg/cylsg.Model/ECTEModel/OA_DeliverPlan.cs
@@ -186,7 +186,7 @@
     
        /// <summary>
        /// 备  注:
        /// 默认值:
        /// 默认值: 客户经理
        ///</summary>
        [SugarColumn(ColumnName="BusinessManagerId" ) ]
        public int? BusinessManagerId  { get; set;  }
@@ -223,9 +223,25 @@
        [SugarColumn(ColumnName="CompanyName" ) ]
        public string? CompanyName  { get; set;  }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TransferType")]
        public int? TransferType { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TransferName")]
        public string? TransferName { get; set; }
        /// <summary>
        /// 派车ID
        /// </summary>
        public Guid? DeliverPlanPaicheid { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值: 新增的,不关联公司
        ///</summary>
cylsg/cylsg.Model/ECTEModel/OA_DeliverPlanPaiche.cs
New file
@@ -0,0 +1,278 @@
using System;
using System.Collections.Generic;
using System.Linq;
using cylsg.Model.ECTEModel;
using SqlSugar;
namespace Models
{
    /// <summary>
    /// 派车
    ///</summary>
    [SugarTable("OA_DeliverPlanPaiche")]
    public class OA_DeliverPlanPaiche
    {
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Keyid", IsPrimaryKey = true)]
        public Guid? Keyid { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "FirmId")]
        public Guid? FirmId { get; set; }
        /// <summary>
        /// 备  注:客户id
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "BuyerId")]
        public Guid? BuyerId { get; set; }
        /// <summary>
        /// 备  注:实际到达时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "DeliveredTime")]
        public DateTime? DeliveredTime { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "DeliverTime")]
        public DateTime? DeliverTime { get; set; }
        /// <summary>
        /// 备  注:注意事项
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Zhuyishixiang")]
        public string? Zhuyishixiang { get; set; }
        /// <summary>
        /// 备  注:工作考评
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Gongzuokaoping")]
        public string? Gongzuokaoping { get; set; }
        /// <summary>
        /// 备  注:汽车id
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "CarId")]
        public int? CarId { get; set; }
        /// <summary>
        /// 备  注:司机id
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "DriverId")]
        public int? DriverId { get; set; }
        /// <summary>
        /// 司机
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(DriverId), nameof(OaStaff.Keyid))]
        public OaStaff? Driver { get; set; }
        /// <summary>
        /// 备  注:移交状态 运输状态 2移交 1 未移交
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Transferstatus")]
        public int? Transferstatus { get; set; }
        /// <summary>
        /// 备  注:移交时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TransfersTime")]
        public DateTime? TransfersTime { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Sort")]
        public int? Sort { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Creater")]
        public Guid? Creater { get; set; }
        /// <summary>
        /// 员工
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(Creater), nameof(OaStaff.MemberId))]
        public OaStaff? SentStaff { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "CreateTime")]
        public DateTime? CreateTime { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Updater")]
        public Guid? Updater { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "LastUpdateTime")]
        public DateTime? LastUpdateTime { get; set; }
        /// <summary>
        /// 备  注:意见反馈
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "wentifankui")]
        public string? Wentifankui { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Yichangchuli")]
        public string? Yichangchuli { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Xingzhengzhuize")]
        public string? Xingzhengzhuize { get; set; }
        /// <summary>
        /// 备  注:送货单号
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "SellerOrderId")]
        public string? SellerOrderId { get; set; }
        /// <summary>
        /// 备  注:电话
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Dianhua")]
        public string? Dianhua { get; set; }
        /// <summary>
        /// 备  注:地址
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Dizhi")]
        public string? Dizhi { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Remark")]
        public string? Remark { get; set; }
        /// <summary>
        /// 备  注:项目经理 ID
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "BusinessManagerId")]
        public int? BusinessManagerId { get; set; }
        /// <summary>
        /// 客户经理
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(BusinessManagerId), nameof(OaStaff.Keyid))]
        public OaStaff? Manager { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Biddingcompany")]
        public int? Biddingcompany { get; set; }
        /// <summary>
        /// 备  注:  2忽略
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "shifouDelivery")]
        public int? ShifouDelivery { get; set; }
        /// <summary>
        /// 备  注:联系人
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Lianxiren")]
        public string? Lianxiren { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值: 新增的,不关联公司
        ///</summary>
        [SugarColumn(ColumnName = "CompanyName")]
        public string? CompanyName { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TransferType")]
        public int? TransferType { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TransferName")]
        public string? TransferName { get; set; }
        /// <summary>
        /// 关联配送单
        /// </summary>
        [Navigate(NavigateType.OneToMany, nameof(OA_DeliverPlan.DeliverPlanPaicheid), nameof(Keyid))]
        public List<OA_DeliverPlan>? DeliverPlans { get; set; }
        /// <summary>
        /// 关联请求单
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(Keyid),nameof(OA_DeliverTixing.DeliverPlanPaicheId))]
        public OA_DeliverTixing? DelvceTiXing { get; set; }
        /// <summary>
        /// 备  注:
        /// 默认值: 新增的,不关联公司
        ///</summary>
        public DeliveredType? Deliveredstatus { get; set; } = DeliveredType.Undeliver;
        /// <summary>
        /// 附件列表  3
        /// </summary>
        [Navigate(NavigateType.OneToMany, nameof(OA_attachment.OA_Id), nameof(Keyid), "AttachmentType=3")]
        public List<OA_attachment> Attachments { get; set; }
        /// <summary>
        /// 提醒的keyID 是提醒传递过来的需要传递次字段,否则为空
        /// </summary>
        [SugarColumn(IsIgnore =true)]
        public int? DeliverTixingId { get; set; }
    }
}
cylsg/cylsg.Model/ECTEModel/OA_DeliverTixing.cs
@@ -29,7 +29,7 @@
        /// <summary>
        /// 员工
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(FirmId), nameof(OaStaff.MemberId))]
        [Navigate(NavigateType.OneToOne, nameof(Creater), nameof(OaStaff.MemberId))]
        public OaStaff? SentStaff { get; set; }
        /// <summary>
@@ -87,7 +87,19 @@
        ///</summary>
        [SugarColumn(ColumnName="LastUpdateTime" ) ]
        public DateTime? LastUpdateTime  { get; set;  } 
        /// <summary>
        /// 派车ID
        /// </summary>
        public Guid? DeliverPlanPaicheId {  get; set; }
        /// <summary>
        /// 派车单
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(DeliverPlanPaicheId), nameof(OA_DeliverPlanPaiche.Keyid))]
        public OA_DeliverPlanPaiche? Paiche { get; set; }
    }
    /// <summary>
cylsg/cylsg.Model/TransferOrder/WeChartTransferOrder.cs
@@ -180,6 +180,37 @@
        [SugarColumn(ColumnDescription = "是否已经完成处理", DefaultValue ="0")]
        public bool   IsSetOK { get; set; }= false;
        /// <summary>
        /// 名字
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string? UserName { get; set; }
        /// <summary>
        /// 用户身份证
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string? UserIDCode { get; set; }
        /// <summary>
        /// 已提现工资
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public decimal? YiTiXianGz { get; set; }
        /// <summary>
        /// 总工资
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public decimal? ZhongGz { get; set; }
        /// <summary>
        /// 电话号码
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string? ItCode { get; set; }
    }
cylsg/cylsg.Model/UserModel/User.cs
@@ -43,7 +43,7 @@
        /// <summary>
        /// 昵称
        /// </summary>
        [SugarColumn(ColumnDescription = "用户ID", ColumnDataType = "nvarchar(100)", IsNullable = true)]
        [SugarColumn(ColumnDescription = "用户昵称", ColumnDataType = "nvarchar(100)", IsNullable = true)]
        public string? Nickname { get; set; }
@@ -63,5 +63,12 @@
        /// </summary>
        [SugarColumn(ColumnDescription = "WxOpenId", ColumnDataType = "nvarchar(100)", IsNullable = true)]
        public string?  WxOpenId { get; set; }
        /// <summary>
        /// 用户表情。
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(Id),nameof(UserWorker.UserId))]
        public UserWorker Worek { get; set; }
    }
}
cylsg/cylsg.Model/utilityViewModel/ECTESTOAPermissions.cs
@@ -75,4 +75,60 @@
        
    }
    /// <summary>
    ///     根据where查询条件和order排序获取列表
    /// </summary>
    public class SSPageByWhereOrder
    {
        /// <summary>
        /// 页面参数
        /// </summary>
        public PageModel Page { get; set; }
        /// <summary>
        ///     判断条件 必须是json格式的字符串{xxx:ddd}
        /// </summary>
        public string? Where { get; set; }
        /// <summary>
        ///     排序
        /// </summary>
        public SSOrder? Order { get; set; }
    }
    /// <summary>
    /// 排序方式
    /// </summary>
    public class SSOrder
    {
        /// <summary>
        /// 属性名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 排序类型
        /// </summary>
        public OrderByType Des { get; set; }
    }
    /// <summary>
    /// 通用返回参数
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class RetPageData<T>
    {
        /// <summary>
        /// 数据
        /// </summary>
        public List<T> data { get; set; }
        /// <summary>
        /// 页面参数
        /// </summary>
        public PageModel Page { get; set; }
    }
}
cylsg/cylsg.utility/CommonHelper.cs
@@ -1,15 +1,22 @@
using System;
using cylsg.utility.Extend;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Net.Http.Json;
using System.Reflection;
using System.Runtime.Loader;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static cylsg.utility.untilityModels;
namespace cylsg.utility
{
@@ -818,12 +825,165 @@
        #endregion
        /// <summary>
        /// 根据json字符穿处理
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jsonString"></param>
        /// <param name="parameter"></param>
        /// <returns></returns>
        private static Expression<Func<T, bool>> CreateWhereExpressionRecursive<T>(string jsonString, ParameterExpression parameter)
        {
            var conditions = new List<Expression>();
            JObject jsonObject = JObject.Parse(jsonString);
            foreach (var property in jsonObject.Properties())
            {
                var propertyName = property.Name;
                var propertyValue = property.Value.ToString();
                if (propertyValue == "") //空值不处理
                    continue;
                var propertyInfo = typeof(T).GetProperty(propertyName);
                if (propertyInfo == null)
                {
                    propertyInfo = typeof(T).GetProperty(propertyName.FirstToCapitalize());
                    if (propertyInfo == null)
                        continue; // 如果属性不存在,跳过
                }
                var propertyType = propertyInfo.PropertyType;
                var TypeName = propertyType.GenericTypeArguments.Length > 0 ? propertyType.GenericTypeArguments[0].Name + "?" : propertyType.Name;
                if (propertyType.IsClass && TypeName != "String")
                {
                    // 递归处理嵌套模型
                    var nestedParameter = Expression.Parameter(propertyType, propertyName);
                    var nestedJsonString = property.Value.ToString();
                    // 使用 MakeGenericType 动态创建泛型方法
                    var genericMethod = typeof(CommonHelper).GetMethod("CreateWhereExpressionRecursive", BindingFlags.Static | BindingFlags.NonPublic)
                        .MakeGenericMethod(propertyType);
                    // 调用泛型方法并获取返回的表达式
                    var nestedConditions = (Expression<Func<object, bool>>)genericMethod.Invoke(null, new object[] { nestedJsonString, nestedParameter });
                    var propExpr = Expression.Property(parameter, propertyName);
                    var lambda = Expression.Lambda(nestedConditions.Body, nestedParameter);
                    var invoke = Expression.Invoke(lambda, propExpr);
                    conditions.Add(invoke);
                }
                else if (propertyType == typeof(string))
                {
                    var propExpr = Expression.Property(parameter, propertyName);
                    var constant = Expression.Constant(propertyValue);
                    var containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
                    var containsExpression = Expression.Call(propExpr, containsMethod, constant);
                    conditions.Add(containsExpression);
                }
                else if (TypeName.Contains( "DateTime")) //兼容DateTime?
                {
                    var dateRange = propertyValue.Split('~');
                    if (dateRange.Length == 2)
                    {
                        var startDate = DateTime.Parse(dateRange[0]);
                        var endDate = DateTime.Parse(dateRange[1]);
                        var propExpr = Expression.Property(parameter, propertyName);
                        var startConstant = Expression.Constant(startDate);
                        var endConstant = Expression.Constant(endDate);
                        if (TypeName == "DateTime?")
                        // 将常量表达式转换为 Nullable<DateTime>
                        {
                            var startNullableConstant = Expression.Convert(startConstant, typeof(DateTime?));
                            var endNullableConstant = Expression.Convert(endConstant, typeof(DateTime?));
                            var greaterThanOrEqual = Expression.GreaterThanOrEqual(propExpr, startNullableConstant);
                            var lessThanOrEqual = Expression.LessThanOrEqual(propExpr, endNullableConstant);
                            var andExpression = Expression.AndAlso(greaterThanOrEqual, lessThanOrEqual);
                            conditions.Add(andExpression);
                        }
                        else
                        {
                            var greaterThanOrEqual = Expression.GreaterThanOrEqual(propExpr, startConstant);
                            var lessThanOrEqual = Expression.LessThanOrEqual(propExpr, endConstant);
                            var andExpression = Expression.AndAlso(greaterThanOrEqual, lessThanOrEqual);
                            conditions.Add(andExpression);
                        }
                    }
                    else if (DateTime.TryParse(propertyValue, out var dateTime))
                    {
                        var propExpr = Expression.Property(parameter, propertyName);
                        var constant = Expression.Constant(dateTime);
                        var equalExpression = Expression.Equal(propExpr, constant);
                        conditions.Add(equalExpression);
                    }
                }
                else
                {
                    var propExpr = Expression.Property(parameter, propertyName);
                    var constant = Expression.Constant(Convert.ChangeType(propertyValue, propertyType));
                    var equalExpression = Expression.Equal(propExpr, constant);
                    conditions.Add(equalExpression);
                }
            }
            var body = conditions.Count > 1 ? conditions.Aggregate(Expression.AndAlso) : conditions.FirstOrDefault();
            return Expression.Lambda<Func<T, bool>>(body ?? Expression.Constant(true), parameter);
        }
        /// <summary>
        /// json格式化为表达式树
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jsonString"></param>
        /// <returns></returns>
        public static Expression<Func<T, bool>> FormatWhereExpression<T>(string jsonString)
        {
            var parameter = Expression.Parameter(typeof(T), "x");
            return CreateWhereExpressionRecursive<T>(jsonString, parameter);
        }
        /// <summary>
        /// 更具属性名称生成表达式树,如x.id
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public static Expression<Func<T, object>> FormatPropertyExpression<T>(string propertyName)
        {
            // 获取参数表达式
            var parameter = Expression.Parameter(typeof(T), "x");
            // 获取属性表达式
            var propertyAccess = Expression.PropertyOrField(parameter, propertyName);
            if (propertyAccess == null)
            {
                ///首字母转大写
                propertyAccess = Expression.PropertyOrField(parameter, propertyName.FirstToCapitalize());
            }
            // 创建 Lambda 表达式,并在返回值中进行类型转换
            return Expression.Lambda<Func<T, object>>(
                Expression.Convert(propertyAccess, typeof(object)),
                parameter);
        }
   }
    }
    /// <summary>
    /// 枚举项属性
@@ -847,4 +1007,9 @@
        [Description("枚举项属性")]
        public string? Description { get; set; }
    }
}
cylsg/cylsg.utility/Extend/StringEx.cs
@@ -232,5 +232,20 @@
        }
        #endregion
        /// <summary>
        /// 首字母转大写
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string FirstToCapitalize(this  string input)
        {
            if (string.IsNullOrEmpty(input))
            {
                return input;
            }
            TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
            return textInfo.ToTitleCase(input.ToLower()).Substring(0, 1) + input.Substring(1);
        }
    }
}
cylsg/cylsg.utility/cylsg.utility.csproj
@@ -8,6 +8,7 @@
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Primitives" Version="8.0.0" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
</Project>
cylsg/cylsg.utility/untilityModels.cs
New file
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cylsg.utility
{
    /// <summary>
    /// 通用模型
    /// </summary>
    public class untilityModels
    {
    }
}