Browse Source

云盘:添加权限控制界面

yunpan
han2015 2 months ago
parent
commit
6b1346782c
  1. 73
      src/views/doc/index.vue
  2. 31
      src/views/doc/sharePermission.vue
  3. 32
      src/views/doc/spacePermission.vue

73
src/views/doc/index.vue

@ -6,7 +6,9 @@ import BottomPage from '@/views/common/bottom/index.vue'
import { matterInfo} from "@/api/doc/type" import { matterInfo} from "@/api/doc/type"
import { getMySpaces,doCreateSpace} from "@/api/doc/index" import { getMySpaces,doCreateSpace} from "@/api/doc/index"
import SvgIcon from "@/components/svgIcon/index.vue"; import SvgIcon from "@/components/svgIcon/index.vue";
import { doDelSpace,spaceMatterRename} from "@/api/doc/space" import { doDelSpace,spaceMatterRename,doAccessManage} from "@/api/doc/space"
import sharePermission from './sharePermission.vue';
import spacePermission from './spacePermission.vue';
import { h } from 'vue' import { h } from 'vue'
import { import {
Delete, Delete,
@ -24,7 +26,7 @@ const currentHoverRow=ref<matterInfo>({}) //table 行的按钮控制
const Departs = computed(() => { const Departs = computed(() => {
return `${'p0'+userStore.userInfoCont.userId},${userStore.userInfoCont.company},${userStore.userInfoCont.department},${userStore.userInfoCont.organization}` return `${'p0'+userStore.userInfoCont.userId},${userStore.userInfoCont.company},${userStore.userInfoCont.department},${userStore.userInfoCont.organization}`
}) })
const dynamicVNode = ref<VNode | null>(null) //permission
const CutLevelPermit=ref(0) const CutLevelPermit=ref(0)
function onSelectSpace(data:matterInfo,recycling?:boolean){ function onSelectSpace(data:matterInfo,recycling?:boolean){
@ -96,30 +98,30 @@ function onSpaceMatterRename(row:matterInfo){
}) })
} }
// // //
// function onAccessManage(){ function onAccessManage(row:matterInfo){
// dynamicVNode.value = h(sharePermission, { dynamicVNode.value = h(sharePermission, {
// uid: uid, uid: uid,
// uuid: "", uuid: "",
// spaceid:SpaceID.value.uuid, // spaceid:row.uuid, //
// confirmFunc: (_list: string[],_infos:string[]) => { confirmFunc: (_list: string[],_infos:string[]) => {
// // //
// //_len=_list.length //_len=_list.length
// let permited = btoa(_list.join("|")) let permited = btoa(_list.join("|"))
// doAccessManage(uid,{ doAccessManage(uid,{
// "space":SpaceID.value.uuid, "space":row.uuid,
// "roles":permited, "roles":permited,
// "owner":SpaceID.value.userUuid, "owner":row.userUuid,
// "len":_list.length "len":_list.length
// }).then(()=>{ }).then(()=>{
// }) })
// }, },
// closeFunc: () => { closeFunc: () => {
// dynamicVNode.value=null dynamicVNode.value=null
// } }
// }) })
// } }
// //
function onDeleteSpace(row:matterInfo){ function onDeleteSpace(row:matterInfo){
@ -138,13 +140,13 @@ function onDeleteSpace(row:matterInfo){
// //
function onSpacePManage(row:matterInfo){ function onSpacePManage(row:matterInfo){
// dynamicVNode.value=h(spacePermission,{ dynamicVNode.value=h(spacePermission,{
// uid:rawUid, //uuid uid:rawUid, //uuid
// uuid:row.uuid, //uuid uuid:row.uuid, //uuid
// suid:SpaceID.value.userUuid, suid:row.userUuid,
// spaceid:SpaceID.value.uuid, //uuid spaceid:row.uuid, //uuid
// closeFunc:()=>dynamicVNode.value=null closeFunc:()=>dynamicVNode.value=null
// }) })
} }
//------------------------------------------------------ //------------------------------------------------------
@ -222,6 +224,10 @@ onMounted(()=>{
<div style="margin: 20px 0; display: flex;align-items:center;" @click="onNewSpace"><Plus style="width: 18px; height: 18px;"></Plus> 创建共享空间</div> <div style="margin: 20px 0; display: flex;align-items:center;" @click="onNewSpace"><Plus style="width: 18px; height: 18px;"></Plus> 创建共享空间</div>
</div> </div>
<div v-if="showPopup" class="mask" @click="showPopup = false"></div> <div v-if="showPopup" class="mask" @click="showPopup = false"></div>
<div v-if="dynamicVNode">
<component :is="dynamicVNode" />
</div>
<!-- 主体 --> <!-- 主体 -->
<Transition name="popuper"> <Transition name="popuper">
<div v-if="showPopup" class="bs-wrapper"> <div v-if="showPopup" class="bs-wrapper">
@ -232,7 +238,7 @@ onMounted(()=>{
</div> </div>
<hr> <hr>
<div class="blocker-list" v-if="CutLevelPermit>=5"> <div class="blocker-list" v-if="CutLevelPermit>=5">
<span class="blocker" @click="onSpaceMatterRename(currentHoverRow)"> <span class="blocker" @click="onAccessManage(currentHoverRow)">
<Edit style="width: 24px; height: 24px;"></Edit>成员管理</span> <Edit style="width: 24px; height: 24px;"></Edit>成员管理</span>
<span class="blocker" @click="onSpacePManage(currentHoverRow)"> <span class="blocker" @click="onSpacePManage(currentHoverRow)">
<Setting style="width: 24px; height: 24px;"></Setting>权限设置</span> <Setting style="width: 24px; height: 24px;"></Setting>权限设置</span>
@ -243,6 +249,7 @@ onMounted(()=>{
</div> </div>
</div> </div>
</Transition> </Transition>
<BottomPage /> <BottomPage />
</template> </template>

31
src/views/doc/sharePermission.vue

@ -153,7 +153,7 @@ onMounted(()=>{
</script> </script>
<template> <template>
<el-dialog :model-value="true" :style="{'max-height': '650px'}" v-on:close="closeFunc()"> <el-dialog :model-value="true" :style="{'max-height': '749px'}" v-on:close="closeFunc()">
<template #header> <template #header>
<span>成员管理</span> <span>成员管理</span>
</template> </template>
@ -172,17 +172,19 @@ onMounted(()=>{
show-checkbox show-checkbox
:default-checked-keys="treeSelected" :default-checked-keys="treeSelected"
:check-on-click-leaf="false" :check-on-click-leaf="false"
:style="{maxHeight:'500px','overflow-y': 'auto'}" :style="{maxHeight:'324px','overflow-y': 'auto'}"
:props="{label: 'name',children:'child',isLeaf:'dir'}" :props="{label: 'name',children:'child',isLeaf:'dir'}"
:default-expanded-keys="[313]" :default-expanded-keys="[313]"
@node-click="onNodeClick" @node-click="onNodeClick"
/> />
</div> </div>
<div class="tablelist">
</div>
<div class="tablelist">
<el-table ref="tableMembersRef" <el-table ref="tableMembersRef"
:data="members" :data="members"
:row-key="row => row.keystr" :row-key="row => row.keystr"
style="overflow-y: auto;height: 500px;" style="overflow-y: auto;height: 250px;"
@select="onManualSelect" @select="onManualSelect"
@select-all="onSelectionAll" @select-all="onSelectionAll"
> >
@ -191,8 +193,6 @@ onMounted(()=>{
<el-table-column property="positionname" label="职位"></el-table-column> <el-table-column property="positionname" label="职位"></el-table-column>
</el-table> </el-table>
</div> </div>
</div>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="closeFunc()">取消</el-button> <el-button @click="closeFunc()">取消</el-button>
@ -201,3 +201,22 @@ onMounted(()=>{
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<style lang="scss" scoped>
.tablelist{
width: 100%;
padding: 10px;
border: 2px solid;
border-radius: 16px;
}
</style>
<style>
/* dialog的body内容样式设置*/
.el-dialog{
/* 让整个弹出窗口位置更高一些*/
--el-dialog-margin-top:7vh;
}
</style>

32
src/views/doc/spacePermission.vue

@ -277,31 +277,31 @@ onMounted(()=>{
</template> </template>
<div v-if="uuid==spacePermit.matterUid&&uuid!=spaceid" class="tips">当前文档存在定制权限,与空间权限不一致。<el-button size="small" @click="delMatterPermit(uuid)">恢复</el-button></div> <div v-if="uuid==spacePermit.matterUid&&uuid!=spaceid" class="tips">当前文档存在定制权限,与空间权限不一致。<el-button size="small" @click="delMatterPermit(uuid)">恢复</el-button></div>
<div class="tree-node" style="width:93%;font-weight: bold;position: sticky;"> <div class="tree-node" style="font-weight: bold;position: sticky;">
<span style="width: 200px;text-align: center;">名称</span> <span style="width: 100px;text-align: center;">名称</span>
<div v-if="managerMode" class="buttons"> <div v-if="managerMode" class="buttons">
<span>管理员</span> <div class="box-title">管理员</div>
</div> </div>
<div v-else class="buttons"> <div v-else style="margin: 0 0 0 auto;display: flex;">
<el-tooltip placement="top" effect="dark" <el-tooltip placement="top" effect="dark"
content="禁止访问"> content="禁止访问">
<span>不可见</span> <div class="box-title">不可见</div>
</el-tooltip> </el-tooltip>
<el-tooltip placement="top" effect="dark" <el-tooltip placement="top" effect="dark"
content="仅可预览,不可下载"> content="仅可预览,不可下载">
<span>仅预览</span> <div class="box-title">仅预览</div>
</el-tooltip> </el-tooltip>
<el-tooltip placement="top" effect="dark" <el-tooltip placement="top" effect="dark"
content="可下载可见文件,不可上传文件"> content="可下载可见文件,不可上传文件">
<span>可下载</span> <div class="box-title">可下载</div>
</el-tooltip> </el-tooltip>
<el-tooltip placement="top" effect="dark" <el-tooltip placement="top" effect="dark"
content="可上传和下载可见文件"> content="可上传和下载可见文件">
<span>上传下载</span> <div class="box-title">上传下载</div>
</el-tooltip> </el-tooltip>
<el-tooltip placement="top" effect="dark" <el-tooltip placement="top" effect="dark"
content="可上传、下载、编辑文档"> content="可上传、下载、编辑文档">
<span>编辑</span> <div class="box-title">编辑</div>
</el-tooltip> </el-tooltip>
</div> </div>
</div> </div>
@ -317,7 +317,7 @@ onMounted(()=>{
> >
<template #default="{ node, data }"> <template #default="{ node, data }">
<div class="tree-node"> <div class="tree-node">
<span>{{ data.name }}</span> <span style="width: 130px;overflow: hidden;">{{ data.name }}</span>
<div v-if="managerMode" class="buttons"> <div v-if="managerMode" class="buttons">
<el-checkbox v-model="data.ismanager" :indeterminate="data.indeterminate" /> <el-checkbox v-model="data.ismanager" :indeterminate="data.indeterminate" />
@ -347,7 +347,6 @@ onMounted(()=>{
<style lang="scss" scoped> <style lang="scss" scoped>
.tablelist{ .tablelist{
width: 94%;
height: 565px; height: 565px;
overflow-y: scroll overflow-y: scroll
} }
@ -358,21 +357,28 @@ onMounted(()=>{
padding: 5px 32px; padding: 5px 32px;
background-color: #d7d1ca; background-color: #d7d1ca;
} }
.box-title{
width: 30px;
margin: 0 0 0 8px;
}
.tree-node{ .tree-node{
display: flex; display: flex;
flex-direction: row; flex-direction: row;
width: 100%; width: 100%;
align-items: center; align-items: center;
.buttons{ .buttons{
margin: 0 50px 0 auto; margin: 0 10px 0 auto;
span{ span{
width: 26px; width: 26px;
margin: 0 7px; margin: 0 7px;
} }
} }
} }
.el-dialog{
--el-dialog-width:100%;
}
.el-checkbox{ .el-checkbox{
width: 26px; width: 10px;
} }
.el-tree{ .el-tree{

Loading…
Cancel
Save