|
|
|
@ -33,6 +33,7 @@ interface Tree { |
|
|
|
radio?:number[]; |
|
|
|
child?: Tree[] |
|
|
|
ismanager?:boolean, |
|
|
|
indeterminate2?:boolean,//for manager member |
|
|
|
} |
|
|
|
|
|
|
|
const dataSource = ref<Tree[]>([]) |
|
|
|
@ -67,6 +68,7 @@ async function onSavePermChange(){ |
|
|
|
if(item.indeterminate) { |
|
|
|
item.radio[0]+=10 |
|
|
|
} |
|
|
|
|
|
|
|
resultPermits[item.id]=item.radio[0] |
|
|
|
} |
|
|
|
|
|
|
|
@ -96,7 +98,7 @@ function collectManager(node:Tree){ |
|
|
|
} |
|
|
|
|
|
|
|
//去遍历查找特殊设置的节点,并保存 |
|
|
|
function collectNodePermits(node:Tree){ |
|
|
|
function collectNodePermits(node:Tree){ |
|
|
|
node.child?.forEach(ele => { |
|
|
|
if(ele.radio&&ele.radio.length>0){ |
|
|
|
if(ele.indeterminate) { |
|
|
|
@ -114,18 +116,26 @@ function collectNodePermits(node:Tree){ |
|
|
|
|
|
|
|
//递归修改子级元素 |
|
|
|
function onGroupValueChange(node:Tree, val:number[]){ |
|
|
|
if(node.indeterminate) node.indeterminate=false; |
|
|
|
//if(node.indeterminate) node.indeterminate=false; |
|
|
|
updateChildNode(node, val) |
|
|
|
if(node.superior){ |
|
|
|
updateParentNode(node) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function updateChildNode(node:Tree, val:number[]){ |
|
|
|
if(node.indeterminate) { |
|
|
|
node.indeterminate=false; |
|
|
|
} |
|
|
|
node.child?.forEach(ele => { |
|
|
|
ele.radio=val |
|
|
|
ele.radio=val.slice() //要拷贝一份!!!val是引用!! |
|
|
|
if(ele.child){ |
|
|
|
onGroupValueChange(ele,val) |
|
|
|
updateChildNode(ele,val) |
|
|
|
} |
|
|
|
}); |
|
|
|
if(node.superior){ |
|
|
|
updateParentNode(node) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//递归更新父级 |
|
|
|
function updateParentNode(node:Tree){ |
|
|
|
if(node.superior){ |
|
|
|
@ -176,7 +186,7 @@ function setParentIndeterminate(node:Tree){ |
|
|
|
const pnode = treeRef.value?.getNode(node.superior); |
|
|
|
if(pnode){ |
|
|
|
const tdata=pnode.data as Tree |
|
|
|
tdata.indeterminate=true |
|
|
|
tdata.indeterminate2=true |
|
|
|
|
|
|
|
setParentIndeterminate(tdata) |
|
|
|
} |
|
|
|
@ -320,7 +330,7 @@ onMounted(()=>{ |
|
|
|
<span style="width: 100px;overflow: hidden;">{{ data.name }}</span> |
|
|
|
|
|
|
|
<div v-if="managerMode" class="buttons"> |
|
|
|
<el-checkbox v-model="data.ismanager" :indeterminate="data.indeterminate" /> |
|
|
|
<el-checkbox v-model="data.ismanager" :indeterminate="data.indeterminate2" /> |
|
|
|
</div> |
|
|
|
<div v-else class="buttons"> |
|
|
|
<el-checkbox-group :min="0" :max="1" v-model="data.radio" @change="(val)=>onGroupValueChange(data,val)"> |
|
|
|
|