Browse Source

预览文档成员信息

han_v2
han2015 6 months ago
parent
commit
20d8086347
  1. 5
      src/api/doc/type.ts
  2. 5
      src/api/hr/people/share_ctrol.ts
  3. 21
      src/views/doc/manage.vue
  4. 41
      src/views/doc/share.vue
  5. 34
      src/views/doc/sharePermission.vue

5
src/api/doc/type.ts

@ -49,8 +49,9 @@ export interface createShare{
matterUuids:string;
expireInfinity:boolean;
expireTime:string;
permitList:string
len:number
permitList:string;
permitInfos:string;
len:number;
}
export interface respCreateShare{

5
src/api/hr/people/share_ctrol.ts

@ -30,6 +30,7 @@ export interface memberInfo{
state:number,
keystr:string,
positionname :string,
maindeparmentname:string
}
export type shareArchivesList = PageResult<memberInfo[]>
@ -59,7 +60,7 @@ export type shareArchivesList = PageResult<memberInfo[]>
/**
*
*/
export function getPermitedList(uid:string,data:{uuid:string}): AxiosPromise<string[]> {
export function getPermitedList(uid:string,data:{uuid:string}): AxiosPromise<{permited:string[],infos:string[]}> {
return request({
url: '/hxpan/api/share/permits',
method: 'post',
@ -74,7 +75,7 @@ export function getPermitedList(uid:string,data:{uuid:string}): AxiosPromise<str
/**
*
*/
export function postPermitedList(uid:string,data?:{permitList:string, update:string,uid:string,uuid:string,len:number}){
export function postPermitedList(uid:string,data?:{permitList:string,permitInfos:string, update:string,uid:string,uuid:string,len:number}){
return request({
url: '/hxpan/api/share/permits',
method: 'post',

21
src/views/doc/manage.vue

@ -43,10 +43,10 @@ const apiURL=import.meta.env.VITE_APP_BASE_API+"/hxpan/api"
const matterList = ref<matterInfo[]>([])
const searchname=ref("")
const newdir=ref("")
const currentHoverRow=ref("")
const selectedValue = ref("sixhour")
const tabSelected=ref<matterInfo[]>([])
const newdir=ref("") //
const currentHoverRow=ref("") //table
const selectedValue = ref("sixhour") //
const tabSelected=ref<matterInfo[]>([]) //table
//to support tree mode refactor
const treeData=ref<matterTree[]>([{name:'root',uuid:'root',children:[]}])
const treeRef = ref();
@ -69,6 +69,7 @@ const fileList=ref([])//upload files
function onShareMatter(row?:matterInfo){
const showSharePermission=ref(false)
let permited =""
let infos=""
let _len=0
ElMessageBox({
title: row?.name+' 请选择分享有效时间',
@ -103,13 +104,11 @@ function onShareMatter(row?:matterInfo){
uid: uid,
uuid: row?.uuid ?? "",
modelValue: showSharePermission.value,
// "onUpdate:modelValue": (val: boolean) => {
// showSharePermission.value = val
// },
confirmFunc: (_list: string[]) => {
confirmFunc: (_list: string[],_infos:string[]) => {
//
_len=_list.length
permited = btoa(_list.join("|"))
infos=_infos.join("|"),
showSharePermission.value = false
},
closeFunc: () => {
@ -122,9 +121,11 @@ function onShareMatter(row?:matterInfo){
}).then(() => {
let param;
if (row){
param={matterUuids:row.uuid,expireInfinity:false,expireTime:"",permitList:permited,len:_len}
param={matterUuids:row.uuid,expireInfinity:false,expireTime:"",
permitList:permited,len:_len,permitInfos:infos}
}else if (tabSelected.value.length>1){
param={matterUuids:tabSelected.value.map((item:matterInfo)=>item.uuid).join(","),expireInfinity:false,expireTime:"",permitList:permited,len:_len}
param={matterUuids:tabSelected.value.map((item:matterInfo)=>item.uuid).join(","),expireInfinity:false,expireTime:"",
permitList:permited,len:_len,permitInfos:infos}
}
if(param){

41
src/views/doc/share.vue

@ -17,8 +17,8 @@ import {
Share,
Avatar,
} from '@element-plus/icons-vue'
import {ElDialog, ElText } from "element-plus";
import { getExpirTime, getFileIcon,checkExpirTime } from "./tools"
import {ElText } from "element-plus";
import {getFileIcon,checkExpirTime } from "./tools"
import sharePermission from './sharePermission.vue';
const route = useRoute()
@ -26,13 +26,14 @@ const userStore = useUserStore();
const uid=btoa("p0"+userStore.userInfoCont.userId);
const siteHost=document.location.origin;
const apiURL=import.meta.env.VITE_APP_BASE_API+"/hxpan/api"
const matterList = ref<matterInfo[]>()
const matterList = ref<matterInfo[]>() //
const browerMode=ref(false) //share 1)self-list(default) 2)brower
const currentHoverRow=ref("")
const currentHoverRow=ref("") //table
const drawerModel=ref(false) //
const permitListRef=ref("") //key
import type { VNode } from 'vue'
const dynamicVNode = ref<VNode | null>(null)
const dynamicVNode = ref<VNode | null>(null) //permission
@ -86,8 +87,13 @@ function onShareMember(row:matterInfo){
dynamicVNode.value=h(sharePermission,{
uid:uid,
uuid:row.uuid,
closeFunc:()=>{
closeFunc:(refresh?:boolean)=>{
dynamicVNode.value=null
if (refresh) {
permitListRef.value=""
drawerModel.value=false
onLoadShareList()
}
}
})
}
@ -150,7 +156,7 @@ onMounted(() => {
<el-table-column width="250" align="center">
<template #default="scope">
<div v-show="currentHoverRow === scope.row.uuid">
<el-button size="small" :icon="Avatar" circle @click="onShareMember(scope.row)"></el-button>
<el-button size="small" :icon="Avatar" circle @click="()=>{drawerModel=true; permitListRef=scope.row.permitInfos}"></el-button>
<el-button size="small" :icon="Share" circle @click="showShareMessage(scope.row)"></el-button>
<el-button size="small" :icon="Delete" circle @click="onShareDelete(scope.row)"></el-button>
</div>
@ -165,6 +171,25 @@ onMounted(() => {
</el-table>
</el-row>
</div>
<el-drawer
v-model="drawerModel"
title="文档成员列表"
direction="rtl"
size="20%"
:style="{padding:'17px'}">
<template #header>
<span>文档成员列表</span>
<el-button style="width:30px;margin-right:20px;"
:icon=Avatar
@click="()=>onShareMember({uuid:currentHoverRow})">
</el-button>
</template>
<ul v-if="drawerModel &&permitListRef!=''" style="line-height: 26px;">
<li class="el-text" v-for="item in permitListRef.split('|')"> {{ item }}</li>
</ul>
<span v-else-if="permitListRef==''"> 所有人员都可访问</span>
</el-drawer>
<div v-if="dynamicVNode">
<component :is="dynamicVNode" />
</div>

34
src/views/doc/sharePermission.vue

@ -13,14 +13,15 @@ import { ElDialog, ElMessageBox,TableInstance } from 'element-plus';
const props = withDefaults(defineProps<{
uid:string, //uuid
uuid:string, //uuid
confirmFunc?:(data:string[])=>void, //
closeFunc:Function, //
confirmFunc?:(data:string[],infos:string[])=>void, //
closeFunc:(refresh?:boolean)=>void, //
}>(),{})
const treeData =ref<shareOrgInfo[]>([])
const members=ref<memberInfo[]>([])
const permited=new Set()
const tableMembersRef=ref<TableInstance>()
const treeData =ref<shareOrgInfo[]>([]) //
const members=ref<memberInfo[]>([]) //tablelist's data
const permited=new Set<string>() //id
const permitedInfos=new Set<string>() //
const tableMembersRef=ref<TableInstance>() //table
function onNodeClick(data:shareOrgInfo){
@ -41,24 +42,26 @@ function onNodeClick(data:shareOrgInfo){
}
function onSavePermChange(){
let _list = permited.keys().toArray().filter(val=>val!=='')
let _list = permited.keys().toArray().filter(val=>val!=='') //key
let _infos = permitedInfos.keys().toArray().filter(val=>val!=='') //
//
if(props.confirmFunc&&_list){
props.confirmFunc(_list)
props.confirmFunc(_list,_infos)
props.closeFunc() //
return
}
//btoa base64
postPermitedList(props.uid,{
permitList: btoa(_list.join("|")),
permitList: btoa(_list.join("|")),
permitInfos:_infos.join("|"),
update: "true",
uid: props.uid,
uuid: props.uuid,
len: _list.length
}).then(resp=>{
props.closeFunc()
props.closeFunc(true)
}).catch(()=>{
ElMessageBox.alert("处理失败")
return
@ -68,8 +71,10 @@ function onSavePermChange(){
function onManualSelect(select:[],row:memberInfo){
if(permited.has('p0'+row.keystr)){ //
permited.delete('p0'+row.keystr)
permitedInfos.delete(`${row.name}-${row.maindeparmentname}-${row.positionname}`)
}else{
permited.add('p0'+row.keystr) //
permitedInfos.add(`${row.name}-${row.maindeparmentname}-${row.positionname}`)
}
}
@ -77,10 +82,12 @@ function onSelectionAll(news:memberInfo[]){
if(news.length>0){
news.forEach((item)=>{
permited.add('p0'+item.keystr)
permitedInfos.add(`${item.name}-${item.maindeparmentname}-${item.positionname}`)
})
}else{
news.forEach((item)=>{
permited.delete('p0'+item.keystr)
permitedInfos.delete(`${item.name}-${item.maindeparmentname}-${item.positionname}`)
})
}
}
@ -89,9 +96,12 @@ onMounted(()=>{
//uuiduuid should not null
if(props.uuid!==""){
getPermitedList(props.uid,{uuid:props.uuid}).then(resp=>{
resp.data?.forEach(item=>{
resp.data?.permited?.forEach(item=>{
permited.add(item) //userUuids constitue the permited list
})
resp.data?.infos?.forEach(item=>{
permitedInfos.add(item)
})
})
}
@ -124,7 +134,7 @@ onMounted(()=>{
<div class="tablelist">
<el-table ref="tableMembersRef"
:data="members"
row-key="keystr"
:row-key="row => row.keystr"
style="overflow-y: auto;height: 500px;"
@select="onManualSelect"
@select-all="onSelectionAll"

Loading…
Cancel
Save