diff --git a/src/views/doc/share.vue b/src/views/doc/share.vue index 2ec3de4..e5f05ed 100644 --- a/src/views/doc/share.vue +++ b/src/views/doc/share.vue @@ -25,6 +25,7 @@ import preview from './preview.vue'; const route = useRoute() const userStore = useUserStore(); +const udprt=btoa("d"+userStore.userInfoCont.department); const uid=btoa("p0"+userStore.userInfoCont.userId); const siteHost=document.location.origin; const apiURL=import.meta.env.VITE_APP_BASE_API+"/hxpan/api" @@ -54,7 +55,7 @@ function showShareMessage(row:{uuid:string,code:string,name:string,expireTime:st type: 'primary', style: { width: '100px' }, onClick: () => { - let _url=apiURL+`/share/zip?shareUuid=${row.uuid}&code=${row.code}&puuid=root&rootUuid=root` + let _url=apiURL+`/share/zip?shareUuid=${row.uuid}&code=${row.code}&dprt=${udprt}&puuid=root&rootUuid=root` window.open(_url) } },()=>'下载'), @@ -125,7 +126,7 @@ function onShareView(row:matterInfo){ a=`${row.uuid}${row.name}` } - let _url=`${siteHost}${apiURL}/share/zip?shareUuid=${row.uuid}&code=${row.code}&uid=${uid}&puuid=root&rootUuid=root&fullfilename=${a}` + let _url=`${siteHost}${apiURL}/share/zip?shareUuid=${row.uuid}&code=${row.code}&uid=${uid}&dprt=${udprt}&puuid=root&rootUuid=root&fullfilename=${a}` dynamicVNode.value=h(preview,{ url:`${officeHost}/kkpreview/onlinePreview?url=`+window.btoa(unescape(encodeURIComponent(_url))), closeFunc:()=>dynamicVNode.value=null @@ -155,7 +156,7 @@ onMounted(() => { //只是分享链接的请求 if (query.uuid && query.code){ browerMode.value=true - getShareBrowse("",{shareUuid:query.uuid,code:query.code,puuid:'root',rootUuid:'root'}).then((resp)=>{ + getShareBrowse("",{shareUuid:query.uuid,code:query.code,puuid:'root',rootUuid:'root',dprt:udprt}).then((resp)=>{ showShareMessage(resp.data) return }) diff --git a/src/views/doc/sharePermission.vue b/src/views/doc/sharePermission.vue index dbdb2b7..f42be16 100644 --- a/src/views/doc/sharePermission.vue +++ b/src/views/doc/sharePermission.vue @@ -7,8 +7,9 @@ import { getPermitedList, postPermitedList} from '@/api/hr/people/share_ctrol' import { MessageBox } from '@element-plus/icons-vue/dist/types'; +import { number } from 'echarts'; -import { ElDialog, ElMessageBox,TableInstance } from 'element-plus'; +import { ElDialog, ElMessageBox,TableInstance, TreeInstance } from 'element-plus'; const props = withDefaults(defineProps<{ uid:string, //当前用户的uuid @@ -17,9 +18,11 @@ const props = withDefaults(defineProps<{ closeFunc:(refresh?:boolean)=>void, //父级只需销毁组件 }>(),{}) +const treeRef=ref() //tree组件的引用,为了实现初始选中状态 const treeData =ref([]) // 组织结构树的数据源 const members=ref([]) //tablelist's data const permited=new Set() //文档成员的id列表,用集合结构为了快速实现增删修改 +const treeSelected=new Array() //所有选中的tree节点 const permitedInfos=new Set() //文档成员的姓名职位信息集合,为了实现与成员列表的同步修改 const tableMembersRef=ref() //table组件的引用,为了实现初始选中状态 @@ -27,8 +30,8 @@ const tableMembersRef=ref() //table组件的引用,为了实现 function onNodeClick(data:shareOrgInfo){ members.value=[]//这里在切换时应该清理现有数据,容易造成tableRef选中事件失效 getArchivesListPage({adminorg:data.id, page:1,pagesize:13}).then(resp=>{ - if(resp.data.count >200){ - ElMessageBox.alert("人数超过200,请按部门分配权限") + if(resp.data.count >100){ + ElMessageBox.alert("人数过多,不再显示具体人员,请分配部门可见权限") return } members.value=resp.data.list @@ -46,8 +49,16 @@ function onNodeClick(data:shareOrgInfo){ } function onSavePermChange(){ + let _dprt= treeRef.value?.getCheckedKeys() //这里不能只获取叶子节点,因为有些员工的所属部门并不是叶子节点 + let _dprtNodes= treeRef.value?.getCheckedNodes(false,true) let _list = permited.keys().toArray().filter(val=>val!=='') //成员的key - let _infos = permitedInfos.keys().toArray().filter(val=>val!=='') //成员的姓名和部门信息 + let _infos = permitedInfos.keys().toArray().filter(val=>(val!==''&&!val.includes(":"))) //成员的姓名和部门信息 + + //把部门权限加入list列表 + //dprt:d101d102d303.... + _list.push("dprt:d"+_dprt?.join("d")) + //把部门名称加入infos列表 + _dprtNodes?.forEach((item=>_infos.push(item.level+":"+item.name))) //由父级组件自主处理,并自动清理本弹窗组件 if(props.confirmFunc&&_list){ @@ -101,8 +112,14 @@ onMounted(()=>{ if(props.uuid!==""){ getPermitedList(props.uid,{uuid:props.uuid}).then(resp=>{ resp.data?.permited?.forEach(item=>{ + if (item.startsWith("dprt")){ + let arr=item.replace("dprt:d","").split("d") + arr.forEach(val=>treeSelected.push(parseInt(val))) + return + } permited.add(item) //userUuids constitue the permited list - }) + }); + resp.data?.infos?.forEach(item=>{ permitedInfos.add(item) }) @@ -126,9 +143,11 @@ onMounted(()=>{