diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..6c2df94
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,5 @@
+# 忽略打包输出目录
+dist
+
+# 忽略依赖目录
+node_modules
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..79ff08a
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,25 @@
+{
+ "arrowParens": "always",
+ "bracketSameLine": false,
+ "objectWrap": "preserve",
+ "bracketSpacing": true,
+ "semi": false,
+ "experimentalOperatorPosition": "end",
+ "experimentalTernaries": false,
+ "singleQuote": true,
+ "jsxSingleQuote": false,
+ "quoteProps": "preserve",
+ "trailingComma": "all",
+ "singleAttributePerLine": false,
+ "htmlWhitespaceSensitivity": "ignore",
+ "vueIndentScriptAndStyle": false,
+ "proseWrap": "preserve",
+ "endOfLine": "lf",
+ "insertPragma": false,
+ "printWidth": 80,
+ "requirePragma": false,
+ "tabWidth": 2,
+ "useTabs": true,
+ "embeddedLanguageFormatting": "auto",
+ "cursorOffset": -1
+}
\ No newline at end of file
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000..1e662ee
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ extends: ['@commitlint/config-conventional'],
+}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..ab0cadc
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,53 @@
+/**
+ * ESLint Flat 配置(ESLint 9)
+ * 适用于:Vue 3 + TypeScript + Prettier
+ */
+import pluginVue from 'eslint-plugin-vue' // Vue 官方 ESLint 插件
+import {
+ defineConfigWithVueTs, // 用于组合 Vue + TS 的 Flat 配置
+ vueTsConfigs, // 官方提供的 TypeScript 推荐规则集合
+} from '@vue/eslint-config-typescript'
+import prettierPlugin from 'eslint-plugin-prettier' // 将 Prettier 作为 ESLint 规则使用
+import prettierConfig from 'eslint-config-prettier' // 关闭与 Prettier 冲突的 ESLint 规则
+
+export default defineConfigWithVueTs(
+ // 1. 全局忽略配置(必须放在最前面)
+ {
+ // 不对构建产物和依赖目录进行 ESLint 校验
+ ignores: ['dist/**', 'node_modules/**'],
+ },
+
+ // 2. Vue 相关基础规则(包含模板语法支持)
+ pluginVue.configs['flat/essential'],
+
+ // 3. TypeScript 推荐规则(脚本逻辑部分)
+ vueTsConfigs.recommended,
+
+ // 4. Prettier 相关配置:只负责格式化,不干扰语义规则
+ {
+ // 注册需要用到的插件
+ plugins: {
+ prettier: prettierPlugin, // Prettier 插件
+ },
+
+ // 自定义规则
+ rules: {
+ // 关闭与 Prettier 冲突的 ESLint 规则
+ ...prettierConfig.rules,
+
+ // 将 Prettier 的格式化结果作为 ESLint 的告警输出
+ 'prettier/prettier': 'warn',
+ },
+ },
+
+ // 5. 自定义规则
+ {
+ rules: {
+ // Vue 规则
+ 'vue/multi-word-component-names': 'off',
+
+ // TypeScript 规则
+ '@typescript-eslint/no-explicit-any': 'off',
+ },
+ },
+)
diff --git a/global.d.ts b/global.d.ts
index 36160f9..d42aa71 100644
--- a/global.d.ts
+++ b/global.d.ts
@@ -1,4 +1,4 @@
// declare module '@/*';
-declare module '@/components/*';
-declare module '@/views/*';
-declare module '@/api/*';
\ No newline at end of file
+declare module '@/components/*'
+declare module '@/views/*'
+declare module '@/api/*'
diff --git a/lint-staged.config.cjs b/lint-staged.config.cjs
new file mode 100644
index 0000000..0a1324e
--- /dev/null
+++ b/lint-staged.config.cjs
@@ -0,0 +1,10 @@
+module.exports = {
+ '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
+ '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': [
+ 'prettier --write--parser json',
+ ],
+ 'package.json': ['prettier --write'],
+ '*.vue': ['eslint --fix', 'prettier --write', 'stylelint --fix'],
+ '*.{scss,less,style,html}': ['stylelint --fix', 'prettier --write'],
+ '*.md': ['prettier --write'],
+}
diff --git a/package-lock.json b/package-lock.json
index 1143186..91d9464 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,10 +23,19 @@
"@types/event-source-polyfill": "^1.0.5",
"@types/js-cookie": "^3.0.6",
"@types/node": "^24.0.3",
+ "@typescript-eslint/eslint-plugin": "^8.53.0",
+ "@typescript-eslint/parser": "^8.53.0",
"@vitejs/plugin-vue": "^5.2.3",
+ "@vue/eslint-config-typescript": "^14.6.0",
"@vue/tsconfig": "^0.7.0",
+ "eslint": "^9.39.2",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-prettier": "^5.5.4",
+ "eslint-plugin-vue": "^10.6.2",
"event-source-polyfill": "^1.0.31",
"js-cookie": "^3.0.5",
+ "lint-staged": "^16.2.7",
+ "prettier": "^3.7.4",
"sass-embedded": "^1.89.2",
"typescript": "~5.8.3",
"unplugin-icons": "^22.2.0",
@@ -96,9 +105,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.27.1",
- "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
- "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -594,6 +603,260 @@
"node": ">=18"
}
},
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.21.1.tgz",
+ "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.7",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmmirror.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
+ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmmirror.com/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
+ "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmmirror.com/@eslint/object-schema/-/object-schema-2.1.7.tgz",
+ "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
+ "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.17.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmmirror.com/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmmirror.com/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"node_modules/@iconify-json/lucide": {
"version": "1.2.66",
"resolved": "https://registry.npmmirror.com/@iconify-json/lucide/-/lucide-1.2.66.tgz",
@@ -634,6 +897,57 @@
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
"license": "MIT"
},
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmmirror.com/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz",
@@ -945,6 +1259,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.21.tgz",
@@ -961,6 +1282,239 @@
"undici-types": "~7.8.0"
}
},
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz",
+ "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.53.0",
+ "@typescript-eslint/type-utils": "8.53.0",
+ "@typescript-eslint/utils": "8.53.0",
+ "@typescript-eslint/visitor-keys": "8.53.0",
+ "ignore": "^7.0.5",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.53.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.53.0.tgz",
+ "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.53.0",
+ "@typescript-eslint/types": "8.53.0",
+ "@typescript-eslint/typescript-estree": "8.53.0",
+ "@typescript-eslint/visitor-keys": "8.53.0",
+ "debug": "^4.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/project-service/-/project-service-8.53.0.tgz",
+ "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.53.0",
+ "@typescript-eslint/types": "^8.53.0",
+ "debug": "^4.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz",
+ "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.53.0",
+ "@typescript-eslint/visitor-keys": "8.53.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz",
+ "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz",
+ "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.53.0",
+ "@typescript-eslint/typescript-estree": "8.53.0",
+ "@typescript-eslint/utils": "8.53.0",
+ "debug": "^4.4.3",
+ "ts-api-utils": "^2.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.53.0.tgz",
+ "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz",
+ "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.53.0",
+ "@typescript-eslint/tsconfig-utils": "8.53.0",
+ "@typescript-eslint/types": "8.53.0",
+ "@typescript-eslint/visitor-keys": "8.53.0",
+ "debug": "^4.4.3",
+ "minimatch": "^9.0.5",
+ "semver": "^7.7.3",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.4.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.53.0.tgz",
+ "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.53.0",
+ "@typescript-eslint/types": "8.53.0",
+ "@typescript-eslint/typescript-estree": "8.53.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz",
+ "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.53.0",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/@vitejs/plugin-vue": {
"version": "5.2.4",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
@@ -1095,6 +1649,32 @@
"rfdc": "^1.4.1"
}
},
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "14.6.0",
+ "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-14.6.0.tgz",
+ "integrity": "sha512-UpiRY/7go4Yps4mYCjkvlIbVWmn9YvPGQDxTAlcKLphyaD77LjIu3plH4Y9zNT0GB4f3K5tMmhhtRhPOgrQ/bQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/utils": "^8.35.1",
+ "fast-glob": "^3.3.3",
+ "typescript-eslint": "^8.35.1",
+ "vue-eslint-parser": "^10.2.0"
+ },
+ "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
+ }
+ }
+ },
"node_modules/@vue/language-core": {
"version": "2.2.10",
"resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.10.tgz",
@@ -1201,6 +1781,33 @@
"node": ">=0.4.0"
}
},
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/alien-signals": {
"version": "1.0.13",
"resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz",
@@ -1208,6 +1815,51 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/ansi-escapes": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-7.2.0.tgz",
+ "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/ant-design-vue": {
"version": "4.2.6",
"resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-4.2.6.tgz",
@@ -1273,6 +1925,13 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
"node_modules/array-tree-filter": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
@@ -1329,6 +1988,13 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/brace-expansion": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -1371,6 +2037,46 @@
"node": ">= 0.4"
}
},
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
@@ -1395,6 +2101,66 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-5.1.1.tgz",
+ "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^7.1.0",
+ "string-width": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/colorjs.io": {
"version": "0.5.2",
"resolved": "https://registry.npmmirror.com/colorjs.io/-/colorjs.io-0.5.2.tgz",
@@ -1414,12 +2180,29 @@
"node": ">= 0.8"
}
},
+ "node_modules/commander": {
+ "version": "14.0.2",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-14.0.2.tgz",
+ "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/confbox": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.2.2.tgz",
@@ -1451,6 +2234,34 @@
"url": "https://opencollective.com/core-js"
}
},
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
@@ -1471,9 +2282,9 @@
"license": "MIT"
},
"node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -1487,6 +2298,13 @@
}
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1522,6 +2340,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
@@ -1534,6 +2359,19 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
@@ -1620,12 +2458,331 @@
"@esbuild/win32-x64": "0.25.5"
}
},
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.39.2.tgz",
+ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.21.1",
+ "@eslint/config-helpers": "^0.4.2",
+ "@eslint/core": "^0.17.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.39.2",
+ "@eslint/plugin-kit": "^0.4.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.4.0",
+ "eslint-visitor-keys": "^4.2.1",
+ "espree": "^10.4.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "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.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "10.1.8",
+ "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz",
+ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-config-prettier"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.5.4",
+ "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
+ "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.7"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "10.6.2",
+ "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-10.6.2.tgz",
+ "integrity": "sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^7.1.0",
+ "semver": "^7.6.3",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "peerDependencies": {
+ "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
+ "@typescript-eslint/parser": "^7.0.0 || ^8.0.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "vue-eslint-parser": "^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@stylistic/eslint-plugin": {
+ "optional": true
+ },
+ "@typescript-eslint/parser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-8.4.0.tgz",
+ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/eslint/node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-10.4.0.tgz",
+ "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/event-source-polyfill": {
"version": "1.0.31",
"resolved": "https://registry.npmmirror.com/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz",
@@ -1633,17 +2790,82 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/exsolve": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.7.tgz",
"integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
"license": "MIT"
},
- "node_modules/fdir": {
- "version": "6.4.6",
- "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.6.tgz",
- "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -1653,6 +2875,19 @@
}
}
},
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
@@ -1665,6 +2900,44 @@
"node": ">=8"
}
},
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/follow-redirects": {
"version": "1.15.9",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
@@ -1724,6 +2997,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-east-asian-width": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@@ -1862,6 +3148,16 @@
"resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz",
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
},
+ "node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/immutable": {
"version": "5.1.3",
"resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.3.tgz",
@@ -1869,6 +3165,33 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1890,6 +3213,22 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
@@ -1931,6 +3270,25 @@
"url": "https://github.com/sponsors/mesqueeb"
}
},
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/jiti": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz",
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
"node_modules/js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz",
@@ -1947,12 +3305,56 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/jsencrypt": {
"version": "3.5.4",
"resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.5.4.tgz",
"integrity": "sha512-kNjfYEMNASxrDGsmcSQh/rUTmcoRfSUkxnAz+MMywM8jtGu+fFEZ3nJjHM58zscVnwR0fYmG9sGkTDjqUdpiwA==",
"license": "MIT"
},
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
"node_modules/kolorist": {
"version": "1.8.0",
"resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
@@ -1960,6 +3362,63 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lint-staged": {
+ "version": "16.2.7",
+ "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-16.2.7.tgz",
+ "integrity": "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "commander": "^14.0.2",
+ "listr2": "^9.0.5",
+ "micromatch": "^4.0.8",
+ "nano-spawn": "^2.0.0",
+ "pidtree": "^0.6.0",
+ "string-argv": "^0.3.2",
+ "yaml": "^2.8.1"
+ },
+ "bin": {
+ "lint-staged": "bin/lint-staged.js"
+ },
+ "engines": {
+ "node": ">=20.17"
+ },
+ "funding": {
+ "url": "https://opencollective.com/lint-staged"
+ }
+ },
+ "node_modules/listr2": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmmirror.com/listr2/-/listr2-9.0.5.tgz",
+ "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^5.0.0",
+ "colorette": "^2.0.20",
+ "eventemitter3": "^5.0.1",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
"node_modules/local-pkg": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.1.tgz",
@@ -1977,6 +3436,22 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
@@ -1989,6 +3464,33 @@
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT"
},
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-update": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/log-update/-/log-update-6.1.0.tgz",
+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "cli-cursor": "^5.0.0",
+ "slice-ansi": "^7.1.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -2019,6 +3521,43 @@
"node": ">= 0.4"
}
},
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
@@ -2040,6 +3579,19 @@
"node": ">= 0.6"
}
},
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/minimatch": {
"version": "9.0.5",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz",
@@ -2103,6 +3655,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/nano-spawn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/nano-spawn/-/nano-spawn-2.0.0.tgz",
+ "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1"
+ }
+ },
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
@@ -2127,6 +3692,13 @@
"integrity": "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==",
"license": "MIT"
},
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -2136,6 +3708,85 @@
"node": ">=0.10.0"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/package-manager-detector": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/package-manager-detector/-/package-manager-detector-1.3.0.tgz",
@@ -2143,6 +3794,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
@@ -2150,6 +3814,26 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/pathe": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz",
@@ -2168,9 +3852,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -2179,6 +3863,19 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/pinia": {
"version": "3.0.3",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-3.0.3.tgz",
@@ -2238,12 +3935,75 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.7.4.tgz",
+ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz",
+ "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/quansync": {
"version": "0.2.10",
"resolved": "https://registry.npmmirror.com/quansync/-/quansync-0.2.10.tgz",
@@ -2260,6 +4020,27 @@
],
"license": "MIT"
},
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
@@ -2290,6 +4071,44 @@
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
"license": "MIT"
},
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/rfdc": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz",
@@ -2335,6 +4154,30 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"node_modules/rxjs": {
"version": "7.8.2",
"resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.2.tgz",
@@ -2667,12 +4510,91 @@
"compute-scroll-into-view": "^1.0.20"
}
},
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==",
"license": "MIT"
},
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2690,6 +4612,62 @@
"node": ">=0.10.0"
}
},
+ "node_modules/string-argv": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz",
+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-8.1.0.tgz",
+ "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/stylis": {
"version": "4.3.6",
"resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz",
@@ -2746,6 +4724,22 @@
"node": ">=16.0.0"
}
},
+ "node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmmirror.com/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/throttle-debounce": {
"version": "5.0.2",
"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
@@ -2763,13 +4757,13 @@
"license": "MIT"
},
"node_modules/tinyglobby": {
- "version": "0.2.14",
- "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.14.tgz",
- "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "version": "0.2.15",
+ "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
"license": "MIT",
"dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
},
"engines": {
"node": ">=12.0.0"
@@ -2790,6 +4784,19 @@
"node": ">=8.0"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
+ "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
@@ -2797,6 +4804,19 @@
"dev": true,
"license": "0BSD"
},
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.8.3.tgz",
@@ -2811,6 +4831,30 @@
"node": ">=14.17"
}
},
+ "node_modules/typescript-eslint": {
+ "version": "8.53.0",
+ "resolved": "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.53.0.tgz",
+ "integrity": "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.53.0",
+ "@typescript-eslint/parser": "8.53.0",
+ "@typescript-eslint/typescript-estree": "8.53.0",
+ "@typescript-eslint/utils": "8.53.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
"node_modules/ufo": {
"version": "1.6.1",
"resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.1.tgz",
@@ -2934,6 +4978,23 @@
}
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/varint": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/varint/-/varint-6.0.0.tgz",
@@ -3044,6 +5105,43 @@
}
}
},
+ "node_modules/vue-eslint-parser": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz",
+ "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "eslint-scope": "^8.2.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.6.0",
+ "semver": "^7.6.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/vue-router": {
"version": "4.5.1",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz",
@@ -3110,6 +5208,120 @@
"resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
"integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
"license": "MIT"
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.8.2.tgz",
+ "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/package.json b/package.json
index 9472bd1..22d27c2 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,10 @@
"scripts": {
"dev": "vite --host --open",
"build": "vite build",
- "preview": "vite preview"
+ "preview": "vite preview",
+ "lint": "eslint \"src/**/*.{ts,vue}\"",
+ "lint:fix": "eslint \"src/**/*.{ts,vue}\" --fix",
+ "format": "prettier --write \"src/**/*.{ts,vue,js,json,css,md}\""
},
"dependencies": {
"@types/lodash": "^4.17.21",
@@ -24,14 +27,29 @@
"@types/event-source-polyfill": "^1.0.5",
"@types/js-cookie": "^3.0.6",
"@types/node": "^24.0.3",
+ "@typescript-eslint/eslint-plugin": "^8.53.0",
+ "@typescript-eslint/parser": "^8.53.0",
"@vitejs/plugin-vue": "^5.2.3",
+ "@vue/eslint-config-typescript": "^14.6.0",
"@vue/tsconfig": "^0.7.0",
+ "eslint": "^9.39.2",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-prettier": "^5.5.4",
+ "eslint-plugin-vue": "^10.6.2",
"event-source-polyfill": "^1.0.31",
"js-cookie": "^3.0.5",
+ "lint-staged": "^16.2.7",
+ "prettier": "^3.7.4",
"sass-embedded": "^1.89.2",
"typescript": "~5.8.3",
"unplugin-icons": "^22.2.0",
"vite": "^6.3.5",
"vue-tsc": "^2.2.8"
+ },
+ "lint-staged": {
+ "*.{ts,js,vue}": [
+ "eslint --fix",
+ "prettier --write"
+ ]
}
}
diff --git a/src/App.vue b/src/App.vue
index f6c5ecd..a9ea3e2 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,10 +1,10 @@
-
-
-
+
+
+
-
\ No newline at end of file
+
diff --git a/src/api/common.d.ts b/src/api/common.d.ts
index 458347a..e142245 100644
--- a/src/api/common.d.ts
+++ b/src/api/common.d.ts
@@ -1,11 +1,11 @@
-export type ID = number | string;
-export type IDS = (number | string)[];
+export type ID = number | string
+export type IDS = (number | string)[]
export interface BaseEntity {
- createBy?: string;
- createTime?: string;
- updateBy?: string;
- updateTime?: string;
+ createBy?: string
+ createTime?: string
+ updateBy?: string
+ updateTime?: string
}
/**
@@ -16,24 +16,24 @@ export interface BaseEntity {
* @param isAsc 是否升序
*/
export interface PageQuery {
- isAsc?: string;
- orderByColumn?: string;
- pageNum?: number;
- pageSize?: number;
- [key: string]: any;
+ isAsc?: string
+ orderByColumn?: string
+ pageNum?: number
+ pageSize?: number
+ [key: string]: any
}
export interface ApiResponse {
- code?: number;
- msg?: string;
+ code?: number
+ msg?: string
- data?: T;
- rows: T[];
- total?: number;
+ data?: T
+ rows: T[]
+ total?: number
- token?: string;
+ token?: string
- img?: string;
- uuid?: string;
- captchaOnOff?: boolean;
+ img?: string
+ uuid?: string
+ captchaOnOff?: boolean
}
diff --git a/src/api/request.ts b/src/api/request.ts
index 8e998b8..de7dd5f 100644
--- a/src/api/request.ts
+++ b/src/api/request.ts
@@ -1,93 +1,93 @@
-import axios from "axios";
-import router from "@/router";
-import { getToken, removeToken } from "@/utils/auth";
-import { Modal, notification } from "ant-design-vue";
-import type { AxiosInstance, AxiosRequestConfig } from "axios";
-import type { ApiResponse } from "@/api/common";
+import axios from 'axios'
+import router from '@/router'
+import { getToken, removeToken } from '@/utils/auth'
+import { Modal, notification } from 'ant-design-vue'
+import type { AxiosInstance, AxiosRequestConfig } from 'axios'
+import type { ApiResponse } from '@/api/common'
const errCodeMap: { [key: string]: string } = {
- "403": "当前操作没有权限",
- "404": "访问资源不存在",
- default: "系统未知错误,请反馈给管理员",
-};
+ '403': '当前操作没有权限',
+ '404': '访问资源不存在',
+ default: '系统未知错误,请反馈给管理员',
+}
// 创建axios实例
const service: AxiosInstance = axios.create({
- baseURL: import.meta.env.VITE_APP_BASE_API,
- timeout: 10000,
-});
+ baseURL: import.meta.env.VITE_APP_BASE_API,
+ timeout: 10000,
+})
// 请求拦截器
service.interceptors.request.use(
- (config) => {
- config.headers = config.headers || {};
- config.headers["Accept-Language"] = "zh-CN";
+ (config) => {
+ config.headers = config.headers || {}
+ config.headers['Accept-Language'] = 'zh-CN'
- const token = getToken();
- if (token) {
- config.headers["Authorization"] = `Bearer ${token}`;
- }
- return config;
- },
- (error) => {
- return Promise.reject(error);
- }
-);
+ const token = getToken()
+ if (token) {
+ config.headers['Authorization'] = `Bearer ${token}`
+ }
+ return config
+ },
+ (error) => {
+ return Promise.reject(error)
+ },
+)
// 响应拦截器
service.interceptors.response.use(
- (response) => {
- if (response.config.responseType === "blob") {
- return response.data;
- }
+ (response) => {
+ if (response.config.responseType === 'blob') {
+ return response.data
+ }
- const code = response.data.code || 200;
- const data = response.data;
+ const code = response.data.code || 200
+ const data = response.data
- switch (code) {
- case 200:
- return data;
- case 401:
- Modal.error({
- title: "系统提示",
- content: "登录状态已过期,请重新登录",
- onOk: () => {
- removeToken();
- router.replace({ name: 'Login' });
- },
- });
- return Promise.reject(data);
- case 500:
- return Promise.reject(new Error(data.msg));
- default:
- notification.error({
- message: "请求错误",
- description: errCodeMap[code] || data?.msg || errCodeMap.default,
- });
- return Promise.reject(data);
- }
- },
- (error) => {
- if (!error.__handled) {
- const message =
- error.code === "ECONNABORTED"
- ? "请求超时,请稍后重试"
- : error.message || "网络异常";
+ switch (code) {
+ case 200:
+ return data
+ case 401:
+ Modal.error({
+ title: '系统提示',
+ content: '登录状态已过期,请重新登录',
+ onOk: () => {
+ removeToken()
+ router.replace({ name: 'Login' })
+ },
+ })
+ return Promise.reject(data)
+ case 500:
+ return Promise.reject(new Error(data.msg))
+ default:
+ notification.error({
+ message: '请求错误',
+ description: errCodeMap[code] || data?.msg || errCodeMap.default,
+ })
+ return Promise.reject(data)
+ }
+ },
+ (error) => {
+ if (!error.__handled) {
+ const message =
+ error.code === 'ECONNABORTED'
+ ? '请求超时,请稍后重试'
+ : error.message || '网络异常'
- notification.error({
- message: "网络错误",
- description: message,
- });
+ notification.error({
+ message: '网络错误',
+ description: message,
+ })
- error.__handled = true;
- }
+ error.__handled = true
+ }
- return Promise.reject(error);
- }
-);
+ return Promise.reject(error)
+ },
+)
function request(config: AxiosRequestConfig): Promise> {
- return service(config) as Promise>;
+ return service(config) as Promise>
}
-export default request;
+export default request
diff --git a/src/api/system/dict/data.ts b/src/api/system/dict/data.ts
index 6c83cca..88c7942 100644
--- a/src/api/system/dict/data.ts
+++ b/src/api/system/dict/data.ts
@@ -2,51 +2,51 @@ import request from '@/api/request'
// 查询字典数据列表
export function listData(params: any) {
- return request({
- url: '/system/dict/data/list',
- method: 'get',
- params
- })
+ return request({
+ url: '/system/dict/data/list',
+ method: 'get',
+ params,
+ })
}
// 查询字典数据详细
export function getData(dictCode: string) {
- return request({
- url: '/system/dict/data/' + dictCode,
- method: 'get'
- })
+ return request({
+ url: '/system/dict/data/' + dictCode,
+ method: 'get',
+ })
}
// 根据字典类型查询字典数据信息
export function getDicts(dictType: string) {
- return request({
- url: '/system/dict/data/type/' + dictType,
- method: 'get'
- })
+ return request({
+ url: '/system/dict/data/type/' + dictType,
+ method: 'get',
+ })
}
// 新增字典数据
export function addData(data: any) {
- return request({
- url: '/system/dict/data',
- method: 'post',
- data
- })
+ return request({
+ url: '/system/dict/data',
+ method: 'post',
+ data,
+ })
}
// 修改字典数据
export function updateData(data: any) {
- return request({
- url: '/system/dict/data',
- method: 'put',
- data
- })
+ return request({
+ url: '/system/dict/data',
+ method: 'put',
+ data,
+ })
}
// 删除字典数据
export function delData(dictCode: string) {
- return request({
- url: '/system/dict/data/' + dictCode,
- method: 'delete'
- })
+ return request({
+ url: '/system/dict/data/' + dictCode,
+ method: 'delete',
+ })
}
diff --git a/src/api/system/dict/index.ts b/src/api/system/dict/index.ts
index a2253fc..2bf3656 100644
--- a/src/api/system/dict/index.ts
+++ b/src/api/system/dict/index.ts
@@ -1,2 +1,2 @@
export * from './data'
-export * from './type'
\ No newline at end of file
+export * from './type'
diff --git a/src/api/system/dict/type.ts b/src/api/system/dict/type.ts
index a54ed5b..6eeaf9a 100644
--- a/src/api/system/dict/type.ts
+++ b/src/api/system/dict/type.ts
@@ -3,59 +3,59 @@ import type { ID } from '@/api/common'
// 查询字典类型列表
export function listType(params: any) {
- return request({
- url: "/system/dict/type/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/system/dict/type/list',
+ method: 'get',
+ params,
+ })
}
// 查询字典类型详细
export function getType(dictId: ID) {
- return request({
- url: "/system/dict/type/" + dictId,
- method: "get",
- });
+ return request({
+ url: '/system/dict/type/' + dictId,
+ method: 'get',
+ })
}
// 新增字典类型
export function addType(data: any) {
- return request({
- url: "/system/dict/type",
- method: "post",
- data,
- });
+ return request({
+ url: '/system/dict/type',
+ method: 'post',
+ data,
+ })
}
// 修改字典类型
export function updateType(data: any) {
- return request({
- url: "/system/dict/type",
- method: "put",
- data,
- });
+ return request({
+ url: '/system/dict/type',
+ method: 'put',
+ data,
+ })
}
// 删除字典类型
export function delType(dictId: ID) {
- return request({
- url: "/system/dict/type/" + dictId,
- method: "delete",
- });
+ return request({
+ url: '/system/dict/type/' + dictId,
+ method: 'delete',
+ })
}
// 刷新字典缓存
export function refreshCache() {
- return request({
- url: "/system/dict/type/refreshCache",
- method: "delete",
- });
+ return request({
+ url: '/system/dict/type/refreshCache',
+ method: 'delete',
+ })
}
// 获取字典选择框列表
export function getOptions() {
- return request({
- url: "/system/dict/type/optionselect",
- method: "get",
- });
+ return request({
+ url: '/system/dict/type/optionselect',
+ method: 'get',
+ })
}
diff --git a/src/api/system/index.ts b/src/api/system/index.ts
index 69af935..00820d6 100644
--- a/src/api/system/index.ts
+++ b/src/api/system/index.ts
@@ -1,27 +1,27 @@
import request from '@/api/request'
-import type { LoginInfo } from './model';
+import type { LoginInfo } from './model'
// 用户登录
export function login(data: LoginInfo) {
- return request({
- url: '/login',
- method: 'post',
- data
- })
+ return request({
+ url: '/login',
+ method: 'post',
+ data,
+ })
}
// 获取验证码
export function getCaptcha() {
- return request({
- url: '/captchaImage',
- method: 'get'
- })
+ return request({
+ url: '/captchaImage',
+ method: 'get',
+ })
}
// 退出登录
export function logout() {
- return request({
- url: '/logout',
- method: 'post'
- })
+ return request({
+ url: '/logout',
+ method: 'post',
+ })
}
diff --git a/src/api/system/model.d.ts b/src/api/system/model.d.ts
index 06ded72..bb57b83 100644
--- a/src/api/system/model.d.ts
+++ b/src/api/system/model.d.ts
@@ -1,6 +1,6 @@
export interface LoginInfo {
- username: string
- password: string
- uuid: string
- code: string
-}
\ No newline at end of file
+ username: string
+ password: string
+ uuid: string
+ code: string
+}
diff --git a/src/api/traceOrderManage/equipment/index.ts b/src/api/traceOrderManage/equipment/index.ts
index e44b437..3a2fdb4 100644
--- a/src/api/traceOrderManage/equipment/index.ts
+++ b/src/api/traceOrderManage/equipment/index.ts
@@ -1,36 +1,36 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
// 查询设备管理详细
export function getEquipmentByCode(code: string) {
- return request({
- url: '/basic/equipment/code/' + code,
- method: 'get'
- })
+ return request({
+ url: '/basic/equipment/code/' + code,
+ method: 'get',
+ })
}
// 查询设备进站记录列表
export function listEquipmentEntry(params: any) {
- return request({
- url: "/mes/equipment-entry-log/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/equipment-entry-log/list',
+ method: 'get',
+ params,
+ })
}
// 新增设备进站记录
export function addEquipmentEntry(data: any) {
- return request({
- url: "/mes/equipment-entry-log",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/equipment-entry-log',
+ method: 'post',
+ data,
+ })
}
// 删除设备进站记录
export function delEquipmentEntry(id: ID) {
- return request({
- url: "/mes/equipment-entry-log/" + id,
- method: "delete",
- });
+ return request({
+ url: '/mes/equipment-entry-log/' + id,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/index.ts b/src/api/traceOrderManage/index.ts
index e761d83..b072ee4 100644
--- a/src/api/traceOrderManage/index.ts
+++ b/src/api/traceOrderManage/index.ts
@@ -1,72 +1,72 @@
-import request from "@/api/request";
-import type { LotTraceOrderData, LotTraceOrderQuery } from "./model";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { LotTraceOrderData, LotTraceOrderQuery } from './model'
+import type { ID } from '@/api/common'
// 查询随工单列表
export function listLotTraceOrder(params: LotTraceOrderQuery) {
- return request({
- url: "/mes/lot-trace-order/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/lot-trace-order/list',
+ method: 'get',
+ params,
+ })
}
// 高级查询随工单列表
export function advListLotTraceOrder(params: LotTraceOrderQuery) {
- return request({
- url: "/mes/lot-trace-order/advList",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/lot-trace-order/advList',
+ method: 'get',
+ params,
+ })
}
// 查询随工单详细
export function getLotTraceOrder(id: ID) {
- return request({
- url: "/mes/lot-trace-order/" + id,
- method: "get",
- });
+ return request({
+ url: '/mes/lot-trace-order/' + id,
+ method: 'get',
+ })
}
// 新增随工单
export function addLotTraceOrder(data: LotTraceOrderData) {
- return request({
- url: "/mes/lot-trace-order",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/lot-trace-order',
+ method: 'post',
+ data,
+ })
}
// 修改随工单
export function updateLotTraceOrder(data: LotTraceOrderData) {
- return request({
- url: "/mes/lot-trace-order",
- method: "put",
- data,
- });
+ return request({
+ url: '/mes/lot-trace-order',
+ method: 'put',
+ data,
+ })
}
// 删除随工单
export function delLotTraceOrder(id: ID) {
- return request({
- url: "/mes/lot-trace-order/" + id,
- method: "delete",
- });
+ return request({
+ url: '/mes/lot-trace-order/' + id,
+ method: 'delete',
+ })
}
// 关闭随工单
export function closeLotTraceOrder(id: ID) {
- return request({
- url: "/mes/lot-trace-order/close/" + id,
- method: "put",
- });
+ return request({
+ url: '/mes/lot-trace-order/close/' + id,
+ method: 'put',
+ })
}
// 新增质量异常联络单
export function addQualityAbnormalContact(data: any) {
- return request({
- url: "/mes/qualityAbnormalContact",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/qualityAbnormalContact',
+ method: 'post',
+ data,
+ })
}
diff --git a/src/api/traceOrderManage/location/index.ts b/src/api/traceOrderManage/location/index.ts
index 9b06a79..73fd816 100644
--- a/src/api/traceOrderManage/location/index.ts
+++ b/src/api/traceOrderManage/location/index.ts
@@ -1,54 +1,54 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
// 查询库位列表
export function listStorageLocation(params: any) {
- return request({
- url: "/wip/storageLocation/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/wip/storageLocation/list',
+ method: 'get',
+ params,
+ })
}
// 高级查询库位列表
export function advListStorageLocation(params: any) {
- return request({
- url: "/wip/storageLocation/advList",
- method: "get",
- params,
- });
+ return request({
+ url: '/wip/storageLocation/advList',
+ method: 'get',
+ params,
+ })
}
// 查询库位详细
export function getStorageLocation(id: ID) {
- return request({
- url: "/wip/storageLocation/" + id,
- method: "get",
- });
+ return request({
+ url: '/wip/storageLocation/' + id,
+ method: 'get',
+ })
}
// 新增库位
export function addStorageLocation(data: any) {
- return request({
- url: "/wip/storageLocation",
- method: "post",
- data,
- });
+ return request({
+ url: '/wip/storageLocation',
+ method: 'post',
+ data,
+ })
}
// 修改库位
export function updateStorageLocation(data: any) {
- return request({
- url: "/wip/storageLocation",
- method: "put",
- data,
- });
+ return request({
+ url: '/wip/storageLocation',
+ method: 'put',
+ data,
+ })
}
// 删除库位
export function delStorageLocation(id: ID) {
- return request({
- url: "/wip/storageLocation/" + id,
- method: "delete",
- });
+ return request({
+ url: '/wip/storageLocation/' + id,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/mask/index.ts b/src/api/traceOrderManage/mask/index.ts
index 0d17860..1c236ec 100644
--- a/src/api/traceOrderManage/mask/index.ts
+++ b/src/api/traceOrderManage/mask/index.ts
@@ -1,37 +1,37 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
// 查询站点绑定治具列表
export function listStationBindMask(params: any) {
- return request({
- url: "/mes/station/mask/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/station/mask/list',
+ method: 'get',
+ params,
+ })
}
// 为站点绑定治具
export function batchBindMasksToStation(stationId: ID, maskIds: ID[]) {
- return request({
- url: "/mes/station/" + stationId + "/bind/mask",
- method: "put",
- data: maskIds,
- });
+ return request({
+ url: '/mes/station/' + stationId + '/bind/mask',
+ method: 'put',
+ data: maskIds,
+ })
}
// 为站点绑定治具组
export function bindMaskCombinationToStations(data: any) {
- return request({
- url: "/mes/station/bind/mask-combination",
- method: "put",
- data,
- });
+ return request({
+ url: '/mes/station/bind/mask-combination',
+ method: 'put',
+ data,
+ })
}
// 站点解绑治具
export function unbindStationMask(stationMaskId: ID) {
- return request({
- url: "/mes/station/bind-mask/" + stationMaskId,
- method: "delete",
- });
+ return request({
+ url: '/mes/station/bind-mask/' + stationMaskId,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/maskCombination/index.ts b/src/api/traceOrderManage/maskCombination/index.ts
index 0942eee..668bb5d 100644
--- a/src/api/traceOrderManage/maskCombination/index.ts
+++ b/src/api/traceOrderManage/maskCombination/index.ts
@@ -1,81 +1,84 @@
-import request from "@/api/request";
-import type { MaskCombinationData, MaskCombinationQuery } from "./model";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { MaskCombinationData, MaskCombinationQuery } from './model'
+import type { ID } from '@/api/common'
// 查询治具组合列表
export function listMaskCombination(params: MaskCombinationQuery) {
- return request({
- url: "/tpm/mask/combination/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/tpm/mask/combination/list',
+ method: 'get',
+ params,
+ })
}
// 查询治具组合包含的治具列表
-export function listCombinationAssignMask(id: ID, params: MaskCombinationQuery) {
- return request({
- url: "/tpm/mask/combination/" + id + "/masks",
- method: "get",
- params,
- });
+export function listCombinationAssignMask(
+ id: ID,
+ params: MaskCombinationQuery,
+) {
+ return request({
+ url: '/tpm/mask/combination/' + id + '/masks',
+ method: 'get',
+ params,
+ })
}
// 高级查询治具组合列表
export function advListMaskCombination(params: MaskCombinationQuery) {
- return request({
- url: "/tpm/mask/combination/advList",
- method: "get",
- params,
- });
+ return request({
+ url: '/tpm/mask/combination/advList',
+ method: 'get',
+ params,
+ })
}
// 查询治具组合详细
export function getMaskCombination(id: ID) {
- return request({
- url: "/tpm/mask/combination/" + id,
- method: "get",
- });
+ return request({
+ url: '/tpm/mask/combination/' + id,
+ method: 'get',
+ })
}
// 新增治具组合
export function addMaskCombination(data: MaskCombinationData) {
- return request({
- url: "/tpm/mask/combination",
- method: "post",
- data,
- });
+ return request({
+ url: '/tpm/mask/combination',
+ method: 'post',
+ data,
+ })
}
// 修改治具组合
export function updateMaskCombination(data: MaskCombinationData) {
- return request({
- url: "/tpm/mask/combination",
- method: "put",
- data,
- });
+ return request({
+ url: '/tpm/mask/combination',
+ method: 'put',
+ data,
+ })
}
// 删除治具组合
export function delMaskCombination(id: ID) {
- return request({
- url: "/tpm/mask/combination/" + id,
- method: "delete",
- });
+ return request({
+ url: '/tpm/mask/combination/' + id,
+ method: 'delete',
+ })
}
// 新增治具组合与治具关联关系
export function addMaskCombinationAssignment(data: MaskCombinationData) {
- return request({
- url: "/tpm/mask/combination/assignment",
- method: "post",
- data,
- });
+ return request({
+ url: '/tpm/mask/combination/assignment',
+ method: 'post',
+ data,
+ })
}
// 删除治具组合与治具关联关系
export function delMaskCombinationAssignment(id: ID) {
- return request({
- url: "/tpm/mask/combination/assignment/" + id,
- method: "delete",
- });
+ return request({
+ url: '/tpm/mask/combination/assignment/' + id,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/maskCombination/model.d.ts b/src/api/traceOrderManage/maskCombination/model.d.ts
index cb62239..cbfd17c 100644
--- a/src/api/traceOrderManage/maskCombination/model.d.ts
+++ b/src/api/traceOrderManage/maskCombination/model.d.ts
@@ -1,26 +1,26 @@
-import { BaseEntity, PageQuery, type ID } from "@/api/common";
+import { BaseEntity, PageQuery, type ID } from '@/api/common'
/**
* 治具组合查询参数
*/
export interface MaskCombinationQuery extends PageQuery {
- combinationName?: string;
- combinationCode?: string;
- combinationStatus?: string;
- remark?: string;
- searchValue?: string;
- tempId?: string;
- timeRange?: [string, string];
+ combinationName?: string
+ combinationCode?: string
+ combinationStatus?: string
+ remark?: string
+ searchValue?: string
+ tempId?: ID
+ timeRange?: [string, string]
}
/**
* 治具组合数据
*/
export interface MaskCombinationData extends BaseEntity {
- combinationName?: string;
- combinationCode?: string;
- combinationStatus?: string;
- remark?: string;
- searchValue?: string;
- tempId?: string;
- timeRange?: [string, string];
+ combinationName?: string
+ combinationCode?: string
+ combinationStatus?: string
+ remark?: string
+ searchValue?: string
+ tempId?: ID
+ timeRange?: [string, string]
}
diff --git a/src/api/traceOrderManage/model.d.ts b/src/api/traceOrderManage/model.d.ts
index 5c18632..accc220 100644
--- a/src/api/traceOrderManage/model.d.ts
+++ b/src/api/traceOrderManage/model.d.ts
@@ -1,188 +1,188 @@
-import { BaseEntity, PageQuery, type ID } from "@/api/common";
+import { BaseEntity, PageQuery, type ID } from '@/api/common'
/**
* 随工单查询参数
*/
export interface LotTraceOrderQuery extends PageQuery {
- /** 编码 */
- code?: string;
- /** 状态 */
- status?: string;
- /** 主生产计划的ID */
- mpsId?: number;
- /** 主生产计划编码 */
- mpsCode?: string;
- /** 订单类型 */
- orderType?: string;
- /** 主生产计划明细ID */
- mpsDetailId?: number;
- /** 批号 */
- batchNo?: string;
- /** 主生产计划明细序号 */
- mpsDetailSeq?: number;
- /** 目标产品ID */
- tarMaterialId?: number;
- /** 主物料ID */
- masterMaterialId?: number;
- /** 生产版本ID */
- prodVersionId?: number;
- /** 计划数量 */
- planQty?: number;
- /** OK数量 */
- okQty?: number;
- /** NG数量 */
- ngQty?: number;
- /** 未完成数量 */
- unfinishedQty?: number;
- /** 单位ID */
- unitId?: number;
- /** 计划开始时间范围 */
- planStartTimeRange?: [string, string];
- /** 计划结束时间范围 */
- planEndTimeRange?: [string, string];
- /** 扩展字段1 */
- extStr1?: string;
- /** 扩展字段2 */
- extStr2?: string;
- /** 扩展字段3 */
- extStr3?: string;
- /** 扩展字段4 */
- extStr4?: string;
- /** 扩展字段5 */
- extStr5?: string;
- /** 扩展字段6 */
- extStr6?: string;
- /** 扩展字段7 */
- extStr7?: string;
- /** 扩展字段8 */
- extStr8?: string;
- /** 扩展字段9 */
- extStr9?: string;
- /** 扩展字段10 */
- extStr10?: string;
- /** 扩展字段11 */
- extStr11?: string;
- /** 扩展字段12 */
- extStr12?: string;
- /** 扩展字段13 */
- extStr13?: string;
- /** 扩展字段14 */
- extStr14?: string;
- /** 扩展字段15 */
- extStr15?: string;
- /** 扩展字段16 */
- extStr16?: string;
- /** 扩展整型1 */
- extInt1?: number;
- /** 扩展整型2 */
- extInt2?: number;
- /** 扩展小数1 */
- extDec1?: number;
- /** 扩展小数2 */
- extDec2?: number;
- /** 扩展日期1范围 */
- extDate1Range?: [string, string];
- /** 扩展日期2范围 */
- extDate2Range?: [string, string];
- /** 删除标志 */
- delStatus?: string;
- /** 创建时间范围 */
- createTimeRange?: [string, string];
- /** 更新时间范围 */
- updateTimeRange?: [string, string];
+ /** 编码 */
+ code?: string
+ /** 状态 */
+ status?: string
+ /** 主生产计划的ID */
+ mpsId?: number
+ /** 主生产计划编码 */
+ mpsCode?: string
+ /** 订单类型 */
+ orderType?: string
+ /** 主生产计划明细ID */
+ mpsDetailId?: number
+ /** 批号 */
+ batchNo?: string
+ /** 主生产计划明细序号 */
+ mpsDetailSeq?: number
+ /** 目标产品ID */
+ tarMaterialId?: number
+ /** 主物料ID */
+ masterMaterialId?: number
+ /** 生产版本ID */
+ prodVersionId?: number
+ /** 计划数量 */
+ planQty?: number
+ /** OK数量 */
+ okQty?: number
+ /** NG数量 */
+ ngQty?: number
+ /** 未完成数量 */
+ unfinishedQty?: number
+ /** 单位ID */
+ unitId?: number
+ /** 计划开始时间范围 */
+ planStartTimeRange?: [string, string]
+ /** 计划结束时间范围 */
+ planEndTimeRange?: [string, string]
+ /** 扩展字段1 */
+ extStr1?: string
+ /** 扩展字段2 */
+ extStr2?: string
+ /** 扩展字段3 */
+ extStr3?: string
+ /** 扩展字段4 */
+ extStr4?: string
+ /** 扩展字段5 */
+ extStr5?: string
+ /** 扩展字段6 */
+ extStr6?: string
+ /** 扩展字段7 */
+ extStr7?: string
+ /** 扩展字段8 */
+ extStr8?: string
+ /** 扩展字段9 */
+ extStr9?: string
+ /** 扩展字段10 */
+ extStr10?: string
+ /** 扩展字段11 */
+ extStr11?: string
+ /** 扩展字段12 */
+ extStr12?: string
+ /** 扩展字段13 */
+ extStr13?: string
+ /** 扩展字段14 */
+ extStr14?: string
+ /** 扩展字段15 */
+ extStr15?: string
+ /** 扩展字段16 */
+ extStr16?: string
+ /** 扩展整型1 */
+ extInt1?: number
+ /** 扩展整型2 */
+ extInt2?: number
+ /** 扩展小数1 */
+ extDec1?: number
+ /** 扩展小数2 */
+ extDec2?: number
+ /** 扩展日期1范围 */
+ extDate1Range?: [string, string]
+ /** 扩展日期2范围 */
+ extDate2Range?: [string, string]
+ /** 删除标志 */
+ delStatus?: string
+ /** 创建时间范围 */
+ createTimeRange?: [string, string]
+ /** 更新时间范围 */
+ updateTimeRange?: [string, string]
}
/**
* 随工单数据
*/
export interface LotTraceOrderData extends BaseEntity {
- /** 主键ID */
- id?: ID;
- /** 编码 */
- code?: string;
- /** 状态 */
- status?: string;
- /** 主生产计划的ID */
- mpsId?: number;
- /** 主生产计划编码 */
- mpsCode?: string;
- /** 订单类型 */
- orderType?: string;
- /** 主生产计划明细ID */
- mpsDetailId?: number;
- /** 批号 */
- batchNo?: string;
- /** 主生产计划明细序号 */
- mpsDetailSeq?: number;
- /** 目标产品ID */
- tarMaterialId?: number;
- /** 目标产品名称 */
- tarMaterialName?: string;
- /** 目标产品编码 */
- tarMaterialCode?: string;
- /** 主物料ID */
- masterMaterialId?: number;
- /** 生产版本ID */
- prodVersionId?: number;
- /** 计划数量 */
- planQty?: number;
- /** OK数量 */
- okQty?: number;
- /** NG数量 */
- ngQty?: number;
- /** 未完成数量 */
- unfinishedQty?: number;
- /** 单位ID */
- unitId?: number;
- /** 计划开始时间 */
- planStartTime?: string;
- /** 计划结束时间 */
- planEndTime?: string;
- /** 扩展字段1 */
- extStr1?: string;
- /** 扩展字段2 */
- extStr2?: string;
- /** 扩展字段3 */
- extStr3?: string;
- /** 扩展字段4 */
- extStr4?: string;
- /** 扩展字段5 */
- extStr5?: string;
- /** 扩展字段6 */
- extStr6?: string;
- /** 扩展字段7 */
- extStr7?: string;
- /** 扩展字段8 */
- extStr8?: string;
- /** 扩展字段9 */
- extStr9?: string;
- /** 扩展字段10 */
- extStr10?: string;
- /** 扩展字段11 */
- extStr11?: string;
- /** 扩展字段12 */
- extStr12?: string;
- /** 扩展字段13 */
- extStr13?: string;
- /** 扩展字段14 */
- extStr14?: string;
- /** 扩展字段15 */
- extStr15?: string;
- /** 扩展字段16 */
- extStr16?: string;
- /** 扩展整型1 */
- extInt1?: number;
- /** 扩展整型2 */
- extInt2?: number;
- /** 扩展小数1 */
- extDec1?: number;
- /** 扩展小数2 */
- extDec2?: number;
- /** 扩展日期1 */
- extDate1?: string;
- /** 扩展日期2 */
- extDate2?: string;
- /** 备注 */
- remark?: string;
- /** 删除标志 */
- delStatus?: string;
+ /** 主键ID */
+ id?: ID
+ /** 编码 */
+ code?: string
+ /** 状态 */
+ status?: string
+ /** 主生产计划的ID */
+ mpsId?: number
+ /** 主生产计划编码 */
+ mpsCode?: string
+ /** 订单类型 */
+ orderType?: string
+ /** 主生产计划明细ID */
+ mpsDetailId?: number
+ /** 批号 */
+ batchNo?: string
+ /** 主生产计划明细序号 */
+ mpsDetailSeq?: number
+ /** 目标产品ID */
+ tarMaterialId?: number
+ /** 目标产品名称 */
+ tarMaterialName?: string
+ /** 目标产品编码 */
+ tarMaterialCode?: string
+ /** 主物料ID */
+ masterMaterialId?: number
+ /** 生产版本ID */
+ prodVersionId?: number
+ /** 计划数量 */
+ planQty?: number
+ /** OK数量 */
+ okQty?: number
+ /** NG数量 */
+ ngQty?: number
+ /** 未完成数量 */
+ unfinishedQty?: number
+ /** 单位ID */
+ unitId?: number
+ /** 计划开始时间 */
+ planStartTime?: string
+ /** 计划结束时间 */
+ planEndTime?: string
+ /** 扩展字段1 */
+ extStr1?: string
+ /** 扩展字段2 */
+ extStr2?: string
+ /** 扩展字段3 */
+ extStr3?: string
+ /** 扩展字段4 */
+ extStr4?: string
+ /** 扩展字段5 */
+ extStr5?: string
+ /** 扩展字段6 */
+ extStr6?: string
+ /** 扩展字段7 */
+ extStr7?: string
+ /** 扩展字段8 */
+ extStr8?: string
+ /** 扩展字段9 */
+ extStr9?: string
+ /** 扩展字段10 */
+ extStr10?: string
+ /** 扩展字段11 */
+ extStr11?: string
+ /** 扩展字段12 */
+ extStr12?: string
+ /** 扩展字段13 */
+ extStr13?: string
+ /** 扩展字段14 */
+ extStr14?: string
+ /** 扩展字段15 */
+ extStr15?: string
+ /** 扩展字段16 */
+ extStr16?: string
+ /** 扩展整型1 */
+ extInt1?: number
+ /** 扩展整型2 */
+ extInt2?: number
+ /** 扩展小数1 */
+ extDec1?: number
+ /** 扩展小数2 */
+ extDec2?: number
+ /** 扩展日期1 */
+ extDate1?: string
+ /** 扩展日期2 */
+ extDate2?: string
+ /** 备注 */
+ remark?: string
+ /** 删除标志 */
+ delStatus?: string
}
diff --git a/src/api/traceOrderManage/primaryMaterial/index.ts b/src/api/traceOrderManage/primaryMaterial/index.ts
index 6ba1823..5e880d6 100644
--- a/src/api/traceOrderManage/primaryMaterial/index.ts
+++ b/src/api/traceOrderManage/primaryMaterial/index.ts
@@ -1,2 +1,2 @@
export * from './infeed'
-export * from './outfeed'
\ No newline at end of file
+export * from './outfeed'
diff --git a/src/api/traceOrderManage/primaryMaterial/infeed.ts b/src/api/traceOrderManage/primaryMaterial/infeed.ts
index 0cc56c2..d421c85 100644
--- a/src/api/traceOrderManage/primaryMaterial/infeed.ts
+++ b/src/api/traceOrderManage/primaryMaterial/infeed.ts
@@ -1,61 +1,61 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
// 查询主材进站列表
export function listMainMaterialEntryLog(params: any) {
- return request({
- url: "/mes/station/entry-log/main-material/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/list',
+ method: 'get',
+ params,
+ })
}
// 查询主材进站详细
export function getMainMaterialEntryLog(id: ID) {
- return request({
- url: "/mes/station/entry-log/main-material/" + id,
- method: "get",
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/' + id,
+ method: 'get',
+ })
}
// 新增主材Wafer进站
export function addWaferEntryLog(data: any) {
- return request({
- url: "/mes/station/entry-log/main-material/wafer",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/wafer',
+ method: 'post',
+ data,
+ })
}
// 通过载具新增主材Wafer进站
export function addWaferEntryLogByCarrier(data: any) {
- return request({
- url: "/mes/station/entry-log/main-material/wafer/by-carrier",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/wafer/by-carrier',
+ method: 'post',
+ data,
+ })
}
// 新增主材Die进站
export function addDieEntryLog(data: any) {
- return request({
- url: "/mes/station/entry-log/main-material/die",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/die',
+ method: 'post',
+ data,
+ })
}
// 通过载具新增主材Die进站
export function addDieEntryLogByCarrier(data: any) {
- return request({
- url: "/mes/station/entry-log/main-material/die/by-carrier",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/die/by-carrier',
+ method: 'post',
+ data,
+ })
}
// 删除主材进站
export function delMainMaterialEntryLog(id: ID) {
- return request({
- url: "/mes/station/entry-log/main-material/" + id,
- method: "delete",
- });
+ return request({
+ url: '/mes/station/entry-log/main-material/' + id,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/primaryMaterial/outfeed.ts b/src/api/traceOrderManage/primaryMaterial/outfeed.ts
index f88df62..3a5484e 100644
--- a/src/api/traceOrderManage/primaryMaterial/outfeed.ts
+++ b/src/api/traceOrderManage/primaryMaterial/outfeed.ts
@@ -1,54 +1,54 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
// 查询主材出站列表
export function listMainMaterialOutboundLog(params: any) {
- return request({
- url: "/mes/station/out-log/main-material/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/station/out-log/main-material/list',
+ method: 'get',
+ params,
+ })
}
// 查询主材出站详细
export function getMainMaterialOutboundLog(id: ID) {
- return request({
- url: "/mes/station/out-log/main-material/" + id,
- method: "get",
- });
+ return request({
+ url: '/mes/station/out-log/main-material/' + id,
+ method: 'get',
+ })
}
// 新增主材出站
export function batchAddMainMaterialOutboundLog(data: any) {
- return request({
- url: "/mes/station/out-log/main-material/batch",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/out-log/main-material/batch',
+ method: 'post',
+ data,
+ })
}
// 新增主材出站
export function addWaferDieOutboundLogBySpecifiedNg(data: any) {
- return request({
- url: "/mes/station/out-log/main-material/wafer-die/by-specified-ng",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station/out-log/main-material/wafer-die/by-specified-ng',
+ method: 'post',
+ data,
+ })
}
// 修改主材出站
export function updateMainMaterialOutboundLog(data: any) {
- return request({
- url: '/mes/station/out-log/main-material',
- method: 'put',
- data
- })
+ return request({
+ url: '/mes/station/out-log/main-material',
+ method: 'put',
+ data,
+ })
}
// 删除主材出站
export function delMainMaterialOutboundLog(id: ID) {
- return request({
- url: "/mes/station/out-log/main-material/" + id,
- method: "delete",
- });
+ return request({
+ url: '/mes/station/out-log/main-material/' + id,
+ method: 'delete',
+ })
}
diff --git a/src/api/traceOrderManage/station/index.ts b/src/api/traceOrderManage/station/index.ts
index 81bb83a..0c59d45 100644
--- a/src/api/traceOrderManage/station/index.ts
+++ b/src/api/traceOrderManage/station/index.ts
@@ -1,80 +1,80 @@
-import request from "@/api/request";
-import type { ID } from "@/api/common";
-import type { MesStationQuery, MesStationData } from "./model";
+import request from '@/api/request'
+import type { ID } from '@/api/common'
+import type { MesStationQuery, MesStationData } from './model'
// 查询站点列表
export function listStation(params: MesStationQuery) {
- return request({
- url: "/mes/station/list",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/station/list',
+ method: 'get',
+ params,
+ })
}
// 高级查询站点列表
export function advListStation(params: MesStationQuery) {
- return request({
- url: "/mes/station/advList",
- method: "get",
- params,
- });
+ return request({
+ url: '/mes/station/advList',
+ method: 'get',
+ params,
+ })
}
// 查询站点详细
export function getStation(id: ID) {
- return request({
- url: "/mes/station/" + id,
- method: "get",
- });
+ return request({
+ url: '/mes/station/' + id,
+ method: 'get',
+ })
}
// 判断站点是否为最后一个站点
export function isLastStation(id: ID) {
- return request({
- url: '/mes/station/' + id + '/isLast',
- method: 'get'
- })
+ return request({
+ url: '/mes/station/' + id + '/isLast',
+ method: 'get',
+ })
}
// 新增站点
export function addStation(data: MesStationData) {
- return request({
- url: "/mes/station",
- method: "post",
- data,
- });
+ return request({
+ url: '/mes/station',
+ method: 'post',
+ data,
+ })
}
// 修改站点
export function updateStation(data: MesStationData) {
- return request({
- url: "/mes/station",
- method: "put",
- data,
- });
+ return request({
+ url: '/mes/station',
+ method: 'put',
+ data,
+ })
}
// 删除站点
export function delStation(id: ID) {
- return request({
- url: "/mes/station/" + id,
- method: "delete",
- });
+ return request({
+ url: '/mes/station/' + id,
+ method: 'delete',
+ })
}
// 站点开工
export function startStation(id: ID) {
- return request({
- url: "/mes/station/" + id + "/start",
- method: "put",
- });
+ return request({
+ url: '/mes/station/' + id + '/start',
+ method: 'put',
+ })
}
// 站点完工
export function completeStation(id: ID, location: any) {
- return request({
- url: '/mes/station/' + id + '/complete',
- method: 'put',
- data: location
- })
+ return request({
+ url: '/mes/station/' + id + '/complete',
+ method: 'put',
+ data: location,
+ })
}
diff --git a/src/api/traceOrderManage/station/model.d.ts b/src/api/traceOrderManage/station/model.d.ts
index c1261a5..1531179 100644
--- a/src/api/traceOrderManage/station/model.d.ts
+++ b/src/api/traceOrderManage/station/model.d.ts
@@ -1,71 +1,71 @@
-import { BaseEntity, PageQuery, type ID } from "@/api/common";
+import { BaseEntity, PageQuery, type ID } from '@/api/common'
/**
* 站点查询参数
*/
export interface MesStationQuery extends PageQuery {
- /** 随工单ID */
- traceOrderId?: number;
- /** 随工单编码 */
- traceOrderCode?: string;
- /** 站点序号 */
- seqNo?: number;
- /** 站点名称 */
- name?: string;
- /** 站点编码 */
- code?: string;
- /** 状态 */
- status?: string;
- /** 计划数量最小值 */
- planQtyMin?: number;
- /** 计划数量最大值 */
- planQtyMax?: number;
- /** 合格数量最小值 */
- okQtyMin?: number;
- /** 合格数量最大值 */
- okQtyMax?: number;
- /** 不合格数量最小值 */
- ngQtyMin?: number;
- /** 不合格数量最大值 */
- ngQtyMax?: number;
- /** 进站时间范围开始 */
- arrivalTimeStart?: string;
- /** 进站时间范围结束 */
- arrivalTimeEnd?: string;
- /** 出战时间范围开始 */
- departureTimeStart?: string;
- /** 出战时间范围结束 */
- departureTimeEnd?: string;
- /** 删除标志 */
- delStatus?: string;
+ /** 随工单ID */
+ traceOrderId?: ID
+ /** 随工单编码 */
+ traceOrderCode?: string
+ /** 站点序号 */
+ seqNo?: number
+ /** 站点名称 */
+ name?: string
+ /** 站点编码 */
+ code?: string
+ /** 状态 */
+ status?: string
+ /** 计划数量最小值 */
+ planQtyMin?: number
+ /** 计划数量最大值 */
+ planQtyMax?: number
+ /** 合格数量最小值 */
+ okQtyMin?: number
+ /** 合格数量最大值 */
+ okQtyMax?: number
+ /** 不合格数量最小值 */
+ ngQtyMin?: number
+ /** 不合格数量最大值 */
+ ngQtyMax?: number
+ /** 进站时间范围开始 */
+ arrivalTimeStart?: string
+ /** 进站时间范围结束 */
+ arrivalTimeEnd?: string
+ /** 出战时间范围开始 */
+ departureTimeStart?: string
+ /** 出战时间范围结束 */
+ departureTimeEnd?: string
+ /** 删除标志 */
+ delStatus?: string
}
/**
* 站点数据
*/
export interface MesStationData extends BaseEntity {
- /** 主键ID */
- id?: number;
- /** 随工单ID */
- traceOrderId?: number;
- /** 站点序号 */
- seqNo?: number;
- /** 站点名称 */
- name?: string;
- /** 站点编码 */
- code?: string;
- /** 状态 */
- status?: string;
- /** 计划数量 */
- planQty?: number;
- /** 合格数量 */
- okQty?: number;
- /** 不合格数量 */
- ngQty?: number;
- /** 进站时间 */
- arrivalTime?: string;
- /** 出战时间 */
- departureTime?: string;
- /** 删除标志 */
- delStatus?: string;
+ /** 主键ID */
+ id?: ID
+ /** 随工单ID */
+ traceOrderId?: ID
+ /** 站点序号 */
+ seqNo?: number
+ /** 站点名称 */
+ name?: string
+ /** 站点编码 */
+ code?: string
+ /** 状态 */
+ status?: string
+ /** 计划数量 */
+ planQty?: number
+ /** 合格数量 */
+ okQty?: number
+ /** 不合格数量 */
+ ngQty?: number
+ /** 进站时间 */
+ arrivalTime?: string
+ /** 出战时间 */
+ departureTime?: string
+ /** 删除标志 */
+ delStatus?: string
}
diff --git a/src/components/common/DictTag/index.vue b/src/components/common/DictTag/index.vue
index ab20b2b..a15c976 100644
--- a/src/components/common/DictTag/index.vue
+++ b/src/components/common/DictTag/index.vue
@@ -1,123 +1,155 @@
-
-
-
- {{ item.label + " " }}
- {{ item.label + " " }}
-
-
-
- {{ unmatchArray || handleArray }}
-
-
+
+
+
+
+ {{ item.label + ' ' }}
+
+
+ {{ item.label + ' ' }}
+
+
+
+
+ {{ unmatchArray || handleArray }}
+
+
diff --git a/src/components/common/Header/index.vue b/src/components/common/Header/index.vue
index 4dc4fce..0127d0b 100644
--- a/src/components/common/Header/index.vue
+++ b/src/components/common/Header/index.vue
@@ -1,143 +1,160 @@
-
+
diff --git a/src/components/common/Title/index.vue b/src/components/common/Title/index.vue
index b3f95f9..ca6a1e5 100644
--- a/src/components/common/Title/index.vue
+++ b/src/components/common/Title/index.vue
@@ -1,45 +1,46 @@
-
-
{{ name }}
-
-
-
- 刷新
-
-
-
+
+
{{ name }}
+
+
+
+
+ 刷新
+
+
+
diff --git a/src/components/traceOrderManage/holdTraceOrder.vue b/src/components/traceOrderManage/holdTraceOrder.vue
index 30e1944..ccd9c11 100644
--- a/src/components/traceOrderManage/holdTraceOrder.vue
+++ b/src/components/traceOrderManage/holdTraceOrder.vue
@@ -1,82 +1,101 @@
- Hold
+ Hold
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
index 280a972..cdbff3e 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,21 +1,21 @@
-import { createApp } from "vue";
-import App from "./App.vue";
+import { createApp } from 'vue'
+import App from './App.vue'
// Pinia 状态管理
-import { createPinia } from "pinia";
-const pinia = createPinia();
+import { createPinia } from 'pinia'
+const pinia = createPinia()
// Vue Router
-import router from "./router";
+import router from './router'
// 样式文件
-import "ant-design-vue/dist/reset.css";
-import "@/assets/styles/index.scss";
+import 'ant-design-vue/dist/reset.css'
+import '@/assets/styles/index.scss'
-const app = createApp(App);
+const app = createApp(App)
// 字典方法
-import { useDict } from "@/utils/dict";
-app.config.globalProperties.useDict = useDict;
+import { useDict } from '@/utils/dict'
+app.config.globalProperties.useDict = useDict
-app.use(pinia).use(router).mount("#app");
+app.use(pinia).use(router).mount('#app')
diff --git a/src/router/index.ts b/src/router/index.ts
index 01bba67..cb8b1e9 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,120 +1,119 @@
-import { createRouter, createWebHistory } from 'vue-router';
-import { getToken } from "@/utils/auth";
+import { createRouter, createWebHistory } from 'vue-router'
+import { getToken } from '@/utils/auth'
-const whiteList = ["/login"];
+const whiteList = ['/login']
const routes = [
- {
- path: "/",
- name: "Index",
- component: () => import("@/views/index.vue"),
- },
- {
- path: "/login",
- name: "Login",
- component: () => import("@/views/login.vue"),
- },
- {
- path: "/traceOrderManage",
- name: "TraceOrderManage",
- component: () => import("@/views/traceOrderManage/layout.vue"),
- redirect: { name: "TraceOrderManageIndex" },
- children: [
- {
- path: "",
- name: "TraceOrderManageIndex",
- component: () => import("@/views/traceOrderManage/index.vue"),
- },
- {
- path: "infeed",
- name: "Infeed",
- component: () => import("@/views/traceOrderManage/infeed/layout.vue"),
- redirect: { name: "PrimaryMaterial" },
- children: [
- {
- path: "primaryMaterial",
- name: "PrimaryMaterial",
- component: () =>
- import("@/views/traceOrderManage/infeed/primaryMaterial/index.vue"),
- },
- {
- path: "rawMaterial",
- name: "RawMaterial",
- component: () =>
- import("@/views/traceOrderManage/infeed/rawMaterial/index.vue"),
- },
- {
- path: "mask",
- name: "Mask",
- component: () => import("@/views/traceOrderManage/infeed/mask/index.vue"),
- },
- {
- path: "equipment",
- name: "Equipment",
- component: () =>
- import("@/views/traceOrderManage/infeed/equipment/index.vue"),
- },
- ],
- },
- {
- path: "outfeed",
- name: "Outfeed",
- component: () => import("@/views/traceOrderManage/outfeed/layout.vue"),
- redirect: { name: "JobReport" },
- children: [
- {
- path: "jobReport",
- name: "JobReport",
- component: () =>
- import("@/views/traceOrderManage/outfeed/jobReport/index.vue"),
- },
- {
- path: "parameterConfiguration",
- name: "ParameterConfiguration",
- component: () =>
- import(
- "@/views/traceOrderManage/outfeed/parameterConfiguration/index.vue"
- ),
- },
- {
- path: "processGuidance",
- name: "ProcessGuidance",
- component: () =>
- import("@/views/traceOrderManage/outfeed/processGuidance/index.vue"),
- },
- ],
- },
- ],
- },
-];
+ {
+ path: '/',
+ name: 'Index',
+ component: () => import('@/views/index.vue'),
+ },
+ {
+ path: '/login',
+ name: 'Login',
+ component: () => import('@/views/login.vue'),
+ },
+ {
+ path: '/traceOrderManage',
+ name: 'TraceOrderManage',
+ component: () => import('@/views/traceOrderManage/layout.vue'),
+ redirect: { name: 'TraceOrderManageIndex' },
+ children: [
+ {
+ path: '',
+ name: 'TraceOrderManageIndex',
+ component: () => import('@/views/traceOrderManage/index.vue'),
+ },
+ {
+ path: 'infeed',
+ name: 'Infeed',
+ component: () => import('@/views/traceOrderManage/infeed/layout.vue'),
+ redirect: { name: 'PrimaryMaterial' },
+ children: [
+ {
+ path: 'primaryMaterial',
+ name: 'PrimaryMaterial',
+ component: () =>
+ import('@/views/traceOrderManage/infeed/primaryMaterial/index.vue'),
+ },
+ {
+ path: 'rawMaterial',
+ name: 'RawMaterial',
+ component: () =>
+ import('@/views/traceOrderManage/infeed/rawMaterial/index.vue'),
+ },
+ {
+ path: 'mask',
+ name: 'Mask',
+ component: () =>
+ import('@/views/traceOrderManage/infeed/mask/index.vue'),
+ },
+ {
+ path: 'equipment',
+ name: 'Equipment',
+ component: () =>
+ import('@/views/traceOrderManage/infeed/equipment/index.vue'),
+ },
+ ],
+ },
+ {
+ path: 'outfeed',
+ name: 'Outfeed',
+ component: () => import('@/views/traceOrderManage/outfeed/layout.vue'),
+ redirect: { name: 'JobReport' },
+ children: [
+ {
+ path: 'jobReport',
+ name: 'JobReport',
+ component: () =>
+ import('@/views/traceOrderManage/outfeed/jobReport/index.vue'),
+ },
+ {
+ path: 'parameterConfiguration',
+ name: 'ParameterConfiguration',
+ component: () =>
+ import('@/views/traceOrderManage/outfeed/parameterConfiguration/index.vue'),
+ },
+ {
+ path: 'processGuidance',
+ name: 'ProcessGuidance',
+ component: () =>
+ import('@/views/traceOrderManage/outfeed/processGuidance/index.vue'),
+ },
+ ],
+ },
+ ],
+ },
+]
const router = createRouter({
history: createWebHistory(),
- routes
-});
+ routes,
+})
router.beforeEach(async (to, from, next) => {
- const token = getToken();
+ const token = getToken()
// 已登录,访问 login → 跳首页
- if (token && to.path === "/login") {
- return next("/");
+ if (token && to.path === '/login') {
+ return next('/')
}
- // 白名单放行
- if (whiteList.includes(to.path)) {
- return next();
- }
+ // 白名单放行
+ if (whiteList.includes(to.path)) {
+ return next()
+ }
- // 未登录,访问受保护路由
- if (!token) {
- return next({
- path: "/login",
- query: { redirect: to.fullPath },
- });
- }
+ // 未登录,访问受保护路由
+ if (!token) {
+ return next({
+ path: '/login',
+ query: { redirect: to.fullPath },
+ })
+ }
- // 已登录,正常访问
- next();
-});
+ // 已登录,正常访问
+ next()
+})
-export default router;
+export default router
diff --git a/src/shim-vue.d.ts b/src/shim-vue.d.ts
index d77b62b..3fe378d 100644
--- a/src/shim-vue.d.ts
+++ b/src/shim-vue.d.ts
@@ -1,5 +1,7 @@
-declare module "*.vue" {
- import type { DefineComponent } from "vue";
- const component: DefineComponent<{}, {}, any>;
- export default component;
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
+ const component: DefineComponent<{}, {}, any>
+ export default component
}
diff --git a/src/store/index.ts b/src/store/index.ts
index f98d49c..6cdffbc 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -1,7 +1,7 @@
// 系统管理
-export * from './system/auth';
-export * from './system/dict';
-export * from './system/user';
+export * from './system/auth'
+export * from './system/dict'
+export * from './system/user'
// 工单管理
-export * from './traceOrderManage/traceOrder';
+export * from './traceOrderManage/traceOrder'
diff --git a/src/store/system/auth.ts b/src/store/system/auth.ts
index 8040844..631ae98 100644
--- a/src/store/system/auth.ts
+++ b/src/store/system/auth.ts
@@ -1,68 +1,74 @@
-import { defineStore } from "pinia";
-import { ref } from "vue";
-import { useRoute, useRouter } from "vue-router";
-import { message, notification } from "ant-design-vue";
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import { message, notification } from 'ant-design-vue'
-import { useUserStore } from "./user";
-import { login, logout as logoutApi } from "@/api/system";
-import { setToken, getToken, removeToken, removeAccount, getRememberMe } from "@/utils/auth";
-import type { LoginInfo } from "@/api/system/model";
+import { useUserStore } from './user'
+import { login, logout as logoutApi } from '@/api/system'
+import {
+ setToken,
+ getToken,
+ removeToken,
+ removeAccount,
+ getRememberMe,
+} from '@/utils/auth'
+import type { LoginInfo } from '@/api/system/model'
-export const useAuthStore = defineStore("auth", () => {
- const route = useRoute();
- const router = useRouter();
- const userStore = useUserStore();
+export const useAuthStore = defineStore('auth', () => {
+ const route = useRoute()
+ const router = useRouter()
+ const userStore = useUserStore()
- const loginLoading = ref(false);
- const token = ref(getToken() || null);
+ const loginLoading = ref(false)
+ const token = ref(getToken() || null)
- async function authLogin(params: LoginInfo, rememberMe: boolean) {
- try {
- loginLoading.value = true;
- const res = await login(params);
- if (res.code === 200) {
- setToken(res.token as string);
- await userStore.fetchUserInfo();
- notification.success({
- message: "登录成功",
- description: `欢迎回来,${params.username}`,
- duration: 3,
- });
+ async function authLogin(params: LoginInfo, rememberMe: boolean) {
+ try {
+ loginLoading.value = true
+ const res = await login(params)
+ if (res.code === 200) {
+ setToken(res.token as string)
+ await userStore.fetchUserInfo()
+ notification.success({
+ message: '登录成功',
+ description: `欢迎回来,${params.username}`,
+ duration: 3,
+ })
- if (rememberMe) {
- userStore.setUserInfo({ ...params, rememberMe });
- } else {
- userStore.clearUserInfo();
- userStore.setUsername(params.username);
- }
+ if (rememberMe) {
+ userStore.setUserInfo({ ...params, rememberMe })
+ } else {
+ userStore.clearUserInfo()
+ userStore.setUsername(params.username)
+ }
- const redirect = route.query.redirect || "/";
- router.replace(redirect as string);
- return res;
- } else {
- // 抛出错误,让调用方处理
- throw new Error(res.msg || "登录失败");
- }
- } catch (error) {
- throw error;
- } finally {
- loginLoading.value = false;
- }
- }
+ const redirect = route.query.redirect || '/'
+ router.replace(redirect as string)
+ return res
+ } else {
+ // 抛出错误,让调用方处理
+ throw new Error(res.msg || '登录失败')
+ }
+ } catch (error) {
+ throw error
+ } finally {
+ loginLoading.value = false
+ }
+ }
- async function logout() {
- // 在实际应用中,这里可以调用后端的退出登录接口
- await logoutApi();
- removeToken();
- !getRememberMe() && removeAccount();
- await router.push("/login");
- message.success("已成功退出");
- }
+ async function logout() {
+ // 在实际应用中,这里可以调用后端的退出登录接口
+ await logoutApi()
+ removeToken()
+ if (!getRememberMe()) removeAccount()
+ await router.push('/login')
+ message.success('已成功退出')
+ }
- return {
- token,
- loginLoading,
- authLogin,
- logout,
- };
-});
+ return {
+ token,
+ loginLoading,
+ authLogin,
+ logout,
+ }
+})
diff --git a/src/store/system/dict.ts b/src/store/system/dict.ts
index 4b8b599..c6efc83 100644
--- a/src/store/system/dict.ts
+++ b/src/store/system/dict.ts
@@ -1,63 +1,65 @@
-import { defineStore } from "pinia";
-import { ref } from "vue";
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
-export const useDictStore = defineStore("dict", () => {
- const dict = ref([]);
+export const useDictStore = defineStore('dict', () => {
+ const dict = ref([])
- // 获取字典
- function getDict(_key: string) {
- if (_key == null && _key == "") {
- return null;
- }
- try {
- dict.value.forEach(item => {
- if (item.key == _key) {
- return item.value;
- }
- });
- } catch (e) {
- return null;
- }
- }
+ // 获取字典
+ function getDict(_key: string) {
+ if (_key == null && _key == '') {
+ return null
+ }
+ try {
+ dict.value.forEach((item) => {
+ if (item.key == _key) {
+ return item.value
+ }
+ })
+ } catch (e) {
+ console.error(e)
+ return null
+ }
+ }
- // 设置字典
- function setDict(_key: string, value: string | number) {
- if (!_key) return;
- dict.value.push({
- key: _key,
- value: value
- });
- }
+ // 设置字典
+ function setDict(_key: string, value: string | number) {
+ if (!_key) return
+ dict.value.push({
+ key: _key,
+ value: value,
+ })
+ }
- // 删除字典
- function removeDict(_key: string) {
- var bln = false;
- try {
- dict.value.forEach((item, index) => {
- if (item.key == _key) {
- dict.value.splice(index, 1);
- bln = true;
- }
- });
- } catch (e) {
- bln = false;
- }
- return bln;
- }
+ // 删除字典
+ function removeDict(_key: string) {
+ let bln = false
+ try {
+ dict.value.forEach((item, index) => {
+ if (item.key == _key) {
+ dict.value.splice(index, 1)
+ bln = true
+ }
+ })
+ } catch (e) {
+ console.error(e)
+ bln = false
+ }
+ return bln
+ }
- // 清空字典
- function cleanDict() {
- dict.value = new Array();
- }
- // 初始字典
- function initDict() { }
-
- return {
- dict,
- getDict,
- setDict,
- removeDict,
- cleanDict,
- initDict,
- };
-});
+ // 清空字典
+ function cleanDict() {
+ dict.value = []
+ }
+ // 初始字典
+ function initDict() {}
+
+ return {
+ dict,
+ getDict,
+ setDict,
+ removeDict,
+ cleanDict,
+ initDict,
+ }
+})
diff --git a/src/store/system/user.ts b/src/store/system/user.ts
index 87d455a..7e89fc8 100644
--- a/src/store/system/user.ts
+++ b/src/store/system/user.ts
@@ -1,39 +1,41 @@
-import { defineStore } from 'pinia';
-import Cookies from 'js-cookie';
-import { setAccount, removeAccount } from "@/utils/auth";
-import { ref } from 'vue';
+import { defineStore } from 'pinia'
+import Cookies from 'js-cookie'
+import { setAccount, removeAccount } from '@/utils/auth'
+import { ref } from 'vue'
-export const useUserStore = defineStore("user", () => {
- const username = ref(Cookies.get('username') || '');
-
- async function fetchUserInfo() {
- // Simulate API call
- }
+export const useUserStore = defineStore('user', () => {
+ const username = ref(Cookies.get('username') || '')
- function setUsername(name: string) {
- username.value = name;
- }
+ async function fetchUserInfo() {
+ // Simulate API call
+ }
- function setUserInfo(params: any) {
- username.value = params.username || '';
+ function setUsername(name: string) {
+ username.value = name
+ }
- params.rememberMe && setAccount({
- username: params.username,
- password: params.password,
- rememberMe: params.rememberMe,
- });
- }
+ function setUserInfo(params: any) {
+ username.value = params.username || ''
- function clearUserInfo() {
- username.value = '';
- removeAccount();
- }
+ if (params.rememberMe) {
+ setAccount({
+ username: params.username,
+ password: params.password,
+ rememberMe: params.rememberMe,
+ })
+ }
+ }
- return {
- username,
- fetchUserInfo,
- setUsername,
- setUserInfo,
- clearUserInfo,
- }
-});
+ function clearUserInfo() {
+ username.value = ''
+ removeAccount()
+ }
+
+ return {
+ username,
+ fetchUserInfo,
+ setUsername,
+ setUserInfo,
+ clearUserInfo,
+ }
+})
diff --git a/src/store/traceOrderManage/traceOrder.ts b/src/store/traceOrderManage/traceOrder.ts
index 7e7e578..3334bd4 100644
--- a/src/store/traceOrderManage/traceOrder.ts
+++ b/src/store/traceOrderManage/traceOrder.ts
@@ -1,148 +1,148 @@
-import { defineStore } from "pinia";
-import { ref } from "vue";
-import { message } from "ant-design-vue";
-import { debounce } from 'lodash';
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+import { message } from 'ant-design-vue'
+import { debounce } from 'lodash'
-import { listStation, getStation } from "@/api/traceOrderManage/station";
-import {
- listLotTraceOrder,
- getLotTraceOrder,
-} from "@/api/traceOrderManage";
+import { listStation, getStation } from '@/api/traceOrderManage/station'
+import { listLotTraceOrder, getLotTraceOrder } from '@/api/traceOrderManage'
-export const useTraceOrderStore = defineStore("traceOrder", () => {
- /* ========= 核心业务状态 ========= */
- const currentTraceOrderId = ref('');
- const currentTraceOrderCode = ref('');
- const currentStationId = ref('');
- const currentStationCode = ref('');
+export const useTraceOrderStore = defineStore('traceOrder', () => {
+ /* ========= 核心业务状态 ========= */
+ const currentTraceOrderId = ref('')
+ const currentTraceOrderCode = ref('')
+ const currentStationId = ref('')
+ const currentStationCode = ref('')
- const traceOrderOptions = ref([]);
- const traceOrderInfo = ref({});
- const stationInfo = ref({});
- const stationList = ref([]);
+ const traceOrderOptions = ref([])
+ const traceOrderInfo = ref({})
+ const stationInfo = ref({})
+ const stationList = ref([])
- /* ========= actions ========= */
+ /* ========= actions ========= */
- // 加载工单列表
- const fetchTraceOrderOption = debounce(async (code: string) => {
- if (!code) return;
- try {
- const { rows } = await listLotTraceOrder({
- code,
- pageSize: 10,
- pageNum: 1,
- });
- traceOrderOptions.value = rows.map((item) => {
- return {
- id: item.id,
- label: item.code,
- value: item.code,
- };
- });
- } catch (error: any) {
- message.error(error.message || "获取工单列表失败");
- }
- }, 500);
+ // 加载工单列表
+ const fetchTraceOrderOption = debounce(async (code: string) => {
+ if (!code) return
+ try {
+ const { rows } = await listLotTraceOrder({
+ code,
+ pageSize: 10,
+ pageNum: 1,
+ })
+ traceOrderOptions.value = rows.map((item) => {
+ return {
+ id: item.id,
+ label: item.code,
+ value: item.code,
+ }
+ })
+ } catch (error: any) {
+ message.error(error.message || '获取工单列表失败')
+ }
+ }, 500)
- // 选择工单
- async function selectTraceOrder(value: string, option: any) {
- currentTraceOrderId.value = option.id;
- currentTraceOrderCode.value = value;
+ // 选择工单
+ async function selectTraceOrder(value: string, option: any) {
+ currentTraceOrderId.value = option.id
+ currentTraceOrderCode.value = value
- try {
- loadingTraceOrderInfo.value = true;
- if (!option.id) throw new Error();
- const { data } = await getLotTraceOrder(option.id);
- traceOrderInfo.value = data;
- await fetchStationList();
- } catch (error: any) {
- message.error(error.message || "获取工单信息失败");
- } finally {
- loadingTraceOrderInfo.value = false;
- }
- }
+ try {
+ loadingTraceOrderInfo.value = true
+ if (!option.id) throw new Error()
+ const { data } = await getLotTraceOrder(option.id)
+ traceOrderInfo.value = data
+ await fetchStationList()
+ } catch (error: any) {
+ message.error(error.message || '获取工单信息失败')
+ } finally {
+ loadingTraceOrderInfo.value = false
+ }
+ }
- // 获取工单信息
- const loadingTraceOrderInfo = ref(false);
- async function fetchTraceOrderInfo() {
- if (!currentTraceOrderId.value) return;
- try {
- loadingTraceOrderInfo.value = true;
- const { data } = await getLotTraceOrder(currentTraceOrderId.value);
- traceOrderInfo.value = data;
- fetchStationList();
- } catch (error: any) {
- message.error(error.message || '刷新工单信息失败');
- } finally {
- loadingTraceOrderInfo.value = false;
- }
- }
-
- // 获取站点列表
- const loadingStations = ref(false);
- async function fetchStationList() {
- if (!currentTraceOrderCode.value) return;
- try {
- loadingStations.value = true;
- const res = await listStation({ traceOrderCode: currentTraceOrderCode.value });
- stationList.value = (res.rows || []).map((item: any, idx: number) => {
- return {
- key: String(item.id ?? idx),
- index: item.seqNo ?? idx + 1,
- ...item,
- };
- });
- } catch (error: any) {
- message.error(error?.msg || error?.message || "查询站点失败");
- } finally {
- loadingStations.value = false;
- }
- };
+ // 获取工单信息
+ const loadingTraceOrderInfo = ref(false)
+ async function fetchTraceOrderInfo() {
+ if (!currentTraceOrderId.value) return
+ try {
+ loadingTraceOrderInfo.value = true
+ const { data } = await getLotTraceOrder(currentTraceOrderId.value)
+ traceOrderInfo.value = data
+ fetchStationList()
+ } catch (error: any) {
+ message.error(error.message || '刷新工单信息失败')
+ } finally {
+ loadingTraceOrderInfo.value = false
+ }
+ }
- // 获取站点信息
- const loadingStationInfo = ref(false);
- async function fetchStationInfo() {
- if (!currentTraceOrderId.value) return;
- try {
- loadingStationInfo.value = true;
- const { data } = await getStation(currentStationId.value);
- stationInfo.value = data;
- } catch (error: any) {
- console.log(error.message || '获取站点信息失败');
- } finally {
- loadingStationInfo.value = false;
- }
- }
+ // 获取站点列表
+ const loadingStations = ref(false)
+ async function fetchStationList() {
+ if (!currentTraceOrderCode.value) return
+ try {
+ loadingStations.value = true
+ const res = await listStation({
+ traceOrderCode: currentTraceOrderCode.value,
+ })
+ stationList.value = (res.rows || []).map((item: any, idx: number) => {
+ return {
+ key: String(item.id ?? idx),
+ index: item.seqNo ?? idx + 1,
+ ...item,
+ }
+ })
+ } catch (error: any) {
+ message.error(error?.msg || error?.message || '查询站点失败')
+ } finally {
+ loadingStations.value = false
+ }
+ }
- // 选择站点
- async function selectStation(stationId: string) {
- currentStationId.value = stationId;
- stationInfo.value = stationList.value.find((s: any) => s.id === stationId) ?? {};
- currentStationCode.value = stationInfo.value.code;
- }
+ // 获取站点信息
+ const loadingStationInfo = ref(false)
+ async function fetchStationInfo() {
+ if (!currentTraceOrderId.value) return
+ try {
+ loadingStationInfo.value = true
+ const { data } = await getStation(currentStationId.value)
+ stationInfo.value = data
+ } catch (error: any) {
+ console.log(error.message || '获取站点信息失败')
+ } finally {
+ loadingStationInfo.value = false
+ }
+ }
- async function refreshAll() {
- await Promise.all([fetchTraceOrderInfo(), fetchStationList()]);
- }
+ // 选择站点
+ async function selectStation(stationId: string) {
+ currentStationId.value = stationId
+ stationInfo.value =
+ stationList.value.find((s: any) => s.id === stationId) ?? {}
+ currentStationCode.value = stationInfo.value.code
+ }
- return {
- currentTraceOrderId,
- currentTraceOrderCode,
- currentStationId,
- currentStationCode,
- traceOrderOptions,
- traceOrderInfo,
- stationInfo,
- stationList,
- loadingTraceOrderInfo,
- loadingStations,
- loadingStationInfo,
- selectTraceOrder,
- selectStation,
- refreshAll,
- fetchTraceOrderOption,
- fetchTraceOrderInfo,
- fetchStationList,
- fetchStationInfo,
- };
-});
+ async function refreshAll() {
+ await Promise.all([fetchTraceOrderInfo(), fetchStationList()])
+ }
+
+ return {
+ currentTraceOrderId,
+ currentTraceOrderCode,
+ currentStationId,
+ currentStationCode,
+ traceOrderOptions,
+ traceOrderInfo,
+ stationInfo,
+ stationList,
+ loadingTraceOrderInfo,
+ loadingStations,
+ loadingStationInfo,
+ selectTraceOrder,
+ selectStation,
+ refreshAll,
+ fetchTraceOrderOption,
+ fetchTraceOrderInfo,
+ fetchStationList,
+ fetchStationInfo,
+ }
+})
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
index 380d33c..9d954b0 100644
--- a/src/utils/auth.ts
+++ b/src/utils/auth.ts
@@ -1,48 +1,53 @@
-import Cookies from 'js-cookie';
-import { encrypt } from '@/utils/jsencrypt';
+import Cookies from 'js-cookie'
+import { encrypt } from '@/utils/jsencrypt'
// 30 天
-export const expiresTime = 30;
+export const expiresTime = 30
export const TokenKey = 'Admin-Token'
export function getToken() {
- return Cookies.get(TokenKey)
+ return Cookies.get(TokenKey)
}
export function setToken(token: string) {
- return Cookies.set(TokenKey, token)
+ return Cookies.set(TokenKey, token)
}
export function removeToken() {
- return Cookies.remove(TokenKey)
+ return Cookies.remove(TokenKey)
}
export interface AccountInfo {
- username?: string;
- password?: string;
- rememberMe?: 'true' | 'false';
+ username?: string
+ password?: string
+ rememberMe?: 'true' | 'false'
}
export function getRememberMe() {
- return Cookies.get("rememberMe");
+ return Cookies.get('rememberMe')
}
export function getAccount() {
- return {
- username: Cookies.get("username"),
- password: Cookies.get("password"),
- };
+ return {
+ username: Cookies.get('username'),
+ password: Cookies.get('password'),
+ }
}
export function setAccount(account: AccountInfo) {
- account.username && Cookies.set("username", account.username, { expires: expiresTime});
- account.password && Cookies.set("password", encrypt(account.password) as string, { expires: expiresTime});
- account.rememberMe != null && Cookies.set("rememberMe", account.rememberMe, { expires: expiresTime});
+ if (account.username)
+ Cookies.set('username', account.username, { expires: expiresTime })
+ if (account.password)
+ Cookies.set('password', encrypt(account.password) as string, {
+ expires: expiresTime,
+ })
+ if (account.rememberMe)
+ Cookies.set('rememberMe', account.rememberMe, { expires: expiresTime })
}
export function removeAccount() {
- Cookies.remove("username");
- Cookies.remove("password");
- Cookies.remove("rememberMe");
+ Cookies.remove('username')
+ Cookies.remove('password')
+ Cookies.remove('rememberMe')
}
diff --git a/src/utils/copyToClipboard.ts b/src/utils/copyToClipboard.ts
index d264d2e..9bd74a6 100644
--- a/src/utils/copyToClipboard.ts
+++ b/src/utils/copyToClipboard.ts
@@ -1,8 +1,8 @@
-import { message } from "ant-design-vue";
+import { message } from 'ant-design-vue'
// 复制到剪贴板
export const handleCopy = async (text: string | number | undefined) => {
- if (!text) return;
- await navigator.clipboard.writeText(String(text));
- message.success(`已复制: ${text}`);
-};
+ if (!text) return
+ await navigator.clipboard.writeText(String(text))
+ message.success(`已复制: ${text}`)
+}
diff --git a/src/utils/dateUtils.ts b/src/utils/dateUtils.ts
index 2e6552e..22f82ab 100644
--- a/src/utils/dateUtils.ts
+++ b/src/utils/dateUtils.ts
@@ -1,4 +1,4 @@
-import { ref, onMounted, onBeforeUnmount } from 'vue';
+import { ref, onMounted, onBeforeUnmount } from 'vue'
/**
* 格式化日期时间
@@ -6,27 +6,30 @@ import { ref, onMounted, onBeforeUnmount } from 'vue';
* @param format 格式字符串,默认 'YYYY-MM-DD HH:mm:ss'
* @returns 格式化后的时间字符串
*/
-export function formatDateTime(date: Date | number | string, format = 'YYYY-MM-DD HH:mm:ss'): string {
- const d = new Date(date);
-
- if (isNaN(d.getTime())) {
- return '';
- }
+export function formatDateTime(
+ date: Date | number | string,
+ format = 'YYYY-MM-DD HH:mm:ss',
+): string {
+ const d = new Date(date)
- const year = d.getFullYear();
- const month = String(d.getMonth() + 1).padStart(2, '0');
- const day = String(d.getDate()).padStart(2, '0');
- const hours = String(d.getHours()).padStart(2, '0');
- const minutes = String(d.getMinutes()).padStart(2, '0');
- const seconds = String(d.getSeconds()).padStart(2, '0');
+ if (isNaN(d.getTime())) {
+ return ''
+ }
- return format
- .replace('YYYY', String(year))
- .replace('MM', month)
- .replace('DD', day)
- .replace('HH', hours)
- .replace('mm', minutes)
- .replace('ss', seconds);
+ const year = d.getFullYear()
+ const month = String(d.getMonth() + 1).padStart(2, '0')
+ const day = String(d.getDate()).padStart(2, '0')
+ const hours = String(d.getHours()).padStart(2, '0')
+ const minutes = String(d.getMinutes()).padStart(2, '0')
+ const seconds = String(d.getSeconds()).padStart(2, '0')
+
+ return format
+ .replace('YYYY', String(year))
+ .replace('MM', month)
+ .replace('DD', day)
+ .replace('HH', hours)
+ .replace('mm', minutes)
+ .replace('ss', seconds)
}
/**
@@ -35,7 +38,7 @@ export function formatDateTime(date: Date | number | string, format = 'YYYY-MM-D
* @returns 当前时间字符串
*/
export function getCurrentTime(format = 'YYYY-MM-DD HH:mm:ss'): string {
- return formatDateTime(new Date(), format);
+ return formatDateTime(new Date(), format)
}
/**
@@ -44,28 +47,28 @@ export function getCurrentTime(format = 'YYYY-MM-DD HH:mm:ss'): string {
* @returns 响应式时间字符串
*/
export function useRealTime(format = 'YYYY-MM-DD HH:mm:ss') {
- const currentTime = ref(getCurrentTime(format));
- let timer: NodeJS.Timeout | null = null;
+ const currentTime = ref(getCurrentTime(format))
+ let timer: NodeJS.Timeout | null = null
- const startTimer = () => {
- timer = setInterval(() => {
- currentTime.value = getCurrentTime(format);
- }, 1000);
- };
+ const startTimer = () => {
+ timer = setInterval(() => {
+ currentTime.value = getCurrentTime(format)
+ }, 1000)
+ }
- const stopTimer = () => {
- if (timer) {
- clearInterval(timer);
- timer = null;
- }
- };
+ const stopTimer = () => {
+ if (timer) {
+ clearInterval(timer)
+ timer = null
+ }
+ }
- onMounted(startTimer);
- onBeforeUnmount(stopTimer);
+ onMounted(startTimer)
+ onBeforeUnmount(stopTimer)
- return {
- currentTime,
- startTimer,
- stopTimer
- };
-}
\ No newline at end of file
+ return {
+ currentTime,
+ startTimer,
+ stopTimer,
+ }
+}
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index af954b2..62482c7 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -1,4 +1,4 @@
-import { useDictStore } from "@/store";
+import { useDictStore } from '@/store'
import { getDicts } from '@/api/system/dict'
import { ref, toRefs } from 'vue'
@@ -6,21 +6,26 @@ import { ref, toRefs } from 'vue'
* 获取字典数据
*/
export function useDict(...args: string[]) {
- const res = ref({})
+ const res = ref({})
- return (() => {
- args.forEach((dictType, index) => {
- res.value[dictType] = []
- const dicts = useDictStore().getDict(dictType)
- if (dicts) {
- res.value[dictType] = dicts
- } else {
- getDicts(dictType).then((resp: any) => {
- res.value[dictType] = resp.data.map((p: any) => ({ label: p.dictLabel, value: p.dictValue, elTagType: p.listClass, elTagClass: p.cssClass }))
- useDictStore().setDict(dictType, res.value[dictType])
- })
- }
- })
- return toRefs(res.value)
- })()
+ return (() => {
+ args.forEach((dictType) => {
+ res.value[dictType] = []
+ const dicts = useDictStore().getDict(dictType)
+ if (dicts) {
+ res.value[dictType] = dicts
+ } else {
+ getDicts(dictType).then((resp: any) => {
+ res.value[dictType] = resp.data.map((p: any) => ({
+ label: p.dictLabel,
+ value: p.dictValue,
+ elTagType: p.listClass,
+ elTagClass: p.cssClass,
+ }))
+ useDictStore().setDict(dictType, res.value[dictType])
+ })
+ }
+ })
+ return toRefs(res.value)
+ })()
}
diff --git a/src/utils/jsencrypt.ts b/src/utils/jsencrypt.ts
index 265415d..cb242b0 100644
--- a/src/utils/jsencrypt.ts
+++ b/src/utils/jsencrypt.ts
@@ -1,31 +1,31 @@
-import JSEncrypt from "jsencrypt";
+import JSEncrypt from 'jsencrypt'
// 密钥对生成 http://web.chacuo.net/netrsakeypair
const publicKey =
- "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n" +
- "nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==";
+ 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
+ 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
const privateKey =
- "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n" +
- "7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n" +
- "PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n" +
- "kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n" +
- "cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n" +
- "DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n" +
- "YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n" +
- "UP8iWi1Qw0Y=";
+ 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
+ '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
+ 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
+ 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
+ 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
+ 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
+ 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
+ 'UP8iWi1Qw0Y='
// 加密
export function encrypt(txt: string) {
- const encryptor = new JSEncrypt();
- encryptor.setPublicKey(publicKey); // 设置公钥
- return encryptor.encrypt(txt); // 对数据进行加密
+ const encryptor = new JSEncrypt()
+ encryptor.setPublicKey(publicKey) // 设置公钥
+ return encryptor.encrypt(txt) // 对数据进行加密
}
// 解密
export function decrypt(txt: string) {
- const encryptor = new JSEncrypt();
- encryptor.setPrivateKey(privateKey); // 设置私钥
- return encryptor.decrypt(txt); // 对数据进行解密
+ const encryptor = new JSEncrypt()
+ encryptor.setPrivateKey(privateKey) // 设置私钥
+ return encryptor.decrypt(txt) // 对数据进行解密
}
diff --git a/src/utils/mock.ts b/src/utils/mock.ts
index 34cae4c..bb0f939 100644
--- a/src/utils/mock.ts
+++ b/src/utils/mock.ts
@@ -1,7 +1,7 @@
export const delay = (time: number, data?: any) => {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve(data);
- }, time);
- }) as any;
-};
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(data)
+ }, time)
+ }) as any
+}
diff --git a/src/utils/useDialog.ts b/src/utils/useDialog.ts
index 3d3c3c4..7fe8360 100644
--- a/src/utils/useDialog.ts
+++ b/src/utils/useDialog.ts
@@ -1,33 +1,33 @@
-import { ref } from 'vue';
+import { ref } from 'vue'
/**
* Dialog控制Hook
* @returns visible(显隐状态)、show(显示)、hide(隐藏)、toggle(切换)
*/
-export function useDialog(initialVisible:boolean = false): {
- visible: import('vue').Ref,
- show: () => void,
- hide: () => void,
- toggle: () => void
+export function useDialog(initialVisible: boolean = false): {
+ visible: import('vue').Ref
+ show: () => void
+ hide: () => void
+ toggle: () => void
} {
- const visible = ref(initialVisible);
+ const visible = ref(initialVisible)
- const show = () => {
- visible.value = true;
- };
+ const show = () => {
+ visible.value = true
+ }
- const hide = () => {
- visible.value = false;
- };
+ const hide = () => {
+ visible.value = false
+ }
- const toggle = () => {
- visible.value = !visible.value;
- };
+ const toggle = () => {
+ visible.value = !visible.value
+ }
- return {
- visible,
- show,
- hide,
- toggle
- };
-}
\ No newline at end of file
+ return {
+ visible,
+ show,
+ hide,
+ toggle,
+ }
+}
diff --git a/src/utils/useLoading.ts b/src/utils/useLoading.ts
index 6e760e4..72a21cb 100644
--- a/src/utils/useLoading.ts
+++ b/src/utils/useLoading.ts
@@ -1,41 +1,43 @@
-import { ref } from 'vue';
+import { ref } from 'vue'
/**
* Loading控制Hook
* @returns loading(加载状态)、startLoading(开始加载)、stopLoading(停止加载)、withLoading(包装异步函数)
*/
export function useLoading(initialLoading = false) {
- const loading = ref(initialLoading);
+ const loading = ref(initialLoading)
- const startLoading = () => {
- loading.value = true;
- };
+ const startLoading = () => {
+ loading.value = true
+ }
- const stopLoading = () => {
- loading.value = false;
- };
+ const stopLoading = () => {
+ loading.value = false
+ }
- /**
- * 包装异步函数,自动控制loading状态
- * @param fn 异步函数
- * @returns 包装后的函数
- */
- const withLoading = Promise>(fn: T): T => {
- return (async (...args: any[]) => {
- startLoading();
- try {
- const result = await fn(...args);
- return result;
- } finally {
- stopLoading();
- }
- }) as T;
- };
+ /**
+ * 包装异步函数,自动控制loading状态
+ * @param fn 异步函数
+ * @returns 包装后的函数
+ */
+ const withLoading = Promise>(
+ fn: T,
+ ): T => {
+ return (async (...args: any[]) => {
+ startLoading()
+ try {
+ const result = await fn(...args)
+ return result
+ } finally {
+ stopLoading()
+ }
+ }) as T
+ }
- return {
- loading,
- startLoading,
- stopLoading,
- withLoading
- };
-}
\ No newline at end of file
+ return {
+ loading,
+ startLoading,
+ stopLoading,
+ withLoading,
+ }
+}
diff --git a/src/utils/uuidUtils.ts b/src/utils/uuidUtils.ts
index 9fc79de..0d77206 100644
--- a/src/utils/uuidUtils.ts
+++ b/src/utils/uuidUtils.ts
@@ -3,9 +3,9 @@
* @returns 生成的UUID字符串
*/
export function generateUUID(): string {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- const r = Math.random() * 16 | 0;
- const v = c === 'x' ? r : (r & 0x3 | 0x8);
- return v.toString(16);
- });
-}
\ No newline at end of file
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ const r = (Math.random() * 16) | 0
+ const v = c === 'x' ? r : (r & 0x3) | 0x8
+ return v.toString(16)
+ })
+}
diff --git a/src/views/index.vue b/src/views/index.vue
index 63c1b30..ebc01f6 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -1,18 +1,22 @@
-
+
-
diff --git a/src/views/login.vue b/src/views/login.vue
index 27e4023..c25924f 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -3,21 +3,21 @@ import { ref, reactive } from 'vue'
import { message } from 'ant-design-vue'
import { getCaptcha } from '@/api/system'
import type { LoginInfo } from '@/api/system/model'
-import type { Rule } from 'ant-design-vue/es/form';
-import { useAuthStore } from '@/store';
-import { storeToRefs } from 'pinia';
-import { getAccount, getRememberMe } from '@/utils/auth';
-import { decrypt } from '@/utils/jsencrypt';
+import type { Rule } from 'ant-design-vue/es/form'
+import { useAuthStore } from '@/store'
+import { storeToRefs } from 'pinia'
+import { getAccount, getRememberMe } from '@/utils/auth'
+import { decrypt } from '@/utils/jsencrypt'
-const authStore = useAuthStore();
-const { loginLoading } = storeToRefs(authStore);
+const authStore = useAuthStore()
+const { loginLoading } = storeToRefs(authStore)
// 表单数据
const formData = reactive({
- username: '',
- password: '',
- uuid: '',
- code: '',
+ username: '',
+ password: '',
+ uuid: '',
+ code: '',
})
// 验证码图片
@@ -28,61 +28,55 @@ const rememberMe = ref(false)
// 表单验证规则
const rules: Record = {
- username: [
- { required: true, message: '请输入用户名', trigger: 'change' }
- ],
- password: [
- { required: true, message: '请输入密码', trigger: 'change' }
- ],
- code: [
- { required: true, message: '请输入验证码', trigger: 'change' }
- ]
+ username: [{ required: true, message: '请输入用户名', trigger: 'change' }],
+ password: [{ required: true, message: '请输入密码', trigger: 'change' }],
+ code: [{ required: true, message: '请输入验证码', trigger: 'change' }],
}
// 获取验证码
const refreshCaptcha = async () => {
- try {
- captchaImg.value = ''
- captchaLoading.value = true
- await getCaptcha().then((res: any) => {
- loadCaptchaFail.value = false;
- if (res.captchaOnOff) {
- captchaImg.value = "data:image/gif;base64," + res.img
- rules.code[0].required = true;
- } else {
- rules.code[0].required = false;
- }
- formData.uuid = res.uuid
- formData.code = '' // 清空验证码输入
- })
- } catch (error) {
- loadCaptchaFail.value = true;
- message.error('获取验证码失败')
- console.error('获取验证码失败:', error)
- } finally {
- captchaLoading.value = false
- }
+ try {
+ captchaImg.value = ''
+ captchaLoading.value = true
+ await getCaptcha().then((res: any) => {
+ loadCaptchaFail.value = false
+ if (res.captchaOnOff) {
+ captchaImg.value = 'data:image/gif;base64,' + res.img
+ rules.code[0].required = true
+ } else {
+ rules.code[0].required = false
+ }
+ formData.uuid = res.uuid
+ formData.code = '' // 清空验证码输入
+ })
+ } catch (error) {
+ loadCaptchaFail.value = true
+ message.error('获取验证码失败')
+ console.error('获取验证码失败:', error)
+ } finally {
+ captchaLoading.value = false
+ }
}
// 初始化
const initLoginForm = () => {
- const { username, password } = getAccount();
- const isRememberMe = getRememberMe();
- if (isRememberMe && isRememberMe === 'true') {
- rememberMe.value = true;
- formData.username = username || '';
- formData.password = decrypt(password || '') || '';
- }
+ const { username, password } = getAccount()
+ const isRememberMe = getRememberMe()
+ if (isRememberMe && isRememberMe === 'true') {
+ rememberMe.value = true
+ formData.username = username || ''
+ formData.password = decrypt(password || '') || ''
+ }
}
// 登录处理
const handleLogin = async () => {
- try {
- await authStore.authLogin(formData, rememberMe.value);
- } catch (error: any) {
- message.error(error.message || error.msg || '登录失败');
- await refreshCaptcha();
- }
+ try {
+ await authStore.authLogin(formData, rememberMe.value)
+ } catch (error: any) {
+ message.error(error.message || error.msg || '登录失败')
+ await refreshCaptcha()
+ }
}
initLoginForm()
@@ -91,113 +85,122 @@ refreshCaptcha()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
![验证码]()
-
-
-
-
- 获取失败
-
-
-
- 点击刷新
-
-
-
-
+
+
+
-
- 记住密码
-
-
-
-
-
- {{ loginLoading ? '登录中...' : '登录' }}
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![验证码]()
+
+
+
+
+ 获取失败
+
+
+
+ 点击刷新
+
+
+
+
+
+
+
+ 记住密码
+
+
+
+
+
+
+ {{ loginLoading ? '登录中...' : '登录' }}
+
+
+
+
+
\ No newline at end of file
+
diff --git a/src/views/traceOrderManage/index.vue b/src/views/traceOrderManage/index.vue
index cf69acb..c077cf1 100644
--- a/src/views/traceOrderManage/index.vue
+++ b/src/views/traceOrderManage/index.vue
@@ -1,86 +1,108 @@
-
-
-
-
-
-
-
-
- 进站
- 出站
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 进站
+
+ 出站
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/infeed/equipment/index.vue b/src/views/traceOrderManage/infeed/equipment/index.vue
index f854a82..4ac4534 100644
--- a/src/views/traceOrderManage/infeed/equipment/index.vue
+++ b/src/views/traceOrderManage/infeed/equipment/index.vue
@@ -1,182 +1,214 @@
-
-
-
-
-
-
-
-
-
- 绑定
-
-
-
-
- {{ equipmentInfo.equipmentCode }}
- {{ equipmentInfo.equipmentTitle }}
-
-
-
-
-
-
-
- {{ index + 1 }}
-
- 解绑
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 绑定
+
+
+
+
+
+ {{ equipmentInfo.equipmentCode }}
+
+
+ {{ equipmentInfo.equipmentTitle }}
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+ 解绑
+
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/infeed/layout.vue b/src/views/traceOrderManage/infeed/layout.vue
index 8524435..60ccccf 100644
--- a/src/views/traceOrderManage/infeed/layout.vue
+++ b/src/views/traceOrderManage/infeed/layout.vue
@@ -1,167 +1,169 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/infeed/mask/index.vue b/src/views/traceOrderManage/infeed/mask/index.vue
index 8f40f9d..1beb6c2 100644
--- a/src/views/traceOrderManage/infeed/mask/index.vue
+++ b/src/views/traceOrderManage/infeed/mask/index.vue
@@ -1,219 +1,306 @@
-
-
-
-
- openMaskModal = true">绑定治具组合
-
-
-
- {{ index + 1 }}
-
- 解绑
-
-
-
-
-
-
-
-
-
-
-
-
- 校验
-
-
-
-
-
+
+
+
+
+ (openMaskModal = true)">
+ 绑定治具组合
+
+
+
+
+ {{ index + 1 }}
+
+ 解绑
+
+
+
+
+
+
+
+
+
+
+
+
+ 校验
+
+
+
+
+
-
-
-
- {{ index + 1 }}
-
- 绑定
-
-
-
-
-
+
+
+
+ {{ index + 1 }}
+
+ 绑定
+
+
+
+
+
diff --git a/src/views/traceOrderManage/infeed/primaryMaterial/index.vue b/src/views/traceOrderManage/infeed/primaryMaterial/index.vue
index c9d3045..189aeaf 100644
--- a/src/views/traceOrderManage/infeed/primaryMaterial/index.vue
+++ b/src/views/traceOrderManage/infeed/primaryMaterial/index.vue
@@ -1,187 +1,233 @@
-
-
-
-
-
-
-
-
-
-
- 录入
-
-
-
-
-
- 录入
-
-
-
-
-
- {{ index + 1 }}
-
- 删除
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ 录入
+
+
+
+
+
+ 录入
+
+
+
+
+
+ {{ index + 1 }}
+
+
+ 删除
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/infeed/rawMaterial/index.vue b/src/views/traceOrderManage/infeed/rawMaterial/index.vue
index dc3cd69..059a6aa 100644
--- a/src/views/traceOrderManage/infeed/rawMaterial/index.vue
+++ b/src/views/traceOrderManage/infeed/rawMaterial/index.vue
@@ -1,96 +1,136 @@
-
-
-
-
-
- {{ index + 1 }}
-
- 确认
-
-
-
-
-
+
+
+
+
+
+ {{ index + 1 }}
+
+ 确认
+
+
+
+
+
diff --git a/src/views/traceOrderManage/layout.vue b/src/views/traceOrderManage/layout.vue
index ce9226b..c9b5131 100644
--- a/src/views/traceOrderManage/layout.vue
+++ b/src/views/traceOrderManage/layout.vue
@@ -1,102 +1,159 @@
-
-
-
-
-
-
-
-
- {{ collapsed ? '展开' : '折叠' }}
-
-
-
+
+
+
+
+
+
+
+
+ {{ collapsed ? '展开' : '折叠' }}
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- 工单编码
- traceOrderStore.selectTraceOrder(val as string, option as LotTraceOrderData)" />
-
-
-
-
-
-
+
+
+
+
+
+ 工单编码
+
+ traceOrderStore.selectTraceOrder(
+ val as string,
+ option as LotTraceOrderData,
+ )
+ "
+ />
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- 工单管理
- 主材清单
-
-
-
- 更多
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ 工单管理
+
+
+ 主材清单
+
+
+
+
+ 更多
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/model.d.ts b/src/views/traceOrderManage/model.d.ts
index 37037d6..e88303e 100644
--- a/src/views/traceOrderManage/model.d.ts
+++ b/src/views/traceOrderManage/model.d.ts
@@ -1,16 +1,16 @@
export interface WorkOrderInfo {
- code?: string;
- batchNo?: string;
- status?: string;
- tarMaterialName?: string;
- tarMaterialCode?: string;
- planQty?: number;
+ code?: string
+ batchNo?: string
+ status?: string
+ tarMaterialName?: string
+ tarMaterialCode?: string
+ planQty?: number
}
export interface ProcessInfo {
- process?: string;
- cut?: string;
- jobCode?: string;
- status?: string;
- equipment?: string;
+ process?: string
+ cut?: string
+ jobCode?: string
+ status?: string
+ equipment?: string
}
diff --git a/src/views/traceOrderManage/outfeed/jobReport/index.vue b/src/views/traceOrderManage/outfeed/jobReport/index.vue
index f3dff39..8bc16f0 100644
--- a/src/views/traceOrderManage/outfeed/jobReport/index.vue
+++ b/src/views/traceOrderManage/outfeed/jobReport/index.vue
@@ -1,342 +1,511 @@
-
-
-
选择主材
-
-
-
- {{ index + 1 }}
-
-
-
-
-
- {{ dict.label }}
-
-
- {{ dict.label }}
-
-
-
-
- 修改
-
- 删除
-
-
-
-
-
-
- 总计
-
- OK: {{ totals.okNum }}
-
-
- NG: {{ totals.ngNum }}
-
-
-
-
-
+
+
+
+ 选择主材
+
+
+
+
+ {{ index + 1 }}
+
+
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+
+ 修改
+
+ 删除
+
+
+
+
+
+
+ 总计
+
+ OK: {{ totals.okNum }}
+
+
+ NG: {{ totals.ngNum }}
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ dict.label
- }}
-
-
- {{ dict.label
- }}
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+
-
- 已选择 {{ rowSelection.length }} 条主材
-
-
- {{ index + 1 }}
-
-
-
-
-
- {{ dict.label
- }}
-
-
- {{ dict.label
- }}
-
-
-
-
-
-
+
+ 已选择 {{ rowSelection.length }} 条主材
+
+
+ {{ index + 1 }}
+
+
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+ {{ dict.label }}
+
+
+
+
+
+
+
diff --git a/src/views/traceOrderManage/outfeed/layout.vue b/src/views/traceOrderManage/outfeed/layout.vue
index b24664e..012e86b 100644
--- a/src/views/traceOrderManage/outfeed/layout.vue
+++ b/src/views/traceOrderManage/outfeed/layout.vue
@@ -1,196 +1,223 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/views/traceOrderManage/outfeed/parameterConfiguration/index.vue b/src/views/traceOrderManage/outfeed/parameterConfiguration/index.vue
index 936032a..622cd6d 100644
--- a/src/views/traceOrderManage/outfeed/parameterConfiguration/index.vue
+++ b/src/views/traceOrderManage/outfeed/parameterConfiguration/index.vue
@@ -1,7 +1,7 @@
-
+
diff --git a/src/views/traceOrderManage/outfeed/processGuidance/index.vue b/src/views/traceOrderManage/outfeed/processGuidance/index.vue
index 936032a..622cd6d 100644
--- a/src/views/traceOrderManage/outfeed/processGuidance/index.vue
+++ b/src/views/traceOrderManage/outfeed/processGuidance/index.vue
@@ -1,7 +1,7 @@
-
+
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
index 151aa68..11f02fe 100644
--- a/src/vite-env.d.ts
+++ b/src/vite-env.d.ts
@@ -1 +1 @@
-///
\ No newline at end of file
+///
diff --git a/vite.config.ts b/vite.config.ts
index 1a99202..bc8f7b0 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,56 +1,55 @@
-import { defineConfig, loadEnv } from 'vite';
-import Components from "unplugin-vue-components/vite"; // 按需组件自动导入
-import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
-import vue from '@vitejs/plugin-vue';
-import Icons from 'unplugin-icons/vite';
-import IconsResolver from 'unplugin-icons/resolver';
-import path from 'path';
+import { defineConfig, loadEnv } from 'vite'
+import Components from 'unplugin-vue-components/vite' // 按需组件自动导入
+import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
+import vue from '@vitejs/plugin-vue'
+import Icons from 'unplugin-icons/vite'
+import IconsResolver from 'unplugin-icons/resolver'
+import path from 'path'
// https://vite.dev/config/
export default defineConfig(({ mode }) => {
+ const env = loadEnv(mode, process.cwd())
- const env = loadEnv(mode, process.cwd());
-
- return {
- resolve: {
- alias: {
- "@": path.resolve(__dirname, "src"),
- },
- },
- server: {
- proxy: {
- "/api": {
- target: env.VITE_APP_BASE_URL,
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/api\//, "/"),
- },
- "/prod-api": {
- target: env.VITE_APP_BASE_URL,
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/prod-api\//, "/"),
- },
- },
- },
- plugins: [
- vue(),
- Components({
- dts: true, //生成components.d.ts 全局定义文件
- resolvers: [
- AntDesignVueResolver({
- //对使用到的全局ant design vue组件进行类型导入
- importStyle: false, // 不动态引入css,这个不强求
- }),
- // 自动导入 lucide 图标
- IconsResolver({
- prefix: "i", // 比如用
- enabledCollections: ["lucide"],
- }),
- ],
- include: [/\.vue$/, /\.vue\?vue/, /\.md$/, /\.tsx$/], //包含的文件类型
- }),
- Icons({
- autoInstall: true, // 没安装的图标库会自动下载
- }),
- ],
- };
-});
+ return {
+ resolve: {
+ alias: {
+ '@': path.resolve(__dirname, 'src'),
+ },
+ },
+ server: {
+ proxy: {
+ '/api': {
+ target: env.VITE_APP_BASE_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api\//, '/'),
+ },
+ '/prod-api': {
+ target: env.VITE_APP_BASE_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/prod-api\//, '/'),
+ },
+ },
+ },
+ plugins: [
+ vue(),
+ Components({
+ dts: true, //生成components.d.ts 全局定义文件
+ resolvers: [
+ AntDesignVueResolver({
+ //对使用到的全局ant design vue组件进行类型导入
+ importStyle: false, // 不动态引入css,这个不强求
+ }),
+ // 自动导入 lucide 图标
+ IconsResolver({
+ prefix: 'i', // 比如用
+ enabledCollections: ['lucide'],
+ }),
+ ],
+ include: [/\.vue$/, /\.vue\?vue/, /\.md$/, /\.tsx$/], //包含的文件类型
+ }),
+ Icons({
+ autoInstall: true, // 没安装的图标库会自动下载
+ }),
+ ],
+ }
+})