|
|
|
@ -34,6 +34,7 @@ interface Tree { |
|
|
|
radio?:number[]; |
|
|
|
child?: Tree[] |
|
|
|
ismanager?:boolean, |
|
|
|
indeterminate2?:boolean,//for manager member |
|
|
|
} |
|
|
|
|
|
|
|
const dataSource = ref<Tree[]>([]) |
|
|
|
@ -115,16 +116,21 @@ function collectNodePermits(node:Tree){ |
|
|
|
|
|
|
|
//递归修改子级元素 |
|
|
|
function onGroupValueChange(node:Tree, val:number[]){ |
|
|
|
//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 |
|
|
|
if(ele.child){ |
|
|
|
onGroupValueChange(ele,val) |
|
|
|
updateChildNode(ele,val) |
|
|
|
} |
|
|
|
}); |
|
|
|
if(node.superior){ |
|
|
|
updateParentNode(node) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//递归更新父级 |
|
|
|
@ -177,7 +183,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) |
|
|
|
} |
|
|
|
@ -273,8 +279,8 @@ onMounted(()=>{ |
|
|
|
<template> |
|
|
|
<el-dialog :model-value="true" :style="{'max-height': '750px'}" v-on:close="closeFunc()"> |
|
|
|
<template #header> |
|
|
|
<el-button link @click="managerMode=false;">文档权限管理</el-button> |
|
|
|
<el-button v-if="spacePermit.matterUid==spaceid&&uid==suid" link @click="managerMode=true; onShowManagers()">管理员管理</el-button> |
|
|
|
<el-button link :class="managerMode ? '' :'moveon'" @click="managerMode=false;" >文档权限管理</el-button> |
|
|
|
<el-button v-if="spacePermit.matterUid==spaceid&&uid==suid" :class="managerMode ? 'moveon' :''" link @click="managerMode=true; onShowManagers()">管理员管理</el-button> |
|
|
|
</template> |
|
|
|
|
|
|
|
<div v-if="uuid==spacePermit.matterUid&&uuid!=spaceid" class="tips">当前文档存在定制权限,与空间权限不一致。<el-button size="small" @click="delMatterPermit(uuid)">恢复</el-button></div> |
|
|
|
@ -321,11 +327,11 @@ onMounted(()=>{ |
|
|
|
<span>{{ 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)"> |
|
|
|
<el-checkbox key="forbid" :indeterminate="data.indeterminate" :value="0" /> |
|
|
|
<el-checkbox key="forbid" :indeterminate="data.indeterminate" :value="0" /> |
|
|
|
<el-checkbox key="view" :indeterminate="data.indeterminate" :value="1" /> |
|
|
|
<el-checkbox key="download" :indeterminate="data.indeterminate" :value="2" /> |
|
|
|
<el-checkbox key="updown" :indeterminate="data.indeterminate" :value="3" /> |
|
|
|
@ -375,7 +381,9 @@ onMounted(()=>{ |
|
|
|
.el-checkbox{ |
|
|
|
width: 26px; |
|
|
|
} |
|
|
|
|
|
|
|
.moveon{ |
|
|
|
background-color: rgb(109, 187, 238); |
|
|
|
} |
|
|
|
.el-tree{ |
|
|
|
/* 让整个弹出窗口位置更高一些*/ |
|
|
|
--el-tree-node-content-height:33px; |
|
|
|
|