From 158b81507fffe14762411c08f4cc2bb4a32d619b Mon Sep 17 00:00:00 2001 From: han2015 <1019850453@qq.com> Date: Thu, 18 Sep 2025 11:30:18 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/doc/manage.vue | 110 +++++++++++++++++++++++++-------------- src/views/doc/space.vue | 13 +++-- 2 files changed, 81 insertions(+), 42 deletions(-) diff --git a/src/views/doc/manage.vue b/src/views/doc/manage.vue index 8825cbc..55e90e6 100644 --- a/src/views/doc/manage.vue +++ b/src/views/doc/manage.vue @@ -349,36 +349,38 @@ function onDBclickMatter(row:matterInfo){ //树节点展开 function onNodeExpand(node: TreeNode, resolve: (data: matterTree[]) => void, reject: () => void) { + let cuuid ="root" if ((node.data as matterTree).uuid) { - const cuuid = (node.data as matterTree).uuid + cuuid= (node.data as matterTree).uuid currentNode.value = node.data - - let _page: matterPage = { - page: 0, - pageSize: 50, - orderCreateTime: "DESC", - orderDir: "DESC", - puuid: cuuid, - deleted: false - }; - - getMatterList(uid, _page).then((resp) => { - paginInfo.value = { total: resp.data.totalPages, page: resp.data.page } - matterList.value = resp.data.data - // .filter((item)=>{ - // return !item.dir - // }) - let node_data = resp.data.data.filter((item) => { - return item.dir - }).map((val) => { - const copy = structuredClone(val) - copy.dir = !copy.dir - return copy - }) - - resolve(node_data) - }).catch(() => reject()) } + + let _page: matterPage = { + page: 0, + pageSize: 50, + orderCreateTime: "DESC", + orderDir: "DESC", + puuid: cuuid, + deleted: false + }; + + getMatterList(uid, _page).then((resp) => { + paginInfo.value = { total: resp.data.totalPages, page: resp.data.page } + matterList.value = resp.data.data + // .filter((item)=>{ + // return !item.dir + // }) + let node_data = resp.data.data.filter((item) => { + return item.dir + }).map((val) => { + const copy = structuredClone(val) + copy.dir = !copy.dir + return copy + }) + + resolve(node_data) + }).catch(() => reject()) + } //树节点单击 function onNodeClick(data:matterTree,node:TreeNode,self:any,env:any){ @@ -528,7 +530,7 @@ async function handleFolderFile(option:File){ const _path = option.webkitRelativePath const _dir=_path.replace(/\/[^/]+\w+$/,"") //只保留文件夹目录,[^/]就是用来限制,只能是最后一个目录 const node = matterList.value.filter((item)=>{ - return item.dir && item.path?.endsWith(_dir) + return item.dir && _dir.endsWith(item.name!) }) let puuid="" @@ -536,10 +538,11 @@ async function handleFolderFile(option:File){ if(node.length==0){ const subs= await doCreateMultyDir(_dir,currentNode.value.uuid) matterList.value.push(...subs) //这里如果子文件夹多的时候,可能会造成第一级路径多次创建,只是造成资源浪费,问题不大 - + const newnodes=matterList.value.filter((item)=>{ - return item.dir && item.path?.endsWith(_dir) + return item.dir && _dir.endsWith(item.name!) }) + if(newnodes.length>0){ puuid=newnodes[0].uuid }else{ @@ -567,6 +570,13 @@ async function doCreateMultyDir(path:string,uuid:string){ const list=[]; const dirs=path.split("/") for(let i=0;i{ + return item.dir && dirs[i].endsWith(item.name!) + }) + if(node.length>0) { + uuid = node[0].uuid + continue; + } await postCreateDir(uid,{ userUuid:uid, puuid:uuid, @@ -724,10 +734,10 @@ function onSpacePManage(row:matterInfo){ //http://172.20.2.87:6010/api/alien/preview/5a10aaf6-396e-4d9a-7e87-3c5c8029d4db/123.png?ir=fill_100_100 //渲染完页面再执行 onMounted(() => { - treeRef.value.append( - {name:'个人空间',uuid:'root',dir:false}, - currentNode.value.uuid - ) + // treeRef.value.append( + // {name:'个人空间',uuid:'root',dir:false}, + // currentNode.value.uuid + // ) //加载我的空间列表 getMySpaces(uid,{roles:Departs.value}).then((resp)=>{ resp.data.forEach((item)=>{ @@ -753,7 +763,10 @@ const handleSelectionChange = (val:matterInfo[]) => { -
共享空间
+
+ 共享空间 + +
{ @@ -800,6 +816,9 @@ const handleSelectionChange = (val:matterInfo[]) => { +
+ 回收站 +
@@ -947,6 +966,19 @@ const handleSelectionChange = (val:matterInfo[]) => { --el-tree-expand-icon-color:#4c4c4e; } } +.area_header{ + display: flex; + margin-top: 9px; + padding: 12px 7px; + background-color: #e1e1e1; + align-items: center; + .area_name{ + align-content: center; + margin-left: 8px; + color: #686854; + font-weight: bold; + } +} .tree-item{ display: flex; @@ -975,7 +1007,7 @@ const handleSelectionChange = (val:matterInfo[]) => { .search{ margin-left: auto; - margin-right: 20px; + margin-right: 26px; display:inherit; } .shareDialog{ diff --git a/src/views/doc/space.vue b/src/views/doc/space.vue index de14972..2dee641 100644 --- a/src/views/doc/space.vue +++ b/src/views/doc/space.vue @@ -410,7 +410,7 @@ async function handleFolderFile(option:File){ const _path = option.webkitRelativePath const _dir=_path.replace(/\/[^/]+\w+$/,"") //只保留文件夹目录,[^/]就是用来限制,只能是最后一个目录 const node = matterList.value.filter((item)=>{ - return item.dir && item.path?.endsWith(_dir) + return item.dir && _dir.endsWith(item.name!) }) let puuid="" @@ -420,7 +420,7 @@ async function handleFolderFile(option:File){ matterList.value.push(...subs) //这里如果子文件夹多的时候,可能会造成第一级路径多次创建,只是造成资源浪费,问题不大 const newnodes=matterList.value.filter((item)=>{ - return item.dir && item.path?.endsWith(_dir) + return item.dir && _dir.endsWith(item.name!) //item.path?.endsWith(_dir) }) if(newnodes.length>0){ puuid=newnodes[0].uuid @@ -451,6 +451,13 @@ async function doCreateMultyDir(path:string,uuid:string){ const list=[]; const dirs=path.split("/") for(let i=0;i{ + return item.dir && dirs[i].endsWith(item.name!) + }) + if(node.length>0) { + uuid = node[0].uuid + continue; + } await doCreateSpaceDir(props.uid,{ puuid:uuid, name:dirs[i], @@ -744,7 +751,7 @@ function isOwner(){ } .search{ margin-left: auto; - margin-right: 20px; + margin-right: -4px; display:inherit; } From 6516b1cbfed9a6dabb5e29b7b4f81e1ae554c5b3 Mon Sep 17 00:00:00 2001 From: han2015 <1019850453@qq.com> Date: Thu, 18 Sep 2025 16:36:11 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BA=91=E7=9B=98=EF=BC=9A=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=9B=9E=E6=94=B6=E7=AB=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/doc/index.ts | 17 +++++++ src/views/doc/manage.vue | 105 +++++++++++++++++++++++++++++---------- 2 files changed, 97 insertions(+), 25 deletions(-) diff --git a/src/api/doc/index.ts b/src/api/doc/index.ts index df9310a..52932c3 100644 --- a/src/api/doc/index.ts +++ b/src/api/doc/index.ts @@ -99,6 +99,23 @@ export function getMatterList( uid:string,data?: matterPage): AxiosPromise { +export function getRecyclingList( uid:string,data?: matterPage): AxiosPromise { + return request({ + url: '/hxpan/api/matter/recycling', + method: 'post', + headers: { + 'Identifier':uid, + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: data + }); +} + /** * 新建目录 */ diff --git a/src/views/doc/manage.vue b/src/views/doc/manage.vue index 55e90e6..142923c 100644 --- a/src/views/doc/manage.vue +++ b/src/views/doc/manage.vue @@ -7,7 +7,8 @@ import { getExpirTime, getFileIcon, readableSize,fileType} from "./tools" import sharePermission from './sharePermission.vue'; import { useUserStore } from "@/store/modules/user"; -import { getMatterList,postCreateDir,postDelMatter,postCreateShare,postMatterRename,postDelMatBatch,getMySpaces,doCreateSpace} from "@/api/doc/index" +import { getMatterList,postCreateDir,postDelMatter,postCreateShare,postMatterRename, + postDelMatBatch,getMySpaces,doCreateSpace,getRecyclingList} from "@/api/doc/index" import { matterPage,matterInfo,respCreateShare,matterTree, doFileUpload,matterPermit} from "@/api/doc/type" import { h } from 'vue' import router from "@/router"; @@ -69,6 +70,7 @@ const spaceTreeRef = ref(); //space的树树组件的引用 let spaceNodeUid="" //用来判断树组件的展开和关闭,如何只是展开和关闭的点击事件不在刷新,通currentNode的作用 const modListOrGrild=ref(true) +const modRecycling=ref(false) const Departs = computed(() => { return `${'p0'+userStore.userInfoCont.userId},${userStore.userInfoCont.company},${userStore.userInfoCont.department},${userStore.userInfoCont.organization}` @@ -282,6 +284,41 @@ function onSearchFile(name?:string){ }) } +//获取回收站文件 +function showRecycling(){ + modRecycling.value=true + currentNode.value={} //清空当前节点 + if(!PRIVATESPACE.value) { //共享空间模式要切换到个人空间 + PRIVATESPACE.value=true + } + + getRecyclingList(uid,{}).then((resp)=>{ + paginInfo.value={total:1,page:0} + matterList.value=resp.data + }) +} +//恢复删除文件 +function restoreMatter (row:matterInfo){ + if (row.uuid){ + ElMessageBox.confirm(`确认要恢复( ${row.name}) ?`, "警告", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }).then(()=>{ + postDelMatter(uid,{ + "uuid":row.uuid, + "restore":"true", + }).then(()=>{ + ElMessage({ + message: '已成功恢复文件,请在个人空间查看。', + type: 'success', + plain: true, + }) + }) + }) + } +} + //加载目录文件列表 function onLoadMatterList(){ let _page: matterPage = { @@ -349,6 +386,7 @@ function onDBclickMatter(row:matterInfo){ //树节点展开 function onNodeExpand(node: TreeNode, resolve: (data: matterTree[]) => void, reject: () => void) { + modRecycling.value=false let cuuid ="root" if ((node.data as matterTree).uuid) { cuuid= (node.data as matterTree).uuid @@ -384,12 +422,18 @@ function onNodeExpand(node: TreeNode, resolve: (data: matterTree[]) => void, rej } //树节点单击 function onNodeClick(data:matterTree,node:TreeNode,self:any,env:any){ + modRecycling.value=false if(!PRIVATESPACE.value) { PRIVATESPACE.value=true } - if (currentNode.value.uuid === data.uuid) return; - const cuuid = data.uuid - currentNode.value = data + if (data){ + if (currentNode.value.uuid === data.uuid) return; + //const cuuid = data.uuid + currentNode.value = data + }else{ + currentNode.value={uuid:"root"} + } + onLoadMatterList() return let _page: matterPage = { @@ -590,7 +634,7 @@ async function doCreateMultyDir(path:string,uuid:string){ } function handleMouseEnter(row:any){ - currentHoverRow.value=row.name + currentHoverRow.value=row.uuid } //上传成功 function handleSingleUpload(response:any){ @@ -636,6 +680,7 @@ function onNewSpace(){ function onSpaceNodeClick(data:matterTree,node:TreeNode,self:any,env:any){ if(PRIVATESPACE.value) { //如果打开了个人空间,突然点击共享空间,要及时切换状态 PRIVATESPACE.value=false + modRecycling.value=false } //如果在单个组件上重复点击,不在刷新请求 if(spaceNodeUid==data.uuid) return; @@ -816,13 +861,14 @@ const handleSelectionChange = (val:matterInfo[]) => { -
+
回收站
- + 回收站 + 根目录/ @@ -834,7 +880,7 @@ const handleSelectionChange = (val:matterInfo[]) => { - +
{ :row-style ="() => ({ lineHeight: '36px' })" @selection-change="handleSelectionChange" @cell-mouse-enter="handleMouseEnter"> - + From ac5a44afda266d0f707f016004aaa8a61bf588db Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Mon, 22 Sep 2025 08:33:13 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/DesignForm/public/expand/userDialog.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/DesignForm/public/expand/userDialog.vue b/src/components/DesignForm/public/expand/userDialog.vue index 30fc785..b7eaa0a 100644 --- a/src/components/DesignForm/public/expand/userDialog.vue +++ b/src/components/DesignForm/public/expand/userDialog.vue @@ -196,7 +196,7 @@ const defaultProps = { draggable > - + - + + + + + + + + + + +
+ 根据角色筛选 + +
+
+ +
+ +
+ + 确定 + +
+ +
+ + { } // 通过tag 取消勾选 const handleCloseTag = (tag) => { - + checkedIdList.value = checkedIdList.value.filter(item => item !== tag.data.id); if (!treeRef?.value) return checkList.value = checkList.value.filter(item => { treeRef.value.setChecked(tag, false) From 0d4fa6bb0f76f13c77aaa828aaa10496c7271271 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Tue, 23 Sep 2025 11:34:47 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E9=80=89=E6=8B=A9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8C=83=E5=9B=B4=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E8=AE=BE=E7=BD=AE=E5=8F=AF=E9=80=89=E7=94=A8?= =?UTF-8?q?=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lowcodetransfer/lowcodeTransfer1.vue | 896 ++++++++++++++++++ 1 file changed, 896 insertions(+) create mode 100644 src/widget/lowcodetransfer/lowcodeTransfer1.vue diff --git a/src/widget/lowcodetransfer/lowcodeTransfer1.vue b/src/widget/lowcodetransfer/lowcodeTransfer1.vue new file mode 100644 index 0000000..33c733d --- /dev/null +++ b/src/widget/lowcodetransfer/lowcodeTransfer1.vue @@ -0,0 +1,896 @@ + + + + + + + +