Selaa lähdekoodia

部门管理-完成

cxmo 1 vuosi sitten
vanhempi
commit
720a1afbc0

+ 1 - 1
src/views/system_manage/depart_manage/departManage.vue

@@ -18,7 +18,7 @@ const {
         getDepartArr,getTableUser,
         useTreeMove,useTreeEvent,useDepartTable
     } = useDepart()
-const {checkAllowDrag,checkAllowDrop,handleDropOver} = useTreeMove()
+const {departTree,checkAllowDrag,checkAllowDrop,handleDropOver} = useTreeMove()
 const {
         act_node,clickNode,initDepart,removeNode,
         modifyNodeType,nodeInfo,isModifyNodeShow,openNodeDialog,

+ 59 - 3
src/views/system_manage/depart_manage/hooks/use-depart.js

@@ -395,10 +395,66 @@ export function useDepart(){
     }
     //树结构移动
     function useTreeMove(){
-        function checkAllowDrag(){}
-        function checkAllowDrop(){}
-        function handleDropOver(){}
+        //节点是否可拖拽:所有节点均可拖拽
+        function checkAllowDrag(){return true}
+        //节点是否可放入:仅支持同部门下,同级节点相互排序
+        function checkAllowDrop(draggingNode,dropNode,type){
+            if(type==='inner'){
+                /**
+                 * 情况1 
+                 * draggingNode.level==2 dropNode.level==1
+                 * draggingNode.TopId == dropNode.DepartmentId
+                 * 情况2
+                 * draggingNode.level==3 dropNode.level==2
+                 * draggingNode.GroupId == dropNode.DepartmentId
+                 */
+                const case_1 = draggingNode.level===2&&dropNode.level===1
+                                && draggingNode.data.TopId === dropNode.data.DepartmentId
+                const case_2 = draggingNode.level===3&&dropNode.level===2
+                                && draggingNode.data.GroupId == dropNode.data.DepartmentId
+                return case_1||case_2
+            }else if(draggingNode.level===dropNode.level){
+                /**
+                 * 情况1
+                 * draggingNode.level===dropNode.level===1
+                 * 情况2
+                 * draggingNode.level===dropNode.level
+                 * draggingNode.TopId === dropNode.TopId||draggingNode.GroupId===dropNode.GroupId
+                 */
+                const case_1 = dropNode.level===1
+                const case_2 = draggingNode.data.TopId&&dropNode.data.TopId&&draggingNode.data.TopId === dropNode.data.TopId
+                        ||draggingNode.data.GroupId&&dropNode.data.GroupId&&draggingNode.data.GroupId===dropNode.data.GroupId
+                return case_1||case_2
+            }
+            return false
+        }
+        //放入节点
+        let departTree = ref(null)
+        function handleDropOver(draggingNode,dropNode,type,e){
+            //获取当前移动节点的层级和id,parentId
+            //获取同层级的ids
+            const treeData = departTree.value.data||[]
+            const node = departTree.value.getNode(draggingNode.data.parentKey)||{data:{Child:[]}}
+            let params = {
+                DepartmentIds:[],
+                GroupIds:[],
+                TeamIds:[]
+            }
+            if(draggingNode.level===1){
+                params.DepartmentIds = treeData.map(i=>i.DepartmentId)
+            }else{
+                const ids = node.data.Child.map(i=>i.DepartmentId)
+                params.GroupIds = draggingNode.level===2?ids:[]
+                params.TeamIds =draggingNode.level===3?ids:[]
+            }
+            departInterence.sortDepart(params).then(res=>{
+                if(res.Ret!==200) return 
+                ElMessage.success('移动排序成功')
+                getDepartArr()
+            })
+        }
         return {
+            departTree,
             checkAllowDrag,
             checkAllowDrop,
             handleDropOver