This commit is contained in:
2026-01-14 18:15:16 +08:00
52 changed files with 620 additions and 481 deletions

BIN
ab/ab.zip Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

503
package-lock.json generated
View File

@ -444,11 +444,18 @@
"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.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,
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"engines": {
"node": ">=6.9.0"
}
@ -506,9 +513,12 @@
}
},
"node_modules/@babel/parser": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
"integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==",
"version": "7.28.6",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.6.tgz",
"integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
"dependencies": {
"@babel/types": "^7.28.6"
},
"bin": {
"parser": "bin/babel-parser.js"
},
@ -1733,13 +1743,12 @@
}
},
"node_modules/@babel/types": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
"integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"dev": true,
"version": "7.28.6",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.6.tgz",
"integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
"dependencies": {
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@ -1970,10 +1979,9 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"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
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.14",
@ -3043,49 +3051,60 @@
"dev": true
},
"node_modules/@vue/compiler-core": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
"integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"dependencies": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.37",
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"estree-walker": "^2.0.2",
"source-map": "^0.6.1"
"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"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
"integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
"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==",
"dependencies": {
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/compiler-sfc": {
"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==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"dependencies": {
"@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",
"@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",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
"integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"dependencies": {
"@vue/compiler-dom": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/component-compiler-utils": {
@ -3223,60 +3242,49 @@
}
},
"node_modules/@vue/reactivity": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
"integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"dependencies": {
"@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"
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
"integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"dependencies": {
"@vue/reactivity": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
"integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
"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==",
"dependencies": {
"@vue/runtime-core": "3.2.37",
"@vue/shared": "3.2.37",
"csstype": "^2.6.8"
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
}
},
"node_modules/@vue/server-renderer": {
"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==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"dependencies": {
"@vue/compiler-ssr": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"vue": "3.2.37"
"vue": "3.5.26"
}
},
"node_modules/@vue/shared": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
"integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A=="
},
"node_modules/@vue/web-component-wrapper": {
"version": "1.3.0",
@ -6590,9 +6598,9 @@
"dev": true
},
"node_modules/csstype": {
"version": "2.6.20",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
},
"node_modules/cyclist": {
"version": "1.0.1",
@ -8260,7 +8268,7 @@
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/esutils": {
@ -12049,11 +12057,11 @@
}
},
"node_modules/magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"dependencies": {
"sourcemap-codec": "^1.4.8"
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/make-dir": {
@ -12563,9 +12571,15 @@
"optional": true
},
"node_modules/nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"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"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@ -13430,9 +13444,9 @@
"dev": true
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@ -13581,9 +13595,9 @@
}
},
"node_modules/postcss": {
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
@ -13592,12 +13606,16 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@ -16822,14 +16840,15 @@
"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.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"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==",
"engines": {
"node": ">=0.10.0"
}
@ -16865,12 +16884,6 @@
"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",
@ -18095,15 +18108,6 @@
"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",
@ -18821,15 +18825,23 @@
"dev": true
},
"node_modules/vue": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
"integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"dependencies": {
"@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/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
}
}
},
"node_modules/vue-cli-plugin-element-plus": {
@ -20474,11 +20486,15 @@
"@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.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
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="
},
"@babel/helper-validator-option": {
"version": "7.18.6",
@ -20521,9 +20537,12 @@
}
},
"@babel/parser": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz",
"integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg=="
"version": "7.28.6",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.6.tgz",
"integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
"requires": {
"@babel/types": "^7.28.6"
}
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.18.6",
@ -21334,13 +21353,12 @@
}
},
"@babel/types": {
"version": "7.18.9",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz",
"integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==",
"dev": true,
"version": "7.28.6",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.6.tgz",
"integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
"requires": {
"@babel/helper-validator-identifier": "^7.18.6",
"to-fast-properties": "^2.0.0"
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
}
},
"@ctrl/tinycolor": {
@ -21537,10 +21555,9 @@
"dev": true
},
"@jridgewell/sourcemap-codec": {
"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
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
},
"@jridgewell/trace-mapping": {
"version": "0.3.14",
@ -22416,49 +22433,56 @@
}
},
"@vue/compiler-core": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
"integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"requires": {
"@babel/parser": "^7.16.4",
"@vue/shared": "3.2.37",
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"estree-walker": "^2.0.2",
"source-map": "^0.6.1"
"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=="
}
}
},
"@vue/compiler-dom": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
"integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
"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==",
"requires": {
"@vue/compiler-core": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/compiler-sfc": {
"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==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"requires": {
"@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",
"@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",
"estree-walker": "^2.0.2",
"magic-string": "^0.25.7",
"postcss": "^8.1.10",
"source-map": "^0.6.1"
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"@vue/compiler-ssr": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
"integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"requires": {
"@vue/compiler-dom": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/component-compiler-utils": {
@ -22571,57 +22595,46 @@
"requires": {}
},
"@vue/reactivity": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
"integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"requires": {
"@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/shared": "3.5.26"
}
},
"@vue/runtime-core": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
"integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"requires": {
"@vue/reactivity": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/runtime-dom": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
"integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
"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==",
"requires": {
"@vue/runtime-core": "3.2.37",
"@vue/shared": "3.2.37",
"csstype": "^2.6.8"
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
}
},
"@vue/server-renderer": {
"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==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"requires": {
"@vue/compiler-ssr": "3.2.37",
"@vue/shared": "3.2.37"
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/shared": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
"integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A=="
},
"@vue/web-component-wrapper": {
"version": "1.3.0",
@ -25267,9 +25280,9 @@
}
},
"csstype": {
"version": "2.6.20",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
"integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
},
"cyclist": {
"version": "1.0.1",
@ -26581,7 +26594,7 @@
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"esutils": {
@ -29497,11 +29510,11 @@
}
},
"magic-string": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"requires": {
"sourcemap-codec": "^1.4.8"
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"make-dir": {
@ -29921,9 +29934,9 @@
"optional": true
},
"nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
},
"nanomatch": {
"version": "1.2.13",
@ -30621,9 +30634,9 @@
"dev": true
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
},
"picomatch": {
"version": "2.3.1",
@ -30734,13 +30747,13 @@
"dev": true
},
"postcss": {
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"requires": {
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
}
},
"postcss-calc": {
@ -33347,12 +33360,13 @@
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
"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=="
},
"source-map-resolve": {
"version": "0.5.3",
@ -33383,11 +33397,6 @@
"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",
@ -34371,12 +34380,6 @@
"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",
@ -34955,15 +34958,15 @@
"dev": true
},
"vue": {
"version": "3.2.37",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
"integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"requires": {
"@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/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-cli-plugin-element-plus": {

View File

@ -123,3 +123,10 @@ export function downFiles(id) {
method: "get"
})
}
// 视频文件
export function downVideoFiles(id) {
return request({
url: `/bagl/mosty-base/AppUserConfig/image/url/${id}`,
method: "get"
})
}

View File

@ -1,16 +1,16 @@
<template>
<div class="form-item-box" :style="{ width: width }">
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'date'" v-model="modelValue" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" style="width:100%" />
<el-time-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'time'" v-model="modelValue" placeholder="选择时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'datetime'" v-model="modelValue" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'datetimerange'" v-model="modelValue" type="datetimerange" :shortcuts="shortcuts" range-separator="To" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="选择开始时间" end-placeholder="选择结束时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'daterange'" v-model="modelValue" type="daterange" range-separator="To" value-format="YYYY-MM-DD" start-placeholder="选择开始日期" end-placeholder="选择开始日期" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'date'" v-model="localValue" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" style="width:100%" />
<el-time-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'time'" v-model="localValue" placeholder="选择时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'datetime'" v-model="localValue" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'datetimerange'" v-model="localValue" type="datetimerange" :shortcuts="shortcuts" range-separator="To" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="选择开始时间" end-placeholder="选择结束时间" style="width:100%" />
<el-date-picker v-bind="$attrs" @change="changeTime" v-if="props.type == 'daterange'" v-model="localValue" type="daterange" range-separator="To" value-format="YYYY-MM-DD" start-placeholder="选择开始日期" end-placeholder="选择开始日期" style="width:100%" />
</div>
</template>
<script setup>
import { COMPONENT_WIDTH } from "@/constant";
import { defineProps, defineEmits } from "vue";
import { defineProps, defineEmits, ref, watch } from "vue";
const props = defineProps({
//获取组件传值
placeholder: {
@ -33,6 +33,19 @@ const props = defineProps({
const emits = defineEmits(["update:modelValue"]);
// 创建本地 ref 来绑定值
const localValue = ref(props.modelValue);
// 监听本地值变化emit 事件
watch(localValue, (newVal) => {
emits("update:modelValue", newVal);
});
// 监听 props 变化,更新本地值
watch(() => props.modelValue, (newVal) => {
localValue.value = newVal;
});
const shortcuts = [
{
text: "今天",

View File

@ -1,6 +1,6 @@
<template>
<div class="form-item-box" :style="{ width: width }">
<el-input :placeholder="placeholder" v-bind="$attrs" v-model="modelValue" @input="onInput" ></el-input>
<el-input :placeholder="placeholder" v-bind="$attrs" :model-value="modelValue" @input="onInput" ></el-input>
</div>
</template>

View File

@ -1,7 +1,7 @@
<template>
<div class="Select-wrap" :style="{ width: width }">
<el-select :disabled="props.disabled" v-bind="$attrs" v-model="modelValue" @change="hanlderSelect" :popper-class="selectOption.length > 20 ? 'nation-select' : ''" :placeholder="placeholder">
<el-select :disabled="props.disabled" v-bind="$attrs" :model-value="modelValue" @change="hanlderSelect" :popper-class="selectOption.length > 20 ? 'nation-select' : ''" :placeholder="placeholder">
<el-option v-for="item in dictEnum" :key="item.value" :label="item.zdmc || item.label" :value="item.dm || item.value">
</el-option>
</el-select>

View File

@ -35,7 +35,7 @@ const deptName = ref('');
const router = useRouter();
onMounted(() => {
deptName.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptName : ''
deptName.value = localStorage.getItem("userInfo") ? JSON.parse(localStorage.getItem("userInfo")).pxgs || '' : ''
})
const active = ref("");
onMounted(() => {

View File

@ -1,55 +1,55 @@
import router from './router'
import Base64 from "base-64";
import store from './store'
import {
setItem,
getItem,
removeAllItem
} from "@/utils/storage";
// 白名单
const whiteList = ['/login','/', '/oatuh_login', '/sso_redirect', '/editPassword', '/404', '/401']
const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/zeroTrust_login', '/focusExploration', '/clueVerification', '/deploymentApproval']
/**
* 路由前置守卫
* to 去哪里
* from 来自哪
* next 往下走
*/
let onRun = true;
router.beforeEach(async (to, from, next) => {
// 存在 token ,进入主页
// if (store.state.user.token) {
// 快捷访问
// console.log(store.getters.token);
if (store.getters.token) {
// console.log("路由1");
// 判断用户资料是否获取
// 若不存在用户信息,则需要获取用户信息
// 触发获取用户信息的 action并获取用户当前权限
await store.commit('permission/setRouteReady', 1)
store.commit('permission/setRouteReady', 1)
// 添加完动态路由之后,需要在进行一次主动跳转
const afterMenuList = await getItem('menusPermission');
const afterMenuList = getItem('menusPermission');
// 处理用户权限,筛选出需要添加的权限
// console.log(store.state.permission.routes);
if (store.state.permission.routes.length === 0) {
const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
filterRoutes.forEach(item => {
router.addRoute(item)
})
// console.log("已添加动态路由");
next({
...to,
replace: true
})
} else {
// console.log('已存在路由');
next()
}
// 利用 addRoute 循环添加
} else {
const isOatuh = getItem('isOatuh')
// 没有token的情况下可以进入白名单
if (whiteList.indexOf(to.path) > -1) {
// console.log("路由2");
next()
} else {
if (isOatuh) {
next('/oatuh_login')
} else {
next('/login')
}
}
}
})

View File

@ -340,6 +340,11 @@ export const publicRoutes = [
name: "login",
component: () => import("@/views/login/index")
},
{
path: "/404",
name: "404",
component: () => import("@/views/error/404")
},
// {
// path: "/homeMy",
// name: "homeMy",

View File

@ -5,8 +5,18 @@ import {
} from '@/router'
function filter(data, menus) {
var newData = data.filter(x => menus?.includes(x.name))
newData.forEach(x => x.children && (x.children = filter(x.children, menus)))
// 增加有效性检查,避免无限递归
if (!Array.isArray(data) || !Array.isArray(menus)) {
return []
}
var newData = data.filter(x => x.name && menus.includes(x.name))
newData.forEach(x => {
if (x.children && Array.isArray(x.children)) {
x.children = filter(x.children, menus)
}
})
console.log("=============================");
return newData
}
export default {
@ -39,28 +49,27 @@ export default {
* 根据权限筛选路由
*/
filterRoutes(context, menus) {
let routes = []
// 路由权限匹配
// menus.forEach(key => {
// // 权限名 与 路由的 name 匹配
// routes.push(...privateRoutes.filter(item => item.name === key))
// })
/**
* 树结构数据条件过滤
* js 指定删除数组(树结构数据)
*/
//测试比对
routes = filter(privateRoutes, menus)
// 最后添加 不匹配路由进入 404
routes.push({
path: '/:catchAll(.*)',
redirect: '/404'
})
context.commit('setRoutes', routes);
context.commit('setRouteReady', 1);
// context.commit('setRouteReady', true);
return routes
try {
let routes = []
// 路由权限匹配
if (menus && Array.isArray(menus)) {
// 测试比对
routes = filter(privateRoutes, menus)
// 最后添加 不匹配路由进入 404
routes.push({
path: '/:catchAll(.*)',
redirect: '/404'
})
}
context.commit('setRoutes', routes);
context.commit('setRouteReady', 1);
return routes
} catch (error) {
console.error('Error filtering routes:', error)
// 出错时至少保留公共路由
context.commit('setRoutes', []);
return []
}
}
}
}

View File

@ -1,4 +1,4 @@
import {login,getUserInfo,getKaptcha,refreshToken,loginOut,Fzlogin } from "@/api/sys";
import { login, getUserInfo, getKaptcha, refreshToken, loginOut, Fzlogin } from "@/api/sys";
import { unifiedLogin } from "@/api/user-manage";
import Base64 from "base-64";
import { setItem, getItem, removeAllItem } from "@/utils/storage";
@ -62,32 +62,34 @@ export default {
*登录请求动作
*/
login(ctx, userInfo) {
const { userName, password, kaptcha } = userInfo;
const { userName, password, kaptcha } = userInfo;
return new Promise((resolve, reject) => {
login({ userName, password: Base64.encode(password), kaptcha }).then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem('isOatuh', 0)
setItem("USERNAME", data.userName);
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: { buttonPermission: ["removeTest", "viewTest"],menus: data.menuCodeSet },
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
login({ userName, password: Base64.encode(password), kaptcha }).then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem('isOatuh', 0)
setItem("USERNAME", data.userName);
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: { buttonPermission: ["removeTest", "viewTest"], menus: data.menuCodeSet },
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
.catch((err) => {
reject(err);
});
@ -102,7 +104,7 @@ export default {
cookie
})
.then((data) => {
console.log(data,'data');
console.log(data, 'data');
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);

View File

@ -43,7 +43,9 @@
import { ref, reactive, watch, onMounted, onBeforeUnmount, nextTick, computed } from "vue";
import { ElMessage } from "element-plus";
import { Loading } from '@element-plus/icons-vue';
import {downFiles} from '@/api/instructCenter'
import { downVideoFiles } from '@/api/instructCenter'
import { qcckPost , qcckGet} from "@/api/qcckApi.js";
// https://lam.clcud.com:1443/bagl/mosty-base/AppUserConfig/image/url/f1c7dd25d0fe45079b49de5ec4637923
// 定义组件属性
const props = defineProps({
modelValue: {
@ -80,8 +82,8 @@ const url=ref('')
const getVideoSrc = () => {
// 确保listQuery.fjid是字符串类型
const fjid = JSON.parse(props.listQuery.fjid)?.map(item => item.id).join(',') || '';
downFiles(fjid).then(res => {
url.value=res.url
downVideoFiles(fjid).then(res => {
url.value=res
});
}
// 监听对话框显示状态
@ -128,7 +130,7 @@ const destroyPlayer = () => {
console.log('播放器已销毁');
}
} catch (error) {
console.error('销毁播放器失败:', error);
// console.error('销毁播放器失败:', error);
}
};
@ -160,7 +162,6 @@ const handleVideoError = (event) => {
console.error('视频加载错误:', event.target.error);
errorMessage.value = `视频加载失败: ${getErrorMessage(event.target.error.code)}`;
loading.value = false;
ElMessage.error('视频加载失败,请检查网络或视频链接');
};
// 视频卡顿处理

View File

@ -162,7 +162,7 @@ const getList = () => {
...pageData.pageConfiger,
...queryFrom.value,
ssbakk:userInfo.pxgs,
ssbakkId:userInfo.pxgsid
ssbakkId:userInfo.pxgsid
}
qcckPost(promes,'/mosty-base/bans/njxx/page').then(res => {
pageData.tableData = res.records || [];

91
src/views/error/404.vue Normal file
View File

@ -0,0 +1,91 @@
<template>
<div class="security-404">
<div class="container">
<div class="error-code">404</div>
<div class="error-message">页面不存在</div>
<div class="error-description">抱歉您访问的页面不存在或已被移除</div>
<div class="error-image">
<img src="?prompt=security%20guard%20standing%20in%20front%20of%20a%20closed%20door%2C%20professional%20uniform%2C%20serious%20expression%2C%20realistic%20style&image_size=square" alt="404" />
</div>
<div class="error-actions">
<el-button type="primary" @click="goHome">返回首页</el-button>
<el-button @click="goBack">返回上一页</el-button>
</div>
</div>
</div>
</template>
<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()
const goHome = () => {
router.push('/')
}
const goBack = () => {
router.back()
}
</script>
<style lang="scss" scoped>
.security-404 {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: #f5f7fa;
.container {
text-align: center;
padding: 40px;
background-color: #fff;
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
max-width: 500px;
width: 100%;
.error-code {
font-size: 80px;
font-weight: bold;
color: #409eff;
margin-bottom: 20px;
}
.error-message {
font-size: 24px;
font-weight: 500;
color: #303133;
margin-bottom: 10px;
}
.error-description {
font-size: 14px;
color: #909399;
margin-bottom: 30px;
}
.error-image {
margin-bottom: 30px;
img {
width: 200px;
height: 200px;
object-fit: cover;
border-radius: 4px;
}
}
.error-actions {
display: flex;
justify-content: center;
gap: 12px;
.el-button {
min-width: 100px;
}
}
}
}
</style>

View File

@ -73,7 +73,7 @@ const hour = ref("00"); //时
const day = ref(0);
const timersfm = ref(null);
const username = localStorage.getItem("USERNAME");
const deptName = ref(JSON.parse(localStorage.getItem("deptId"))?.[0].deptName);
const deptName = ref(JSON.parse(localStorage.getItem("userInfo")).pxgs||"");
const router = useRouter();
onMounted(() => {

View File

@ -86,7 +86,7 @@ const minute = ref("00"); //分
const second = ref("00"); //秒
const hour = ref("00"); //时
const day = ref(0);
const deptName = ref(JSON.parse(localStorage.getItem("deptId"))?.[0].deptName);
const deptName = ref(JSON.parse(localStorage.getItem("userInfo")).pxgs||"");
const modularShow = ref(false);
const timersfm = ref(null);
const qwlevel = ref(null)

View File

@ -124,7 +124,10 @@ const handleLogin = () => {
loginFromRef.value.validate((valid) => {
if (!valid) return false;
loading.value = true;
store.dispatch("user/login", loginForm.value).then((res) => {
console.log("xxxxxxxx");
loading.value = false;
if (res.deptList.length === 1) {
getSfzhByGsid(res.idEntityCard)

View File

@ -25,7 +25,7 @@
<script setup>
import ChooseCompany from './chooseCompany.vue'
import { ref, reactive, getCurrentInstance, watch,onMounted } from 'vue'
import { ref, reactive, getCurrentInstance, watch, onMounted } from 'vue'
import { qcckPost } from "@/api/qcckApi.js";
import FormMessage from '@/components/aboutTable/FormMessage.vue'
import { getItem } from '@/utils/storage'
@ -49,16 +49,23 @@ const companyList = ref([])
const myCompany = () => {
const cjrsfzh = getItem("userInfo")
const params = { cjrsfzh: cjrsfzh.sfzh }
qcckPost(params, "/mosty-base/baxx/baba/list").then(res => {
companyList.value = res.map(item => {
qcckPost({
pageCurrent: 1,
pageSize: 1000
}, "/mosty-base/baxx/dwgl/page").then(res => {
companyList.value = res.records.map(item => {
return {
zdmc: item.dwmc,
dm: item.csdm
zdmc: item.dwmc || item.csmc,
dm: item.csdm || item.id
}
}) || [];
console.log(companyList.value);
});
}
onMounted(() => {
getPxgsidList()
myCompany()
})
const dicDefault = {
@ -82,52 +89,46 @@ const dicDefault = {
}
const pxgsidList = ref([])
const dialogVisible = ref(false)
const formList = reactive([
const formList = ref()
watch(() => companyList.value, (newVal, oldVal) => {
if (newVal) {
formList.value = [
[
// { label: "单位名称", prop: "code", type: "select", options: companyList.value },
{ label: "所属公司", prop: "pxgs", type: "slot" },
{ label: "姓名", prop: "xm", type: "input" },
{ label: "证件号码", prop: "sfzh", type: "input" },
[
{ label: "单位名称", prop: "code", type: "select", options: companyList.value },
{ label: "姓名", prop: "xm", type: "input" },
{ label: "证件号码", prop: "sfzh", type: "input" },
{ label: "联系电话", prop: "lxdh", type: "input" },
],
[
{ label: "居住地址", prop: "jzdz", type: "input" },
{ label: "职业类别", prop: "zydm", type: "select", options: dicDefault.B_BZ_ZYLB },
{ label: "入职时间", prop: "rzsj", type: "date" },
], [
{ label: "所属行业", prop: "sshy", type: "select", options: D_BAXX_SSHY },
{ label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
{ label: "单位类型", prop: "dwlx", type: "select", options: D_BAXX_DWLX },
], [
{ label: "资格证类型", prop: "zgzlx", type: "select", options: dicDefault.B_BZ_BAZGZ },
{ label: "资格证编号", prop: "zgzbh", type: "input" },
{ label: "资格证起始日期", prop: "zgzKssj", type: "date" },
],
[
{ label: "联系电话", prop: "lxdh", type: "input" },
{ label: "居住地址", prop: "jzdz", type: "input" },
], [{ label: "资格证截止日期", prop: "zgzJssj", type: "date" },
{ label: "外派单位", prop: "wpdw", type: "input" },
{ label: "培训公司", prop: "pxgs", type: "select", options: pxgsidList.value }],
[
{ label: "从业人员照片", prop: "tp", type: "upload" },
]
// [
// { label: "离职时间", prop: "lzsj", type: "slot" },
// { label: "文化程度", prop: "whcd", type: "select", options: D_BZ_WHCD },
// { label: "资格证类型", prop: "zgzlx", type: "input" },
// { label: "资格证起始日期", prop: "zgzKssj", type: "date" },
// { label: "资格证截至日期", prop: "zgzJssj", type: "date" },
// { label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
// ],
// [
// { label: "培训公司", prop: "pxgs", type: "slot" },
// ],
// [
// { label: "外派单位", prop: "wpdw", type: "input" },
// ],
// { label: "从业人员照片", prop: "tp", type: "upload", limit: 2 },
// { label: "保安证件", prop: "bazzp", type: "upload", limit: 1 },
])
{ label: "职业类别", prop: "zydm", type: "select", options: dicDefault.B_BZ_ZYLB },
], [
{ label: "入职时间", prop: "rzsj", type: "date" },
{ label: "所属行业", prop: "sshy", type: "select", options: D_BAXX_SSHY },
{ label: "服务行业名称", prop: "hymc", type: "input" },
], [
{ label: "岗位", prop: "gw", type: "select", options: D_BAXX_GWLX },
{ label: "单位类型", prop: "dwlx", type: "select", options: D_BAXX_DWLX },
{ label: "资格证类型", prop: "zgzlx", type: "select", options: dicDefault.B_BZ_BAZGZ },
{ label: "资格证编号", prop: "zgzbh", type: "input" },
], [
{ label: "资格证起始日期", prop: "zgzKssj", type: "date" },
{ label: "资格证截止日期", prop: "zgzJssj", type: "date" },
{ label: "外派单位", prop: "wpdw", type: "input" },
],
[
{ label: "从业人员照片", prop: "tp", type: "upload" },
]
]
}
})
const rules = {
xm: [{ required: true, message: "请输入姓名", trigger: "change" }],
...rule.phoneRule({ validator: true, message: "请输入联系电话", require: true }, "lxdh"), // 是否必填 是否进行校验`
@ -136,7 +137,6 @@ const rules = {
rzsj: [{ required: true, message: "请选择入职时间", trigger: "change" }],
zgzbh: [{ required: true, message: "请输入资格证编号", trigger: "change" }],
gw: [{ required: true, message: "请输入岗位", trigger: "change" }],
wpdw: [{ required: true, message: "请输入外派单位", trigger: "change" }],
zgzlx: [{ required: true, message: "请输入资格证类型", trigger: "change" }],
zgzKssj: [{ required: true, message: "请选择资格证起始日期", trigger: "change" }],
zgzJssj: [{ required: true, message: "请选择资格证截至日期", trigger: "blur" }],
@ -145,12 +145,13 @@ const rules = {
}
const getPxgsidList = () => {
const params = { dwlx: formData.value.dwlx, state: '1' }
qcckPost(params, "/mosty-base/baxx/baba/list").then(res => {
pxgsidList.value = res.map(item => {
const userInfo = getItem("userInfo")
const params = { keyword: userInfo.sfzh, pageCurrent: 1, pageSize: 1000 }
qcckPost(params, "/mosty-base/baxx/dwgl/page").then(res => {
pxgsidList.value = res.records.map(item => {
return {
dm: item.id,
zdmc: item.yyzddjmc
zdmc: item.csmc
}
}) || [];
});
@ -159,11 +160,11 @@ const getPxgsidList = () => {
const formData = ref({})
watch(() => formData.value.dwlx, (newVal, oldVal) => {
if (newVal !== oldVal) {
getPxgsidList()
}
}, { deep: true })
// watch(() => formData.value.dwlx, (newVal, oldVal) => {
// if (newVal !== oldVal) {
// getPxgsidList()
// }
// }, { deep: true })
const selectPxgs = () => {
RefConmay.value.open()
}

View File

@ -42,59 +42,59 @@ const dialogForm = ref(false);
const FormRef = ref(null);
const listQuery = ref({});
const formList = ref()
const rules = ref({
csmc: [{ required: true, message: "请输入单位名称", trigger: "blur" }],
dwmc: [{ required: true, message: "请输入营业执照登记名称", trigger: "blur" }],
xydm: [{ required: true, message: "请输入信用代码", trigger: "blur" }],
// csdm: [{ required: true, message: "请输入场所代码", trigger: "blur" }],
// gds: [{ required: true, message: "请输入股东数", trigger: "blur" }],
zczj: [{ required: true, message: "请输入注册资金(万元)", trigger: "blur" }],
type: [{ required: true, message: "请选择单位类型", trigger: "blur" }],
csLxdh: [{ required: true, message: "请输入场所电话", trigger: "blur" }],
jyzk: [{ required: true, message: "请选择经营状况", trigger: "blur" }],
jyfw: [{ required: true, message: "请选择经营范围", trigger: "blur" }],
dyrs: [{ required: true, message: "请输入党员人数", trigger: "blur" }],
// gxdwdm: [{ required: true, message: "请选择管辖区县", trigger: "blur" }],
gsxz: [{ required: true, message: "请选择公司性质", trigger: "blur" }],
kyrq: [{ required: true, message: "请选择开业日期", trigger: "blur" }],
zcdz: [{ required: true, message: "请输入场所注册地址", trigger: "blur" }],
jydz: [{ required: true, message: "请输入场所经营地址", trigger: "blur" }],
mqcsyw: [{ required: true, message: "请输入目前从事业务", trigger: "blur" }],
// qzqk: [{ required: true, message: "请输入枪支情况", trigger: "blur" }],
// sfyyzz: [{ required: true, message: "请选择是否有武装押运资质", trigger: "blur" }],
// sfpxzz: [{ required: true, message: "请选择是否有培训资质", trigger: "blur" }],
// sfdzz: [{ required: true, message: "请选择是否成立党组织", trigger: "blur" }],
// zfzrr: [{ required: true, message: "请选择是否为负责人", trigger: "blur" }],
fdrXm: [{ required: true, message: "请输入法人姓名", trigger: "blur" }],
fdrSfzh: [{ required: true, message: "请输入法人账号", trigger: "blur" }],
fdrLxdh: [{ required: true, message: "请输入法人手机号", trigger: "blur" }],
fdrJzdz: [{ required: true, message: "请输入法人地址", trigger: "blur" }],
frSfzZm: [{ required: true, message: "请上传法人身份证正面", trigger: "blur" }],
frSfzFm: [{ required: true, message: "请上传法人身份证反面", trigger: "blur" }],
fzrXm: [{ required: true, message: "请输入负责人姓名", trigger: "blur" }],
fzrSfzh: [{ required: true, message: "请输入负责人身份证号", trigger: "blur" }],
fzrLxdh: [{ required: true, message: "请输入负责人联系电话", trigger: "blur" }],
nl: [{ required: true, message: "请输入负责人联系电话", trigger: "blur" }],
xb: [{ required: true, message: "请输入负责人性别", trigger: "blur" }],
baszsbh: [{ required: true, message: "请输入保安证编号", trigger: "blur" }],
fzrJzdz: [{ required: true, message: "请输入负责人地址", trigger: "blur" }],
fzrSfzZm: [{ required: true, message: "请上传负责人身份证正面", trigger: "blur" }],
fzrSfzFm: [{ required: true, message: "请上传负责人身份证反面", trigger: "blur" }],
// sfba: [{ required: true, message: "请选择是否有保安负责人", trigger: "blur" }],
// bags: [{ required: true, message: "请输入保安公司", trigger: "blur" }],
// bafzr: [{ required: true, message: "请输入保安公司负责人姓名", trigger: "blur" }],
// bars: [{ required: true, message: "请输入保安人数", trigger: "blur" }],
// bafzrsfz: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
// balxdh: [{ required: true, message: "请输入保安负责人联系电话", trigger: "blur" }],
// bajzdz: [{ required: true, message: "请输入保安负责人居住地址", trigger: "blur" }],
// csmj: [{ required: true, message: "请输入场所面积(㎡)", trigger: "blur" }],
yyzzzp: [{ required: true, message: "请上传营业执照", trigger: "blur" }],
cszp: [{ required: true, message: "请上传场所照片", trigger: "blur" }],
// badwbabh: [{ required: true, message: "请输入保安单位备案编号", trigger: "blur" }],
// dwbajgmc: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
// dwjyxkhm: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
// dwjyxfzjg: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
})
// const rules = ref({
// csmc: [{ required: true, message: "请输入单位名称", trigger: "blur" }],
// dwmc: [{ required: true, message: "请输入营业执照登记名称", trigger: "blur" }],
// xydm: [{ required: true, message: "请输入信用代码", trigger: "blur" }],
// // csdm: [{ required: true, message: "请输入场所代码", trigger: "blur" }],
// // gds: [{ required: true, message: "请输入股东数", trigger: "blur" }],
// zczj: [{ required: true, message: "请输入注册资金(万元)", trigger: "blur" }],
// type: [{ required: true, message: "请选择单位类型", trigger: "blur" }],
// csLxdh: [{ required: true, message: "请输入场所电话", trigger: "blur" }],
// jyzk: [{ required: true, message: "请选择经营状况", trigger: "blur" }],
// jyfw: [{ required: true, message: "请选择经营范围", trigger: "blur" }],
// dyrs: [{ required: true, message: "请输入党员人数", trigger: "blur" }],
// // gxdwdm: [{ required: true, message: "请选择管辖区县", trigger: "blur" }],
// gsxz: [{ required: true, message: "请选择公司性质", trigger: "blur" }],
// kyrq: [{ required: true, message: "请选择开业日期", trigger: "blur" }],
// zcdz: [{ required: true, message: "请输入场所注册地址", trigger: "blur" }],
// jydz: [{ required: true, message: "请输入场所经营地址", trigger: "blur" }],
// mqcsyw: [{ required: true, message: "请输入目前从事业务", trigger: "blur" }],
// // qzqk: [{ required: true, message: "请输入枪支情况", trigger: "blur" }],
// // sfyyzz: [{ required: true, message: "请选择是否有武装押运资质", trigger: "blur" }],
// // sfpxzz: [{ required: true, message: "请选择是否有培训资质", trigger: "blur" }],
// // sfdzz: [{ required: true, message: "请选择是否成立党组织", trigger: "blur" }],
// // zfzrr: [{ required: true, message: "请选择是否为负责人", trigger: "blur" }],
// fdrXm: [{ required: true, message: "请输入法人姓名", trigger: "blur" }],
// fdrSfzh: [{ required: true, message: "请输入法人账号", trigger: "blur" }],
// fdrLxdh: [{ required: true, message: "请输入法人手机号", trigger: "blur" }],
// fdrJzdz: [{ required: true, message: "请输入法人地址", trigger: "blur" }],
// frSfzZm: [{ required: true, message: "请上传法人身份证正面", trigger: "blur" }],
// frSfzFm: [{ required: true, message: "请上传法人身份证反面", trigger: "blur" }],
// fzrXm: [{ required: true, message: "请输入负责人姓名", trigger: "blur" }],
// fzrSfzh: [{ required: true, message: "请输入负责人身份证号", trigger: "blur" }],
// fzrLxdh: [{ required: true, message: "请输入负责人联系电话", trigger: "blur" }],
// nl: [{ required: true, message: "请输入负责人联系电话", trigger: "blur" }],
// xb: [{ required: true, message: "请输入负责人性别", trigger: "blur" }],
// baszsbh: [{ required: true, message: "请输入保安证编号", trigger: "blur" }],
// fzrJzdz: [{ required: true, message: "请输入负责人地址", trigger: "blur" }],
// fzrSfzZm: [{ required: true, message: "请上传负责人身份证正面", trigger: "blur" }],
// fzrSfzFm: [{ required: true, message: "请上传负责人身份证反面", trigger: "blur" }],
// // sfba: [{ required: true, message: "请选择是否有保安负责人", trigger: "blur" }],
// // bags: [{ required: true, message: "请输入保安公司", trigger: "blur" }],
// // bafzr: [{ required: true, message: "请输入保安公司负责人姓名", trigger: "blur" }],
// // bars: [{ required: true, message: "请输入保安人数", trigger: "blur" }],
// // bafzrsfz: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
// // balxdh: [{ required: true, message: "请输入保安负责人联系电话", trigger: "blur" }],
// // bajzdz: [{ required: true, message: "请输入保安负责人居住地址", trigger: "blur" }],
// // csmj: [{ required: true, message: "请输入场所面积(㎡)", trigger: "blur" }],
// yyzzzp: [{ required: true, message: "请上传营业执照", trigger: "blur" }],
// cszp: [{ required: true, message: "请上传场所照片", trigger: "blur" }],
// // badwbabh: [{ required: true, message: "请输入保安单位备案编号", trigger: "blur" }],
// // dwbajgmc: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
// // dwjyxkhm: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
// // dwjyxfzjg: [{ required: true, message: "请输入保安单位备案名称", trigger: "blur" }],
// })
const title = ref("新增")
const disabled = ref(false)
// 初始化数据