chore: 清理冗余代码与配置,优化项目结构

1.  删除无用文件与废弃代码:移除locale枚举、element-plus插件、sse路由、api token模块等
2.  简化类型导入与依赖:移除大量未使用的类型导入,统一echarts导入方式
3.  优化配置与样式:调整gitignore、样式引入顺序,新增列表动画样式
4.  修复接口与模型:修正接口返回类型、查询参数配置,更新部门模型字段
5.  优化性能与体验:添加图片懒加载,优化加载逻辑与表格渲染
6.  调整环境配置:新增并更新开发/生产环境配置文件
This commit is contained in:
zhangtao
2026-07-23 20:49:52 +08:00
parent 096e2216d6
commit 0ce31936aa
360 changed files with 8072 additions and 22122 deletions
+94 -57
View File
@@ -18,6 +18,9 @@ importers:
'@element-plus/icons-vue':
specifier: ^2.3.2
version: 2.3.2(vue@3.5.34(typescript@6.0.3))
'@iconify-json/ep':
specifier: ^1.2.3
version: 1.2.4
'@iconify-json/line-md':
specifier: ^1.2.16
version: 1.2.16
@@ -85,8 +88,8 @@ importers:
specifier: ^6.0.0
version: 6.0.0
element-plus:
specifier: ~2.13.7
version: 2.13.7(typescript@6.0.3)(vue@3.5.34(typescript@6.0.3))
specifier: ~2.14.3
version: 2.14.3(vue@3.5.34(typescript@6.0.3))
exceljs:
specifier: ^4.4.0
version: 4.4.0
@@ -120,9 +123,6 @@ importers:
path-to-regexp:
specifier: ^8.4.2
version: 8.4.2
picocolors:
specifier: ^1.1.1
version: 1.1.1
pinia:
specifier: ^3.0.4
version: 3.0.4(typescript@6.0.3)(vue@3.5.34(typescript@6.0.3))
@@ -147,6 +147,9 @@ importers:
vue-i18n:
specifier: ^11.1.10
version: 11.4.2(vue@3.5.34(typescript@6.0.3))
vue-img-cutter:
specifier: ^3.1.1
version: 3.1.1(typescript@6.0.3)
vue-json-pretty:
specifier: ^2.5.0
version: 2.6.0(vue@3.5.34(typescript@6.0.3))
@@ -159,9 +162,6 @@ importers:
vue3-cron-plus:
specifier: ^0.1.9
version: 0.1.9(typescript@6.0.3)
vuedraggable:
specifier: ^2.24.3
version: 2.24.3
xgplayer:
specifier: ^3.0.20
version: 3.0.24(core-js@3.49.0)
@@ -256,6 +256,9 @@ importers:
lint-staged:
specifier: ^15.5.2
version: 15.5.2
picocolors:
specifier: ^1.1.1
version: 1.1.1
postcss:
specifier: ^8.5.6
version: 8.5.14
@@ -314,11 +317,14 @@ importers:
specifier: ^8.59.3
version: 8.59.3(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)
unplugin-auto-import:
specifier: ^20.2.0
specifier: ^20.3.0
version: 20.3.0(@vueuse/core@13.9.0(vue@3.5.34(typescript@6.0.3)))
unplugin-element-plus:
specifier: ^0.10.0
version: 0.10.0
unplugin-icons:
specifier: ^23.0.1
version: 23.0.1(@vue/compiler-sfc@3.5.34)
unplugin-vue-components:
specifier: ^29.1.0
version: 29.2.0(@babel/parser@7.29.3)(vue@3.5.34(typescript@6.0.3))
@@ -340,9 +346,6 @@ importers:
vue-eslint-parser:
specifier: ^10.4.0
version: 10.4.0(eslint@10.4.0(jiti@2.7.0))
vue-img-cutter:
specifier: ^3.1.1
version: 3.1.1(typescript@6.0.3)
vue-tsc:
specifier: ^3.2.9
version: 3.2.9(typescript@6.0.3)
@@ -1085,6 +1088,9 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
'@iconify-json/ep@1.2.4':
resolution: {integrity: sha512-dtKOueYp1CRxAUW+GayIiuHqOlELfO0W3QiHOH4NjvKtBn2uxZbByIKQ+7B1Hj+AgZrhWTie3QKYkZn+VQVZrw==}
'@iconify-json/line-md@1.2.16':
resolution: {integrity: sha512-esHPUQUp30NyqJWa7MNu6ExdG8z/aEFC5r56rVyRGhtJ7acOme6YtYPnDOgVu6p+kk24rM8602xkFuBC6g6x+w==}
@@ -1100,6 +1106,9 @@ packages:
'@iconify/utils@2.3.0':
resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
'@iconify/utils@3.1.4':
resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==}
'@iconify/vue@5.0.1':
resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==}
peerDependencies:
@@ -1833,34 +1842,38 @@ packages:
'@vueuse/core@10.11.1':
resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
'@vueuse/core@12.0.0':
resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==}
'@vueuse/core@13.9.0':
resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==}
peerDependencies:
vue: ^3.5.0
'@vueuse/core@14.3.0':
resolution: {integrity: sha512-aHfz47g0ZhMtTVHmIzMVpJy8ePhhOy68GY5bv110+5DVtZ+W7BsOx+m61UNQqfrWyPztIHIanWa3E2tib3NFIw==}
peerDependencies:
vue: ^3.5.0
'@vueuse/metadata@10.11.1':
resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==}
'@vueuse/metadata@12.0.0':
resolution: {integrity: sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==}
'@vueuse/metadata@13.9.0':
resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==}
'@vueuse/metadata@14.3.0':
resolution: {integrity: sha512-BwxmbAzwAVF50+MW57GXOUEV61nFBGnlBvrTqj49PqWJu3uw7hdu72ztXeZ33RdZtDY6kO+bfCAE1PCn88Tktw==}
'@vueuse/shared@10.11.1':
resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==}
'@vueuse/shared@12.0.0':
resolution: {integrity: sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==}
'@vueuse/shared@13.9.0':
resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==}
peerDependencies:
vue: ^3.5.0
'@vueuse/shared@14.3.0':
resolution: {integrity: sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg==}
peerDependencies:
vue: ^3.5.0
'@wangeditor-next/basic-modules@2.0.0':
resolution: {integrity: sha512-oH7Cv6mHorvBkj5t3isP9wncgWABYLlQpoQZYOIFtWVwgsQatwoGVFHF6PoJzz+mTkt5UaJcyfDxFSo9Thvhdw==}
peerDependencies:
@@ -2563,10 +2576,10 @@ packages:
electron-to-chromium@1.5.357:
resolution: {integrity: sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==}
element-plus@2.13.7:
resolution: {integrity: sha512-XdHATFZOyzVFL1DaHQ90IOJQSg9UnSAV+bhDW+YB5UoZ0Hxs50mwqjqfwXkuwpSag+VXXizVcErBR6Movo5daw==}
element-plus@2.14.3:
resolution: {integrity: sha512-pJcvxcpZjYruNzuJhAeVwnbYjfNgzBKnWHwSVEhwzM2/kcLI3brzmtIBxtPqd4hQWJfD1PRnjoc1WipLw2eBGg==}
peerDependencies:
vue: ^3.3.0
vue: ^3.3.7
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -4154,9 +4167,6 @@ packages:
resolution: {integrity: sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==}
engines: {node: '>=12.17.0'}
sortablejs@1.10.2:
resolution: {integrity: sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -4486,6 +4496,23 @@ packages:
resolution: {integrity: sha512-oRSW0x6U58xBOWKy8TcoVZNA8ElIpfp3TUJRLQI6ey/E9PpjHl9/deeTAZNt8D57Li4OA4pCJtM6p2cb4Ff4ZA==}
engines: {node: '>=18.12.0'}
unplugin-icons@23.0.1:
resolution: {integrity: sha512-rv0XEJepajKzDLvRUWASM8K+8+/CCfZn2jtogXqg6RIp7kpatRc/aFrVJn8ANQA09e++lPEEv9yX8cC9enc+QQ==}
peerDependencies:
'@svgr/core': '>=7.0.0'
'@svgx/core': ^1.0.1
'@vue/compiler-sfc': ^3.0.2
svelte: ^3.0.0 || ^4.0.0 || ^5.0.0
peerDependenciesMeta:
'@svgr/core':
optional: true
'@svgx/core':
optional: true
'@vue/compiler-sfc':
optional: true
svelte:
optional: true
unplugin-utils@0.2.5:
resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==}
engines: {node: '>=18.12.0'}
@@ -4657,6 +4684,9 @@ packages:
vue-component-type-helpers@3.2.9:
resolution: {integrity: sha512-S3BiWYaLSzHxTpln665ELSrMR9UYmrIDUmhik7nVZxmJjTKL2/a+ew1hvGxksKelivm0ujjWfG1fYOiU/2e8rA==}
vue-component-type-helpers@3.3.7:
resolution: {integrity: sha512-Skkhw9agYSgsWqv7bxSOGJZa9SaiJbZVGdXuFWnrzKaQYHnw9qbjD630rw6RyMqDbp54nfLCLw5SZA55if7JLg==}
vue-demi@0.14.10:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
engines: {node: '>=12'}
@@ -4739,9 +4769,6 @@ packages:
typescript:
optional: true
vuedraggable@2.24.3:
resolution: {integrity: sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==}
w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
@@ -5534,6 +5561,10 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
'@iconify-json/ep@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/line-md@1.2.16':
dependencies:
'@iconify/types': 2.0.0
@@ -5561,6 +5592,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@iconify/utils@3.1.4':
dependencies:
'@antfu/install-pkg': 1.1.0
'@iconify/types': 2.0.0
import-meta-resolve: 4.2.0
'@iconify/vue@5.0.1(vue@3.5.34(typescript@6.0.3))':
dependencies:
'@iconify/types': 2.0.0
@@ -6289,15 +6326,6 @@ snapshots:
- '@vue/composition-api'
- vue
'@vueuse/core@12.0.0(typescript@6.0.3)':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 12.0.0
'@vueuse/shared': 12.0.0(typescript@6.0.3)
vue: 3.5.34(typescript@6.0.3)
transitivePeerDependencies:
- typescript
'@vueuse/core@13.9.0(vue@3.5.34(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
@@ -6305,12 +6333,19 @@ snapshots:
'@vueuse/shared': 13.9.0(vue@3.5.34(typescript@6.0.3))
vue: 3.5.34(typescript@6.0.3)
'@vueuse/core@14.3.0(vue@3.5.34(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 14.3.0
'@vueuse/shared': 14.3.0(vue@3.5.34(typescript@6.0.3))
vue: 3.5.34(typescript@6.0.3)
'@vueuse/metadata@10.11.1': {}
'@vueuse/metadata@12.0.0': {}
'@vueuse/metadata@13.9.0': {}
'@vueuse/metadata@14.3.0': {}
'@vueuse/shared@10.11.1(vue@3.5.34(typescript@6.0.3))':
dependencies:
vue-demi: 0.14.10(vue@3.5.34(typescript@6.0.3))
@@ -6318,13 +6353,11 @@ snapshots:
- '@vue/composition-api'
- vue
'@vueuse/shared@12.0.0(typescript@6.0.3)':
'@vueuse/shared@13.9.0(vue@3.5.34(typescript@6.0.3))':
dependencies:
vue: 3.5.34(typescript@6.0.3)
transitivePeerDependencies:
- typescript
'@vueuse/shared@13.9.0(vue@3.5.34(typescript@6.0.3))':
'@vueuse/shared@14.3.0(vue@3.5.34(typescript@6.0.3))':
dependencies:
vue: 3.5.34(typescript@6.0.3)
@@ -7069,7 +7102,7 @@ snapshots:
electron-to-chromium@1.5.357: {}
element-plus@2.13.7(typescript@6.0.3)(vue@3.5.34(typescript@6.0.3)):
element-plus@2.14.3(vue@3.5.34(typescript@6.0.3)):
dependencies:
'@ctrl/tinycolor': 4.2.0
'@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@6.0.3))
@@ -7077,7 +7110,7 @@ snapshots:
'@popperjs/core': '@sxzz/popperjs-es@2.11.8'
'@types/lodash': 4.17.24
'@types/lodash-es': 4.17.12
'@vueuse/core': 12.0.0(typescript@6.0.3)
'@vueuse/core': 14.3.0(vue@3.5.34(typescript@6.0.3))
async-validator: 4.2.5
dayjs: 1.11.20
lodash: 4.18.1
@@ -7086,9 +7119,7 @@ snapshots:
memoize-one: 6.0.0
normalize-wheel-es: 1.2.0
vue: 3.5.34(typescript@6.0.3)
vue-component-type-helpers: 3.2.9
transitivePeerDependencies:
- typescript
vue-component-type-helpers: 3.3.7
emoji-regex@10.6.0: {}
@@ -8635,8 +8666,6 @@ snapshots:
snabbdom@3.6.3: {}
sortablejs@1.10.2: {}
source-map-js@1.2.1: {}
source-map-support@0.5.21:
@@ -8988,6 +9017,16 @@ snapshots:
unplugin: 2.3.11
unplugin-utils: 0.2.5
unplugin-icons@23.0.1(@vue/compiler-sfc@3.5.34):
dependencies:
'@antfu/install-pkg': 1.1.0
'@iconify/utils': 3.1.4
local-pkg: 1.1.2
obug: 2.1.1
unplugin: 2.3.11
optionalDependencies:
'@vue/compiler-sfc': 3.5.34
unplugin-utils@0.2.5:
dependencies:
pathe: 2.0.3
@@ -9167,6 +9206,8 @@ snapshots:
vue-component-type-helpers@3.2.9: {}
vue-component-type-helpers@3.3.7: {}
vue-demi@0.14.10(vue@3.5.34(typescript@6.0.3)):
dependencies:
vue: 3.5.34(typescript@6.0.3)
@@ -9253,7 +9294,7 @@ snapshots:
dependencies:
'@element-plus/icons-vue': 2.3.2(vue@3.5.34(typescript@6.0.3))
core-js: 3.49.0
element-plus: 2.13.7(typescript@6.0.3)(vue@3.5.34(typescript@6.0.3))
element-plus: 2.14.3(vue@3.5.34(typescript@6.0.3))
vue: 3.5.34(typescript@6.0.3)
transitivePeerDependencies:
- typescript
@@ -9268,10 +9309,6 @@ snapshots:
optionalDependencies:
typescript: 6.0.3
vuedraggable@2.24.3:
dependencies:
sortablejs: 1.10.2
w3c-xmlserializer@5.0.0:
dependencies:
xml-name-validator: 5.0.0