From 91864994af919c850b1ad43adb8f152a334d0392 Mon Sep 17 00:00:00 2001 From: ks3356143 <314298729@qq.com> Date: Fri, 24 May 2024 19:27:16 +0800 Subject: [PATCH] ks001 --- cdTMP/package-lock.json | 184 ++++++++++++++- cdTMP/package.json | 1 + cdTMP/src/api/system/dict.js | 11 + cdTMP/src/layout/components/footer.vue | 4 +- cdTMP/src/layout/components/navbar.vue | 29 ++- cdTMP/src/layout/project-layout.vue | 1 - .../dut/components/FileInputModal/index.vue | 220 ++++++++++++++++++ cdTMP/src/views/project/dut/index.vue | 15 ++ .../project/dut/tools/parseHtmlString.js | 63 +++++ cdTMP/进度.md | 4 +- 10 files changed, 520 insertions(+), 12 deletions(-) create mode 100644 cdTMP/src/views/project/dut/components/FileInputModal/index.vue create mode 100644 cdTMP/src/views/project/dut/tools/parseHtmlString.js diff --git a/cdTMP/package-lock.json b/cdTMP/package-lock.json index c670cff..5b9a71b 100644 --- a/cdTMP/package-lock.json +++ b/cdTMP/package-lock.json @@ -18,6 +18,7 @@ "echarts": "^5.4.2", "file2md5": "^1.3.0", "lodash": "^4.17.21", + "mammoth": "^1.7.2", "mitt": "^3.0.0", "monaco-editor": "^0.33.0", "nprogress": "^0.2.0", @@ -1551,6 +1552,14 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1724,6 +1733,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -1733,6 +1747,11 @@ "node": ">=8" } }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", @@ -1972,6 +1991,11 @@ "is-what": "^3.14.1" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2055,6 +2079,11 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "dev": true }, + "node_modules/dingbat-to-unicode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", + "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==" + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz", @@ -2073,6 +2102,14 @@ "node": ">=6.0.0" } }, + "node_modules/duck": { + "version": "0.1.12", + "resolved": "https://registry.npmmirror.com/duck/-/duck-0.1.12.tgz", + "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", + "dependencies": { + "underscore": "^1.13.1" + } + }, "node_modules/echarts": { "version": "5.4.2", "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz", @@ -2807,6 +2844,11 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2842,8 +2884,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/is-arrayish": { "version": "0.3.2", @@ -2915,6 +2956,11 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", @@ -3029,6 +3075,17 @@ "node": ">=6" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/klona": { "version": "2.0.6", "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz", @@ -3093,6 +3150,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", @@ -3146,6 +3211,16 @@ "resolved": "https://registry.npmmirror.com/lodash.noop/-/lodash.noop-3.0.1.tgz", "integrity": "sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg==" }, + "node_modules/lop": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/lop/-/lop-0.4.1.tgz", + "integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==", + "dependencies": { + "duck": "^0.1.12", + "option": "~0.2.1", + "underscore": "^1.13.1" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3190,6 +3265,37 @@ "semver": "bin/semver" } }, + "node_modules/mammoth": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/mammoth/-/mammoth-1.7.2.tgz", + "integrity": "sha512-MqWU2hcLf1I5QMKyAbfJCvrLxnv5WztrAQyorfZ+WPq7Hk82vZFmvfR2/64ajIPpM4jlq0TXp1xZvp/FFaL1Ug==", + "dependencies": { + "@xmldom/xmldom": "^0.8.6", + "argparse": "~1.0.3", + "base64-js": "^1.5.1", + "bluebird": "~3.4.0", + "dingbat-to-unicode": "^1.0.1", + "jszip": "^3.7.1", + "lop": "^0.4.1", + "path-is-absolute": "^1.0.0", + "underscore": "^1.13.1", + "xmlbuilder": "^10.0.0" + }, + "bin": { + "mammoth": "bin/mammoth" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mammoth/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3417,6 +3523,11 @@ "wrappy": "1" } }, + "node_modules/option": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/option/-/option-0.2.4.tgz", + "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==" + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", @@ -3458,6 +3569,11 @@ "node": ">=10" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", @@ -3492,7 +3608,6 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3716,6 +3831,11 @@ "node": ">=10.13.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -3780,6 +3900,25 @@ "node": ">=0.10.0" } }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", @@ -3939,6 +4078,11 @@ "randombytes": "^2.1.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4016,6 +4160,24 @@ "resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz", "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4297,6 +4459,11 @@ "node": ">=10" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmmirror.com/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -4325,8 +4492,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vite": { "version": "4.3.9", @@ -4655,6 +4821,14 @@ "node": ">=12" } }, + "node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", diff --git a/cdTMP/package.json b/cdTMP/package.json index 5f0ca7d..a13cf53 100644 --- a/cdTMP/package.json +++ b/cdTMP/package.json @@ -21,6 +21,7 @@ "echarts": "^5.4.2", "file2md5": "^1.3.0", "lodash": "^4.17.21", + "mammoth": "^1.7.2", "mitt": "^3.0.0", "monaco-editor": "^0.33.0", "nprogress": "^0.2.0", diff --git a/cdTMP/src/api/system/dict.js b/cdTMP/src/api/system/dict.js index a94d7e5..af6cc13 100644 --- a/cdTMP/src/api/system/dict.js +++ b/cdTMP/src/api/system/dict.js @@ -1,6 +1,17 @@ import { request } from "@/api/request" export default { + /** + * 传入字段的code,返回所属code信息 + * @returns 返回所属code信息 + */ + getDictByCode(params = {}) { + return request({ + url: `system/dataDict/list`, + method: "get", + params + }) + }, /** * 请求dict全部数据 * @returns dict全部数据 diff --git a/cdTMP/src/layout/components/footer.vue b/cdTMP/src/layout/components/footer.vue index ade2866..a8c2226 100644 --- a/cdTMP/src/layout/components/footer.vue +++ b/cdTMP/src/layout/components/footer.vue @@ -1,8 +1,8 @@ diff --git a/cdTMP/src/layout/components/navbar.vue b/cdTMP/src/layout/components/navbar.vue index 2009663..8770518 100644 --- a/cdTMP/src/layout/components/navbar.vue +++ b/cdTMP/src/layout/components/navbar.vue @@ -3,7 +3,12 @@
- + 成都测试管理平台 { const toggleDrawerMenu = inject("toggleDrawerMenu") // 点击图标返回首页 const handleClickLogo = () => { - console.log("回到workplace") router.push({ name: "Workplace" }) } @@ -221,6 +225,27 @@ const testCreate = async () => { margin-left: 14px; } } + +.title { + cursor: pointer; + font-weight: 700; + transition: all 0.3s; + text-shadow: 2px 2px 20px rgba(0, 0, 0, 0.2); + &:hover { + color: #fff; + -webkit-animation: neon6 0.5s ease-in-out infinite alternate; + -moz-animation: neon6 0.5s ease-in-out infinite alternate; + animation: neon6 0.5s ease-in-out infinite alternate; + } +} +@keyframes neon6 { + from { + text-shadow: 0 0 10px #fff, 0 0 20px #2563eb, 0 0 30px #2563eb, 0 0 40px #2563eb; + } + to { + text-shadow: 0 0 5px #fff, 0 0 10px #2563eb, 0 0 15px #2563eb, 0 0 20px #2563eb; + } +} diff --git a/cdTMP/src/views/project/dut/index.vue b/cdTMP/src/views/project/dut/index.vue index 0d72b9c..d0d1001 100644 --- a/cdTMP/src/views/project/dut/index.vue +++ b/cdTMP/src/views/project/dut/index.vue @@ -6,8 +6,17 @@ +
+ @@ -17,6 +26,7 @@ import { useRoute, useRouter } from "vue-router" import designDemandApi from "@/api/project/designDemand" import commonApi from "@/api/common" import { useTreeDataStore } from "@/store" +import FileInputModal from "./components/FileInputModal/index.vue" const treeDataStore = useTreeDataStore() const route = useRoute() const router = useRouter() @@ -152,6 +162,11 @@ const crudColumns = ref([ height: 300 } ]) +// ~~~大功能打开ma-form-modal~~~ +const fileInputRef = ref(null) +const handleAddFileInputDemand = () => { + fileInputRef.value.open(); +} diff --git a/cdTMP/src/views/project/dut/tools/parseHtmlString.js b/cdTMP/src/views/project/dut/tools/parseHtmlString.js new file mode 100644 index 0000000..501c499 --- /dev/null +++ b/cdTMP/src/views/project/dut/tools/parseHtmlString.js @@ -0,0 +1,63 @@ +/** + * 辅助函数,给每个h2增加个自定义属性,用来储存章节号,返回功能/接口h2节点对象【非DOM,有dom属性表示DOM】 + */ +function getNeedH2NodeList(h1h2Node) { + const h2ObjList = [] + // 首先将h1和h2节点都组成一个数组 + let h1Index = 0, + h2Index = 0 + h1h2Node.forEach((hDom) => { + if (hDom.tagName === "H1") { + // 找到h1,那么其index+1 + h1Index += 1 + h2Index = 0 + } else if (hDom.tagName === "H2") { + // 按顺序找到h2了, + h2Index += 1 + let h2Obj = { + chapter: h1Index + "." + h2Index, + dom: hDom, + text: hDom.innerText + } + h2ObjList.push(h2Obj) + } + }) + // 1.后续增加识别的章节可从这里修改 + return h2ObjList.filter( + (item) => + item.text.includes("CSCI功能需求") || + item.text.includes("CSCI外部接口需求") || + item.text.includes("CSCI能力需求") + ) +} + +/** + * 思路:因为mammoth解析后变为html字符串,使用new DOMParser()转换为DOM进行解析 + * 作用:创建DOMParser()对象,然后解析需求规格说明的html字符串,目前仅支持功能和接口需求 + * 返回:Array[Object[String,String]] + */ +export function parseHtmlStringByDemandDut(htmlString) { + const parser = new DOMParser() + const doc = parser.parseFromString(htmlString, "text/html") + const h1h2NodeList = doc.querySelectorAll("h1,h2") + // 这一步得到功能需求、接口需求的h2对象,里面有dom、text、chapter + const h2ObjArray = getNeedH2NodeList(h1h2NodeList) + // 这里开始就要获取全部有用信息: + // 2.遍历全部DOM + const allArray = Array.from(doc.body.children) + const demandArray = [] + let h2Index = 0 + let locker = false + allArray.forEach((element) => { + // 2.1.找到h2ObjArray的位置 + if (h2ObjArray[h2Index] && element === h2ObjArray[h2Index].dom) { + h2Index += 1 + locker = true + } else if (element.tagName === "H1" || element.tagName === "H2") { + locker = false + } else if (locker && element.tagName !== "H2") { + console.log(element) + // 这里就是有效信息了,注意还要找H3/H4等信息 - 然后通过h2的索引也可以知道章节号 + } + }) +} diff --git a/cdTMP/进度.md b/cdTMP/进度.md index af6cc89..a986070 100644 --- a/cdTMP/进度.md +++ b/cdTMP/进度.md @@ -1,2 +1,2 @@ -### login页面样式 -1.明天了解arco和mine两个的user.js(store里面的) +### 完成需求录入功能 +1. 设计需求的录入