Crud表格的批量修改和替换
This commit is contained in:
418
cdTMP/package-lock.json
generated
418
cdTMP/package-lock.json
generated
@@ -10,9 +10,9 @@
|
||||
"dependencies": {
|
||||
"@arco-design/color": "^0.4.0",
|
||||
"@arco-design/web-vue": "^2.57.0",
|
||||
"@tanstack/vue-query": "^5.76.0",
|
||||
"@tanstack/vue-query": "^5.77.2",
|
||||
"@tinymce/tinymce-vue": "^6.1.0",
|
||||
"@vueuse/core": "^13.2.0",
|
||||
"@vueuse/core": "^13.3.0",
|
||||
"axios": "^1.9.0",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
@@ -30,10 +30,10 @@
|
||||
"tailwind-merge": "^3.3.0",
|
||||
"tinymce": "^7.9.0",
|
||||
"tw-animate-css": "^1.3.0",
|
||||
"vue": "^3.5.14",
|
||||
"vue": "^3.5.15",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-color-kit": "^1.0.6",
|
||||
"vue-data-ui": "^2.6.51",
|
||||
"vue-data-ui": "^2.7.6",
|
||||
"vue-router": "^4.5.1",
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
@@ -41,11 +41,11 @@
|
||||
"@tailwindcss/postcss": "^4.1.7",
|
||||
"@tailwindcss/vite": "^4.1.7",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^22.15.18",
|
||||
"@types/node": "^22.15.23",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/qs": "^6.14.0",
|
||||
"@vitejs/plugin-vue": "^5.2.4",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
||||
"@vitejs/plugin-vue-jsx": "^4.2.0",
|
||||
"@vue/babel-plugin-jsx": "^1.4.0",
|
||||
"browserslist": "^4.24.5",
|
||||
"eslint": "^9.27.0",
|
||||
@@ -54,7 +54,7 @@
|
||||
"less-loader": "^12.3.0",
|
||||
"postcss": "^8.5.3",
|
||||
"prettier": "^3.5.3",
|
||||
"rollup-plugin-visualizer": "^5.14.0",
|
||||
"rollup-plugin-visualizer": "^6.0.1",
|
||||
"tailwindcss": "^4.1.7",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^6.3.5",
|
||||
@@ -118,24 +118,24 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.26.2",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz",
|
||||
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz",
|
||||
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.27.1",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.0.0"
|
||||
"picocolors": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/compat-data": {
|
||||
"version": "7.26.8",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.8.tgz",
|
||||
"integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.27.2.tgz",
|
||||
"integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -143,22 +143,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/core": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.10.tgz",
|
||||
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.27.1.tgz",
|
||||
"integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/generator": "^7.26.10",
|
||||
"@babel/helper-compilation-targets": "^7.26.5",
|
||||
"@babel/helper-module-transforms": "^7.26.0",
|
||||
"@babel/helpers": "^7.26.10",
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/traverse": "^7.26.10",
|
||||
"@babel/types": "^7.26.10",
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.27.1",
|
||||
"@babel/helper-compilation-targets": "^7.27.1",
|
||||
"@babel/helper-module-transforms": "^7.27.1",
|
||||
"@babel/helpers": "^7.27.1",
|
||||
"@babel/parser": "^7.27.1",
|
||||
"@babel/template": "^7.27.1",
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"@babel/types": "^7.27.1",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
@@ -174,14 +174,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/generator": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.10.tgz",
|
||||
"integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.27.1.tgz",
|
||||
"integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/types": "^7.26.10",
|
||||
"@babel/parser": "^7.27.1",
|
||||
"@babel/types": "^7.27.1",
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jsesc": "^3.0.2"
|
||||
@@ -191,27 +191,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-annotate-as-pure": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
|
||||
"integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz",
|
||||
"integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.9"
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-compilation-targets": {
|
||||
"version": "7.26.5",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
|
||||
"integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
|
||||
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.26.5",
|
||||
"@babel/helper-validator-option": "^7.25.9",
|
||||
"@babel/compat-data": "^7.27.2",
|
||||
"@babel/helper-validator-option": "^7.27.1",
|
||||
"browserslist": "^4.24.0",
|
||||
"lru-cache": "^5.1.1",
|
||||
"semver": "^6.3.1"
|
||||
@@ -221,18 +221,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.26.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz",
|
||||
"integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz",
|
||||
"integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.25.9",
|
||||
"@babel/helper-member-expression-to-functions": "^7.25.9",
|
||||
"@babel/helper-optimise-call-expression": "^7.25.9",
|
||||
"@babel/helper-replace-supers": "^7.26.5",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
|
||||
"@babel/traverse": "^7.26.9",
|
||||
"@babel/helper-annotate-as-pure": "^7.27.1",
|
||||
"@babel/helper-member-expression-to-functions": "^7.27.1",
|
||||
"@babel/helper-optimise-call-expression": "^7.27.1",
|
||||
"@babel/helper-replace-supers": "^7.27.1",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"semver": "^6.3.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -243,43 +243,43 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-member-expression-to-functions": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
|
||||
"integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
|
||||
"integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-imports": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
|
||||
"integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
|
||||
"integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-transforms": {
|
||||
"version": "7.26.0",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
|
||||
"integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz",
|
||||
"integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-module-imports": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"@babel/traverse": "^7.25.9"
|
||||
"@babel/helper-module-imports": "^7.27.1",
|
||||
"@babel/helper-validator-identifier": "^7.27.1",
|
||||
"@babel/traverse": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -289,22 +289,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-optimise-call-expression": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
|
||||
"integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
|
||||
"integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.9"
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-plugin-utils": {
|
||||
"version": "7.26.5",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
|
||||
"integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
|
||||
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -312,15 +312,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-replace-supers": {
|
||||
"version": "7.26.5",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
|
||||
"integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
|
||||
"integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-member-expression-to-functions": "^7.25.9",
|
||||
"@babel/helper-optimise-call-expression": "^7.25.9",
|
||||
"@babel/traverse": "^7.26.5"
|
||||
"@babel/helper-member-expression-to-functions": "^7.27.1",
|
||||
"@babel/helper-optimise-call-expression": "^7.27.1",
|
||||
"@babel/traverse": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -330,14 +330,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
|
||||
"integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
|
||||
"integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
"@babel/traverse": "^7.27.1",
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -362,9 +362,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-option": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
|
||||
"integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
|
||||
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -372,14 +372,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.10.tgz",
|
||||
"integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.27.1.tgz",
|
||||
"integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/types": "^7.26.10"
|
||||
"@babel/template": "^7.27.1",
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -417,13 +417,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-syntax-typescript": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
|
||||
"integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
|
||||
"integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.25.9"
|
||||
"@babel/helper-plugin-utils": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -433,17 +433,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-typescript": {
|
||||
"version": "7.26.8",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz",
|
||||
"integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz",
|
||||
"integrity": "sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.25.9",
|
||||
"@babel/helper-create-class-features-plugin": "^7.25.9",
|
||||
"@babel/helper-plugin-utils": "^7.26.5",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
|
||||
"@babel/plugin-syntax-typescript": "^7.25.9"
|
||||
"@babel/helper-annotate-as-pure": "^7.27.1",
|
||||
"@babel/helper-create-class-features-plugin": "^7.27.1",
|
||||
"@babel/helper-plugin-utils": "^7.27.1",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
|
||||
"@babel/plugin-syntax-typescript": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@@ -453,32 +453,32 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.26.9",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.26.9.tgz",
|
||||
"integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
|
||||
"version": "7.27.2",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.2.tgz",
|
||||
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/parser": "^7.26.9",
|
||||
"@babel/types": "^7.26.9"
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/parser": "^7.27.2",
|
||||
"@babel/types": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.26.10.tgz",
|
||||
"integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==",
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.27.1.tgz",
|
||||
"integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/generator": "^7.26.10",
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/types": "^7.26.10",
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.27.1",
|
||||
"@babel/parser": "^7.27.1",
|
||||
"@babel/template": "^7.27.1",
|
||||
"@babel/types": "^7.27.1",
|
||||
"debug": "^4.3.1",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
@@ -1195,6 +1195,13 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/pluginutils": {
|
||||
"version": "1.0.0-beta.9",
|
||||
"resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz",
|
||||
"integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.40.0",
|
||||
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz",
|
||||
@@ -1783,9 +1790,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@tanstack/query-core": {
|
||||
"version": "5.76.0",
|
||||
"resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.76.0.tgz",
|
||||
"integrity": "sha512-FN375hb8ctzfNAlex5gHI6+WDXTNpe0nbxp/d2YJtnP+IBM6OUm7zcaoCW6T63BawGOYZBbKC0iPvr41TteNVg==",
|
||||
"version": "5.77.2",
|
||||
"resolved": "https://registry.npmmirror.com/@tanstack/query-core/-/query-core-5.77.2.tgz",
|
||||
"integrity": "sha512-1lqJwPsR6GX6nZFw06erRt518O19tWU6Q+x0fJUygl4lxHCYF2nhzBPwLKk2NPjYOrpR0K567hxPc5K++xDe9Q==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
@@ -1793,13 +1800,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@tanstack/vue-query": {
|
||||
"version": "5.76.0",
|
||||
"resolved": "https://registry.npmmirror.com/@tanstack/vue-query/-/vue-query-5.76.0.tgz",
|
||||
"integrity": "sha512-Ow1JPfAqjam/hH2WJj15Y+a7FT5LS/So2b4jMAI3lLKUcpIjVRLEOLQXdCYZ/29YbDrL66trwLPXjA9tYrHung==",
|
||||
"version": "5.77.2",
|
||||
"resolved": "https://registry.npmmirror.com/@tanstack/vue-query/-/vue-query-5.77.2.tgz",
|
||||
"integrity": "sha512-Neon9wds87Wo6T5qr+YxOnHYmt618IGnlYE2r6dpWDvhb/mJwlvoBw9TS2KzLfmOQuadBc4nWcpUomuDR4otKg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@tanstack/match-sorter-utils": "^8.19.4",
|
||||
"@tanstack/query-core": "5.76.0",
|
||||
"@tanstack/query-core": "5.77.2",
|
||||
"@vue/devtools-api": "^6.6.3",
|
||||
"vue-demi": "^0.14.10"
|
||||
},
|
||||
@@ -1914,9 +1921,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "22.15.18",
|
||||
"resolved": "https://registry.npmmirror.com/@types/node/-/node-22.15.18.tgz",
|
||||
"integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==",
|
||||
"version": "22.15.23",
|
||||
"resolved": "https://registry.npmmirror.com/@types/node/-/node-22.15.23.tgz",
|
||||
"integrity": "sha512-7Ec1zaFPF4RJ0eXu1YT/xgiebqwqoJz8rYPDi/O2BcZ++Wpt0Kq9cl0eg6NN6bYbPnR67ZLo7St5Q3UK0SnARw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -1958,15 +1965,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vitejs/plugin-vue-jsx": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.2.tgz",
|
||||
"integrity": "sha512-4Rk0GdE0QCdsIkuMmWeg11gmM4x8UmTnZR/LWPm7QJ7+BsK4tq08udrN0isrrWqz5heFy9HLV/7bOLgFS8hUjA==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.2.0.tgz",
|
||||
"integrity": "sha512-DSTrmrdLp+0LDNF77fqrKfx7X0ErRbOcUAgJL/HbSesqQwoUvUQ4uYQqaex+rovqgGcoPqVk+AwUh3v9CuiYIw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.26.7",
|
||||
"@babel/plugin-transform-typescript": "^7.26.7",
|
||||
"@vue/babel-plugin-jsx": "^1.2.5"
|
||||
"@babel/core": "^7.27.1",
|
||||
"@babel/plugin-transform-typescript": "^7.27.1",
|
||||
"@rolldown/pluginutils": "^1.0.0-beta.9",
|
||||
"@vue/babel-plugin-jsx": "^1.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18.0.0 || >=20.0.0"
|
||||
@@ -2030,39 +2038,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.14.tgz",
|
||||
"integrity": "sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.15.tgz",
|
||||
"integrity": "sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.27.2",
|
||||
"@vue/shared": "3.5.14",
|
||||
"@vue/shared": "3.5.15",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.14.tgz",
|
||||
"integrity": "sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.15.tgz",
|
||||
"integrity": "sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.5.14",
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/compiler-core": "3.5.15",
|
||||
"@vue/shared": "3.5.15"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.14.tgz",
|
||||
"integrity": "sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.15.tgz",
|
||||
"integrity": "sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.27.2",
|
||||
"@vue/compiler-core": "3.5.14",
|
||||
"@vue/compiler-dom": "3.5.14",
|
||||
"@vue/compiler-ssr": "3.5.14",
|
||||
"@vue/shared": "3.5.14",
|
||||
"@vue/compiler-core": "3.5.15",
|
||||
"@vue/compiler-dom": "3.5.15",
|
||||
"@vue/compiler-ssr": "3.5.15",
|
||||
"@vue/shared": "3.5.15",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.17",
|
||||
"postcss": "^8.5.3",
|
||||
@@ -2070,13 +2078,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.14.tgz",
|
||||
"integrity": "sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.15.tgz",
|
||||
"integrity": "sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.14",
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/compiler-dom": "3.5.15",
|
||||
"@vue/shared": "3.5.15"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/devtools-api": {
|
||||
@@ -2110,64 +2118,64 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.14.tgz",
|
||||
"integrity": "sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.15.tgz",
|
||||
"integrity": "sha512-GaA5VUm30YWobCwpvcs9nvFKf27EdSLKDo2jA0IXzGS344oNpFNbEQ9z+Pp5ESDaxyS8FcH0vFN/XSe95BZtHQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/shared": "3.5.15"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.14.tgz",
|
||||
"integrity": "sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.15.tgz",
|
||||
"integrity": "sha512-CZAlIOQ93nj0OPpWWOx4+QDLCMzBNY85IQR4Voe6vIID149yF8g9WQaWnw042f/6JfvLttK7dnyWlC1EVCRK8Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.14",
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/reactivity": "3.5.15",
|
||||
"@vue/shared": "3.5.15"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.14.tgz",
|
||||
"integrity": "sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.15.tgz",
|
||||
"integrity": "sha512-wFplHKzKO/v998up2iCW3RN9TNUeDMhdBcNYZgs5LOokHntrB48dyuZHspcahKZczKKh3v6i164gapMPxBTKNw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.14",
|
||||
"@vue/runtime-core": "3.5.14",
|
||||
"@vue/shared": "3.5.14",
|
||||
"@vue/reactivity": "3.5.15",
|
||||
"@vue/runtime-core": "3.5.15",
|
||||
"@vue/shared": "3.5.15",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.14.tgz",
|
||||
"integrity": "sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.15.tgz",
|
||||
"integrity": "sha512-Gehc693kVTYkLt6QSYEjGvqvdK2zZ/gf/D5zkgmvBdeB30dNnVZS8yY7+IlBmHRd1rR/zwaqeu06Ij04ZxBscg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.5.14",
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/compiler-ssr": "3.5.15",
|
||||
"@vue/shared": "3.5.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.14"
|
||||
"vue": "3.5.15"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.14.tgz",
|
||||
"integrity": "sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.15.tgz",
|
||||
"integrity": "sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vueuse/core": {
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-13.2.0.tgz",
|
||||
"integrity": "sha512-n5TZoIAxbWAQ3PqdVPDzLgIRQOujFfMlatdI+f7ditSmoEeNpPBvp7h2zamzikCmrhFIePAwdEQB6ENccHr7Rg==",
|
||||
"version": "13.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-13.3.0.tgz",
|
||||
"integrity": "sha512-uYRz5oEfebHCoRhK4moXFM3NSCd5vu2XMLOq/Riz5FdqZMy2RvBtazdtL3gEcmDyqkztDe9ZP/zymObMIbiYSg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/web-bluetooth": "^0.0.21",
|
||||
"@vueuse/metadata": "13.2.0",
|
||||
"@vueuse/shared": "13.2.0"
|
||||
"@vueuse/metadata": "13.3.0",
|
||||
"@vueuse/shared": "13.3.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
@@ -2177,18 +2185,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/metadata": {
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-13.2.0.tgz",
|
||||
"integrity": "sha512-kPpzuQCU0+D8DZCzK0iPpIcXI+6ufWSgwnjJ6//GNpEn+SHViaCtR+XurzORChSgvpHO9YC8gGM97Y1kB+UabA==",
|
||||
"version": "13.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-13.3.0.tgz",
|
||||
"integrity": "sha512-42IzJIOYCKIb0Yjv1JfaKpx8JlCiTmtCWrPxt7Ja6Wzoq0h79+YVXmBV03N966KEmDEESTbp5R/qO3AB5BDnGw==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/shared": {
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-13.2.0.tgz",
|
||||
"integrity": "sha512-vx9ZPDF5HcU9up3Jgt3G62dMUfZEdk6tLyBAHYAG4F4n73vpaA7J5hdncDI/lS9Vm7GA/FPlbOmh9TrDZROTpg==",
|
||||
"version": "13.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-13.3.0.tgz",
|
||||
"integrity": "sha512-L1QKsF0Eg9tiZSFXTgodYnu0Rsa2P0En2LuLrIs/jgrkyiDuJSsPZK+tx+wU0mMsYHUYEjNsuE41uqqkuR8VhA==",
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/antfu"
|
||||
@@ -5089,13 +5097,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-visualizer": {
|
||||
"version": "5.14.0",
|
||||
"resolved": "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz",
|
||||
"integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-6.0.1.tgz",
|
||||
"integrity": "sha512-NjlGElvLXCSZSAi3gNRZbfX3qlQbQcJ9TW97c5JpqfVwMhttj9YwEdPwcvbKj91RnMX2PWAjonvSEv6UEYtnRQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"open": "^8.4.0",
|
||||
"open": "^8.0.0",
|
||||
"picomatch": "^4.0.2",
|
||||
"source-map": "^0.7.4",
|
||||
"yargs": "^17.5.1"
|
||||
@@ -5776,16 +5784,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.14",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.14.tgz",
|
||||
"integrity": "sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==",
|
||||
"version": "3.5.15",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.15.tgz",
|
||||
"integrity": "sha512-aD9zK4rB43JAMK/5BmS4LdPiEp8Fdh8P1Ve/XNuMF5YRf78fCyPE6FUbQwcaWQ5oZ1R2CD9NKE0FFOVpMR7gEQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.14",
|
||||
"@vue/compiler-sfc": "3.5.14",
|
||||
"@vue/runtime-dom": "3.5.14",
|
||||
"@vue/server-renderer": "3.5.14",
|
||||
"@vue/shared": "3.5.14"
|
||||
"@vue/compiler-dom": "3.5.15",
|
||||
"@vue/compiler-sfc": "3.5.15",
|
||||
"@vue/runtime-dom": "3.5.15",
|
||||
"@vue/server-renderer": "3.5.15",
|
||||
"@vue/shared": "3.5.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
@@ -5814,9 +5822,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vue-data-ui": {
|
||||
"version": "2.6.51",
|
||||
"resolved": "https://registry.npmmirror.com/vue-data-ui/-/vue-data-ui-2.6.51.tgz",
|
||||
"integrity": "sha512-3fJBwQLDJVaUHuZydB4/+v55jVNjBX4Y8XYifsIr6i5Bd5Bh4x0G0TA+CtL333nr7AQPvx55QeiQiwfvV/+j9Q==",
|
||||
"version": "2.7.6",
|
||||
"resolved": "https://registry.npmmirror.com/vue-data-ui/-/vue-data-ui-2.7.6.tgz",
|
||||
"integrity": "sha512-hkH+Avcp0B5aT6Xm6C7Gb0un10pD/PM2HKJhOLJrWlKaVRrbcMBDGWYWXApnmIVeoYRkw/M0QWfoA//lT4Deow==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"vue": ">=3.3.0"
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
"dependencies": {
|
||||
"@arco-design/color": "^0.4.0",
|
||||
"@arco-design/web-vue": "^2.57.0",
|
||||
"@tanstack/vue-query": "^5.76.0",
|
||||
"@tanstack/vue-query": "^5.77.2",
|
||||
"@tinymce/tinymce-vue": "^6.1.0",
|
||||
"@vueuse/core": "^13.2.0",
|
||||
"@vueuse/core": "^13.3.0",
|
||||
"axios": "^1.9.0",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
@@ -33,10 +33,10 @@
|
||||
"tailwind-merge": "^3.3.0",
|
||||
"tinymce": "^7.9.0",
|
||||
"tw-animate-css": "^1.3.0",
|
||||
"vue": "^3.5.14",
|
||||
"vue": "^3.5.15",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
"vue-color-kit": "^1.0.6",
|
||||
"vue-data-ui": "^2.6.51",
|
||||
"vue-data-ui": "^2.7.6",
|
||||
"vue-router": "^4.5.1",
|
||||
"vuedraggable": "^2.24.3"
|
||||
},
|
||||
@@ -44,11 +44,11 @@
|
||||
"@tailwindcss/postcss": "^4.1.7",
|
||||
"@tailwindcss/vite": "^4.1.7",
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/node": "^22.15.18",
|
||||
"@types/node": "^22.15.23",
|
||||
"@types/nprogress": "^0.2.3",
|
||||
"@types/qs": "^6.14.0",
|
||||
"@vitejs/plugin-vue": "^5.2.4",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
||||
"@vitejs/plugin-vue-jsx": "^4.2.0",
|
||||
"@vue/babel-plugin-jsx": "^1.4.0",
|
||||
"browserslist": "^4.24.5",
|
||||
"eslint": "^9.27.0",
|
||||
@@ -57,7 +57,7 @@
|
||||
"less-loader": "^12.3.0",
|
||||
"postcss": "^8.5.3",
|
||||
"prettier": "^3.5.3",
|
||||
"rollup-plugin-visualizer": "^5.14.0",
|
||||
"rollup-plugin-visualizer": "^6.0.1",
|
||||
"tailwindcss": "^4.1.7",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^6.3.5",
|
||||
|
||||
@@ -17,6 +17,7 @@ const storageEvent = function (e: StorageEvent) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("storage", storageEvent)
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener("storage", storageEvent)
|
||||
|
||||
@@ -119,5 +119,16 @@ export default {
|
||||
method: "post",
|
||||
data
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 选择行后,批量修改“优先级”
|
||||
* @returns
|
||||
*/
|
||||
priorityReplace(data = { selectRows: [], priority: "" }) {
|
||||
return request({
|
||||
url: "/project/testDemand/priorityReplace/",
|
||||
method: "post",
|
||||
data
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,11 @@
|
||||
</a-space>
|
||||
</div>
|
||||
</a-form>
|
||||
<a-divider
|
||||
:style="{
|
||||
margin: '8px 0'
|
||||
}"
|
||||
></a-divider>
|
||||
</a-spin>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
|
||||
<script setup>
|
||||
import config from "@/config/crud"
|
||||
import { ref, watch, provide, nextTick, onMounted, onUnmounted } from "vue"
|
||||
import { ref, watch, provide, nextTick, onMounted, onUnmounted, computed } from "vue"
|
||||
import defaultOptions from "./js/defaultOptions"
|
||||
import { loadDict } from "@cps/ma-form/js/networkRequest.js"
|
||||
import ColumnService from "@cps/ma-form/js/columnService"
|
||||
@@ -728,6 +728,11 @@ const setSelecteds = (key) => {
|
||||
selecteds.value = key
|
||||
}
|
||||
|
||||
// 修改源码,获取selected的值
|
||||
const getSelecteds = () => {
|
||||
return selecteds.value
|
||||
}
|
||||
|
||||
const switchDataType = async () => {
|
||||
isRecovery.value = !isRecovery.value
|
||||
currentApi.value =
|
||||
@@ -929,7 +934,8 @@ defineExpose({
|
||||
crudSearchRef,
|
||||
crudImportRef,
|
||||
crudSettingRef,
|
||||
setTableData
|
||||
setTableData,
|
||||
getSelecteds
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-modal v-model:visible="visible" width="1200px" :footer="false" :mask-closable="false" unmount-on-close>
|
||||
<a-modal v-model:visible="visible" width="1200px" :footer="false" :mask-closable="false">
|
||||
<template #title>{{ title }}</template>
|
||||
<!-- crud组件 -->
|
||||
<div class="lg:w-full w-full">
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
<script setup lang="jsx">
|
||||
// 本组件位置:1.在右键轮次问题单 2.用例界面关联问题单
|
||||
import { ref } from "vue"
|
||||
import { nextTick, ref } from "vue"
|
||||
import problemApi from "@/api/project/problem"
|
||||
import problemSingleApi from "@/api/project/singleProblem"
|
||||
import { Message, Notification } from "@arco-design/web-vue"
|
||||
@@ -102,25 +102,27 @@ const handleRelatedChange = async (record) => {
|
||||
}
|
||||
|
||||
// 数据定义
|
||||
const crudRef = ref()
|
||||
const crudRef = ref(null)
|
||||
const visible = ref(false)
|
||||
const caseModalRef = ref()
|
||||
const caseModalRef = ref(null)
|
||||
|
||||
// 定义open事件
|
||||
const open = (row) => {
|
||||
if (props.hasRelated === "roundProblem") {
|
||||
const columnService = crudRef.value.getColumnService()
|
||||
columnService.get("related").setAttr("hide", true)
|
||||
crudRef.value.requestParams = { round_key: row }
|
||||
crudRef.value.requestData() // 这里要变化,请求的API变化
|
||||
visible.value = true
|
||||
}
|
||||
if (props.hasRelated === "relatedProblem") {
|
||||
crudRef.value.requestData() // 手动请求数据
|
||||
visible.value = true
|
||||
// 打开时赋值caseInfo
|
||||
caseInfo.value = row
|
||||
}
|
||||
nextTick(() => {
|
||||
if (props.hasRelated === "roundProblem") {
|
||||
const columnService = crudRef.value.getColumnService()
|
||||
columnService.get("related").setAttr("hide", true)
|
||||
crudRef.value.requestParams = { round_key: row }
|
||||
crudRef.value.requestData() // 这里要变化,请求的API变化
|
||||
visible.value = true
|
||||
}
|
||||
if (props.hasRelated === "relatedProblem") {
|
||||
crudRef.value.requestData() // 手动请求数据
|
||||
visible.value = true
|
||||
// 打开时赋值caseInfo
|
||||
caseInfo.value = row
|
||||
}
|
||||
})
|
||||
}
|
||||
// crudOptions设置
|
||||
const crudOptions = ref({
|
||||
@@ -505,6 +507,7 @@ const columns = ref([
|
||||
// 暴露自己的open方法
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.alert {
|
||||
max-height: 32px;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
:options="crudOptions"
|
||||
:columns="crudColumns"
|
||||
ref="crudRef"
|
||||
id="basic-table-demand-normal"
|
||||
@beforeCancel="handleBeforeCancel"
|
||||
:parent-key="route.query.key"
|
||||
>
|
||||
@@ -14,12 +15,18 @@
|
||||
</template>
|
||||
<!-- 表格前置扩展槽:添加关联按钮 -->
|
||||
<template #tableAfterButtons>
|
||||
<a-button type="outline" status="warning" @click="handleOpenRelationCSX">
|
||||
<template #icon>
|
||||
<icon-tags />
|
||||
</template>
|
||||
关联测试项
|
||||
</a-button>
|
||||
<a-space>
|
||||
<a-button type="outline" status="warning" @click="handleOpenRelationCSX">
|
||||
<template #icon>
|
||||
<icon-tags />
|
||||
</template>
|
||||
关联测试项
|
||||
</a-button>
|
||||
<a-divider direction="vertical" type="double" />
|
||||
<a-button type="outline" @click="handleReplaceClick">批量替换</a-button>
|
||||
<a-divider direction="vertical" type="double" />
|
||||
<a-button type="outline" @click="handleOpenReplacePriority">批量修改优先级</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<!-- 版本字段的插槽 -->
|
||||
<template #inputPrepend-ident> XQ_XX_ </template>
|
||||
@@ -44,6 +51,21 @@
|
||||
v-model:model-value="relatedData"
|
||||
/>
|
||||
</a-modal>
|
||||
<ReplaceModel
|
||||
ref="replaceModal"
|
||||
:api="demandApi.replace"
|
||||
:columns="[
|
||||
{ dataIndex: 'ident', title: '标识' },
|
||||
{ dataIndex: 'name', title: '名称' },
|
||||
{ dataIndex: 'testDesciption', title: '测试描述' },
|
||||
{ dataIndex: 'testContent', title: '测试子项' }
|
||||
]"
|
||||
key="modal-demand-normal"
|
||||
popup-key="demand-normal"
|
||||
@replaceSuccess="replaceSuccessHandle"
|
||||
/>
|
||||
<!-- 批量修改优先级 -->
|
||||
<ReplacePriority @modifySuccess="crudRef.refresh()" ref="replacePriorityRef" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -51,14 +73,36 @@
|
||||
import { ref } from "vue"
|
||||
import commonApi from "@/api/common"
|
||||
import { useRoute } from "vue-router"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
// hooks
|
||||
import useCrudOpMore from "./hooks/useCrudOpMore"
|
||||
import useColumn from "./hooks/useColumns"
|
||||
import useRalateDemand from "./hooks/useRalateDemand"
|
||||
import demandApi from "@/api/project/testDemand"
|
||||
import ReplaceModel from "@/views/project/opeSets/components/DesignTable/ReplaceModal.vue"
|
||||
import ReplacePriority from "@/views/project/opeSets/components/DemandTable/ReplacePriority.vue"
|
||||
// inits
|
||||
const route = useRoute()
|
||||
// refs
|
||||
const crudRef = ref(null)
|
||||
|
||||
// 2025年5月新增
|
||||
const replaceModal = ref()
|
||||
const handleReplaceClick = () => {
|
||||
replaceModal.value?.open(crudRef.value.getSelecteds) // 把获取选中行的函数给传递给替换组件
|
||||
}
|
||||
const replaceSuccessHandle = async (count) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
// 批量更新后刷新表格
|
||||
crudRef.value.refresh()
|
||||
}
|
||||
|
||||
// 2025-05新增-批量修改优先级
|
||||
const replacePriorityRef = ref(null)
|
||||
const handleOpenReplacePriority = () => {
|
||||
replacePriorityRef.value?.open(crudRef.value.getSelecteds)
|
||||
}
|
||||
|
||||
// 根据传参获取key,分别为轮次、设计需求的key
|
||||
const { projectId, crudOptions, handleBeforeCancel } = useCrudOpMore(crudRef)
|
||||
const crudColumns = useColumn(crudRef)
|
||||
@@ -97,4 +141,11 @@ defineOptions({
|
||||
.ol-reset {
|
||||
list-style: auto;
|
||||
}
|
||||
/* 下面让modal的蒙层不交互,让用户可以复制table的文字 */
|
||||
div:deep(.arco-modal-container) {
|
||||
pointer-events: none;
|
||||
}
|
||||
:deep(.arco-modal.arco-modal-draggable) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,17 +2,32 @@
|
||||
<div class="ma-content-block lg:flex justify-between p-4">
|
||||
<div class="lg:w-full w-full lg:ml-4 mt-5 lg:mt-0">
|
||||
<!-- CRUD组件 -->
|
||||
<ma-crud :options="crudOptions" :columns="crudColumns" ref="crudRef" :parent-key="route.query.key">
|
||||
<ma-crud
|
||||
id="basic-table-design-normal"
|
||||
:options="crudOptions"
|
||||
:columns="crudColumns"
|
||||
ref="crudRef"
|
||||
:parent-key="route.query.key"
|
||||
>
|
||||
<template #ident="{ record }">
|
||||
{{ showType(record) }}
|
||||
</template>
|
||||
<template #tableAfterButtons>
|
||||
<a-button status="success" type="outline" @click="handleAddFileInputDemand" v-if="isXQ === 'XQ'">
|
||||
<template #icon>
|
||||
<icon-plus />
|
||||
</template>
|
||||
上传需求规格说明快捷录入
|
||||
</a-button>
|
||||
<a-space>
|
||||
<a-button
|
||||
status="success"
|
||||
type="outline"
|
||||
@click="handleAddFileInputDemand"
|
||||
v-if="isXQ === 'XQ'"
|
||||
>
|
||||
<template #icon>
|
||||
<icon-plus />
|
||||
</template>
|
||||
上传需求规格说明快捷录入
|
||||
</a-button>
|
||||
<a-divider direction="vertical" type="double" />
|
||||
<a-button type="outline" @click="handleReplaceClick">批量替换</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<!-- 字段的前缀后缀的插槽 -->
|
||||
<!-- 版本字段的插槽 -->
|
||||
@@ -20,6 +35,20 @@
|
||||
</ma-crud>
|
||||
</div>
|
||||
<file-input-modal ref="fileInputRef" @enterFinish="crudRef.refresh()"></file-input-modal>
|
||||
<!-- 批量替换组件 -->
|
||||
<ReplaceModel
|
||||
ref="replaceModal"
|
||||
:api="designApi.replace"
|
||||
:columns="[
|
||||
{ dataIndex: 'ident', title: '标识' },
|
||||
{ dataIndex: 'name', title: '名称' },
|
||||
{ dataIndex: 'chapter', title: '章节号' },
|
||||
{ dataIndex: 'description', title: '需求描述' }
|
||||
]"
|
||||
key="modal-design-normal"
|
||||
popup-key="design-normal"
|
||||
@replaceSuccess="replaceSuccessHandle"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -27,13 +56,31 @@
|
||||
import { ref } from "vue"
|
||||
import useCrudOptions from "@/views/project/dut/hooks/useCrudOptions"
|
||||
import useColumns from "./hooks/useColumns"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
import { useRoute } from "vue-router"
|
||||
import dutApi from "@/api/project/dut"
|
||||
import designApi from "@/api/project/designDemand"
|
||||
import commonApi from "@/api/common"
|
||||
import FileInputModal from "./components/FileInputModal/index.vue"
|
||||
import ReplaceModel from "@/views/project/opeSets/components/DesignTable/ReplaceModal.vue"
|
||||
|
||||
const route = useRoute()
|
||||
const crudRef = ref()
|
||||
const projectId = ref(route.query.id)
|
||||
|
||||
// 5月28日新增功能:替换
|
||||
const replaceModal = ref()
|
||||
|
||||
const handleReplaceClick = () => {
|
||||
replaceModal.value?.open(crudRef.value.getSelecteds) // 把获取选中行的函数给传递给替换组件
|
||||
}
|
||||
|
||||
const replaceSuccessHandle = async (count) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
// 批量更新后刷新表格
|
||||
crudRef.value.refresh()
|
||||
}
|
||||
|
||||
// 5月8日修改设计需求标识就按SJ-FT-设计需求标识来
|
||||
const demandTypeDict = ref([])
|
||||
;(function () {
|
||||
@@ -62,6 +109,7 @@ const showType = (record) => {
|
||||
// crud组件
|
||||
const crudOptions = useCrudOptions(crudRef)
|
||||
const crudColumns = useColumns(crudRef)
|
||||
|
||||
// ~~~大功能打开ma-form-modal~~~
|
||||
const fileInputRef = ref(null)
|
||||
const handleAddFileInputDemand = () => {
|
||||
@@ -78,4 +126,12 @@ defineOptions({
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped></style>
|
||||
<style lang="less" scoped>
|
||||
/* 下面让modal的蒙层不交互,让用户可以复制table的文字 */
|
||||
div:deep(.arco-modal-container) {
|
||||
pointer-events: none;
|
||||
}
|
||||
:deep(.arco-modal.arco-modal-draggable) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -30,8 +30,13 @@ import caseApi from "@/api/project/case"
|
||||
const visible = ref(false)
|
||||
const formData = ref({})
|
||||
const exetime = ref("")
|
||||
const getSelectedsFunc = ref<any>(() => [])
|
||||
|
||||
// props
|
||||
const { selectRows } = defineProps<{ selectRows: any }>()
|
||||
const { selectRows } = defineProps<{ selectRows?: any }>()
|
||||
|
||||
// emits
|
||||
const emit = defineEmits(["modifySuccess"])
|
||||
|
||||
// 2.异步执行替换操作,返回boolean-true则关闭弹窗
|
||||
const submitReplace = async () => {
|
||||
@@ -40,13 +45,15 @@ const submitReplace = async () => {
|
||||
Message.error("请选择时间后,进行替换操作")
|
||||
return false
|
||||
}
|
||||
if (selectRows.length && selectRows.length > 0) {
|
||||
const selecteds = selectRows || getSelectedsFunc.value() || []
|
||||
if (selecteds.length && selecteds.length > 0) {
|
||||
// 判断是否选择了行
|
||||
// 请求后台执行
|
||||
await caseApi.exetimeReplace({
|
||||
selectRows: selectRows,
|
||||
selectRows: selecteds,
|
||||
exetime: exetime.value
|
||||
})
|
||||
emit("modifySuccess")
|
||||
Message.success("批量替换成功...")
|
||||
return true
|
||||
}
|
||||
@@ -55,7 +62,8 @@ const submitReplace = async () => {
|
||||
}
|
||||
|
||||
// 其他:打开modal
|
||||
const open = () => {
|
||||
const open = (getFunc: (() => number[]) | undefined) => {
|
||||
if (getFunc) getSelectedsFunc.value = getFunc
|
||||
exetime.value = ""
|
||||
visible.value = true
|
||||
}
|
||||
|
||||
@@ -56,9 +56,14 @@ const formData = ref({})
|
||||
const designPerson = ref("不替换")
|
||||
const testPerson = ref("不替换")
|
||||
const monitorPerson = ref("不替换")
|
||||
const getSelectedsFunc = ref<any>(() => [])
|
||||
|
||||
// props
|
||||
const { selectRows } = defineProps<{ selectRows: any }>()
|
||||
|
||||
// emits
|
||||
const emit = defineEmits(["modifySuccess"])
|
||||
|
||||
// 1.在created时候直接请求后端项目人员信息
|
||||
const persons = ref([])
|
||||
async function fetchPersonByProject() {
|
||||
@@ -74,15 +79,17 @@ const submitReplace = async () => {
|
||||
Message.error("至少选择一项替换")
|
||||
return false
|
||||
}
|
||||
if (selectRows.length && selectRows.length > 0) {
|
||||
const selecteds = selectRows || getSelectedsFunc.value() || []
|
||||
if (selecteds.length && selecteds.length > 0) {
|
||||
// 判断是否选择了行
|
||||
// 请求后台执行
|
||||
await caseApi.personReplace({
|
||||
selectRows: selectRows,
|
||||
selectRows: selecteds,
|
||||
designPerson: designPerson.value,
|
||||
testPerson: testPerson.value,
|
||||
monitorPerson: monitorPerson.value
|
||||
})
|
||||
emit("modifySuccess")
|
||||
Message.success("批量替换成功...")
|
||||
return true
|
||||
}
|
||||
@@ -91,7 +98,8 @@ const submitReplace = async () => {
|
||||
}
|
||||
|
||||
// 其他:打开modal
|
||||
const open = () => {
|
||||
const open = (getFunc: (() => number[]) | undefined) => {
|
||||
if (getFunc) getSelectedsFunc.value = getFunc
|
||||
designPerson.value = "不替换"
|
||||
testPerson.value = "不替换"
|
||||
monitorPerson.value = "不替换"
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
<template #icon><icon-swap /></template>
|
||||
</a-button>
|
||||
<a-divider direction="vertical"></a-divider>
|
||||
<a-button type="primary" @click="handlePerpleModal">批量修改人员</a-button>
|
||||
<a-button type="primary" @click="handleExetimeModal">批量修改时间</a-button>
|
||||
<a-button type="outline" @click="handlePerpleModal">批量修改人员</a-button>
|
||||
<a-button type="outline" @click="handleExetimeModal">批量修改时间</a-button>
|
||||
</a-space>
|
||||
<a-space>
|
||||
<a-space class="lg:mt-0 mt-2">
|
||||
@@ -126,7 +126,7 @@
|
||||
ref="replaceModal"
|
||||
:selectRows="selecteds"
|
||||
:api="caseApi.replace"
|
||||
:columns="columns"
|
||||
:columns="columns.filter((it) => it.dataIndex !== 'ident')"
|
||||
key="modal-case"
|
||||
popup-key="case"
|
||||
@replaceSuccess="replaceSuccessHandle"
|
||||
@@ -152,8 +152,8 @@ import useDelete from "@/views/project/opeSets/components/DesignTable/useDelete"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
import ReplaceModal from "@/views/project/opeSets/components/DesignTable/ReplaceModal.vue"
|
||||
// case专属组件
|
||||
import ReplacePerson from "./ReplacePerson.vue"
|
||||
import ReplaceExetime from "./ReplaceExetime.vue"
|
||||
import ReplacePerson from "@/views/project/opeSets/components/CaseTable/ReplacePerson.vue"
|
||||
import ReplaceExetime from "@/views/project/opeSets/components/CaseTable/ReplaceExetime.vue"
|
||||
|
||||
const columns = ref([
|
||||
{
|
||||
@@ -224,7 +224,7 @@ const { deletesMultipleAction } = useDelete(caseApi.delete, fetchData, selecteds
|
||||
// 7.2.批量替换相关
|
||||
const replaceModal = ref<InstanceType<typeof ReplaceModal> | null>(null)
|
||||
const handleOpenReplaceModal = () => {
|
||||
replaceModal.value?.open()
|
||||
replaceModal.value?.open(undefined)
|
||||
}
|
||||
const replaceSuccessHandle = async (count: number) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
@@ -242,13 +242,13 @@ const searchSubmit = (data: ISearchFormCase) => {
|
||||
// 9.批量修改人员
|
||||
const replacePersonModalRef = ref<InstanceType<typeof ReplacePerson>>()
|
||||
const handlePerpleModal = () => {
|
||||
replacePersonModalRef.value!.open()
|
||||
replacePersonModalRef.value!.open(undefined)
|
||||
}
|
||||
|
||||
// 10.批量修改事件
|
||||
// 10.批量修改时间
|
||||
const replaceExetimeModalRef = ref<InstanceType<typeof ReplacePerson>>()
|
||||
const handleExetimeModal = () => {
|
||||
replaceExetimeModalRef.value!.open()
|
||||
replaceExetimeModalRef.value!.open(undefined)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<div class="replace-priority-container">
|
||||
<modalDom />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx">
|
||||
import { ref } from "vue"
|
||||
import { Modal, Form, FormItem, Select, Option, Message } from "@arco-design/web-vue"
|
||||
import demandApi from "@/api/project/testDemand"
|
||||
// props
|
||||
const { selectedRows = undefined } = defineProps<{
|
||||
selectedRows?: number[]
|
||||
}>()
|
||||
|
||||
// refs
|
||||
const visible = ref(false)
|
||||
const formData = ref({})
|
||||
const priority = ref("")
|
||||
const getSelectedsFunc = ref<() => number[]>(() => [])
|
||||
|
||||
// emits
|
||||
const emit = defineEmits(["modifySuccess"])
|
||||
|
||||
// 异步提交修改
|
||||
const submitReplace = async () => {
|
||||
// 不再非受控验证,手动验证
|
||||
if (priority.value === "") {
|
||||
Message.error("请选择优先级后进行提交")
|
||||
return false
|
||||
}
|
||||
const selecteds = selectedRows || getSelectedsFunc.value() || []
|
||||
if (selecteds.length && selecteds.length > 0) {
|
||||
// 判断是否选择了行
|
||||
// 请求后台执行
|
||||
await demandApi.priorityReplace({
|
||||
selectRows: selecteds as any,
|
||||
priority: priority.value
|
||||
})
|
||||
emit("modifySuccess")
|
||||
Message.success("批量替换成功...")
|
||||
return true
|
||||
}
|
||||
Message.error("请在表格中选择行...")
|
||||
return false
|
||||
}
|
||||
|
||||
// 弹窗主DOM
|
||||
const modalDom = () => {
|
||||
return (
|
||||
<Modal
|
||||
v-model={[visible.value, "visible"]}
|
||||
width="40%"
|
||||
cancel-text="关闭"
|
||||
ok-text="确认修改"
|
||||
unmount-on-close
|
||||
draggable
|
||||
on-before-ok={submitReplace}
|
||||
>
|
||||
{{
|
||||
title: () => "批量修改优先级",
|
||||
default: () => (
|
||||
<div class="content-container">
|
||||
<Form model={formData.value} scroll-to-first-error>
|
||||
<FormItem field="priority" label="优先级">
|
||||
<Select placeholder="请选择要修改成为的优先级" v-model={priority.value}>
|
||||
<Option value="1">高</Option>
|
||||
<Option value="2">中</Option>
|
||||
<Option value="3">低</Option>
|
||||
</Select>
|
||||
</FormItem>
|
||||
</Form>
|
||||
</div>
|
||||
)
|
||||
}}
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
|
||||
// open expose
|
||||
const open = (getFunc: (() => number[]) | undefined) => {
|
||||
if (getFunc) getSelectedsFunc.value = getFunc
|
||||
visible.value = true
|
||||
}
|
||||
defineExpose({ open })
|
||||
|
||||
// component options
|
||||
defineOptions({ name: "ReplacePriority" })
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped></style>
|
||||
@@ -17,6 +17,8 @@
|
||||
批量替换
|
||||
<template #icon><icon-swap /></template>
|
||||
</a-button>
|
||||
<a-divider direction="vertical"></a-divider>
|
||||
<a-button type="outline" @click="handleOpenReplacePriority">批量修改优先级</a-button>
|
||||
</a-space>
|
||||
<a-space>
|
||||
<a-space class="lg:mt-0 mt-2">
|
||||
@@ -136,11 +138,13 @@
|
||||
ref="replaceModal"
|
||||
:selectRows="selecteds"
|
||||
:api="demandApi.replace"
|
||||
:columns="columns"
|
||||
:columns="columns.filter((it) => it.dataIndex !== 'priority' && it.dataIndex !== 'testType')"
|
||||
key="modal-demand"
|
||||
popup-key="demand"
|
||||
@replaceSuccess="replaceSuccessHandle"
|
||||
/>
|
||||
<!-- 批量修改优先级 -->
|
||||
<ReplacePriority ref="replacePriorityRef" @modifySuccess="fetchData()" :selected-rows="selecteds" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -157,6 +161,7 @@ import Trigger from "./Trigger.vue"
|
||||
import Search from "@/views/project/opeSets/components/DesignTable/Search.vue"
|
||||
import useDelete from "@/views/project/opeSets/components/DesignTable/useDelete"
|
||||
import ReplaceModal from "@/views/project/opeSets/components/DesignTable/ReplaceModal.vue"
|
||||
import ReplacePriority from "@/views/project/opeSets/components/DemandTable/ReplacePriority.vue"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
|
||||
// 0.[不同]定义列字段
|
||||
@@ -262,7 +267,7 @@ const { deletesMultipleAction } = useDelete(demandApi.delete, fetchData, selecte
|
||||
// 7.2.批量替换相关
|
||||
const replaceModal = ref<InstanceType<typeof ReplaceModal> | null>(null)
|
||||
const handleOpenReplaceModal = () => {
|
||||
replaceModal.value?.open()
|
||||
replaceModal.value?.open(undefined)
|
||||
}
|
||||
const replaceSuccessHandle = async (count: number) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
@@ -276,6 +281,12 @@ const searchSubmit = (data: ISearchFormDemand) => {
|
||||
searchParams.value = { ...data }
|
||||
fetchData(true)
|
||||
}
|
||||
|
||||
// 9.批量修改优先级-priority
|
||||
const replacePriorityRef = ref<InstanceType<typeof ReplacePriority> | null>(null)
|
||||
const handleOpenReplacePriority = () => {
|
||||
replacePriorityRef.value?.open(undefined)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
@@ -63,14 +63,21 @@ import { useRoute } from "vue-router"
|
||||
// refs
|
||||
const visible = ref(false)
|
||||
const route = useRoute()
|
||||
// 保存获取选择行的函数
|
||||
const selectedGetFunc = ref<() => number[] | undefined>(() => [])
|
||||
|
||||
// ref
|
||||
const formRef = ref<InstanceType<typeof Form>>(null)
|
||||
const formRef = ref<InstanceType<typeof Form>>()
|
||||
|
||||
// props
|
||||
/// 已选择的行数据的id列表
|
||||
const { selectRows, columns, api, popupKey } = defineProps<{
|
||||
selectRows: number[]
|
||||
const {
|
||||
selectRows = undefined,
|
||||
columns,
|
||||
api,
|
||||
popupKey
|
||||
} = defineProps<{
|
||||
selectRows?: number[]
|
||||
columns: any[]
|
||||
api: Function
|
||||
popupKey: string
|
||||
@@ -94,18 +101,27 @@ const submitReplace = async () => {
|
||||
// 验证表单
|
||||
const validate = await formRef.value.validate()
|
||||
if (!validate) {
|
||||
// 判断使用selectedRows还是selectedOpenIn
|
||||
let selecteds = selectRows || selectedGetFunc.value!() || []
|
||||
// 进入这里表示验证通过,手动验证是否选择了行
|
||||
if (selectRows.length < 1) {
|
||||
if (selecteds.length < 1) {
|
||||
// 提示用户需要先选择table的行
|
||||
Message.error("请先在表格中选择行进行替换")
|
||||
Message.error("您还未选择行...")
|
||||
return false
|
||||
}
|
||||
// 都验证后提交给后端操作
|
||||
try {
|
||||
// 首先该组件两个地方使用,需要处理key的问题
|
||||
const round_key = {
|
||||
key: route.query.key as string
|
||||
}
|
||||
if (round_key.key && round_key.key.split("-").length > 1) {
|
||||
round_key.key = round_key.key.split("-")[0]
|
||||
}
|
||||
const res = await api({
|
||||
project_id: route.query.id,
|
||||
round_key: route.query.key,
|
||||
selectRows,
|
||||
round_key: round_key.key,
|
||||
selectRows: selecteds,
|
||||
...formData.value
|
||||
})
|
||||
// 批量修改成功放出信号给父组件更新表格
|
||||
@@ -119,7 +135,11 @@ const submitReplace = async () => {
|
||||
}
|
||||
|
||||
// expose functions
|
||||
const open = () => {
|
||||
const open = (selectedIdsGetFunc: (() => number[]) | undefined) => {
|
||||
// 保存获取用户选择行的函数, 可能是undefined
|
||||
if (selectedIdsGetFunc) {
|
||||
selectedGetFunc.value = selectedIdsGetFunc
|
||||
}
|
||||
// 每次打开初始化表单数据
|
||||
formData.value = {
|
||||
...initialFormData
|
||||
|
||||
@@ -214,7 +214,7 @@ const { deletesMultipleAction } = useDelete(designApi.delete, fetchData, selecte
|
||||
// 7.2.批量替换相关
|
||||
const replaceModal = ref<InstanceType<typeof ReplaceModal> | null>(null)
|
||||
const handleOpenReplaceModal = () => {
|
||||
replaceModal.value?.open()
|
||||
replaceModal.value?.open(undefined)
|
||||
}
|
||||
const replaceSuccessHandle = async (count: number) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
|
||||
@@ -6,15 +6,50 @@
|
||||
:options="crudOptions"
|
||||
:columns="crudColumns"
|
||||
ref="crudRef"
|
||||
id="basic-table-case-normal"
|
||||
@beforeCancel="handleBeforeCancel"
|
||||
:parent-key="route.query.key"
|
||||
>
|
||||
<template #ident="{ record }">
|
||||
{{ showType(record) }}
|
||||
</template>
|
||||
<!-- 表格前置扩展槽:添加关联按钮 -->
|
||||
<template #tableAfterButtons>
|
||||
<a-space>
|
||||
<a-divider direction="vertical" type="double" />
|
||||
<a-button type="outline" @click="handleReplaceClick">批量替换</a-button>
|
||||
<a-divider direction="vertical" type="double" />
|
||||
<a-button type="outline" @click="handlePerpleModal">批量修改人员</a-button>
|
||||
<a-button type="outline" @click="handleExetimeModal">批量修改时间</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</ma-crud>
|
||||
</div>
|
||||
<problem-form ref="problemFormRef" :title="title"></problem-form>
|
||||
<ReplaceModel
|
||||
ref="replaceModal"
|
||||
:api="caseApi.replace"
|
||||
:columns="[
|
||||
{ dataIndex: 'name', title: '名称' },
|
||||
{ dataIndex: 'summarize', title: '用例综述' },
|
||||
{ dataIndex: 'testStep', title: '测试步骤' }
|
||||
]"
|
||||
key="modal-case-normal"
|
||||
popup-key="case-normal"
|
||||
@replaceSuccess="replaceSuccessHandle"
|
||||
/>
|
||||
<!-- 批量替换人员组件 -->
|
||||
<replace-person
|
||||
:selectRows="undefined"
|
||||
@modify-success="crudRef.refresh()"
|
||||
ref="replacePersonModalRef"
|
||||
/>
|
||||
<!-- 批量替换时间 -->
|
||||
<replace-exetime
|
||||
:selectRows="undefined"
|
||||
@modify-success="crudRef.refresh()"
|
||||
ref="replaceExetimeModalRef"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -23,11 +58,43 @@ import { ref } from "vue"
|
||||
import ProblemForm from "@/views/project/case/components/ProblemForm.vue"
|
||||
import useCrudOpMore from "./hooks/useCrudOpMore"
|
||||
import useColumn from "./hooks/useColumn"
|
||||
import { Message } from "@arco-design/web-vue"
|
||||
import caseApi from "@/api/project/case"
|
||||
import { useRoute } from "vue-router"
|
||||
import ReplaceModel from "@/views/project/opeSets/components/DesignTable/ReplaceModal.vue"
|
||||
// 批量修改人员
|
||||
import ReplacePerson from "@/views/project/opeSets/components/CaseTable/ReplacePerson.vue"
|
||||
// 批量修改时间
|
||||
import ReplaceExetime from "@/views/project/opeSets/components/CaseTable/ReplaceExetime.vue"
|
||||
|
||||
const route = useRoute()
|
||||
const problemFormRef = ref(null)
|
||||
const title = ref("问题单表单")
|
||||
const crudRef = ref()
|
||||
|
||||
// 2025年5月新增
|
||||
const replaceModal = ref()
|
||||
const handleReplaceClick = () => {
|
||||
replaceModal.value?.open(crudRef.value.getSelecteds) // 把获取选中行的函数给传递给替换组件
|
||||
}
|
||||
const replaceSuccessHandle = async (count) => {
|
||||
Message.success(`批量更新成功,尝试更新行数:${count}`)
|
||||
// 批量更新后刷新表格
|
||||
crudRef.value.refresh()
|
||||
}
|
||||
|
||||
// 批量修改人员
|
||||
const replacePersonModalRef = ref()
|
||||
const handlePerpleModal = () => {
|
||||
replacePersonModalRef.value.open(crudRef.value.getSelecteds)
|
||||
}
|
||||
|
||||
// 批量修改时间
|
||||
const replaceExetimeModalRef = ref()
|
||||
const handleExetimeModal = () => {
|
||||
replaceExetimeModalRef.value.open(crudRef.value.getSelecteds)
|
||||
}
|
||||
|
||||
// 标识重新定义
|
||||
const showType = (record) => {
|
||||
let key_string = parseInt(record.key.substring(record.key.lastIndexOf("-") + 1)) + 1
|
||||
@@ -48,4 +115,12 @@ defineOptions({
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped></style>
|
||||
<style lang="less" scoped>
|
||||
/* 下面让modal的蒙层不交互,让用户可以复制table的文字 */
|
||||
div:deep(.arco-modal-container) {
|
||||
pointer-events: none;
|
||||
}
|
||||
:deep(.arco-modal.arco-modal-draggable) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -37,7 +37,7 @@ const useCrudInit = function () {
|
||||
{
|
||||
formType: "grid",
|
||||
cols: [
|
||||
{ span: 4, formList: [{ dataIndex: "ident" }] },
|
||||
{ span: 8, formList: [{ dataIndex: "ident" }] },
|
||||
{ span: 8, formList: [{ dataIndex: "name" }] }
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user