This commit is contained in:
2024-08-29 18:20:37 +08:00
parent 4b73f5b68c
commit fc1f68b69a
15 changed files with 995 additions and 859 deletions

302
cdTMP/package-lock.json generated
View File

@@ -9,33 +9,33 @@
"version": "0.0.2", "version": "0.0.2",
"dependencies": { "dependencies": {
"@arco-design/color": "^0.4.0", "@arco-design/color": "^0.4.0",
"@arco-design/web-vue": "^2.56.0", "@arco-design/web-vue": "^2.56.1",
"@tinymce/tinymce-vue": "^6.0.1", "@tinymce/tinymce-vue": "^6.0.1",
"@vueuse/core": "^10.11.1", "@vueuse/core": "^11.0.3",
"axios": "^1.7.4", "axios": "^1.7.5",
"dayjs": "^1.11.12", "dayjs": "^1.11.13",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"file2md5": "^1.3.0", "file2md5": "^1.3.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mammoth": "^1.8.0", "mammoth": "^1.8.0",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"monaco-editor": "^0.33.0", "monaco-editor": "^0.51.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.2.2", "pinia": "^2.2.2",
"pinyin-match": "^1.2.5", "pinyin-match": "^1.2.5",
"postcss-import": "^16.1.0", "postcss-import": "^16.1.0",
"qs": "^6.13.0", "qs": "^6.13.0",
"tinymce": "^6.8.4", "tinymce": "^7.3.0",
"vue": "^3.4.38", "vue": "^3.4.38",
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-color-kit": "^1.0.6", "vue-color-kit": "^1.0.6",
"vue-echarts": "^6.7.3", "vue-echarts": "^7.0.3",
"vue-router": "^4.4.3", "vue-router": "^4.4.3",
"vuedraggable": "^2.24.3" "vuedraggable": "^2.24.3"
}, },
"devDependencies": { "devDependencies": {
"@types/lodash": "^4.14.195", "@types/lodash": "^4.14.195",
"@types/node": "^22.3.0", "@types/node": "^22.5.1",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.15", "@types/qs": "^6.9.15",
"@vitejs/plugin-vue": "^5.1.2", "@vitejs/plugin-vue": "^5.1.2",
@@ -43,8 +43,8 @@
"@vue/babel-plugin-jsx": "^1.1.1", "@vue/babel-plugin-jsx": "^1.1.1",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"browserslist": "^4.23.0", "browserslist": "^4.23.0",
"caniuse-lite": "^1.0.30001651", "caniuse-lite": "^1.0.30001653",
"eslint": "^9.9.0", "eslint": "^9.9.1",
"eslint-plugin-vue": "^9.27.0", "eslint-plugin-vue": "^9.27.0",
"less": "^4.2.0", "less": "^4.2.0",
"less-loader": "^12.2.0", "less-loader": "^12.2.0",
@@ -52,7 +52,7 @@
"prettier": "^3.3.3", "prettier": "^3.3.3",
"tailwindcss": "^3.4.10", "tailwindcss": "^3.4.10",
"typescript": "^5.5.3", "typescript": "^5.5.3",
"vite": "^5.4.1" "vite": "^5.4.2"
} }
}, },
"node_modules/@alloc/quick-lru": { "node_modules/@alloc/quick-lru": {
@@ -86,9 +86,9 @@
} }
}, },
"node_modules/@arco-design/web-vue": { "node_modules/@arco-design/web-vue": {
"version": "2.56.0", "version": "2.56.1",
"resolved": "https://registry.npmmirror.com/@arco-design/web-vue/-/web-vue-2.56.0.tgz", "resolved": "https://registry.npmmirror.com/@arco-design/web-vue/-/web-vue-2.56.1.tgz",
"integrity": "sha512-LsrTE1vL54a/DVQCZ4c2F5LDA1r2mcWF2AHrM+fKEi5hzE63/awZVIOQ6P8yGaYRAP9eqUNj60uNI1Jz0UvGlA==", "integrity": "sha512-RHIG7DXpCJrpxCKXdxZMzsGvMPCUott57soXW3aHJfxOcf+I2rdX8/UTAt2ka5MyRLUZ4B90B1LKyUgLChGklg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@arco-design/color": "^0.4.0", "@arco-design/color": "^0.4.0",
@@ -909,9 +909,9 @@
} }
}, },
"node_modules/@eslint/config-array": { "node_modules/@eslint/config-array": {
"version": "0.17.1", "version": "0.18.0",
"resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.17.1.tgz", "resolved": "https://registry.npmmirror.com/@eslint/config-array/-/config-array-0.18.0.tgz",
"integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
@@ -992,9 +992,9 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "9.9.0", "version": "9.9.1",
"resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.9.0.tgz", "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-9.9.1.tgz",
"integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@@ -1129,208 +1129,224 @@
} }
}, },
"node_modules/@rollup/rollup-android-arm-eabi": { "node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz",
"integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"android" "android"
] ]
}, },
"node_modules/@rollup/rollup-android-arm64": { "node_modules/@rollup/rollup-android-arm64": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz",
"integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"android" "android"
] ]
}, },
"node_modules/@rollup/rollup-darwin-arm64": { "node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz",
"integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
] ]
}, },
"node_modules/@rollup/rollup-darwin-x64": { "node_modules/@rollup/rollup-darwin-x64": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz",
"integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-gnueabihf": { "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz",
"integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-arm-musleabihf": { "node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz",
"integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-gnu": { "node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz",
"integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-arm64-musl": { "node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz",
"integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": { "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz",
"integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-riscv64-gnu": { "node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz",
"integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-s390x-gnu": { "node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz",
"integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-gnu": { "node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz",
"integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-linux-x64-musl": { "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz",
"integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
] ]
}, },
"node_modules/@rollup/rollup-win32-arm64-msvc": { "node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz",
"integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
] ]
}, },
"node_modules/@rollup/rollup-win32-ia32-msvc": { "node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz",
"integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
] ]
}, },
"node_modules/@rollup/rollup-win32-x64-msvc": { "node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz",
"integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
"dev": true, "dev": true,
"license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
@@ -1394,13 +1410,13 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "22.3.0", "version": "22.5.1",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-22.3.0.tgz", "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.5.1.tgz",
"integrity": "sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==", "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~6.18.2" "undici-types": "~6.19.2"
} }
}, },
"node_modules/@types/nprogress": { "node_modules/@types/nprogress": {
@@ -1635,15 +1651,15 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@vueuse/core": { "node_modules/@vueuse/core": {
"version": "10.11.1", "version": "11.0.3",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-11.0.3.tgz",
"integrity": "sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==", "integrity": "sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/web-bluetooth": "^0.0.20", "@types/web-bluetooth": "^0.0.20",
"@vueuse/metadata": "10.11.1", "@vueuse/metadata": "11.0.3",
"@vueuse/shared": "10.11.1", "@vueuse/shared": "11.0.3",
"vue-demi": ">=0.14.8" "vue-demi": ">=0.14.10"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
@@ -1676,21 +1692,21 @@
} }
}, },
"node_modules/@vueuse/metadata": { "node_modules/@vueuse/metadata": {
"version": "10.11.1", "version": "11.0.3",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-11.0.3.tgz",
"integrity": "sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==", "integrity": "sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==",
"license": "MIT", "license": "MIT",
"funding": { "funding": {
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
} }
}, },
"node_modules/@vueuse/shared": { "node_modules/@vueuse/shared": {
"version": "10.11.1", "version": "11.0.3",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-11.0.3.tgz",
"integrity": "sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==", "integrity": "sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"vue-demi": ">=0.14.8" "vue-demi": ">=0.14.10"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
@@ -2076,9 +2092,9 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.7.4", "version": "1.7.5",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.4.tgz", "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.5.tgz",
"integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.6", "follow-redirects": "^1.15.6",
@@ -2239,9 +2255,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001651", "version": "1.0.30001653",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz",
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -2443,9 +2459,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.12", "version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.12.tgz", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==", "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/debug": { "node_modules/debug": {
@@ -2671,17 +2687,17 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "9.9.0", "version": "9.9.1",
"resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.9.0.tgz", "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.9.1.tgz",
"integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.11.0", "@eslint-community/regexpp": "^4.11.0",
"@eslint/config-array": "^0.17.1", "@eslint/config-array": "^0.18.0",
"@eslint/eslintrc": "^3.1.0", "@eslint/eslintrc": "^3.1.0",
"@eslint/js": "9.9.0", "@eslint/js": "9.9.1",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.3.0", "@humanwhocodes/retry": "^0.3.0",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
@@ -3972,9 +3988,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/monaco-editor": { "node_modules/monaco-editor": {
"version": "0.33.0", "version": "0.51.0",
"resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.33.0.tgz", "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.51.0.tgz",
"integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==", "integrity": "sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/ms": { "node_modules/ms": {
@@ -4580,11 +4596,6 @@
"node": ">=8.10.0" "node": ">=8.10.0"
} }
}, },
"node_modules/resize-detector": {
"version": "0.3.0",
"resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
"integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
},
"node_modules/resize-observer-polyfill": { "node_modules/resize-observer-polyfill": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
@@ -4624,10 +4635,11 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "4.18.0", "version": "4.21.0",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.18.0.tgz", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.21.0.tgz",
"integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@types/estree": "1.0.5" "@types/estree": "1.0.5"
}, },
@@ -4639,22 +4651,22 @@
"npm": ">=8.0.0" "npm": ">=8.0.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.18.0", "@rollup/rollup-android-arm-eabi": "4.21.0",
"@rollup/rollup-android-arm64": "4.18.0", "@rollup/rollup-android-arm64": "4.21.0",
"@rollup/rollup-darwin-arm64": "4.18.0", "@rollup/rollup-darwin-arm64": "4.21.0",
"@rollup/rollup-darwin-x64": "4.18.0", "@rollup/rollup-darwin-x64": "4.21.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.18.0", "@rollup/rollup-linux-arm-gnueabihf": "4.21.0",
"@rollup/rollup-linux-arm-musleabihf": "4.18.0", "@rollup/rollup-linux-arm-musleabihf": "4.21.0",
"@rollup/rollup-linux-arm64-gnu": "4.18.0", "@rollup/rollup-linux-arm64-gnu": "4.21.0",
"@rollup/rollup-linux-arm64-musl": "4.18.0", "@rollup/rollup-linux-arm64-musl": "4.21.0",
"@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0",
"@rollup/rollup-linux-riscv64-gnu": "4.18.0", "@rollup/rollup-linux-riscv64-gnu": "4.21.0",
"@rollup/rollup-linux-s390x-gnu": "4.18.0", "@rollup/rollup-linux-s390x-gnu": "4.21.0",
"@rollup/rollup-linux-x64-gnu": "4.18.0", "@rollup/rollup-linux-x64-gnu": "4.21.0",
"@rollup/rollup-linux-x64-musl": "4.18.0", "@rollup/rollup-linux-x64-musl": "4.21.0",
"@rollup/rollup-win32-arm64-msvc": "4.18.0", "@rollup/rollup-win32-arm64-msvc": "4.21.0",
"@rollup/rollup-win32-ia32-msvc": "4.18.0", "@rollup/rollup-win32-ia32-msvc": "4.21.0",
"@rollup/rollup-win32-x64-msvc": "4.18.0", "@rollup/rollup-win32-x64-msvc": "4.21.0",
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
@@ -5112,10 +5124,10 @@
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
}, },
"node_modules/tinymce": { "node_modules/tinymce": {
"version": "6.8.4", "version": "7.3.0",
"resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-6.8.4.tgz", "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-7.3.0.tgz",
"integrity": "sha512-okoJyxuPv1gzASxQDNgQbnUXOdAIyoOSXcXcZZu7tiW0PSKEdf3SdASxPBupRj+64/E3elHwVRnzSdo82Emqbg==", "integrity": "sha512-Ls4PgYlpk73XAxBSBqbVmSl8Mb3DuNfgF01GZ0lY6/MOEVRl3IL+VxC1Oe6165e8WqbqVsxO3Qj/PmoYNvQKGQ==",
"license": "MIT" "license": "GPL-2.0-or-later"
}, },
"node_modules/to-fast-properties": { "node_modules/to-fast-properties": {
"version": "2.0.0", "version": "2.0.0",
@@ -5190,9 +5202,9 @@
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "6.18.2", "version": "6.19.8",
"resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.18.2.tgz", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.19.8.tgz",
"integrity": "sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
@@ -5242,15 +5254,15 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "5.4.1", "version": "5.4.2",
"resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.1.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.2.tgz",
"integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==", "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "^0.21.3", "esbuild": "^0.21.3",
"postcss": "^8.4.41", "postcss": "^8.4.41",
"rollup": "^4.13.0" "rollup": "^4.20.0"
}, },
"bin": { "bin": {
"vite": "bin/vite.js" "vite": "bin/vite.js"
@@ -5340,25 +5352,19 @@
} }
}, },
"node_modules/vue-echarts": { "node_modules/vue-echarts": {
"version": "6.7.3", "version": "7.0.3",
"resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz", "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-7.0.3.tgz",
"integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==", "integrity": "sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==",
"hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"resize-detector": "^0.3.0",
"vue-demi": "^0.13.11" "vue-demi": "^0.13.11"
}, },
"peerDependencies": { "peerDependencies": {
"@vue/composition-api": "^1.0.5",
"@vue/runtime-core": "^3.0.0", "@vue/runtime-core": "^3.0.0",
"echarts": "^5.4.1", "echarts": "^5.5.1",
"vue": "^2.6.12 || ^3.1.1" "vue": "^2.7.0 || ^3.1.1"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"@vue/runtime-core": { "@vue/runtime-core": {
"optional": true "optional": true
} }

View File

@@ -1,7 +1,7 @@
{ {
"name": "cdtmp", "name": "cdtmp",
"private": true, "private": true,
"version": "0.0.2", "version": "0.0.3",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
@@ -12,33 +12,33 @@
}, },
"dependencies": { "dependencies": {
"@arco-design/color": "^0.4.0", "@arco-design/color": "^0.4.0",
"@arco-design/web-vue": "^2.56.0", "@arco-design/web-vue": "^2.56.1",
"@tinymce/tinymce-vue": "^6.0.1", "@tinymce/tinymce-vue": "^6.0.1",
"@vueuse/core": "^10.11.1", "@vueuse/core": "^11.0.3",
"axios": "^1.7.4", "axios": "^1.7.5",
"dayjs": "^1.11.12", "dayjs": "^1.11.13",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"file2md5": "^1.3.0", "file2md5": "^1.3.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mammoth": "^1.8.0", "mammoth": "^1.8.0",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"monaco-editor": "^0.33.0", "monaco-editor": "^0.51.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.2.2", "pinia": "^2.2.2",
"pinyin-match": "^1.2.5", "pinyin-match": "^1.2.5",
"postcss-import": "^16.1.0", "postcss-import": "^16.1.0",
"qs": "^6.13.0", "qs": "^6.13.0",
"tinymce": "^6.8.4", "tinymce": "^7.3.0",
"vue": "^3.4.38", "vue": "^3.4.38",
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-color-kit": "^1.0.6", "vue-color-kit": "^1.0.6",
"vue-echarts": "^6.7.3", "vue-echarts": "^7.0.3",
"vue-router": "^4.4.3", "vue-router": "^4.4.3",
"vuedraggable": "^2.24.3" "vuedraggable": "^2.24.3"
}, },
"devDependencies": { "devDependencies": {
"@types/lodash": "^4.14.195", "@types/lodash": "^4.14.195",
"@types/node": "^22.3.0", "@types/node": "^22.5.1",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/qs": "^6.9.15", "@types/qs": "^6.9.15",
"@vitejs/plugin-vue": "^5.1.2", "@vitejs/plugin-vue": "^5.1.2",
@@ -46,8 +46,8 @@
"@vue/babel-plugin-jsx": "^1.1.1", "@vue/babel-plugin-jsx": "^1.1.1",
"autoprefixer": "^10.4.20", "autoprefixer": "^10.4.20",
"browserslist": "^4.23.0", "browserslist": "^4.23.0",
"caniuse-lite": "^1.0.30001651", "caniuse-lite": "^1.0.30001653",
"eslint": "^9.9.0", "eslint": "^9.9.1",
"eslint-plugin-vue": "^9.27.0", "eslint-plugin-vue": "^9.27.0",
"less": "^4.2.0", "less": "^4.2.0",
"less-loader": "^12.2.0", "less-loader": "^12.2.0",
@@ -55,6 +55,6 @@
"prettier": "^3.3.3", "prettier": "^3.3.3",
"tailwindcss": "^3.4.10", "tailwindcss": "^3.4.10",
"typescript": "^5.5.3", "typescript": "^5.5.3",
"vite": "^5.4.1" "vite": "^5.4.2"
} }
} }

View File

@@ -131,6 +131,7 @@ function removeCommentNodes(node) {
const { theme } = storeToRefs(appStore) const { theme } = storeToRefs(appStore)
const initConfig = reactive({ const initConfig = reactive({
api_key: "ae9bz8l50ymnme8mtw1vp6prbj8n6ow59evb1nthdivzlk8s",
menubar: false, // 菜单栏显隐 menubar: false, // 菜单栏显隐
language_url: "/tinymce/i18n/zh_CN.js", language_url: "/tinymce/i18n/zh_CN.js",
language: "zh_CN", language: "zh_CN",

View File

@@ -1 +1,4 @@
/**
* 该文件定义默认的columns的配置
*/
export default {} export default {}

View File

@@ -1,3 +1,6 @@
/**
* 该文件定义默认响应data数据的结构
*/
export default { export default {
// 响应返回解析 // 响应返回解析
parseResponseData: (res) => { parseResponseData: (res) => {

View File

@@ -5,6 +5,10 @@ import { appRoutes } from "./routes"
import { REDIRECT_MAIN, NOT_FOUND_ROUTE, PROJECT_LAYOUT } from "./routes/base" import { REDIRECT_MAIN, NOT_FOUND_ROUTE, PROJECT_LAYOUT } from "./routes/base"
import createRouteGuard from "@/router/guard/index" import createRouteGuard from "@/router/guard/index"
// 定义工作区路由名称,为了不写死
export const WORK_AREA_NAME = "project"
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHistory(),
routes: [ routes: [
@@ -31,7 +35,8 @@ const router = createRouter({
roles: ["*"], roles: ["*"],
order: 0, order: 0,
locale: "项目工作区", locale: "项目工作区",
icon: "icon-home" icon: "icon-home",
hideInMenu: true
}, },
children: [ children: [
{ {

View File

@@ -1,4 +1,5 @@
import { DEFAULT_ROUTE, DEFAULT_ROUTE_NAME, REDIRECT_ROUTE_NAME } from "@/router/constants" import { DEFAULT_ROUTE, DEFAULT_ROUTE_NAME, REDIRECT_ROUTE_NAME } from "@/router/constants"
import { WORK_AREA_NAME } from "@/router"
import { defineStore } from "pinia" import { defineStore } from "pinia"
import { isString } from "@/utils/is" import { isString } from "@/utils/is"
const formatTag = (route) => { const formatTag = (route) => {
@@ -11,7 +12,8 @@ const formatTag = (route) => {
ignoreCache: meta.ignoreCache ignoreCache: meta.ignoreCache
} }
} }
const BAN_LIST = [REDIRECT_ROUTE_NAME] // 去除的页面名称,这里去除项目工作区页面
const BAN_LIST = [REDIRECT_ROUTE_NAME, WORK_AREA_NAME]
const useTabBarStore = defineStore("tabBar", { const useTabBarStore = defineStore("tabBar", {
state: () => ({ state: () => ({
// 修改:添加"用户中心到缓存" // 修改:添加"用户中心到缓存"

View File

@@ -7,3 +7,13 @@ export function validateBlank(value: string | undefined, callback: (error?: stri
callback("注意标识不能为空格") callback("注意标识不能为空格")
} }
} }
/**
* window文件名称检查器不允许有字符/\:*?"<>|
*/
export function validateWindowFileNameInput(value: string | undefined, callback: (error?: string) => void): void {
const val = value?.trim()
const reg = /[\\\/\:\*\?\"\<\>\|]/
const regPatchRes = val?.search(reg)
regPatchRes === -1 ? undefined : callback('注意标识名称不能有 -> /\\:*?"<>|')
}

View File

@@ -23,7 +23,7 @@
</a> </a>
</a-card> </a-card>
<div class="mt-2">管理平台版本</div> <div class="mt-2">管理平台版本</div>
<a-tag class="mt-2" color="#0fc6c2">TestManagePlant V0.0.2</a-tag> <a-tag class="mt-2 w-fit" color="#0fc6c2">TestPlant V0.0.3</a-tag>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -0,0 +1,486 @@
import { ref } from "vue"
import { validateBlank, validateWindowFileNameInput } from "@/utils/extensions/arcoValidator"
import textInfo from "@/config/textInfo"
import projectApi from "@/api/testmanage/project"
const useCrudInit = function () {
const crudRef = ref()
const crudOptions = ref({
rowSelection: { showCheckedAll: true },
api: projectApi.getPageList,
add: { show: true, api: projectApi.save, text: "新增项目" },
edit: { show: true, api: projectApi.update, text: "编辑项目" },
delete: { show: true, api: projectApi.delete },
searchColNumber: 3,
tablePagination: false,
operationColumn: true,
operationWidth: 500,
showIndex: false,
showTools: false,
operationColumnWidth: 280, // 操作列宽度
operationColumnAlign: "center", // 操作列对齐方式
afterDelete(response: any) {
crudRef.value.tableRef.selectAll(false)
},
// 处理弹窗的title
beforeOpenAdd: function () {
crudRef.value.crudFormRef.actionTitle = "项目"
return true
},
beforeOpenEdit: function (record: any) {
crudRef.value.crudFormRef.actionTitle = record.ident + "" + record.name
return true
},
formOption: {
isFull: true,
layout: [
{
formType: "grid",
cols: [
{ span: 8, formList: [{ dataIndex: "ident" }] },
{ span: 8, formList: [{ dataIndex: "name" }] },
{ span: 8, formList: [{ dataIndex: "engin_model" }] }
]
},
{
formType: "grid",
cols: [
{ span: 8, formList: [{ dataIndex: "section_system" }] },
{ span: 8, formList: [{ dataIndex: "sub_system" }] },
{ span: 8, formList: [{ dataIndex: "device" }] }
]
},
{
formType: "divider"
},
{
formType: "grid",
cols: [
{ span: 6, formList: [{ dataIndex: "beginTime" }] },
{ span: 6, formList: [{ dataIndex: "endTime" }] },
{ span: 6, formList: [{ dataIndex: "duty_person" }] },
{ span: 6, formList: [{ dataIndex: "runtime" }] },
{ span: 12, formList: [{ dataIndex: "member" }] },
{ span: 6, formList: [{ dataIndex: "soft_type" }] },
{ span: 6, formList: [{ dataIndex: "devplant" }] },
{ span: 6, formList: [{ dataIndex: "abbreviation" }] },
{ span: 6, formList: [{ dataIndex: "quality_person" }] },
{ span: 6, formList: [{ dataIndex: "vise_person" }] },
{ span: 6, formList: [{ dataIndex: "config_person" }] }
]
},
{
formType: "grid",
cols: [
{ span: 6, formList: [{ dataIndex: "security_level" }] },
{ span: 6, formList: [{ dataIndex: "language" }] },
{ span: 12, formList: [{ dataIndex: "plant_type" }] }
]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "test_level" }] }]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "report_type" }] }]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "standard" }] }]
},
{
formType: "grid-tailwind",
customClass: ["mt-0"],
colNumber: 3,
cols: [
{
formList: [
{
formType: "card",
title: "委托方信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "entrust_unit" },
{ dataIndex: "entrust_contact" },
{ dataIndex: "entrust_contact_phone" },
{ dataIndex: "entrust_email" }
]
}
]
},
{
formList: [
{
formType: "card",
title: "研制方信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "dev_unit" },
{ dataIndex: "dev_contact" },
{ dataIndex: "dev_contact_phone" },
{ dataIndex: "dev_email" }
]
}
]
},
{
formList: [
{
formType: "card",
title: "测评中心信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "test_unit" },
{ dataIndex: "test_contact" },
{ dataIndex: "test_contact_phone" },
{ dataIndex: "test_email" }
]
}
]
}
]
}
]
}
})
// CRUD-CLOMNS
const crudColumns = ref([
{
title: "项目标识",
align: "center",
width: 90,
sortable: { sortDirections: ["ascend"] },
dataIndex: "ident",
search: true,
commonRules: [
{ required: true, message: "标识是必填" },
{ validator: validateBlank, message: "标识格式不正确" },
// { validator: validateWindowFileNameInput }
],
validateTrigger: "blur"
},
{
title: "项目名称",
width: 110,
align: "center",
dataIndex: "name",
search: true,
commonRules: [{ required: true, message: "名称是必填" }]
},
{ title: "工程型号", dataIndex: "engin_model", hide: true },
{ title: "分系统", dataIndex: "section_system", hide: true },
{ title: "子系统", dataIndex: "sub_system", hide: true },
{ title: "设备名称", dataIndex: "device", hide: true },
{
title: "开始日期",
dataIndex: "beginTime",
align: "center",
commonRules: [{ required: true, message: "开始时间必填" }],
formType: "date"
},
{
title: "结束时间",
align: "center",
dataIndex: "endTime",
formType: "date",
extra: "注意:结束时间需要晚于最后一轮结束时间",
commonRules: [
{
required: true,
message: "结束时间必填"
},
{
validator: (value: any, validationCallbackFunction: any) => {
let beginTime = crudRef.value.getFormData().beginTime
value < beginTime ? validationCallbackFunction("开始时间必须小于等于结束时间") : null
}
}
]
},
// 这是只为了搜索的字段
{
title: "时间范围",
hide: true,
dataIndex: "searchOnlyTimeRange",
search: true,
addDisplay: false,
editDisplay: false,
infoShow: false,
formType: "range"
},
{
title: "责任人",
align: "center",
width: 70,
dataIndex: "duty_person",
search: true,
commonRules: [{ required: true, message: "责任人必选" }],
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }
},
{
title: "运行环境",
dataIndex: "runtime",
hide: true,
search: false,
formType: "select",
dict: { name: "runtime", props: { label: "title", value: "key" } }
},
{
title: "成员",
dataIndex: "member",
hide: true,
search: true,
formType: "select",
multiple: true,
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "成员至少选择一个" }]
},
{
// 后台默认值1可不填
title: "软件类型",
dataIndex: "soft_type",
hide: true,
search: true,
formType: "select",
dict: {
data: [
{ label: "新研", value: 1 },
{ label: "改造", value: 2 },
{ label: "沿用", value: 3 }
],
translation: true
},
commonRules: [{ required: true, message: "软件类型必填" }]
},
{
title: "开发环境",
dataIndex: "devplant",
hide: true,
search: false,
formType: "select",
dict: { name: "devplant", props: { label: "title", value: "key" } }
},
{
title: "缩略语",
dataIndex: "abbreviation",
hide: true,
search: false,
formType: "select",
multiple: true,
dict: { url: "system/abbreviation/index", props: { label: "title", value: "title" }, translation: true }
},
{
title: "质量保证",
dataIndex: "quality_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个质量保证员" }]
},
{
title: "质量监督",
dataIndex: "vise_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个质量监督员" }]
},
{
title: "配置管理",
dataIndex: "config_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个配置管理员" }]
},
{
title: "关键等级",
dataIndex: "security_level",
addDefaultValue: "3",
hide: true,
commonRules: [{ required: true, message: "关键等级必填" }],
search: true,
formType: "radio",
dict: { name: "security_level", props: { label: "title", value: "key" } }
},
{
title: "测试级别",
dataIndex: "test_level",
commonRules: [{ required: true, message: "请至少选择一个测试级别" }],
addDefaultValue: ["4"],
hide: true,
formType: "checkbox",
dict: { name: "test_level", props: { label: "title", value: "key" } }
},
{
title: "平台类型",
dataIndex: "plant_type",
commonRules: [{ required: true, message: "请至少选择一个平台类型" }],
addDefaultValue: ["3"],
hide: true,
formType: "checkbox",
dict: { name: "plant_type", props: { label: "title", value: "key" } }
},
{
title: "报告类型",
dataIndex: "report_type",
align: "center",
addDefaultValue: "9",
search: true,
commonRules: [{ required: true, message: "报告类型必填" }],
// 字典-report_type
formType: "radio",
dict: { name: "report_type", translation: true, props: { label: "title", value: "key" } }
},
{
title: "编程语言",
dataIndex: "language",
addDefaultValue: ["1"],
commonRules: [{ required: true, message: "请至少选择一个" }],
hide: true,
formType: "select",
multiple: true,
dict: { name: "language", props: { label: "title", value: "key" } }
},
{
title: "依据标准",
dataIndex: "standard",
addDefaultValue: ["1", "2", "3", "4", "9"],
commonRules: [{ required: true, message: "请至少选择一个" }],
hide: true,
multiple: true,
formType: "select",
dict: { name: "standard", props: { label: "title", value: "key" } }
},
{
title: "单位",
dataIndex: "entrust_unit",
hide: true,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "entrust_contact",
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
maxLength: 11,
dataIndex: "entrust_contact_phone",
hide: true,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "entrust_email",
hide: true
},
{
title: "单位",
dataIndex: "dev_unit",
hide: true,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "dev_contact",
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
maxLength: 11,
dataIndex: "dev_contact_phone",
hide: true,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "dev_email",
hide: true
},
{
title: "单位",
dataIndex: "test_unit",
hide: true,
addDefaultValue: textInfo.testUnitAddDefaultText,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "test_contact",
addDefaultValue: textInfo.testUnitContactPersonName,
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
dataIndex: "test_contact_phone",
addDefaultValue: textInfo.testUnintContactPhoneNumber,
hide: true,
maxLength: 11,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "test_email",
hide: true
},
{
title: "状态",
align: "center",
dataIndex: "step",
search: true,
formType: "radio",
addDefaultValue: "1",
addDisabled: true,
dict: {
name: "step",
translation: true,
props: { label: "title", value: "key" },
tagColors: { 1: "green", 2: "blue", 3: "red", 4: "yellow" }
}
}
])
return { crudRef, crudOptions, crudColumns }
}
export default useCrudInit

View File

@@ -0,0 +1,22 @@
import { useRouter } from "vue-router"
/**
* 整个hook用于点击工作区按钮
* @returns 返回进入工作区按钮事件处理函数
*/
const useEnterWorkPlant = function () {
// global
const router = useRouter()
// events
const enterWorkPlant = function (record: any) {
if (localStorage.getItem("tree_local_data")) {
localStorage.removeItem("tree_local_data")
}
router.push({ name: "project", query: record })
}
return {
enterWorkPlant
}
}
export default useEnterWorkPlant

View File

@@ -0,0 +1,181 @@
import { ref } from "vue"
import dgGenerateApi from "@/api/generate/dgGenerate"
import smGenerateApi from "@/api/generate/smGenerate"
import jlGenerateApi from "@/api/generate/jlGenerate"
import bgGenerateApi from "@/api/generate/bgGenerate"
import hsmGenerateApi from "@/api/generate/hsmGenerate"
import hjlGenerateApi from "@/api/generate/hjlGenerate"
import wtdGenerateApi from "@/api/generate/wtdGenerate"
import { Message } from "@arco-design/web-vue"
const useGenerateSecond = function () {
// refs
const isGenerating = ref(false) // 在二级文档生成过程中禁用按钮点击
// 用于显示是否正在加载(全部按钮各一个)
const isDgLoading = ref(false)
const isSmLoading = ref(false)
const isBgLoading = ref(false)
const isJlloading = ref(false)
const ishsmLoading = ref(false)
const ishjlLoading = ref(false)
const isWtdLoading = ref(false)
// events
// 记录生成二级文档
const createJLItem = async (record: any) => {
isGenerating.value = true
isJlloading.value = true
await jlGenerateApi.createJLcaserecord({ id: record.id }).finally(() => {
isGenerating.value = false
isJlloading.value = false
})
Message.success("记录-片段库生成成功请查看output/jl文件夹")
}
// 说明生成二级文档
const createSmItem = async (record: any) => {
isGenerating.value = true
isSmLoading.value = true
const id = record.id
await Promise.all([
dgGenerateApi.createSoftComposition({ id }), // 生成测评对象 - 和大纲一样
dgGenerateApi.createFuncList({ id }), // 生成被测软件功能 - 和大纲重复
dgGenerateApi.createInterface({ id }), // 生成被测软件接口 - 和大纲重复 - 可能会删除
dgGenerateApi.createPerformance({ id }), // 生成被测软件性能 - 和大纲重复 - 可能会删除
dgGenerateApi.createBaseInformation({ id }), // 生成被测软件基本信息 - 和大纲重复 - 可能会删除
dgGenerateApi.createYiju({ id }), // 生成标准类引用文档 - 和大纲重复 - 可能会删除
smGenerateApi.createSMTechyiju({ id }), // 生成技术类引用文档列表 -> 在大纲基础上添加《测评大纲》
dgGenerateApi.createEnvironment({ id }), // 生成软硬件环境(注意标题级别不一样,这个在最后处理)
smGenerateApi.createSMCaseList({ id }), // 生成用例全
smGenerateApi.createSMCaseBreifList({ id }), // 生成用例列表-那个表格
smGenerateApi.createSMTrack({ id }) // 生成说明追踪
]).finally(() => {
isGenerating.value = false
isSmLoading.value = false
})
Message.success("说明-片段库生成成功请查看output/sm文件夹")
}
// 大纲生成二级文档
const createDgItem = async (e: any, record: any) => {
isGenerating.value = true
isDgLoading.value = true
const id = record.id
await Promise.all([
dgGenerateApi.createTestDemand({ id }), // 生成第一轮测试项
dgGenerateApi.createYiju({ id }), // 生成依据文件
dgGenerateApi.createTechYiju({ id }), // 技术依据文件
dgGenerateApi.createContact({ id }), // 生成联系人和方式
dgGenerateApi.createTimeaddress({ id }), // 生成测评时间和地点
dgGenerateApi.createFuncList({ id }), // 生成被测软件功能列表
dgGenerateApi.createSoftComposition({ id }), // 生成测评对象-软件组成
dgGenerateApi.createAdequacyEffectiveness({ id }), // 生成测试充分性adequancy和有效性effectiveness说明
dgGenerateApi.createGroup({ id }), // 生成测评组织及分工
dgGenerateApi.createGuarantee({ id }), // 生成测评保障
dgGenerateApi.createAbbreviation({ id }), // 生成缩略语
dgGenerateApi.createInterface({ id }), // 生成-被测软件接口
dgGenerateApi.createPerformance({ id }), // 生成-被测软件性能
dgGenerateApi.createBaseInformation({ id }), // 生成-被测软件基本信息
dgGenerateApi.createRequirement({ id }), // 生成-测试总体要求
dgGenerateApi.createYzComparison({ id }), // 生成-研总-测试项对照表
dgGenerateApi.createXqComparison({ id }), // 生成-需求规格说明-测试项对照表
dgGenerateApi.createFanXqComparison({ id }), // 生成-反向测试项-需求规格说明对照表
dgGenerateApi.createCodeQuality({ id }), // 生成-代码质量度量分析表
dgGenerateApi.createEnvironment({ id }), // 生成-软硬件环境
dgGenerateApi.createMainTech({ id }) // 生成-主要战技指标
]).finally(() => {
isGenerating.value = false
isDgLoading.value = false
})
Message.success("大纲-片段库文档生成成功请查看output/dg文件夹")
}
// 报告生成二级文档
const createBgItem = async (record: any) => {
isGenerating.value = true
isBgLoading.value = true
const id = record.id
await Promise.all([
bgGenerateApi.deleteBGFiles({ id }), // 删除output/bg文件夹下文件
bgGenerateApi.createBgTechYiju({ id }),
bgGenerateApi.createBgTimeaddress({ id }),
bgGenerateApi.createBgBaseInformation({ id }),
bgGenerateApi.createBgCompletionstatus({ id }),
bgGenerateApi.createBgSummary({ id }),
bgGenerateApi.createBgContentandresults1({ id }),
bgGenerateApi.createBgContentandresults2({ id }),
bgGenerateApi.createBgEffectAndAdquacy({ id }),
bgGenerateApi.createBgDemandEffective({ id }),
bgGenerateApi.createBgQualityEvaluate({ id }),
bgGenerateApi.createBgEntire({ id }),
bgGenerateApi.createBgYzxqTrack({ id }),
bgGenerateApi.createBgProblemsSummary({ id })
]).finally(() => {
isGenerating.value = false
isBgLoading.value = false
})
Message.success("报告-片段库文档生成成功请查看output/bg文件夹")
}
// 回归测试说明二级文档
const createHsmItem = async (record: any) => {
const id = record.id
isGenerating.value = true
ishsmLoading.value = true
await Promise.all([
hsmGenerateApi.deleteHSMFiles({ id }), // 先删除以前文件
hsmGenerateApi.createBasicInfo({ id }),
hsmGenerateApi.createDocSummary({ id }),
hsmGenerateApi.createJstech({ id }),
hsmGenerateApi.createChangePart({ id }),
hsmGenerateApi.createHdemand({ id }),
hsmGenerateApi.createCaseListDesc({ id }),
hsmGenerateApi.createCaseList({ id }),
hsmGenerateApi.createTrack({ id })
]).finally(() => {
isGenerating.value = false
ishsmLoading.value = false
})
Message.success("回归说明-片段库文档生成成功请查看output/hsm文件夹")
}
// 回归测试记录二级文档
const createHjlItem = async (record: any) => {
const id = record.id
isGenerating.value = true
ishjlLoading.value = true
await Promise.all([
hjlGenerateApi.deleteHJLFiles({ id }), // 先调用删除文件夹里面文件
hjlGenerateApi.createBasicInfo({ id }),
hjlGenerateApi.createCaseinfo({ id })
]).finally(() => {
isGenerating.value = false
ishjlLoading.value = false
})
Message.success("回归记录-片段库文档生成成功请查看output/hjl文件夹")
}
// 问题单二级文档
const createWtdItem = async (record: any) => {
isGenerating.value = true
isWtdLoading.value = true
await wtdGenerateApi.createWtdTable({ id: record.id }).finally(() => {
isGenerating.value = false
isWtdLoading.value = false
})
Message.success("问题单-片段库文档生成成功请查看output/wtd文件夹")
}
return {
isGenerating,
isDgLoading,
isSmLoading,
isBgLoading,
isJlloading,
ishsmLoading,
ishjlLoading,
isWtdLoading,
createJLItem,
createSmItem,
createDgItem,
createBgItem,
createHsmItem,
createHjlItem,
createWtdItem
}
}
export default useGenerateSecond

View File

@@ -0,0 +1,70 @@
import { ref } from "vue"
import hoosk from "./hooks"
import seitaiGenerateApi from "@/api/generate/seitaiGenerate"
const useSeitaiModal = function () {
// refs
const visible = ref(false)
const isComplete = ref(false)
const ptext = ref("测评大纲")
// events
const handleModalConfirmClick = () => {
visible.value = false
}
// 生成文档
// ~~~~~~~~测试说明生成文档~~~~~~~~
const createSeitaiShuoming = async (record: any) => {
ptext.value = "测试说明"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createShuomingSeiTai, record.id)
}
// ~~~~~~~~测试大纲生成文档~~~~~~~~
const createSeitaiDagang = async (record: any) => {
// 根据一系列文档生成大纲 - 这里有进度条组件、a-modal组件
// 1.打开进度条组件
ptext.value = "测评大纲"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createDagangSeiTai, record.id)
}
// ~~~~~~~~记录生成文档~~~~~~~~
const createSeitaiJilu = async (record: any) => {
ptext.value = "测试记录"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createJiluSeiTai, record.id)
}
// ~~~~~~~~报告生成文档~~~~~~~~
const createSeitaiBaogao = async (record: any) => {
ptext.value = "测评报告"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createBgDocument, record.id)
}
// ~~~~~~~~回归测试说明~~~~~~~~
const createSeitaiHsm = async (record: any) => {
ptext.value = "回归测试说明"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createHsmDocument, record.id)
}
// ~~~~~~~~回归测试记录~~~~~~~~
const createSeitaiHjl = async (record: any) => {
ptext.value = "回归测试记录"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createHjlDocument, record.id)
}
// ~~~~~~~~问题单~~~~~~~~
const createSeitaiWtd = async (record: any) => {
ptext.value = "问题单"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createWtdDocument, record.id)
}
return {
visible,
isComplete,
ptext,
handleModalConfirmClick,
createSeitaiShuoming,
createSeitaiDagang,
createSeitaiJilu,
createSeitaiBaogao,
createSeitaiHsm,
createSeitaiHjl,
createSeitaiWtd
}
}
export default useSeitaiModal

View File

@@ -107,232 +107,53 @@
></Progress> ></Progress>
</div> </div>
</template> </template>
<script lang="jsx" setup> <script lang="jsx" setup>
import { ref } from "vue" import { ref } from "vue"
import { useRoute, useRouter } from "vue-router"
import projectApi from "@/api/testmanage/project"
import preview from "./cpns/preview.vue" import preview from "./cpns/preview.vue"
import dgGenerateApi from "@/api/generate/dgGenerate"
import seitaiGenerateApi from "@/api/generate/seitaiGenerate"
import smGenerateApi from "@/api/generate/smGenerate"
import jlGenerateApi from "@/api/generate/jlGenerate"
import bgGenerateApi from "@/api/generate/bgGenerate"
import hsmGenerateApi from "@/api/generate/hsmGenerate"
import hjlGenerateApi from "@/api/generate/hjlGenerate"
import wtdGenerateApi from "@/api/generate/wtdGenerate"
import { Message } from "@arco-design/web-vue"
import Progress from "./cpns/progress.vue" import Progress from "./cpns/progress.vue"
import hoosk from "@/views/testmanage/projmanage/hooks.js" import useEnterWorkPlant from "./hooks/useEnterWorkPlant"
import { validateBlank } from "@/utils/extensions/arcoValidator" import useSeitaiModal from "./hooks/useSeitaiModal"
// addDefault、editDefault信息导入 import useGenerateSecond from "./hooks/useGenerateSecond"
import textInfo from "@/config/textInfo" import useCrudInit from "./hooks/useCrudInit"
const router = useRouter() // crud配置和字段信息定义
// 定义预览组件的Ref const { crudRef, crudOptions, crudColumns } = useCrudInit()
const previewRef = ref()
// 点击进入工作区函数 - 每次点击后都清除localStorage中树状目录数据 // 点击进入工作区函数 - 每次点击后都清除localStorage中树状目录数据
const enterWorkPlant = function (record) { const { enterWorkPlant } = useEnterWorkPlant()
if (localStorage.getItem("tree_local_data")) { // 生成最终文档事件,并且弹窗显隐和退出条件判断
localStorage.removeItem("tree_local_data") const {
} visible,
router.push({ name: "project", query: record }) isComplete,
} ptext,
// 这里放弹出进度条组件变量 handleModalConfirmClick,
const visible = ref(false) createSeitaiShuoming,
const isComplete = ref(false) createSeitaiDagang,
const ptext = ref("测评大纲") createSeitaiJilu,
const handleModalConfirmClick = () => { createSeitaiBaogao,
visible.value = false createSeitaiHsm,
} createSeitaiHjl,
// 该变量用于显示所以生成文档的按钮是否->禁用 createSeitaiWtd
const isGenerating = ref(false) } = useSeitaiModal()
// 用于显示是否正在加载(全部按钮各一个) // 用于生成二段文档按钮事件和禁用按钮ref
const isDgLoading = ref(false) const {
const isSmLoading = ref(false) isGenerating,
const isBgLoading = ref(false) isDgLoading,
const isJlloading = ref(false) isSmLoading,
const ishsmLoading = ref(false) isBgLoading,
const ishjlLoading = ref(false) isJlloading,
const isWtdLoading = ref(false) ishsmLoading,
// ~~~~~~~~测试说明生成文档~~~~~~~~ ishjlLoading,
const createSeitaiShuoming = async (record) => { isWtdLoading,
ptext.value = "测试说明" createJLItem,
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createShuomingSeiTai, record.id) createSmItem,
} createDgItem,
createBgItem,
createHsmItem,
createHjlItem,
createWtdItem
} = useGenerateSecond()
// ~~~~~~~~测试大纲生成文档~~~~~~~~ // 其他功能
const createSeitaiDagang = async (record) => {
// 根据一系列文档生成大纲 - 这里有进度条组件、a-modal组件
// 1.打开进度条组件
ptext.value = "测评大纲"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createDagangSeiTai, record.id)
}
// ~~~~~~~~记录生成文档~~~~~~~~
const createSeitaiJilu = async (record) => {
ptext.value = "测试记录"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createJiluSeiTai, record.id)
}
// ~~~~~~~~报告生成文档~~~~~~~~
const createSeitaiBaogao = async (record) => {
ptext.value = "测评报告"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createBgDocument, record.id)
}
// ~~~~~~~~回归测试说明~~~~~~~~
const createSeitaiHsm = async (record) => {
ptext.value = "回归测试说明"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createHsmDocument, record.id)
}
// ~~~~~~~~回归测试记录~~~~~~~~
const createSeitaiHjl = async (record) => {
ptext.value = "回归测试记录"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createHjlDocument, record.id)
}
// ~~~~~~~~问题单~~~~~~~~
const createSeitaiWtd = async (record) => {
ptext.value = "问题单"
hoosk.create_entire_doc(visible, isComplete, seitaiGenerateApi.createWtdDocument, record.id)
}
// 记录生成二级文档
const createJLItem = async (record) => {
isGenerating.value = true
isJlloading.value = true
await jlGenerateApi.createJLcaserecord({ id: record.id }).finally(() => {
isGenerating.value = false
isJlloading.value = false
})
Message.success("记录-片段库生成成功请查看output/jl文件夹")
}
// 说明生成二级文档
const createSmItem = async (record) => {
isGenerating.value = true
isSmLoading.value = true
const id = record.id
await Promise.all([
dgGenerateApi.createSoftComposition({ id }), // 生成测评对象 - 和大纲一样
dgGenerateApi.createFuncList({ id }), // 生成被测软件功能 - 和大纲重复
dgGenerateApi.createInterface({ id }), // 生成被测软件接口 - 和大纲重复 - 可能会删除
dgGenerateApi.createPerformance({ id }), // 生成被测软件性能 - 和大纲重复 - 可能会删除
dgGenerateApi.createBaseInformation({ id }), // 生成被测软件基本信息 - 和大纲重复 - 可能会删除
dgGenerateApi.createYiju({ id }), // 生成标准类引用文档 - 和大纲重复 - 可能会删除
smGenerateApi.createSMTechyiju({ id }), // 生成技术类引用文档列表 -> 在大纲基础上添加《测评大纲》
dgGenerateApi.createEnvironment({ id }), // 生成软硬件环境(注意标题级别不一样,这个在最后处理)
smGenerateApi.createSMCaseList({ id }), // 生成用例全
smGenerateApi.createSMCaseBreifList({ id }), // 生成用例列表-那个表格
smGenerateApi.createSMTrack({ id }) // 生成说明追踪
]).finally(() => {
isGenerating.value = false
isSmLoading.value = false
})
Message.success("说明-片段库生成成功请查看output/sm文件夹")
}
// 大纲生成二级文档
const createDgItem = async (e, record) => {
isGenerating.value = true
isDgLoading.value = true
const id = record.id
await Promise.all([
dgGenerateApi.createTestDemand({ id }), // 生成第一轮测试项
dgGenerateApi.createYiju({ id }), // 生成依据文件
dgGenerateApi.createTechYiju({ id }), // 技术依据文件
dgGenerateApi.createContact({ id }), // 生成联系人和方式
dgGenerateApi.createTimeaddress({ id }), // 生成测评时间和地点
dgGenerateApi.createFuncList({ id }), // 生成被测软件功能列表
dgGenerateApi.createSoftComposition({ id }), // 生成测评对象-软件组成
dgGenerateApi.createAdequacyEffectiveness({ id }), // 生成测试充分性adequancy和有效性effectiveness说明
dgGenerateApi.createGroup({ id }), // 生成测评组织及分工
dgGenerateApi.createGuarantee({ id }), // 生成测评保障
dgGenerateApi.createAbbreviation({ id }), // 生成缩略语
dgGenerateApi.createInterface({ id }), // 生成-被测软件接口
dgGenerateApi.createPerformance({ id }), // 生成-被测软件性能
dgGenerateApi.createBaseInformation({ id }), // 生成-被测软件基本信息
dgGenerateApi.createRequirement({ id }), // 生成-测试总体要求
dgGenerateApi.createYzComparison({ id }), // 生成-研总-测试项对照表
dgGenerateApi.createXqComparison({ id }), // 生成-需求规格说明-测试项对照表
dgGenerateApi.createFanXqComparison({ id }), // 生成-反向测试项-需求规格说明对照表
dgGenerateApi.createCodeQuality({ id }), // 生成-代码质量度量分析表
dgGenerateApi.createEnvironment({ id }), // 生成-软硬件环境
dgGenerateApi.createMainTech({ id }) // 生成-主要战技指标
]).finally(() => {
isGenerating.value = false
isDgLoading.value = false
})
Message.success("大纲-片段库文档生成成功请查看output/dg文件夹")
}
// 报告生成二级文档
const createBgItem = async (record) => {
isGenerating.value = true
isBgLoading.value = true
const id = record.id
await Promise.all([
bgGenerateApi.deleteBGFiles({ id }), // 删除output/bg文件夹下文件
bgGenerateApi.createBgTechYiju({ id }),
bgGenerateApi.createBgTimeaddress({ id }),
bgGenerateApi.createBgBaseInformation({ id }),
bgGenerateApi.createBgCompletionstatus({ id }),
bgGenerateApi.createBgSummary({ id }),
bgGenerateApi.createBgContentandresults1({ id }),
bgGenerateApi.createBgContentandresults2({ id }),
bgGenerateApi.createBgEffectAndAdquacy({ id }),
bgGenerateApi.createBgDemandEffective({ id }),
bgGenerateApi.createBgQualityEvaluate({ id }),
bgGenerateApi.createBgEntire({ id }),
bgGenerateApi.createBgYzxqTrack({ id }),
bgGenerateApi.createBgProblemsSummary({ id })
]).finally(() => {
isGenerating.value = false
isBgLoading.value = false
})
Message.success("报告-片段库文档生成成功请查看output/bg文件夹")
}
// 回归测试说明二级文档
const createHsmItem = async (record) => {
const id = record.id
isGenerating.value = true
ishsmLoading.value = true
await Promise.all([
hsmGenerateApi.deleteHSMFiles({ id }), // 先删除以前文件
hsmGenerateApi.createBasicInfo({ id }),
hsmGenerateApi.createDocSummary({ id }),
hsmGenerateApi.createJstech({ id }),
hsmGenerateApi.createChangePart({ id }),
hsmGenerateApi.createHdemand({ id }),
hsmGenerateApi.createCaseListDesc({ id }),
hsmGenerateApi.createCaseList({ id }),
hsmGenerateApi.createTrack({ id })
]).finally(() => {
isGenerating.value = false
ishsmLoading.value = false
})
Message.success("回归说明-片段库文档生成成功请查看output/hsm文件夹")
}
// 回归测试记录二级文档
const createHjlItem = async (record) => {
const id = record.id
isGenerating.value = true
ishjlLoading.value = true
await Promise.all([
hjlGenerateApi.deleteHJLFiles({ id }), // 先调用删除文件夹里面文件
hjlGenerateApi.createBasicInfo({ id }),
hjlGenerateApi.createCaseinfo({ id })
]).finally(() => {
isGenerating.value = false
ishjlLoading.value = false
})
Message.success("回归记录-片段库文档生成成功请查看output/hjl文件夹")
}
// 问题单二级文档
const createWtdItem = async (record) => {
isGenerating.value = true
isWtdLoading.value = true
await wtdGenerateApi.createWtdTable({ id: record.id }).finally(() => {
isGenerating.value = false
isWtdLoading.value = false
})
Message.success("问题单-片段库文档生成成功请查看output/wtd文件夹")
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 1.跳转到项目看板页面 // 1.跳转到项目看板页面
const handleBoardClick = (record) => { const handleBoardClick = (record) => {
router.push({ router.push({
@@ -351,481 +172,8 @@ const handleFragmentClick = (record) => {
} }
}) })
} }
// 3.预览项目信息ref
const crudRef = ref() const previewRef = ref()
const crudOptions = ref({
rowSelection: { showCheckedAll: true },
api: projectApi.getPageList,
add: { show: true, api: projectApi.save, text: "新增项目" },
edit: { show: true, api: projectApi.update, text: "编辑项目" },
delete: { show: true, api: projectApi.delete },
searchColNumber: 3,
tablePagination: false,
operationColumn: true,
operationWidth: 500,
showIndex: false,
showTools: false,
operationColumnWidth: 280, // 操作列宽度
operationColumnAlign: "center", // 操作列对齐方式
afterDelete(response) {
crudRef.value.tableRef.selectAll(false)
},
// 处理弹窗的title
beforeOpenAdd: function () {
crudRef.value.crudFormRef.actionTitle = "项目"
return true
},
beforeOpenEdit: function (record) {
crudRef.value.crudFormRef.actionTitle = record.ident + "" + record.name
return true
},
formOption: {
isFull: true,
layout: [
{
formType: "grid",
cols: [
{ span: 8, formList: [{ dataIndex: "ident" }] },
{ span: 8, formList: [{ dataIndex: "name" }] },
{ span: 8, formList: [{ dataIndex: "engin_model" }] }
]
},
{
formType: "grid",
cols: [
{ span: 8, formList: [{ dataIndex: "section_system" }] },
{ span: 8, formList: [{ dataIndex: "sub_system" }] },
{ span: 8, formList: [{ dataIndex: "device" }] }
]
},
{
formType: "divider"
},
{
formType: "grid",
cols: [
{ span: 6, formList: [{ dataIndex: "beginTime" }] },
{ span: 6, formList: [{ dataIndex: "endTime" }] },
{ span: 6, formList: [{ dataIndex: "duty_person" }] },
{ span: 6, formList: [{ dataIndex: "runtime" }] },
{ span: 12, formList: [{ dataIndex: "member" }] },
{ span: 6, formList: [{ dataIndex: "soft_type" }] },
{ span: 6, formList: [{ dataIndex: "devplant" }] },
{ span: 6, formList: [{ dataIndex: "abbreviation" }] },
{ span: 6, formList: [{ dataIndex: "quality_person" }] },
{ span: 6, formList: [{ dataIndex: "vise_person" }] },
{ span: 6, formList: [{ dataIndex: "config_person" }] }
]
},
{
formType: "grid",
cols: [
{ span: 6, formList: [{ dataIndex: "security_level" }] },
{ span: 6, formList: [{ dataIndex: "language" }] },
{ span: 12, formList: [{ dataIndex: "plant_type" }] }
]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "test_level" }] }]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "report_type" }] }]
},
{
formType: "grid",
cols: [{ span: 24, formList: [{ dataIndex: "standard" }] }]
},
{
formType: "grid-tailwind",
customClass: ["mt-0"],
colNumber: 3,
cols: [
{
formList: [
{
formType: "card",
title: "委托方信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "entrust_unit" },
{ dataIndex: "entrust_contact" },
{ dataIndex: "entrust_contact_phone" },
{ dataIndex: "entrust_email" }
]
}
]
},
{
formList: [
{
formType: "card",
title: "研制方信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "dev_unit" },
{ dataIndex: "dev_contact" },
{ dataIndex: "dev_contact_phone" },
{ dataIndex: "dev_email" }
]
}
]
},
{
formList: [
{
formType: "card",
title: "测评中心信息",
customClass: ["mt-3", "mb-5", "mx-1"],
formList: [
{ dataIndex: "test_unit" },
{ dataIndex: "test_contact" },
{ dataIndex: "test_contact_phone" },
{ dataIndex: "test_email" }
]
}
]
}
]
}
]
}
})
// CRUD-CLOMNS
const crudColumns = ref([
{
title: "项目标识",
align: "center",
width: 90,
sortable: { sortDirections: ["ascend"] },
dataIndex: "ident",
search: true,
commonRules: [
{ required: true, message: "标识是必填" },
{ validator: validateBlank, message: "标识格式不正确" }
],
validateTrigger: "blur"
},
{
title: "项目名称",
width: 110,
align: "center",
dataIndex: "name",
search: true,
commonRules: [{ required: true, message: "名称是必填" }]
},
{ title: "工程型号", dataIndex: "engin_model", hide: true },
{ title: "分系统", dataIndex: "section_system", hide: true },
{ title: "子系统", dataIndex: "sub_system", hide: true },
{ title: "设备名称", dataIndex: "device", hide: true },
{
title: "开始日期",
dataIndex: "beginTime",
align: "center",
commonRules: [{ required: true, message: "开始时间必填" }],
formType: "date"
},
{
title: "结束时间",
align: "center",
dataIndex: "endTime",
formType: "date",
extra: "注意:结束时间需要晚于最后一轮结束时间",
commonRules: [
{
required: true,
message: "结束时间必填"
},
{
validator: (value, validationCallbackFunction) => {
let beginTime = crudRef.value.getFormData().beginTime
value < beginTime ? validationCallbackFunction("开始时间必须小于等于结束时间") : null
}
}
]
},
// 这是只为了搜索的字段
{
title: "时间范围",
hide: true,
dataIndex: "searchOnlyTimeRange",
search: true,
addDisplay: false,
editDisplay: false,
infoShow: false,
formType: "range"
},
{
title: "责任人",
align: "center",
width: 70,
dataIndex: "duty_person",
search: true,
commonRules: [{ required: true, message: "责任人必选" }],
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true }
},
{
title: "运行环境",
dataIndex: "runtime",
hide: true,
search: false,
formType: "select",
dict: { name: "runtime", props: { label: "title", value: "key" } }
},
{
title: "成员",
dataIndex: "member",
hide: true,
search: true,
formType: "select",
multiple: true,
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "成员至少选择一个" }]
},
{
// 后台默认值1可不填
title: "软件类型",
dataIndex: "soft_type",
hide: true,
search: true,
formType: "select",
dict: {
data: [
{ label: "新研", value: 1 },
{ label: "改造", value: 2 },
{ label: "沿用", value: 3 }
],
translation: true
},
commonRules: [{ required: true, message: "软件类型必填" }]
},
{
title: "开发环境",
dataIndex: "devplant",
hide: true,
search: false,
formType: "select",
dict: { name: "devplant", props: { label: "title", value: "key" } }
},
{
title: "缩略语",
dataIndex: "abbreviation",
hide: true,
search: false,
formType: "select",
multiple: true,
dict: { url: "system/abbreviation/index", props: { label: "title", value: "title" }, translation: true }
},
{
title: "质量保证",
dataIndex: "quality_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个质量保证员" }]
},
{
title: "质量监督",
dataIndex: "vise_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个质量监督员" }]
},
{
title: "配置管理",
dataIndex: "config_person",
hide: true,
formType: "select",
dict: { url: "system/user/list", props: { label: "name", value: "name" }, translation: true },
commonRules: [{ required: true, message: "至少选择一个配置管理员" }]
},
{
title: "关键等级",
dataIndex: "security_level",
addDefaultValue: "3",
hide: true,
commonRules: [{ required: true, message: "关键等级必填" }],
search: true,
formType: "radio",
dict: { name: "security_level", props: { label: "title", value: "key" } }
},
{
title: "测试级别",
dataIndex: "test_level",
commonRules: [{ required: true, message: "请至少选择一个测试级别" }],
addDefaultValue: ["4"],
hide: true,
formType: "checkbox",
dict: { name: "test_level", props: { label: "title", value: "key" } }
},
{
title: "平台类型",
dataIndex: "plant_type",
commonRules: [{ required: true, message: "请至少选择一个平台类型" }],
addDefaultValue: ["3"],
hide: true,
formType: "checkbox",
dict: { name: "plant_type", props: { label: "title", value: "key" } }
},
{
title: "报告类型",
dataIndex: "report_type",
align: "center",
addDefaultValue: "9",
search: true,
commonRules: [{ required: true, message: "报告类型必填" }],
// 字典-report_type
formType: "radio",
dict: { name: "report_type", translation: true, props: { label: "title", value: "key" } }
},
{
title: "编程语言",
dataIndex: "language",
addDefaultValue: ["1"],
commonRules: [{ required: true, message: "请至少选择一个" }],
hide: true,
formType: "select",
multiple: true,
dict: { name: "language", props: { label: "title", value: "key" } }
},
{
title: "依据标准",
dataIndex: "standard",
addDefaultValue: ["1", "2", "3", "4", "9"],
commonRules: [{ required: true, message: "请至少选择一个" }],
hide: true,
multiple: true,
formType: "select",
dict: { name: "standard", props: { label: "title", value: "key" } }
},
{
title: "单位",
dataIndex: "entrust_unit",
hide: true,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "entrust_contact",
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
maxLength: 11,
dataIndex: "entrust_contact_phone",
hide: true,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "entrust_email",
hide: true
},
{
title: "单位",
dataIndex: "dev_unit",
hide: true,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "dev_contact",
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
maxLength: 11,
dataIndex: "dev_contact_phone",
hide: true,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "dev_email",
hide: true
},
{
title: "单位",
dataIndex: "test_unit",
hide: true,
addDefaultValue: textInfo.testUnitAddDefaultText,
commonRules: [{ required: true, message: "单位必选" }],
formType: "select",
dict: { url: "system/contact/index", props: { label: "name", value: "name" }, translation: true }
},
{
formType: "input",
title: "联系人",
dataIndex: "test_contact",
addDefaultValue: textInfo.testUnitContactPersonName,
hide: true,
commonRules: [{ required: true, message: "联系人必填" }]
},
{
formType: "input",
title: "联系电话",
dataIndex: "test_contact_phone",
addDefaultValue: textInfo.testUnintContactPhoneNumber,
hide: true,
maxLength: 11,
commonRules: [
{ required: true, message: "联系电话必填" },
{
match: /^1[3456789]\d{9}$/,
message: "电话号码格式错误"
}
]
},
{
formType: "input",
title: "电子邮箱",
dataIndex: "test_email",
hide: true
},
{
title: "状态",
align: "center",
dataIndex: "step",
search: true,
formType: "radio",
addDefaultValue: "1",
addDisabled: true,
dict: {
name: "step",
translation: true,
props: { label: "title", value: "key" },
tagColors: { 1: "green", 2: "blue", 3: "red", 4: "yellow" }
}
}
])
defineOptions({ defineOptions({
name: "projmanage" name: "projmanage"
@@ -849,4 +197,3 @@ defineOptions({
} }
} }
</style> </style>
@/api/generate/seitaiGenerate