ks001
This commit is contained in:
184
cdTMP/package-lock.json
generated
184
cdTMP/package-lock.json
generated
@@ -18,6 +18,7 @@
|
|||||||
"echarts": "^5.4.2",
|
"echarts": "^5.4.2",
|
||||||
"file2md5": "^1.3.0",
|
"file2md5": "^1.3.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
"mammoth": "^1.7.2",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"monaco-editor": "^0.33.0",
|
"monaco-editor": "^0.33.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
@@ -1551,6 +1552,14 @@
|
|||||||
"@xtuc/long": "4.2.2"
|
"@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": {
|
"node_modules/@xtuc/ieee754": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||||
@@ -1724,6 +1733,11 @@
|
|||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/binary-extensions": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
"resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||||
@@ -1733,6 +1747,11 @@
|
|||||||
"node": ">=8"
|
"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": {
|
"node_modules/boolbase": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
|
||||||
@@ -1972,6 +1991,11 @@
|
|||||||
"is-what": "^3.14.1"
|
"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": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "7.0.3",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
@@ -2055,6 +2079,11 @@
|
|||||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
|
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/dlv": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz",
|
"resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz",
|
||||||
@@ -2073,6 +2102,14 @@
|
|||||||
"node": ">=6.0.0"
|
"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": {
|
"node_modules/echarts": {
|
||||||
"version": "5.4.2",
|
"version": "5.4.2",
|
||||||
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
|
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
|
||||||
@@ -2807,6 +2844,11 @@
|
|||||||
"node": ">=0.10.0"
|
"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": {
|
"node_modules/import-fresh": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
|
"resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
@@ -2842,8 +2884,7 @@
|
|||||||
"node_modules/inherits": {
|
"node_modules/inherits": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
|
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/is-arrayish": {
|
"node_modules/is-arrayish": {
|
||||||
"version": "0.3.2",
|
"version": "0.3.2",
|
||||||
@@ -2915,6 +2956,11 @@
|
|||||||
"integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
|
"integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
|
||||||
@@ -3029,6 +3075,17 @@
|
|||||||
"node": ">=6"
|
"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": {
|
"node_modules/klona": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
|
"resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
|
||||||
@@ -3093,6 +3150,14 @@
|
|||||||
"node": ">= 0.8.0"
|
"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": {
|
"node_modules/lilconfig": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
|
"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",
|
"resolved": "https://registry.npmmirror.com/lodash.noop/-/lodash.noop-3.0.1.tgz",
|
||||||
"integrity": "sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg=="
|
"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": {
|
"node_modules/lru-cache": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||||
@@ -3190,6 +3265,37 @@
|
|||||||
"semver": "bin/semver"
|
"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": {
|
"node_modules/merge-stream": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
@@ -3417,6 +3523,11 @@
|
|||||||
"wrappy": "1"
|
"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": {
|
"node_modules/optionator": {
|
||||||
"version": "0.9.1",
|
"version": "0.9.1",
|
||||||
"resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz",
|
"resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz",
|
||||||
@@ -3458,6 +3569,11 @@
|
|||||||
"node": ">=10"
|
"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": {
|
"node_modules/parent-module": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
|
||||||
@@ -3492,7 +3608,6 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@@ -3716,6 +3831,11 @@
|
|||||||
"node": ">=10.13.0"
|
"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": {
|
"node_modules/proxy-from-env": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||||
@@ -3780,6 +3900,25 @@
|
|||||||
"node": ">=0.10.0"
|
"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": {
|
"node_modules/readdirp": {
|
||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
|
"resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
|
||||||
@@ -3939,6 +4078,11 @@
|
|||||||
"randombytes": "^2.1.0"
|
"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": {
|
"node_modules/shebang-command": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
|
"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",
|
"resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz",
|
||||||
"integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw=="
|
"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": {
|
"node_modules/strip-ansi": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||||
@@ -4297,6 +4459,11 @@
|
|||||||
"node": ">=10"
|
"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": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.0.13",
|
"version": "1.0.13",
|
||||||
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
||||||
@@ -4325,8 +4492,7 @@
|
|||||||
"node_modules/util-deprecate": {
|
"node_modules/util-deprecate": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "4.3.9",
|
"version": "4.3.9",
|
||||||
@@ -4655,6 +4821,14 @@
|
|||||||
"node": ">=12"
|
"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": {
|
"node_modules/yallist": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
|
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
"echarts": "^5.4.2",
|
"echarts": "^5.4.2",
|
||||||
"file2md5": "^1.3.0",
|
"file2md5": "^1.3.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
|
"mammoth": "^1.7.2",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"monaco-editor": "^0.33.0",
|
"monaco-editor": "^0.33.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
|
|||||||
@@ -1,6 +1,17 @@
|
|||||||
import { request } from "@/api/request"
|
import { request } from "@/api/request"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
/**
|
||||||
|
* 传入字段的code,返回所属code信息
|
||||||
|
* @returns 返回所属code信息
|
||||||
|
*/
|
||||||
|
getDictByCode(params = {}) {
|
||||||
|
return request({
|
||||||
|
url: `system/dataDict/list`,
|
||||||
|
method: "get",
|
||||||
|
params
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 请求dict全部数据
|
* 请求dict全部数据
|
||||||
* @returns dict全部数据
|
* @returns dict全部数据
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-layout-footer class="flex items-center justify-center h-10 footer text-center"
|
<a-layout-footer class="flex items-center justify-center h-10 footer text-center"
|
||||||
>成都测试管理平台</a-layout-footer
|
>成都测试管理平台
|
||||||
>
|
</a-layout-footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,12 @@
|
|||||||
<div class="left-side">
|
<div class="left-side">
|
||||||
<a-space>
|
<a-space>
|
||||||
<img src="@/assets/img/wxwx-logo.svg" class="logo" alt="logo" @click="handleClickLogo" />
|
<img src="@/assets/img/wxwx-logo.svg" class="logo" alt="logo" @click="handleClickLogo" />
|
||||||
<a-typography-title :style="{ margin: 0, fontSize: '18px' }" :heading="5">
|
<a-typography-title
|
||||||
|
class="title"
|
||||||
|
@click="handleClickLogo"
|
||||||
|
:style="{ margin: 0, fontSize: '18px' }"
|
||||||
|
:heading="5"
|
||||||
|
>
|
||||||
成都测试管理平台
|
成都测试管理平台
|
||||||
</a-typography-title>
|
</a-typography-title>
|
||||||
<icon-menu-fold
|
<icon-menu-fold
|
||||||
@@ -154,7 +159,6 @@ const handleLogout = () => {
|
|||||||
const toggleDrawerMenu = inject("toggleDrawerMenu")
|
const toggleDrawerMenu = inject("toggleDrawerMenu")
|
||||||
// 点击图标返回首页
|
// 点击图标返回首页
|
||||||
const handleClickLogo = () => {
|
const handleClickLogo = () => {
|
||||||
console.log("回到workplace")
|
|
||||||
router.push({ name: "Workplace" })
|
router.push({ name: "Workplace" })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,6 +225,27 @@ const testCreate = async () => {
|
|||||||
margin-left: 14px;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
|
|||||||
@@ -512,7 +512,6 @@ const loadMore = (nodeData) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//~~~~ 表单弹窗组件功能
|
//~~~~ 表单弹窗组件功能
|
||||||
const maFormModalRef = ref()
|
const maFormModalRef = ref()
|
||||||
const title = ref("")
|
const title = ref("")
|
||||||
|
|||||||
220
cdTMP/src/views/project/dut/components/FileInputModal/index.vue
Normal file
220
cdTMP/src/views/project/dut/components/FileInputModal/index.vue
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
<template>
|
||||||
|
<div class="file-input-container">
|
||||||
|
<a-modal
|
||||||
|
v-model:visible="modalVisible"
|
||||||
|
width="80%"
|
||||||
|
title="设计需求批量写入"
|
||||||
|
:unmount-on-close="true"
|
||||||
|
:mask-closable="false"
|
||||||
|
ok-text="录入"
|
||||||
|
:esc-to-close="false"
|
||||||
|
>
|
||||||
|
<div class="uploadContainer">
|
||||||
|
<span :style="{ marginBottom: '10px', flex: '0 1 160px' }">上传设计需求.docx:</span>
|
||||||
|
<a-upload
|
||||||
|
:style="{ marginBottom: '10px' }"
|
||||||
|
:custom-request="handleRquest"
|
||||||
|
:limit="1"
|
||||||
|
accept=".docx"
|
||||||
|
></a-upload>
|
||||||
|
</div>
|
||||||
|
<a-alert :style="{ margin: '10px 0' }" type="warning"
|
||||||
|
>上传录入提示信息:硬性要求,本辅助程序根据GJB438C文档结构进行解析,要求:1.功能需求章节必须包含<span
|
||||||
|
class="important-text"
|
||||||
|
>“CSCI功能需求”</span
|
||||||
|
>或<span class="important-text">“CSCI能力需求”</span>文字,且章节级别必须为<span class="important-text"
|
||||||
|
>2级</span
|
||||||
|
>; 2.外部接口章节必须包含<span class="important-text">“CSCI外部接口需求”</span
|
||||||
|
>文字,且章节级别必须为<span class="important-text">2级</span
|
||||||
|
>。暂时只能解析这两个章节,如果错误请修改文档文字后再次上传,后续优化。</a-alert
|
||||||
|
>
|
||||||
|
<div class="operation-container">
|
||||||
|
<span :style="{ marginRight: '10px', fontWeight: 700 }">操作按钮:</span>
|
||||||
|
<a-button type="primary" @click="handleCreateAtLatest">新增一条</a-button>
|
||||||
|
</div>
|
||||||
|
<div class="demand-container">
|
||||||
|
<a-collapse show-expand-icon>
|
||||||
|
<a-collapse-item v-for="(item, index) in htmlData" :key="index">
|
||||||
|
<template #header>
|
||||||
|
<a-input-group>
|
||||||
|
<a-input
|
||||||
|
placeholder="章节号"
|
||||||
|
v-model="item.capter"
|
||||||
|
:style="{ width: '110px' }"
|
||||||
|
@click.stop.prevent
|
||||||
|
></a-input>
|
||||||
|
<a-input
|
||||||
|
placeholder="标题"
|
||||||
|
v-model="item.title"
|
||||||
|
:style="{ width: '350px' }"
|
||||||
|
@click.stop.prevent
|
||||||
|
></a-input>
|
||||||
|
<a-input
|
||||||
|
placeholder="标识"
|
||||||
|
v-model="item.ident"
|
||||||
|
:style="{ width: '160px' }"
|
||||||
|
@click.stop.prevent
|
||||||
|
></a-input>
|
||||||
|
<a-select
|
||||||
|
:style="{ width: '200px' }"
|
||||||
|
placeholder="请选择设计需求类型"
|
||||||
|
@click.stop.prevent
|
||||||
|
v-model="item.demandType"
|
||||||
|
>
|
||||||
|
<a-option v-for="it in demandType" :value="it.key">{{ it.title }}</a-option>
|
||||||
|
</a-select>
|
||||||
|
</a-input-group>
|
||||||
|
</template>
|
||||||
|
<div class="content">
|
||||||
|
<a-textarea
|
||||||
|
show-word-limit
|
||||||
|
placeholder="设计需求内容"
|
||||||
|
auto-size
|
||||||
|
v-model="item.content"
|
||||||
|
allow-clear
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<template #extra>
|
||||||
|
<a-button-group>
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
status="success"
|
||||||
|
size="mini"
|
||||||
|
@click.stop.prevent="handledownCreate(index)"
|
||||||
|
>
|
||||||
|
+下方新增
|
||||||
|
</a-button>
|
||||||
|
<a-button
|
||||||
|
type="primary"
|
||||||
|
status="danger"
|
||||||
|
size="mini"
|
||||||
|
@click.stop.prevent="handleDelete(index)"
|
||||||
|
>
|
||||||
|
删除该条
|
||||||
|
</a-button>
|
||||||
|
</a-button-group>
|
||||||
|
</template>
|
||||||
|
</a-collapse-item>
|
||||||
|
</a-collapse>
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from "vue"
|
||||||
|
import mammoth from "mammoth"
|
||||||
|
import dictApi from "@/api/system/dict"
|
||||||
|
import { parseHtmlStringByDemandDut } from "@/views/project/dut/tools/parseHtmlString"
|
||||||
|
// 单个设计需求录入模版
|
||||||
|
const templateDemandObj = {
|
||||||
|
capter: "",
|
||||||
|
title: "",
|
||||||
|
ident: "",
|
||||||
|
demandType: "",
|
||||||
|
content: ""
|
||||||
|
}
|
||||||
|
// 先请求设计需求的dict,然后给demandType选项
|
||||||
|
let demandType = []
|
||||||
|
const getDictDemandType = async function () {
|
||||||
|
const res = await dictApi.getDictByCode({ code: "demandType" })
|
||||||
|
demandType = res.data
|
||||||
|
}
|
||||||
|
getDictDemandType()
|
||||||
|
// 弹窗显示
|
||||||
|
const modalVisible = ref(false)
|
||||||
|
// 全部html数据-循环创建折叠项
|
||||||
|
const htmlData = ref([
|
||||||
|
{
|
||||||
|
capter: "4.2.1.1",
|
||||||
|
title: "解析并执行注入指令",
|
||||||
|
ident: "RQGN01-UART-ZRZL",
|
||||||
|
demandType: "1",
|
||||||
|
content: `WXT星载触发处理单元主控软件通过UART总线与PDPU之间通讯,完成数据注入和广播注入的接收,其中包括注入指令、星表、主控软件目标文件、FPGA目标文件、算法参数、广播时间码、姿态等数据接收。
|
||||||
|
通讯过程按照《EP卫星PDPU与WXT星载触发处理单元的通信协议》有关规定执行。`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
capter: "4.2.1.2",
|
||||||
|
title: "接受星表注入",
|
||||||
|
ident: "RQGN01-UART",
|
||||||
|
demandType: "1",
|
||||||
|
content: `星表数据存储在触发处理单元NORFLASH基地址为0xBC000000,偏移地址0x100000~1FFFFF空间中,主备份NORFLASH存储同一份星表数据。软件在初始化的时候,将NORFLASH中的星表数据读取到算法调用内存空间。`
|
||||||
|
},
|
||||||
|
{
|
||||||
|
capter: "4.2.1.3",
|
||||||
|
title: "接收软件代码重构",
|
||||||
|
ident: "RQGN01-1553B-SWRCV",
|
||||||
|
demandType: "1",
|
||||||
|
content: `主控软件接收软件重构目标文件,支持乱序接收软件重构目标代码,每接收到一个首包(包序号为0),则认为是新一次目标文件接收开始,更新“软件重构状态”为软件重构接收中;若没有收到首包,对于之后接收到的中间包和尾包都丢弃;当尾包包序号以前的所有序号的数据包均接收完毕,则认为主控软件目标文件接收完毕,更新“软件重构状态”为软件重构写入中;在接收过程中,如果接收到中间包的包序号大于尾包包序号,则丢弃该中间包,并置“软件重构状态为”包序号错,之后停止当前目标文件接收直至接收到新的首包,如果前后收到两个包序号相同的数据包,则保留后接收到的数据包(尾包以第一次收到的为准)。`
|
||||||
|
}
|
||||||
|
])
|
||||||
|
// 上传行为函数
|
||||||
|
const handleRquest = function (options) {
|
||||||
|
const { onProgress, onError, onSuccess, fileItem } = options
|
||||||
|
onProgress(0.1)
|
||||||
|
// 获取文件
|
||||||
|
let reader = new FileReader()
|
||||||
|
reader.readAsArrayBuffer(fileItem.file)
|
||||||
|
reader.onload = function (loadEvent) {
|
||||||
|
let arrayBuffer = loadEvent.target.result
|
||||||
|
mammoth
|
||||||
|
.convertToHtml({ arrayBuffer: arrayBuffer })
|
||||||
|
.then((res) => {
|
||||||
|
// 已经上传到浏览器了,需要解析为列表
|
||||||
|
onSuccess(1)
|
||||||
|
const rawHtml = res.value
|
||||||
|
const finalData = parseHtmlStringByDemandDut(rawHtml)
|
||||||
|
// 将finalData赋值给响应式数据ref变量:htmlData
|
||||||
|
})
|
||||||
|
.catch(function (error) {
|
||||||
|
console.log("处理错误导致失败,请检查前端代码")
|
||||||
|
console.log("错误如下:", error)
|
||||||
|
onError(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 上方按钮:直接在最下新增一条
|
||||||
|
const handleCreateAtLatest = () => {
|
||||||
|
const newDemand = JSON.parse(JSON.stringify(templateDemandObj))
|
||||||
|
htmlData.value.push(newDemand)
|
||||||
|
}
|
||||||
|
// 点击单条右侧按钮:下方新增 - 深拷贝,并插入到下方
|
||||||
|
const handledownCreate = (index) => {
|
||||||
|
const newDemand = JSON.parse(JSON.stringify(templateDemandObj))
|
||||||
|
htmlData.value.splice(index + 1, 0, newDemand)
|
||||||
|
}
|
||||||
|
// 点击单条右侧按钮:删除
|
||||||
|
const handleDelete = (index) => {
|
||||||
|
htmlData.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
// 打开弹窗并初始化form数据
|
||||||
|
const open = function () {
|
||||||
|
// 打开时候传入对象可初始化from
|
||||||
|
modalVisible.value = true
|
||||||
|
}
|
||||||
|
// 暴露该组件ref的方法
|
||||||
|
defineExpose({ open })
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.uploadContainer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
& span {
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.demand-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.operation-container {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.important-text {
|
||||||
|
font-weight: 700;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -6,8 +6,17 @@
|
|||||||
<template #ident="{ record }">
|
<template #ident="{ record }">
|
||||||
{{ showType(record) }}
|
{{ showType(record) }}
|
||||||
</template>
|
</template>
|
||||||
|
<template #tableAfterButtons>
|
||||||
|
<a-button status="success" type="outline" @click="handleAddFileInputDemand">
|
||||||
|
<template #icon>
|
||||||
|
<icon-plus />
|
||||||
|
</template>
|
||||||
|
上传需求快捷录入
|
||||||
|
</a-button>
|
||||||
|
</template>
|
||||||
</ma-crud>
|
</ma-crud>
|
||||||
</div>
|
</div>
|
||||||
|
<file-input-modal ref="fileInputRef"></file-input-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -17,6 +26,7 @@ import { useRoute, useRouter } from "vue-router"
|
|||||||
import designDemandApi from "@/api/project/designDemand"
|
import designDemandApi from "@/api/project/designDemand"
|
||||||
import commonApi from "@/api/common"
|
import commonApi from "@/api/common"
|
||||||
import { useTreeDataStore } from "@/store"
|
import { useTreeDataStore } from "@/store"
|
||||||
|
import FileInputModal from "./components/FileInputModal/index.vue"
|
||||||
const treeDataStore = useTreeDataStore()
|
const treeDataStore = useTreeDataStore()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -152,6 +162,11 @@ const crudColumns = ref([
|
|||||||
height: 300
|
height: 300
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
// ~~~大功能打开ma-form-modal~~~
|
||||||
|
const fileInputRef = ref(null)
|
||||||
|
const handleAddFileInputDemand = () => {
|
||||||
|
fileInputRef.value.open();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped></style>
|
<style lang="less" scoped></style>
|
||||||
|
|||||||
63
cdTMP/src/views/project/dut/tools/parseHtmlString.js
Normal file
63
cdTMP/src/views/project/dut/tools/parseHtmlString.js
Normal file
@@ -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的索引也可以知道章节号
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
### login页面样式
|
### 完成需求录入功能
|
||||||
1.明天了解arco和mine两个的user.js(store里面的)
|
1. 设计需求的录入
|
||||||
|
|||||||
Reference in New Issue
Block a user