From b6f56fe5d84bbc2a2373a84f302554c7c2261ae7 Mon Sep 17 00:00:00 2001 From: ks3356143 <314298729@qq.com> Date: Thu, 13 Jun 2024 19:41:57 +0800 Subject: [PATCH] 000 --- cdTMP/Untitled.ipynb | 53 ---- cdTMP/package-lock.json | 258 +++++++++--------- cdTMP/package.json | 10 +- cdTMP/src/App.vue | 3 +- cdTMP/src/api/project/project.js | 13 + cdTMP/src/assets/funcImg/loading.svg | 5 + .../components/ma-crud/components/form.vue | 10 +- cdTMP/src/components/ma-form-modal/index.vue | 11 +- cdTMP/src/directives/index.js | 2 + cdTMP/src/directives/loading/index.js | 34 +++ .../directives/loading/loading.module.less | 6 + cdTMP/src/hooks/fetchData.js | 23 ++ cdTMP/src/layout/default-layout.vue | 4 +- cdTMP/src/layout/project-layout.vue | 30 +- cdTMP/src/main.js | 3 +- cdTMP/src/router/index.js | 3 +- cdTMP/src/router/routes/modules/testmanage.js | 15 + .../views/datamanage/dictmanage/dataList.vue | 5 +- .../src/views/datamanage/dictmanage/index.vue | 3 +- cdTMP/src/views/project/case/index.vue | 2 +- .../src/views/project/design-demand/index.vue | 9 +- cdTMP/src/views/project/dut/index.vue | 11 +- cdTMP/src/views/project/round/index.vue | 29 +- .../testmanage/projBoard/cpns/RoundInfo.vue | 105 +++++++ .../testmanage/projBoard/cpns/TimeLine.vue | 67 +++++ .../views/testmanage/projBoard/cpns/Title.vue | 89 ++++++ .../testmanage/projBoard/cpns/tableColumn.js | 18 ++ .../src/views/testmanage/projBoard/index.vue | 33 +++ .../testmanage/projmanage/cpns/preview.vue | 19 +- .../src/views/testmanage/projmanage/index.vue | 90 +++--- cdTMP/vite.config.js | 1 - 31 files changed, 691 insertions(+), 273 deletions(-) delete mode 100644 cdTMP/Untitled.ipynb create mode 100644 cdTMP/src/assets/funcImg/loading.svg create mode 100644 cdTMP/src/directives/loading/index.js create mode 100644 cdTMP/src/directives/loading/loading.module.less create mode 100644 cdTMP/src/hooks/fetchData.js create mode 100644 cdTMP/src/views/testmanage/projBoard/cpns/RoundInfo.vue create mode 100644 cdTMP/src/views/testmanage/projBoard/cpns/TimeLine.vue create mode 100644 cdTMP/src/views/testmanage/projBoard/cpns/Title.vue create mode 100644 cdTMP/src/views/testmanage/projBoard/cpns/tableColumn.js create mode 100644 cdTMP/src/views/testmanage/projBoard/index.vue diff --git a/cdTMP/Untitled.ipynb b/cdTMP/Untitled.ipynb deleted file mode 100644 index 1016ce9..0000000 --- a/cdTMP/Untitled.ipynb +++ /dev/null @@ -1,53 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "id": "db3fdebd-b7cd-4a83-9f52-2b01691dfcbd", - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "ord() expected a character, but string of length 2 found", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0mTraceback (most recent call last)", - "Cell \u001b[1;32mIn[4], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28;43mord\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m12\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m)\n", - "\u001b[1;31mTypeError\u001b[0m: ord() expected a character, but string of length 2 found" - ] - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7a1670a0-01da-495a-a2b7-9dd635238477", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cdTMP/package-lock.json b/cdTMP/package-lock.json index 1e02002..8a7f848 100644 --- a/cdTMP/package-lock.json +++ b/cdTMP/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "dependencies": { "@arco-design/color": "^0.4.0", - "@arco-design/web-vue": "^2.55.2", + "@arco-design/web-vue": "^2.55.3", "@tinymce/tinymce-vue": "^5.1.1", "@vueuse/core": "^10.1.2", "axios": "^1.4.0", @@ -47,11 +47,11 @@ "autoprefixer": "^10.4.14", "browserslist": "^4.23.0", "caniuse-lite": "^1.0.30001591", - "eslint": "^8.42.0", - "eslint-plugin-vue": "^9.14.1", - "less": "^4.1.3", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.26.0", + "less": "^4.2.0", "less-loader": "^11.1.2", - "postcss": "^8.4.24", + "postcss": "^8.4.38", "prettier": "^2.8.8", "tailwindcss": "^3.3.2", "vite": "^5.2.12" @@ -88,9 +88,9 @@ } }, "node_modules/@arco-design/web-vue": { - "version": "2.55.2", - "resolved": "https://registry.npmmirror.com/@arco-design/web-vue/-/web-vue-2.55.2.tgz", - "integrity": "sha512-aEuX0a7u1Qif5VYuCM/NFfbFfKA4GiOl3nOoaZEH/W6jhJh/RTmEVAYxJv8j6AYhPySj7ULfel4USVngP31E0Q==", + "version": "2.55.3", + "resolved": "https://registry.npmmirror.com/@arco-design/web-vue/-/web-vue-2.55.3.tgz", + "integrity": "sha512-gOyEPD0XdaeGIOD7+dypY7+vCE18Y2cG+6R1e56oNGPTk3q+Wj1X6iMpBXVAGiKykvH3BpsCEBFxMtJmKXCR5A==", "dependencies": { "@arco-design/color": "^0.4.0", "b-tween": "^0.3.3", @@ -921,23 +921,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.10.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", + "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -947,37 +947,43 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.57.0", + "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -994,9 +1000,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -1384,6 +1390,12 @@ "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-vue": { "version": "5.0.4", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", @@ -1850,9 +1862,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.3", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2502,27 +2514,28 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.57.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -2532,7 +2545,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -2542,9 +2554,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -2552,49 +2563,53 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-plugin-vue": { - "version": "9.14.1", - "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz", - "integrity": "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==", + "version": "9.26.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.26.0.tgz", + "integrity": "sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.3.0", + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^9.3.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", "xml-name-validator": "^4.0.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-vue/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.6.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2602,16 +2617,10 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-vue/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -2619,15 +2628,21 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -2716,17 +2731,20 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmmirror.com/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { @@ -3110,9 +3128,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -3147,6 +3165,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -3383,9 +3404,9 @@ } }, "node_modules/less": { - "version": "4.1.3", - "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, "dependencies": { "copy-anything": "^2.0.1", @@ -3819,9 +3840,9 @@ "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==" }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -3829,7 +3850,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -4097,9 +4118,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4523,6 +4544,9 @@ "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/sucrase": { @@ -4960,9 +4984,9 @@ } }, "node_modules/vue-eslint-parser": { - "version": "9.3.0", - "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz", - "integrity": "sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==", + "version": "9.4.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -4976,30 +5000,18 @@ "engines": { "node": "^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, "peerDependencies": { "eslint": ">=6.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.6.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5007,12 +5019,6 @@ "node": ">=10" } }, - "node_modules/vue-eslint-parser/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/vue-router": { "version": "4.2.2", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.2.tgz", @@ -5145,9 +5151,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" diff --git a/cdTMP/package.json b/cdTMP/package.json index 8692c78..e34036b 100644 --- a/cdTMP/package.json +++ b/cdTMP/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@arco-design/color": "^0.4.0", - "@arco-design/web-vue": "^2.55.2", + "@arco-design/web-vue": "^2.55.3", "@tinymce/tinymce-vue": "^5.1.1", "@vueuse/core": "^10.1.2", "axios": "^1.4.0", @@ -50,11 +50,11 @@ "autoprefixer": "^10.4.14", "browserslist": "^4.23.0", "caniuse-lite": "^1.0.30001591", - "eslint": "^8.42.0", - "eslint-plugin-vue": "^9.14.1", - "less": "^4.1.3", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.26.0", + "less": "^4.2.0", "less-loader": "^11.1.2", - "postcss": "^8.4.24", + "postcss": "^8.4.38", "prettier": "^2.8.8", "tailwindcss": "^3.3.2", "vite": "^5.2.12" diff --git a/cdTMP/src/App.vue b/cdTMP/src/App.vue index 60245d6..ced46e8 100644 --- a/cdTMP/src/App.vue +++ b/cdTMP/src/App.vue @@ -1,9 +1,8 @@ - - + diff --git a/cdTMP/src/api/project/project.js b/cdTMP/src/api/project/project.js index e447c14..444026f 100644 --- a/cdTMP/src/api/project/project.js +++ b/cdTMP/src/api/project/project.js @@ -71,4 +71,17 @@ export default { } }) }, + /** + * 根据项目id查询项目->看板的所有信息 + * @returns 返回看板所有信息 + */ + getBoardInfo(projectId) { + return request({ + url: `/testmanage/project/board`, + method: "get", + params: { + id: projectId + } + }) + } } diff --git a/cdTMP/src/assets/funcImg/loading.svg b/cdTMP/src/assets/funcImg/loading.svg new file mode 100644 index 0000000..98122fb --- /dev/null +++ b/cdTMP/src/assets/funcImg/loading.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/cdTMP/src/components/ma-crud/components/form.vue b/cdTMP/src/components/ma-crud/components/form.vue index f32e9b7..aa40688 100644 --- a/cdTMP/src/components/ma-crud/components/form.vue +++ b/cdTMP/src/components/ma-crud/components/form.vue @@ -1,12 +1,3 @@ - @@ -60,7 +67,7 @@ const modal = reactive({ return prop.submit(form._rawValue) }, customCancel() { - if(prop.customCancel){ + if (prop.customCancel) { return prop.customCancel() } return true diff --git a/cdTMP/src/directives/index.js b/cdTMP/src/directives/index.js index ac0ac0d..ec0a321 100644 --- a/cdTMP/src/directives/index.js +++ b/cdTMP/src/directives/index.js @@ -1,11 +1,13 @@ import auth from "./auth/index" import role from "./role/index" import copy from "./copy/index" +import loading from "./loading/index" export default { install(Vue) { Vue.directive("auth", auth) Vue.directive("role", role) Vue.directive("copy", copy) + Vue.directive("loading", loading) } } diff --git a/cdTMP/src/directives/loading/index.js b/cdTMP/src/directives/loading/index.js new file mode 100644 index 0000000..c823df1 --- /dev/null +++ b/cdTMP/src/directives/loading/index.js @@ -0,0 +1,34 @@ +// 用于远程加载数据时候显示加载中 +import imgUrl from "@/assets/funcImg/loading.svg" +import styles from "./loading.module.less" + +// 创建img元素 +function createImg() { + const imgEle = document.createElement("img") + // 给个html自定义属性 + imgEle.dataset.role = "loading" + imgEle.src = imgUrl + imgEle.classList.add(styles.img) + imgEle.title = "loading element" + return imgEle +} + +// 通过el找到img元素-在update钩子的时候,在update时已经创建了img元素了 +function getImgElement(element) { + return element.querySelector("img[data-role=loading]") +} + +export default function (el, binding) { + const img = getImgElement(el) + if (binding.value) { + // 这里要判断是否有元素,否则在update钩子会创建多个!!! + if (!img) { + const img = createImg() + el.appendChild(img) + } + } else { + if (img) { + img.remove() + } + } +} diff --git a/cdTMP/src/directives/loading/loading.module.less b/cdTMP/src/directives/loading/loading.module.less new file mode 100644 index 0000000..4f07554 --- /dev/null +++ b/cdTMP/src/directives/loading/loading.module.less @@ -0,0 +1,6 @@ +.img { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); +} diff --git a/cdTMP/src/hooks/fetchData.js b/cdTMP/src/hooks/fetchData.js new file mode 100644 index 0000000..a3c1bdd --- /dev/null +++ b/cdTMP/src/hooks/fetchData.js @@ -0,0 +1,23 @@ +import { ref } from "vue" + +/** + * 该hook传入一个远程数据储存默认值,以及请求远程数据的函数 + */ +const useFetchData = (defaultValue = {}, fetDataFunc) => { + const loadingData = ref(defaultValue) // 远程请求的数据 + const isDataLoading = ref(false) + // 该hook需要组件里面提供 -> fetchData的函数,返回远程请求数据的东西 + /// 相当于created + async function fetchOrigin() { + isDataLoading.value = true + const res = await fetDataFunc() + loadingData.value = res.data + isDataLoading.value = false + } + fetchOrigin() + return { + loadingData, + isDataLoading + } +} +export default useFetchData diff --git a/cdTMP/src/layout/default-layout.vue b/cdTMP/src/layout/default-layout.vue index f03a109..0ac1a19 100644 --- a/cdTMP/src/layout/default-layout.vue +++ b/cdTMP/src/layout/default-layout.vue @@ -146,7 +146,9 @@ const paddingStyle = computed(() => { overflow-y: hidden; } } - +.work-area { + position: relative; // 注意这个是改变v-loading这些东西 +} .menu-wrapper { height: 100%; overflow: auto; diff --git a/cdTMP/src/layout/project-layout.vue b/cdTMP/src/layout/project-layout.vue index c219eaa..9081a11 100644 --- a/cdTMP/src/layout/project-layout.vue +++ b/cdTMP/src/layout/project-layout.vue @@ -134,7 +134,8 @@ :options="roundOption" width="800px" :submit="handleRoundSubmit" - > + > + + cancelText="返回项目页面" + :cancel-button-props="{ status: 'warning' }" + :closable="false" + :mask-closable="false" + > + -
@@ -328,6 +329,15 @@ const createWtdItem = async (record) => { } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// 1.跳转到项目看板页面 +const handleBoardClick = (record) => { + router.push({ + name: "projBoard", + params: { + projectId: record.id + } + }) +} // CRUD-OPTIONS const crudRef = ref() @@ -343,7 +353,7 @@ const crudOptions = ref({ operationWidth: 500, showIndex: false, showTools: false, - operationColumnWidth: 220, // 操作列宽度 + operationColumnWidth: 280, // 操作列宽度 operationColumnAlign: "center", // 操作列对齐方式 // 处理弹窗的title beforeOpenAdd: function () { @@ -386,30 +396,27 @@ const crudOptions = ref({ { span: 12, formList: [{ dataIndex: "member" }] }, { span: 6, formList: [{ dataIndex: "soft_type" }] }, { span: 6, formList: [{ dataIndex: "devplant" }] }, - { span: 24, formList: [{ dataIndex: "abbreviation" }] }, - { span: 8, formList: [{ dataIndex: "quality_person" }] }, - { span: 8, formList: [{ dataIndex: "vise_person" }] }, - { span: 8, formList: [{ dataIndex: "config_person" }] } + { 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: 24, formList: [{ dataIndex: "security_level" }] }] - }, { formType: "grid", cols: [ - { span: 12, formList: [{ dataIndex: "test_level" }] }, + { span: 6, formList: [{ dataIndex: "security_level" }] }, + { span: 6, formList: [{ dataIndex: "language" }] }, { span: 12, formList: [{ dataIndex: "plant_type" }] } ] }, { formType: "grid", - cols: [{ span: 24, formList: [{ dataIndex: "report_type" }] }] + cols: [{ span: 24, formList: [{ dataIndex: "test_level" }] }] }, { formType: "grid", - cols: [{ span: 24, formList: [{ dataIndex: "language" }] }] + cols: [{ span: 24, formList: [{ dataIndex: "report_type" }] }] }, { formType: "grid", @@ -484,6 +491,7 @@ const crudColumns = ref([ }, { title: "项目名称", + width: 110, dataIndex: "name", search: true, commonRules: [{ required: true, message: "名称是必填" }] @@ -491,7 +499,7 @@ const crudColumns = ref([ { 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: "device", hide: true }, { title: "开始日期", dataIndex: "beginTime", @@ -502,7 +510,7 @@ const crudColumns = ref([ title: "结束时间", dataIndex: "endTime", formType: "date", - extra: "注意:开始时间和结束时间影响大纲、报告多个时间,谨慎填写", + extra: "注意:结束时间需要晚于最后一轮结束时间", commonRules: [ { required: true, @@ -626,7 +634,7 @@ const crudColumns = ref([ title: "测试级别", dataIndex: "test_level", commonRules: [{ required: true, message: "请至少选择一个测试级别" }], - addDefaultValue: ["6"], + addDefaultValue: ["4"], hide: true, formType: "checkbox", dict: { name: "test_level", props: { label: "title", value: "key" } } @@ -643,7 +651,7 @@ const crudColumns = ref([ { title: "报告类型", dataIndex: "report_type", - addDefaultValue: "1", + addDefaultValue: "9", search: true, commonRules: [{ required: true, message: "报告类型必填" }], // 字典-report_type @@ -656,16 +664,18 @@ const crudColumns = ref([ addDefaultValue: ["1"], commonRules: [{ required: true, message: "请至少选择一个" }], hide: true, - formType: "checkbox", + formType: "select", + multiple: true, dict: { name: "language", props: { label: "title", value: "key" } } }, { title: "依据标准", dataIndex: "standard", - addDefaultValue: ["1"], + addDefaultValue: ["1", "2", "3", "4", "9"], commonRules: [{ required: true, message: "请至少选择一个" }], hide: true, - formType: "checkbox", + multiple: true, + formType: "select", dict: { name: "standard", props: { label: "title", value: "key" } } }, { @@ -681,21 +691,27 @@ const crudColumns = ref([ title: "联系人", dataIndex: "entrust_contact", hide: true, - rules: [{ required: true, message: "联系人必填" }] + commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", + maxLength: 11, dataIndex: "entrust_contact_phone", hide: true, - rules: [{ required: true, message: "联系电话必填" }] + commonRules: [ + { required: true, message: "联系电话必填" }, + { + match: /^1[3456789]\d{9}$/, + message: "电话号码格式错误" + } + ] }, { formType: "input", title: "电子邮箱", dataIndex: "entrust_email", - hide: true, - rules: [{ required: true, message: "电子邮箱必填" }] + hide: true }, { title: "单位", @@ -710,21 +726,27 @@ const crudColumns = ref([ title: "联系人", dataIndex: "dev_contact", hide: true, - rules: [{ required: true, message: "联系人必填" }] + commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", + maxLength: 11, dataIndex: "dev_contact_phone", hide: true, - rules: [{ required: true, message: "联系电话必填" }] + commonRules: [ + { required: true, message: "联系电话必填" }, + { + match: /^1[3456789]\d{9}$/, + message: "电话号码格式错误" + } + ] }, { formType: "input", title: "电子邮箱", dataIndex: "dev_email", - hide: true, - rules: [{ required: true, message: "电子邮箱必填" }] + hide: true }, { title: "单位", @@ -739,21 +761,27 @@ const crudColumns = ref([ title: "联系人", dataIndex: "test_contact", hide: true, - rules: [{ required: true, message: "联系人必填" }] + commonRules: [{ required: true, message: "联系人必填" }] }, { formType: "input", title: "联系电话", dataIndex: "test_contact_phone", hide: true, - rules: [{ required: true, message: "联系电话必填" }] + maxLength: 11, + commonRules: [ + { required: true, message: "联系电话必填" }, + { + match: /^1[3456789]\d{9}$/, + message: "电话号码格式错误" + } + ] }, { formType: "input", title: "电子邮箱", dataIndex: "test_email", - hide: true, - rules: [{ required: true, message: "电子邮箱必填" }] + hide: true }, { title: "状态", diff --git a/cdTMP/vite.config.js b/cdTMP/vite.config.js index 535b89a..a278e78 100644 --- a/cdTMP/vite.config.js +++ b/cdTMP/vite.config.js @@ -25,7 +25,6 @@ export default ({ mode }) => { chunkSizeWarningLimit: 3000 // assetsPublicPath: "./" }, - server: { host: "0.0.0.0", port: env.VITE_APP_PORT || process.env.port,