Compare commits

...

3 Commits

Author SHA1 Message Date
1a30a3ece4 更新 2026-01-12 23:59:19 +08:00
bff086457c 更新 2026-01-12 10:43:26 +08:00
e79c66eaf4 更新 2026-01-12 10:42:23 +08:00
6 changed files with 437 additions and 560 deletions

503
package-lock.json generated
View File

@ -444,18 +444,11 @@
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
"integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
@ -513,12 +506,9 @@
}
},
"node_modules/@babel/parser": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"dependencies": {
"@babel/types": "^7.28.5"
},
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
"integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
"bin": {
"parser": "bin/babel-parser.js"
},
@ -1743,12 +1733,13 @@
}
},
"node_modules/@babel/types": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
"integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
@ -1979,9 +1970,10 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.14",
@ -3051,60 +3043,49 @@
"dev": true
},
"node_modules/@vue/compiler-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
"integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-core/node_modules/entities": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.0.tgz",
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
"source-map": "^0.6.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
"integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
"dependencies": {
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
"integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.26",
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26",
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.37",
"@vue/compiler-dom": "3.2.37",
"@vue/compiler-ssr": "3.2.37",
"@vue/reactivity-transform": "3.2.37",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
"integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-dom": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"node_modules/@vue/component-compiler-utils": {
@ -3242,49 +3223,60 @@
}
},
"node_modules/@vue/reactivity": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
"integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
"dependencies": {
"@vue/shared": "3.5.26"
"@vue/shared": "3.2.37"
}
},
"node_modules/@vue/reactivity-transform": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
"integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
"integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/reactivity": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz",
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
"integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
"@vue/runtime-core": "3.2.37",
"@vue/shared": "3.2.37",
"csstype": "^2.6.8"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
"integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
"dependencies": {
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-ssr": "3.2.37",
"@vue/shared": "3.2.37"
},
"peerDependencies": {
"vue": "3.5.26"
"vue": "3.2.37"
}
},
"node_modules/@vue/shared": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A=="
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
"integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
},
"node_modules/@vue/web-component-wrapper": {
"version": "1.3.0",
@ -6598,9 +6590,9 @@
"dev": true
},
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
"version": "2.6.20",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
},
"node_modules/cyclist": {
"version": "1.0.1",
@ -8268,7 +8260,7 @@
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/esutils": {
@ -12057,11 +12049,11 @@
}
},
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.5"
"sourcemap-codec": "^1.4.8"
}
},
"node_modules/make-dir": {
@ -12571,15 +12563,9 @@
"optional": true
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@ -13444,9 +13430,9 @@
"dev": true
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@ -13595,9 +13581,9 @@
}
},
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"funding": [
{
"type": "opencollective",
@ -13606,16 +13592,12 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
@ -16840,15 +16822,14 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"engines": {
"node": ">=0.10.0"
}
@ -16884,6 +16865,12 @@
"deprecated": "See https://github.com/lydell/source-map-url#deprecated",
"dev": true
},
"node_modules/sourcemap-codec": {
"version": "1.4.8",
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"deprecated": "Please use @jridgewell/sourcemap-codec instead"
},
"node_modules/spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@ -18108,6 +18095,15 @@
"integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
"dev": true
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@ -18825,23 +18821,15 @@
"dev": true
},
"node_modules/vue": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
"integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
"@vue/runtime-dom": "3.5.26",
"@vue/server-renderer": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
"@vue/compiler-dom": "3.2.37",
"@vue/compiler-sfc": "3.2.37",
"@vue/runtime-dom": "3.2.37",
"@vue/server-renderer": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"node_modules/vue-cli-plugin-element-plus": {
@ -20486,15 +20474,11 @@
"@babel/types": "^7.18.6"
}
},
"@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="
},
"@babel/helper-validator-identifier": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
"integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
"dev": true
},
"@babel/helper-validator-option": {
"version": "7.18.6",
@ -20537,12 +20521,9 @@
}
},
"@babel/parser": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"requires": {
"@babel/types": "^7.28.5"
}
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
"integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.18.6",
@ -21353,12 +21334,13 @@
}
},
"@babel/types": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
"integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"dev": true,
"requires": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
}
},
"@ctrl/tinycolor": {
@ -21555,9 +21537,10 @@
"dev": true
},
"@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
"version": "1.4.14",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
"dev": true
},
"@jridgewell/trace-mapping": {
"version": "0.3.14",
@ -22433,56 +22416,49 @@
}
},
"@vue/compiler-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
"integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
"requires": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
},
"dependencies": {
"entities": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.0.tgz",
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ=="
}
"source-map": "^0.6.1"
}
},
"@vue/compiler-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
"integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
"requires": {
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"@vue/compiler-sfc": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
"integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
"requires": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.26",
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26",
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.37",
"@vue/compiler-dom": "3.2.37",
"@vue/compiler-ssr": "3.2.37",
"@vue/reactivity-transform": "3.2.37",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
}
},
"@vue/compiler-ssr": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
"integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
"requires": {
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-dom": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"@vue/component-compiler-utils": {
@ -22595,46 +22571,57 @@
"requires": {}
},
"@vue/reactivity": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
"integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
"requires": {
"@vue/shared": "3.5.26"
"@vue/shared": "3.2.37"
}
},
"@vue/reactivity-transform": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
"integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
"requires": {
"@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7"
}
},
"@vue/runtime-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
"integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
"requires": {
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/reactivity": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"@vue/runtime-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz",
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
"integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
"requires": {
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
"@vue/runtime-core": "3.2.37",
"@vue/shared": "3.2.37",
"csstype": "^2.6.8"
}
},
"@vue/server-renderer": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
"integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
"requires": {
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-ssr": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"@vue/shared": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A=="
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
"integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
},
"@vue/web-component-wrapper": {
"version": "1.3.0",
@ -25280,9 +25267,9 @@
}
},
"csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
"version": "2.6.20",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
},
"cyclist": {
"version": "1.0.1",
@ -26594,7 +26581,7 @@
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"esutils": {
@ -29510,11 +29497,11 @@
}
},
"magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"requires": {
"@jridgewell/sourcemap-codec": "^1.5.5"
"sourcemap-codec": "^1.4.8"
}
},
"make-dir": {
@ -29934,9 +29921,9 @@
"optional": true
},
"nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
},
"nanomatch": {
"version": "1.2.13",
@ -30634,9 +30621,9 @@
"dev": true
},
"picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"picomatch": {
"version": "2.3.1",
@ -30747,13 +30734,13 @@
"dev": true
},
"postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"requires": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
},
"postcss-calc": {
@ -33360,13 +33347,12 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
},
"source-map-resolve": {
"version": "0.5.3",
@ -33397,6 +33383,11 @@
"integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
"dev": true
},
"sourcemap-codec": {
"version": "1.4.8",
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
},
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@ -34380,6 +34371,12 @@
"integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
"dev": true
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true
},
"to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@ -34958,15 +34955,15 @@
"dev": true
},
"vue": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
"integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
"requires": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
"@vue/runtime-dom": "3.5.26",
"@vue/server-renderer": "3.5.26",
"@vue/shared": "3.5.26"
"@vue/compiler-dom": "3.2.37",
"@vue/compiler-sfc": "3.2.37",
"@vue/runtime-dom": "3.2.37",
"@vue/server-renderer": "3.2.37",
"@vue/shared": "3.2.37"
}
},
"vue-cli-plugin-element-plus": {

View File

@ -7,165 +7,124 @@
<div class="cntinfo">
<!-- 标签 -->
<ul class="tag-box">
<li class="tag_item">驳回</li>
<li class="tag_item" :class="detail.shzt == 0 ? 'dsh_item' : detail.shzt == 1 ? 'tgg_item' : 'jtb_item'">
<!-- 0-待审核 1-通过 2-驳回 -->
{{ detail.shzt == 0 ? '待审核' : detail.shzt == 1 ? '通过' : '驳回' }}
</li>
<!-- <li class="tag_item">驳回</li>
<li class="tag_item">通过</li>
<li class="tag_item">待审核</li>
<li class="tag_item">待审核</li> -->
</ul>
<!-- 内容描述 -->
<el-descriptions class="desc" :column="3" border label-width="200px">
<el-descriptions-item label="保安公司名称">{{ detail.companyName }}</el-descriptions-item>
<el-descriptions-item label="年审年份">{{ detail.reviewYear }}</el-descriptions-item>
<el-descriptions-item label="保安公司名称">{{ detail.ssbakk }}</el-descriptions-item>
<el-descriptions-item label="年审年份">{{ detail.njnf }}</el-descriptions-item>
<el-descriptions-item label="姓名">{{ detail.xm }}</el-descriptions-item>
<el-descriptions-item label="身份证号码">{{ detail.sfzh }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ detail.phone }}</el-descriptions-item>
<el-descriptions-item label="性别">{{ detail.sexText }}</el-descriptions-item>
<el-descriptions-item label="身份证号码">{{ detail.sfzhm }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ detail.dh }}</el-descriptions-item>
<el-descriptions-item label="性别">{{ detail.xb }}</el-descriptions-item>
<el-descriptions-item label="民族">{{ detail.mz }}</el-descriptions-item>
<el-descriptions-item label="籍贯">{{ detail.jg }}</el-descriptions-item>
<el-descriptions-item label="文化程度">{{ detail.whcd }}</el-descriptions-item>
<el-descriptions-item label="民族">{{ detail.nationText }}</el-descriptions-item>
<el-descriptions-item label="籍贯">{{ detail.nativePlace }}</el-descriptions-item>
<el-descriptions-item label="文化程度">{{ detail.education }}</el-descriptions-item>
<el-descriptions-item label="证书编号">{{ detail.zsbh }}</el-descriptions-item>
<el-descriptions-item label="上岗证号码">{{ detail.sgxkhm }}</el-descriptions-item>
<el-descriptions-item label="服务行业"> {{ detail.fwxy }}</el-descriptions-item>
<el-descriptions-item label="证书编号">{{ detail.certificateNo }}</el-descriptions-item>
<el-descriptions-item label="上岗证号码">{{ detail.workCardNo }}</el-descriptions-item>
<el-descriptions-item label="服务行业">{{ detail.serviceIndustry }}</el-descriptions-item>
<el-descriptions-item label="服务行业名称">{{ detail.serviceIndustryName }}</el-descriptions-item>
<el-descriptions-item label="入职时间">{{ detail.entryDate }}</el-descriptions-item>
<el-descriptions-item label="政治面貌">{{ detail.politicalStatus }}</el-descriptions-item>
<el-descriptions-item label="服务行业名称">{{ detail.fwxymc }}</el-descriptions-item>
<el-descriptions-item label="入职时间">{{ detail.rzsj }}</el-descriptions-item>
<el-descriptions-item label="政治面貌"> {{ detail.zzmm }}</el-descriptions-item>
<el-descriptions-item label="无犯罪记录证明">
<div class="img-grid one">
<el-image
v-for="(src, idx) in noCrimeUrls"
:key="idx"
:src="src"
:src="baseUrl + detail.wfbjlzm"
fit="cover"
:preview-src-list="noCrimeUrls"
:preview-src-list='[baseUrl + detail.wfbjlzm]'
preview-teleported
class="img"
/>
<div v-if="noCrimeUrls.length === 0" class="img-placeholder"></div>
</div>
</el-descriptions-item>
<el-descriptions-item label="体检报告">
<div class="img-grid one">
<el-image
v-for="(src, idx) in medicalUrls"
:key="idx"
:src="src"
:src="baseUrl + detail.tjbg"
fit="cover"
:preview-src-list="medicalUrls"
:preview-src-list='[baseUrl + detail.tjbg]'
preview-teleported
class="img"
/>
<div v-if="medicalUrls.length === 0" class="img-placeholder"></div>
</div>
</el-descriptions-item>
<el-descriptions-item label="身份证正反面">
<div class="img-grid two">
<el-image
v-for="(src, idx) in idCardUrls"
:key="idx"
:src="src"
:src="baseUrl + detail.sfzzm"
fit="cover"
:preview-src-list="idCardUrls"
:preview-src-list='[baseUrl + detail.sfzzm]'
preview-teleported
class="img"
/>
<el-image
:src="baseUrl + detail.sfzfm"
fit="cover"
:preview-src-list='[baseUrl + detail.sfzfm]'
preview-teleported
class="img"
/>
<template v-if="idCardUrls.length === 0">
<div class="img-placeholder"></div>
<div class="img-placeholder"></div>
</template>
</div>
</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ detail.auditTime }}</el-descriptions-item>
<el-descriptions-item label="发证机关">{{ detail.issuingAuthority }}</el-descriptions-item>
<el-descriptions-item label="发证日期">{{ detail.issueDate }}</el-descriptions-item>
<el-descriptions-item label="审核时间">{{ detail.shsj }}</el-descriptions-item>
<el-descriptions-item label="发证机关">{{ detail.fqjg }}</el-descriptions-item>
<el-descriptions-item label="发证日期">{{ detail.fqsj }}</el-descriptions-item>
<el-descriptions-item label="驳回原因" :span="3">{{ detail.rejectReason }}</el-descriptions-item>
<el-descriptions-item label="驳回原因" :span="3">{{ detail.bhyy }}</el-descriptions-item>
</el-descriptions>
</div>
</div>
</template>
<script setup>
import { ref, computed, defineEmits, getCurrentInstance } from 'vue';
import { ref, computed, defineEmits, getCurrentInstance,defineProps } from 'vue';
import { qcckPost } from "@/api/qcckApi.js";
const emit = defineEmits(["refresh"]);
const { proxy } = getCurrentInstance();
const baseUrl = '/bagl/mosty-base/minio/image/download'
const props = defineProps({
dict: {
dic: {
default: [[]], //二维数组
type: Array
}
})
const dialogForm = ref(false);
const listQuery = ref({});
const detail = ref({})
// 初始化数据
const init = (type, row,) => {
dialogForm.value = true;
const raw = row || {};
listQuery.value = {
...raw,
companyName: raw.companyName || raw.dwmc || raw.gsmc || raw.bagsmc,
reviewYear: raw.reviewYear || raw.njnd || raw.njYear || raw.nf || raw.year,
phone: raw.phone || raw.lxdh || raw.dh || raw.sjhm || raw.xssbrdh,
sexText: raw.sexText || raw.xbText || raw.xb || raw.sex,
nationText: raw.nationText || raw.mzText || raw.mz,
nativePlace: raw.nativePlace || raw.jg || raw.jgText,
education: raw.education || raw.whcd || raw.whcdText,
certificateNo: raw.certificateNo || raw.zsbh || raw.zsbhm || raw.zjbh,
workCardNo: raw.workCardNo || raw.sgzh || raw.sgzNumber,
serviceIndustry: raw.serviceIndustry || raw.fwhy || raw.fwhyText || raw.hy,
serviceIndustryName: raw.serviceIndustryName || raw.fwhymc || raw.hyName,
entryDate: raw.entryDate || raw.rzsj || raw.rzrq,
politicalStatus: raw.politicalStatus || raw.zzmm || raw.zzmmText,
auditTime: raw.auditTime || raw.shsj || raw.njsj,
rejectReason: raw.rejectReason || raw.bhyy || raw.bhReason || raw.reason,
issuingAuthority: raw.issuingAuthority || raw.fzjg,
issueDate: raw.issueDate || raw.fzrq,
noCrimeProof: raw.noCrimeProof || raw.wffzjlzm || raw.wffzjlzmId,
medicalReport: raw.medicalReport || raw.tjbg || raw.tjbgId,
idCardImages: raw.idCardImages || raw.sfzzf || raw.sfzImgs || raw.sfzzm,
};
qcckPost({},'/mosty-base/bans/njxx/getInfo/'+row.id).then(res => {
let zj = res.sfzzfmj.split(',');
res.sfzzm = [zj[0]];
res.sfzfm = [zj[1]];
detail.value = res || {};
})
};
const close = () => {
dialogForm.value = false;
listQuery.value = {};
};;
const detail = computed(() => listQuery.value || {});
const toIdList = (val, limit) => {
const v = val ?? [];
const arr = Array.isArray(v) ? v : [v];
const ids = arr
.map((el) => {
if (!el) return null;
if (typeof el === 'string' || typeof el === 'number') return String(el);
if (typeof el === 'object') return el.id ? String(el.id) : null;
return null;
})
.filter(Boolean);
return typeof limit === 'number' ? ids.slice(0, limit) : ids;
detail.value = {};
};
const toUrls = (val, limit) => {
return toIdList(val, limit).map((id) => `/bagl/mosty-base/minio/image/download/${id}`);
};
const noCrimeUrls = computed(() => toUrls(detail.value.noCrimeProof, 1));
const medicalUrls = computed(() => toUrls(detail.value.medicalReport, 1));
const idCardUrls = computed(() => toUrls(detail.value.idCardImages, 2));
defineExpose({ init })
</script>
<style lang="scss" scoped>
@import "@/assets/css/layout.scss";
.mapBox {
width: calc(100% - 24rem);
height: 500px;
@ -183,6 +142,7 @@ defineExpose({ init })
display: flex;
flex-direction: column;
gap: 10px;
z-index: 99999;
.tag_item{
width: 70px;
height: 70px;
@ -192,17 +152,17 @@ defineExpose({ init })
font-size: 16px;
margin-bottom: 20px;
}
.tag_item:nth-child(1){
.jtb_item{
border: 5px solid #FA3758;
color: #FA3758;
background: rgba(250,55,88,0.2);
}
.tag_item:nth-child(2){
.tgg_item{
color: #28EEBF;
background: rgba(40,238,191,0.2);
border: 5px solid #28EEBF;
}
.tag_item:nth-child(3){
.dsh_item{
background: rgba(0,114,255,0.2);
color: #0072FF;
border: 5px solid #0072FF;

View File

@ -1,19 +1,26 @@
<template>
<div>
<el-dialog class="steps-dialog" title="审核" v-model="dialogForm" :close-on-click-modal="false" @close="dialogForm = false" width="420px">
<el-dialog class="steps-dialog" title="审核" v-model="dialogForm" :close-on-click-modal="false" @close="dialogForm = false,formData = {}" width="420px">
<el-form :model="formData" ref="formRef" :rules="rules" label-width="120px">
<el-form-item label="审核类型" prop="auditType">
<el-select v-model="formData.auditType" placeholder="请选择审核类型">
<el-option label="保安公司审核" value="bakk"></el-option>
<el-option label="培训公司审核" value="pxgs"></el-option>
<el-option label="公安局审核" value="gongan"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否通过" prop="auditStatus">
<el-radio-group v-model="formData.auditStatus">
<el-radio label="1">通过</el-radio>
<el-radio label="0">不通过</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="驳回原因" prop="auditRemark" v-if="formData.auditStatus === '0'">
<el-input v-model="formData.auditRemark" type="textarea" placeholder="请输入驳回原因" :autosize="{ minRows: 2, maxRows: 4 }" />
<el-form-item label="驳回原因" prop="rejectReason" v-if="formData.auditStatus === '0'">
<el-input v-model="formData.rejectReason" type="textarea" placeholder="请输入驳回原因" :autosize="{ minRows: 2, maxRows: 4 }" />
</el-form-item>
<div class="flex just-center">
<el-button @click="dialogForm = false">取消</el-button>
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="dialogForm = false,formData = {}">取消</el-button>
<el-button type="primary" :loading="loading" @click="submitForm">提交</el-button>
</div>
</el-form>
</el-dialog>
@ -21,18 +28,42 @@
</template>
<script setup>
import { ref, defineExpose } from 'vue';
import { ElMessage } from "element-plus";
import { ref, defineExpose,defineEmits } from 'vue';
import { qcckPost } from "@/api/qcckApi.js";
const emit = defineEmits(['refresh'])
const dialogForm = ref(false);
const loading = ref(false)
const formData = ref({})
const rules = ref({
auditType: [{ required: true, message: '请选择审核类型', trigger: 'blur' }],
auditStatus: [{ required: true, message: '请选择是否通过', trigger: 'blur' }],
auditRemark: [{ required: true, message: '请输入驳回原因', trigger: 'blur' }],
rejectReason: [{ required: true, message: '请输入驳回原因', trigger: 'blur' }],
})
const init = (row) => {
formData.value = row
const formRef = ref();
const idsVal = ref([])
const init = (ids) => {
idsVal.value = ids;
dialogForm.value = true;
}
const submitForm = () =>{
formRef.value.validate((valid) => {
if (!valid) return;
loading.value = true;
let params = { ...formData.value,ids:idsVal.value }
qcckPost(params,"/mosty-base/bans/njxx/batchAudit").then((res) => {
loading.value = false;
ElMessage.success("操作成功");
dialogForm.value = false;
formData.value={}
emit('refresh')
}).catch(()=>{
loading.value = false;
});
});
}
defineExpose({
init
})

View File

@ -1,7 +1,10 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="保安员年检管理" />
<PageTitle title="保安员年检管理" >
<el-button type="primary" @click="onBatchAudit(selectedRows)">批量审核</el-button>
<el-button type="primary" @click="handleItemSp(selectedRows)">批量送培</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
@ -9,28 +12,27 @@
</div>
<!-- 表格 -->
<div class="tabBox">
<div style="margin-bottom: 12px;">
<el-button type="primary" @click="onBatchAudit">批量审核</el-button>
</div>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #auditStatus="{ row }">
<el-tag v-if="String(row.auditStatus || '').includes('驳回')" type="danger">{{ row.auditStatus }}</el-tag>
<el-tag v-else-if="String(row.auditStatus || '').includes('待')" type="warning">{{ row.auditStatus }}</el-tag>
<el-tag v-else-if="String(row.auditStatus || '').includes('通过')" type="success">{{ row.auditStatus }}</el-tag>
<span v-else>{{ row.auditStatus }}</span>
<template #whcd="{ row }">
<DictTag :value="row.whcd" :tag="false" :options="D_BZ_WHCD" />
</template>
<template #sendStatus="{ row }">
<el-tag v-if="String(row.sendStatus || '').includes('未')" type="info">{{ row.sendStatus }}</el-tag>
<el-tag v-else-if="String(row.sendStatus || '').includes('已')" type="success">{{ row.sendStatus }}</el-tag>
<span v-else>{{ row.sendStatus }}</span>
<template #fwxy="{ row }">
<DictTag :value="row.fwxy" :tag="false" :options="D_BAXX_SSHY" />
</template>
<template #shzt="{ row }">
<DictTag :value="row.shzt" :tag="false" :options="D_BA_SHZT" />
</template>
<template #sptz="{ row }">
<DictTag :value="row.sptz" :tag="false" :options="D_BA_SPZT" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" link @click="addEdit('shForm', row)">立即审核</el-link>
<!--currentAuditStage 当前审核阶段1-保安公司审核阶段2-培训公司审核阶段3-公安局审核阶段4-审核完成 -->
<el-link type="primary" link @click="onBatchAudit([row.id])">立即审核</el-link>
<el-link type="primary" link @click="addEdit('RefSteap', row)">审核流程</el-link>
<el-link type="primary" link @click="addEdit('sp', row)">送培</el-link>
<el-link type="primary" link @click="handleItemSp([row.id])">送培</el-link>
<el-link type="primary" link @click="addEdit('detail', row)">详情</el-link>
</template>
</MyTable>
@ -40,11 +42,11 @@
}"></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" :dict="{D_BZ_SF}"/>
<DetailForm ref="detailDiloag" :dict="{D_BZ_ZZMM,D_BZ_XB,D_BZ_MZ,D_BA_SHZT,D_BAXX_SSHY,D_BA_SPZT,D_BZ_WHCD}"/>
<!-- 审核流程 -->
<Steps ref="RefSteap" ></Steps>
<!-- 审核 -->
<ShForm ref="shForm" />
<ShForm ref="shForm" @refresh="getList" />
</div>
</template>
@ -56,12 +58,11 @@ import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/detailForm.vue";
import Steps from "./components/steps.vue";
import ShForm from "./components/shForm.vue";
import {getItem} from '@/utils/storage.js'
import { cyryPage,njryPage} from "@/api/pxzx.js";
import { qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { ElMessage } from "element-plus";
const { proxy } = getCurrentInstance();
const { D_BZ_SF ,D_BAXX_DWLX} = proxy.$dict("D_BZ_SF","D_BAXX_DWLX");
const { D_BZ_ZZMM,D_BZ_XB,D_BZ_MZ,D_BA_SHZT,D_BAXX_SSHY,D_BA_SPZT,D_BZ_WHCD } = proxy.$dict('D_BZ_ZZMM','D_BZ_XB','D_BZ_MZ','D_BA_SHZT','D_BAXX_SSHY','D_BA_SPZT','D_BZ_WHCD');
const detailDiloag = ref();
const RefSteap = ref();
const shForm = ref();
@ -75,12 +76,12 @@ const searchConfiger = ref([
},
{
label: "身份证号码",
prop: "sfzh",
prop: "sfzhm",
showType: "input"
},
{
label: "电话",
prop: "lxdh",
prop: "dh",
showType: "input"
},
{
@ -90,45 +91,21 @@ const searchConfiger = ref([
placeholder: "不限",
clearable: true,
defaultVal: "",
options: [
{ label: "驳回", value: "驳回" },
{ label: "待审核", value: "待审核" },
{ label: "通过", value: "通过" }
]
options: D_BA_SHZT
},
{
label: "送培状态",
prop: "spzt",
prop: "sptz",
showType: "select",
placeholder: "不限",
clearable: true,
defaultVal: "",
options: [
{ label: "未送培", value: "未送培" },
{ label: "已送培", value: "已送培" }
]
options: D_BA_SPZT
}
]);
const idEntityCard=getItem('idEntityCard')
const queryFrom = ref({});
const pageData = reactive({
tableData: [
{
companyName: "保安公司名称",
reviewYear: "年审年份",
xm: "姓名",
sfzh: "身份证号码",
phone: "电话",
education: "文化程度",
certificateNo: "证书编号",
serviceIndustry: "服务行业",
entryDate: "入职时间",
workCardNo: "上岗证号码",
auditStatus: "审核状态",
auditTime: "审核时间",
sendStatus: "送培状态"
}
],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
@ -138,36 +115,35 @@ const pageData = reactive({
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
pageNum: 1
},
controlsWidth: 280,
tableColumn: [
{ label: "保安公司名称", prop: "companyName", width: 160, showOverflowTooltip: true },
{ label: "年审年份", prop: "reviewYear", width: 100 },
{ label: "姓名", prop: "xm", width: 100 },
{ label: "身份证号码", prop: "sfzh", width: 170, showOverflowTooltip: true },
{ label: "电话", prop: "phone", width: 120 },
{ label: "文化程度", prop: "education", width: 110 },
{ label: "证书编号", prop: "certificateNo", width: 140, showOverflowTooltip: true },
{ label: "服务行业", prop: "serviceIndustry", width: 110 },
{ label: "入职时间", prop: "entryDate", width: 120 },
{ label: "上岗证号码", prop: "workCardNo", width: 140, showOverflowTooltip: true },
{ label: "审核状态", prop: "auditStatus", width: 100, showSolt: true },
{ label: "审核时间", prop: "auditTime", width: 140 },
{ label: "送培状态", prop: "sendStatus", width: 100, showSolt: true }
{ label: "保安公司名称", prop: "ssbakk", showOverflowTooltip: true },
{ label: "年审年份", prop: "njnf" },
{ label: "姓名", prop: "xm" },
{ label: "身份证号码", prop: "sfzhm", showOverflowTooltip: true },
{ label: "电话", prop: "dh" },
{ label: "文化程度", prop: "whcd",showSolt: true },
{ label: "证书编号", prop: "zsbh", showOverflowTooltip: true },
{ label: "服务行业", prop: "fwxy", showSolt: true },
{ label: "入职时间", prop: "rzsj" },
{ label: "上岗证号码", prop: "sgxkhm", showOverflowTooltip: true },
{ label: "审核状态", prop: "shzt", showSolt: true },
{ label: "审核时间", prop: "shsj" },
{ label: "送培状态", prop: "sptz", showSolt: true }
]
});
onMounted(() => {
// getInfo();
getList();
tabHeightFn();
});
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
pageData.pageConfiger.pageNum = 1;
getList();
};
const gsId=ref('')
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList();
@ -176,74 +152,47 @@ const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList();
};
const getInfo = () => {
let promes = { sfzh: idEntityCard }
cyryPage(promes).then(res => {
const data = res.records[0] || {};
if (data) {
gsId.value=data.code
}
getList()
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
// 获取列表
const getList = () => {
pageData.tableConfiger.loading = true;
const promes = {
...pageData.pageConfiger,
...queryFrom.value,
dwbm: gsId.value
}
njryPage(promes).then((res) => {
pageData.tableData = (res.records || []).map((item) => {
return {
...item,
companyName: item.companyName || item.dwmc || item.gsmc || item.dwmcName || item.bagsmc,
reviewYear: item.reviewYear || item.njnd || item.njYear || item.nf || item.year,
phone: item.phone || item.lxdh || item.dh || item.sjhm || item.xssbrdh,
education: item.education || item.whcd || item.whcdText,
certificateNo: item.certificateNo || item.zsbh || item.zsbhm || item.zjbh,
serviceIndustry: item.serviceIndustry || item.fwhy || item.fwhyText || item.hy,
entryDate: item.entryDate || item.rzsj || item.rzrq,
workCardNo: item.workCardNo || item.sgzh || item.sgzNumber,
auditStatus: item.auditStatus || item.shztText || item.shzt,
auditTime: item.auditTime || item.shsj || item.njsj,
sendStatus: item.sendStatus || item.spztText || item.spzt || (item.RefSteap ? "已送培" : "未送培")
};
});
qcckPost(promes,'/mosty-base/bans/njxx/page').then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
}).catch((err) => {
console.log(err);
}).finally(() => {
pageData.tableConfiger.loading = false;
});
}).catch((err) => {
pageData.tableConfiger.loading = false;
})
};
const chooseData = (rows) => {
selectedRows.value = Array.isArray(rows) ? rows : [];
};
const onBatchAudit = () => {
if (!selectedRows.value.length) {
ElMessage.warning("请选择需要审核的数据");
return;
}
ElMessage.success("已选择 " + selectedRows.value.length + " 条");
const onBatchAudit = (ids) => {
if (!ids.length) return ElMessage.warning("请选择需要的数据");
shForm.value.init(ids);
};
// 送培
const handleItemSp = (ids) =>{
proxy.$modal.confirm("是否确认送培?").then(() => {
qcckPost(ids,'/mosty-base/bans/njxx/sendTraining').then(res=>{
ElMessage.success("送培成功");
getList()
})
});
}
// 详情
const addEdit = (type, row) => {
nextTick(() => {
if(type == 'RefSteap'){
RefSteap.value.init(row);
}else if(type == 'shForm'){
shForm.value.init(row);
}
else{
}else{
detailDiloag.value.init(type, row);
}
})

View File

@ -11,22 +11,11 @@
</div>
<!-- 表格 -->
<div class="tabBox">
<div style="margin-bottom: 12px;">
<el-button type="primary" @click="onBatchAudit">批量审核</el-button>
</div>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
<template #auditStatus="{ row }">
<el-tag v-if="String(row.auditStatus || '').includes('驳回')" type="danger">{{ row.auditStatus }}</el-tag>
<el-tag v-else-if="String(row.auditStatus || '').includes('待')" type="warning">{{ row.auditStatus }}</el-tag>
<el-tag v-else-if="String(row.auditStatus || '').includes('通过')" type="success">{{ row.auditStatus }}</el-tag>
<span v-else>{{ row.auditStatus }}</span>
</template>
<template #sendStatus="{ row }">
<el-tag v-if="String(row.sendStatus || '').includes('未')" type="info">{{ row.sendStatus }}</el-tag>
<el-tag v-else-if="String(row.sendStatus || '').includes('已')" type="success">{{ row.sendStatus }}</el-tag>
<span v-else>{{ row.sendStatus }}</span>
<template #sptz="{ row }">
<DictTag :value="row.sptz" :tag="false" :options="D_BA_SPZT" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
@ -54,11 +43,11 @@ import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/detailForm.vue";
import Steps from "./components/steps.vue";
import {getItem} from '@/utils/storage.js'
import { cyryPage,njryPage} from "@/api/pxzx.js";
import { qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { ElMessage } from "element-plus";
const { proxy } = getCurrentInstance();
const { D_BZ_SF ,D_BAXX_DWLX} = proxy.$dict("D_BZ_SF","D_BAXX_DWLX");
const { D_BA_SHZT,D_BA_SPZT } = proxy.$dict("D_BA_SHZT",'D_BA_SPZT');
const detailDiloag = ref();
const RefSteap = ref();
const shForm = ref();
@ -72,35 +61,18 @@ const searchConfiger = ref([
},
{
label: "身份证号码",
prop: "sfzh",
prop: "sfzhm",
showType: "input"
},
{
label: "电话",
prop: "lxdh",
prop: "dh",
showType: "input"
},
]);
const idEntityCard=getItem('idEntityCard')
const queryFrom = ref({});
const pageData = reactive({
tableData: [
{
companyName: "保安公司名称",
reviewYear: "年审年份",
xm: "姓名",
sfzh: "身份证号码",
phone: "电话",
education: "文化程度",
certificateNo: "证书编号",
serviceIndustry: "服务行业",
entryDate: "入职时间",
workCardNo: "上岗证号码",
auditStatus: "审核状态",
auditTime: "审核时间",
sendStatus: "送培状态"
}
],
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
@ -110,35 +82,34 @@ const pageData = reactive({
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
pageNum: 1
},
controlsWidth: 180,
tableColumn: [
{ label: "保安公司名称", prop: "companyName",showOverflowTooltip: true },
{ label: "培训公司", prop: "pxgs", showOverflowTooltip: true },
{ label: "年审年份", prop: "reviewYear"},
{ label: "保安公司名称", prop: "ssbakk",showOverflowTooltip: true },
{ label: "培训公司", prop: "sptzCompanyName", showOverflowTooltip: true },
{ label: "年审年份", prop: "njnf"},
{ label: "姓名", prop: "xm" },
{ label: "身份证号码", prop: "sfzh",showOverflowTooltip: true },
{ label: "电话", prop: "phone" },
{ label: "文化程度", prop: "education" },
{ label: "证书编号", prop: "certificateNo", showOverflowTooltip: true },
{ label: "服务行业", prop: "serviceIndustry" },
{ label: "入职时间", prop: "entryDate" },
{ label: "上岗证号码", prop: "workCardNo", showOverflowTooltip: true },
{ label: "送培状态", prop: "sendStatus", showSolt: true }
{ label: "身份证号码", prop: "sfzhm",showOverflowTooltip: true },
{ label: "电话", prop: "dh" },
{ label: "文化程度", prop: "whcd" },
{ label: "证书编号", prop: "zsbh", showOverflowTooltip: true },
{ label: "服务行业", prop: "fwxymc" },
{ label: "入职时间", prop: "rzsj" },
{ label: "上岗证号码", prop: "sgxkhm", showOverflowTooltip: true },
{ label: "送培状态", prop: "sptz", showSolt: true }
]
});
onMounted(() => {
// getInfo();
getList();
tabHeightFn();
});
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
pageData.pageConfiger.pageNum = 1;
getList();
};
const gsId=ref('')
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList();
@ -147,50 +118,20 @@ const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList();
};
const getInfo = () => {
let promes = { sfzh: idEntityCard }
cyryPage(promes).then(res => {
const data = res.records[0] || {};
if (data) {
gsId.value=data.code
}
getList()
}).finally(() => {
pageData.tableConfiger.loading = false;
})
}
// 获取列表
const getList = () => {
pageData.tableConfiger.loading = true;
const promes = {
...pageData.pageConfiger,
...queryFrom.value,
dwbm: gsId.value
}
njryPage(promes).then((res) => {
pageData.tableData = (res.records || []).map((item) => {
return {
...item,
companyName: item.companyName || item.dwmc || item.gsmc || item.dwmcName || item.bagsmc,
reviewYear: item.reviewYear || item.njnd || item.njYear || item.nf || item.year,
phone: item.phone || item.lxdh || item.dh || item.sjhm || item.xssbrdh,
education: item.education || item.whcd || item.whcdText,
certificateNo: item.certificateNo || item.zsbh || item.zsbhm || item.zjbh,
serviceIndustry: item.serviceIndustry || item.fwhy || item.fwhyText || item.hy,
entryDate: item.entryDate || item.rzsj || item.rzrq,
workCardNo: item.workCardNo || item.sgzh || item.sgzNumber,
auditStatus: item.auditStatus || item.shztText || item.shzt,
auditTime: item.auditTime || item.shsj || item.njsj,
sendStatus: item.sendStatus || item.spztText || item.spzt || (item.RefSteap ? "已送培" : "未送培")
};
});
qcckPost(promes,'/mosty-base/bans/njxx/listForSendTraining').then((res) => {
pageData.tableData = res.records || []
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch((err) => {
console.log(err);
}).finally(() => {
pageData.tableConfiger.loading = false;
});
pageData.tableConfiger.loading = false;
})
};
const chooseData = (rows) => {

View File

@ -6,8 +6,8 @@ function resolve(dir) {
// const serverHost = "http://192.168.1.98:8006";//毛毛
// const serverHost = "http://192.168.1.32:8066";//波哥
// const serverHost = "http://192.168.0.231:8006"//线上
const serverHost = "https://lam.clcud.com:1443";//波哥
// const serverHost = "http://127.0.0.1:8006"/bagl/mosty-base/docs.html
const serverHost = "http://47.108.232.77:9537";//波哥
// const serverHost = "http://127.0.0.1:8006"
module.exports = {
publicPath: "./",
outputDir: "ab",
@ -39,14 +39,13 @@ module.exports = {
proxyReq.setHeader("Connection", "Keep-Alive"); //设置长连接
}
},
// https://lam.clcud.com:1443/bagl/mosty-base/docs.html
'/bagl/mosty-base': {
'/mosty-base': {
target: serverHost, // 后端服务器地址
changeOrigin: true, // 允许跨域
secure: false, // 如果是https需要设置为false
// pathRewrite: {
// '^/bagl/mosty-base': '/mosty-base' // 精确路径重写
// }
pathRewrite: {
'^/bagl/mosty-base': '/mosty-base' // 精确路径重写
}
},
"/data/rec": {
target: "http://80.93.24.195:8181",