From 2e990cc89e483a8e6480ccbcd2817885a6f71969 Mon Sep 17 00:00:00 2001 From: jingna <1264204245@qq.com> Date: Wed, 7 Jan 2026 13:44:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/testtask/index.ts | 28 ++ web/src/assets/MenuIcon/save.png | Bin 0 -> 280 bytes web/src/assets/MenuIcon/select.png | Bin 0 -> 560 bytes web/src/assets/MenuIcon/set.png | Bin 0 -> 665 bytes web/src/components/file/file/useFilePwd.js | 6 +- web/src/utils/rsaEncrypt.ts | 2 +- .../views/testdata/datamanagement/index.vue | 24 +- web/src/views/testdata/testtask/index.vue | 475 +++++++++++++++++- web/vite.config.ts | 2 +- 9 files changed, 505 insertions(+), 32 deletions(-) create mode 100644 web/src/assets/MenuIcon/save.png create mode 100644 web/src/assets/MenuIcon/select.png create mode 100644 web/src/assets/MenuIcon/set.png diff --git a/web/src/api/testtask/index.ts b/web/src/api/testtask/index.ts index 6b90488..480d68c 100644 --- a/web/src/api/testtask/index.ts +++ b/web/src/api/testtask/index.ts @@ -78,3 +78,31 @@ export function importTaskSql(queryParams: any) { headers: { 'Content-Type': 'multipart/form-data' } }); } +// +export function commonItems() { + return request({ + url: '/api/common-items', + method: 'get' + }); +} +export function addCommonItems(queryParams: any) { + return request({ + url: '/api/common-items', + method: 'post', + data: queryParams, + }); +} +export function delCommonItems(queryParams: any) { + return request({ + url: '/api/common-items', + method: 'delete', + data: queryParams, + }); +} +export function batchCommonItems(queryParams: any) { + return request({ + url: '/api/common-items/batch', + method: 'post', + data: queryParams, + }); +} \ No newline at end of file diff --git a/web/src/assets/MenuIcon/save.png b/web/src/assets/MenuIcon/save.png new file mode 100644 index 0000000000000000000000000000000000000000..cdab532a98f14d01e947e743a725fcc189ef94f1 GIT binary patch literal 280 zcmV+z0q6dSP)Px#(n&-?R5(xV(?1HrFcin}?^CbfDV*KYJE*H*aT2^j>*}hTw7BaX+Qre6I68`b z@`|9JB_Sjql3((~MHH9_c-u}26{79UPAZ#}#q2B>XH zeF^jN6)&AiS|Dztjy8$SYlprl%V*>(z+e~Y3}Ia$UjueB7wZ_<8uAm6BNo08d;)bL zzGqVdB!*YK=JBF<2Vc&QaI1jkZ&0qNyuu%l@Yf8=VrmjvC>etFFhn`Yy;!Wus@}hr e6lIn8GQR<%jLqPx$>PbXFR5(wSlRaw`Q5c1vGqJJr2Ur+T0$M}}Hb&f8#7I(D`GL_uGHYXFP&=)S zjVKARiaQ%HMl5X-5{sS1FAxHzh!7O)R4naMWRBb+6Ozpbc#C1~ednC}a^7b|+p5&v zA3;A6T{hjJEU`?^Y7Xp!*XE&-MQ$I=|jBCMs%apZ5qU> z9S&{AS~Wdr?=0*qbw8B2AKtS>g|>K9Q{Og>mxsHFw{@D@g3)H8300@v>zwz7!B(PI zdx_(Q53L{I;JYFHs-(Uqm{r6XRqB2waV$&Jx8Kci>d(NbvdcL2qRltOshfx|*@*7! zd3)-|z&#>vX2Yt7@8X7^VonBwKfv8A(M%Ck!JA`Z(uY_^m?Q412|%FMer8$6Em09bg3=KtH8Lb4KHApO84q>pR<@kbZ+o)cx{d9 z$6E@WZmw$TF#;Rax+n68uGWYyl-09S?oy0000Px%Q%OWYR5(wilTAoeVHAd+cSbWTH;Jo4Y7?}URuRr*)TSTOq(rdhrWgicKT=YP z)GGTiM8eX!W@?fU<)THR&DD+2rcF?^tQH{>g_)5v_v9VM(y3kF>U`%r=RN0p&wE7H ziS*bea;Wx=hf|I|1kbzstvKmZMUo+}P9ImMXyql+XM-5k8Q&amCu5%i)(5tXfy4>b zEa&|Oh{mnL#4w@>cm!Mkj$rtLk>n!RL%AFkv?D6Ln4YEqmyt?civit}j`Fg?k z7J-=OXmAxk#I?)7rO12MwYAB|Oi`DuArYR4@dn8vZI)xj%!i;Q;ix?gu(#JX{1E35 zje;J}QRA+D+vulw0&EY0OuQ5v^kVuH>9a13<3L9;k6Vhk_5z3k*Sr|b=}N9m0b4L` zT8NaO8RNC*Xiw#cg=gkympBWItJJlxT58>M)D=|Q=~_`3X5_OkQLATxFWP72W<1XG zDSTe5&w+0#?~I@&=-`W>HQ}f;cqr?)!c>Y`#Gz%Tqj5W6Vw6RSyn4;928i1@q6`>a zlSB1bjpie+C4kLlG=xIPjBem<@P!?5E65c?z0JPnCh!~Ifs2!lI{rsU zwVtE?Y#|*6h7C?@fdTTlicy&f8nFdhl~0Wsoq~#lqtR6W8RgwIQTLB!Y5)q-qJn#q zj_Utfre#O;zLnrpmV)8zb@o$?P1Wkv%H8+{ZRiBk`|76~00000NkvXXu0mjfss1{! literal 0 HcmV?d00001 diff --git a/web/src/components/file/file/useFilePwd.js b/web/src/components/file/file/useFilePwd.js index b6d93cd..7e689ae 100644 --- a/web/src/components/file/file/useFilePwd.js +++ b/web/src/components/file/file/useFilePwd.js @@ -1,6 +1,6 @@ import minimatch from "minimatch"; import useRouterData from "@/components/file/useRouterData"; -import { removeDuplicateSlashes } from "fast-glob/out/managers/patterns"; +// import { removeDuplicateSlashes } from "fast-glob/out/managers/patterns"; import common from "@/components/file/common"; import { useStorage } from '@vueuse/core'; let { storageKey, currentPath } = useRouterData() @@ -8,7 +8,9 @@ let { storageKey, currentPath } = useRouterData() const zfilePasswordCache = useStorage('zfile-pwd-cache', {}); export default function useFilePwd() { - +function removeDuplicateSlashes(path) { + return path.replace(/\\/g, '/').replace(/\/+/g, '/'); +} // 向缓存中写入当前路径密码 let putPathPwd = (pattern, password) => { if (pattern) { diff --git a/web/src/utils/rsaEncrypt.ts b/web/src/utils/rsaEncrypt.ts index 00590bb..cb55e8b 100644 --- a/web/src/utils/rsaEncrypt.ts +++ b/web/src/utils/rsaEncrypt.ts @@ -1,4 +1,4 @@ -import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' +import JSEncrypt from 'jsencrypt'; // 密钥对生成 http://web.chacuo.net/netrsakeypair const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' + diff --git a/web/src/views/testdata/datamanagement/index.vue b/web/src/views/testdata/datamanagement/index.vue index 431b753..054be59 100644 --- a/web/src/views/testdata/datamanagement/index.vue +++ b/web/src/views/testdata/datamanagement/index.vue @@ -154,7 +154,7 @@ function getProject() { setupWebSocket() ws2 = new WebSocket(userStore.WebSocketUrl + '/websocket/' + "id_extract_" + projectId.value) setupWebSocket2() - gettreedata() + gettreedata('') tonstatus(false) }) } @@ -179,7 +179,7 @@ function tonstatus(ready: any) { tonloading.value = true buttonmsg.value = '处理中...' } - gettreedata() + gettreedata('') }) //解压 @@ -242,9 +242,13 @@ const treeForm = ref({ //获取树数据 const treeRef = ref(); const filepath = ref('') -function gettreedata() { +function gettreedata(type:string) { treeloading.value = true - treeForm.value.taskId = projectId.value + if(type == '节点搜索' && projectId.value !== ''){ + treeForm.value.taskId = '' + }else{ + treeForm.value.taskId = projectId.value + } let keyar = projectArr.value.find(item => item.id === projectId.value); storageKey.value = keyar.key getTsNodesTree(treeForm.value).then((res: any) => { @@ -252,6 +256,7 @@ function gettreedata() { treeloading.value = false if (treedata.value[0]) { pathid.value = treedata.value[0].nodeId + projectId.value = treedata.value[0].taskId nodename.value = res.data[0].nodeName if (nodename.value == '根节点') { filepath.value = res.data[0].path @@ -273,6 +278,7 @@ const pathid = ref() const nodename = ref('') function handleNodeClick(data: any, node: any) { pathid.value = data.nodeId + projectId.value = data.taskId // filepath.value = data.path + data.nodeName + '/' creatform.value.parentId = '' patharr.value.length = 0 @@ -349,7 +355,7 @@ async function submitForm(formEl: any) { if (projectForme.value.nodeId) { updateTsNodes(projectForme.value).then((res: any) => { if (res.code == 0) { - gettreedata() + gettreedata('') ElMessage.success("修改成功") frame.value = false } @@ -358,7 +364,7 @@ async function submitForm(formEl: any) { } else { addTsNodes(projectForme.value).then((res: any) => { if (res.code == 0) { - gettreedata() + gettreedata('') ElMessage.success("添加成功") frame.value = false } @@ -393,7 +399,7 @@ function delSubItem(row: any) { loading.value = true deleteTsNodesById({ id: row.nodeId, path: row.path }).then((res: any) => { if (res.code == 0) { - gettreedata() + gettreedata('') ElMessage({ type: 'success', message: '删除成功', @@ -1863,12 +1869,12 @@ const configradio: any = ref(null)