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. 32
      src/views/doc/sharePermission.vue

5
src/api/doc/type.ts

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

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

@ -30,6 +30,7 @@ export interface memberInfo{
state:number, state:number,
keystr:string, keystr:string,
positionname :string, positionname :string,
maindeparmentname:string
} }
export type shareArchivesList = PageResult<memberInfo[]> 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({ return request({
url: '/hxpan/api/share/permits', url: '/hxpan/api/share/permits',
method: 'post', 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({ return request({
url: '/hxpan/api/share/permits', url: '/hxpan/api/share/permits',
method: 'post', 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 matterList = ref<matterInfo[]>([])
const searchname=ref("") const searchname=ref("")
const newdir=ref("") const newdir=ref("") //
const currentHoverRow=ref("") const currentHoverRow=ref("") //table
const selectedValue = ref("sixhour") const selectedValue = ref("sixhour") //
const tabSelected=ref<matterInfo[]>([]) const tabSelected=ref<matterInfo[]>([]) //table
//to support tree mode refactor //to support tree mode refactor
const treeData=ref<matterTree[]>([{name:'root',uuid:'root',children:[]}]) const treeData=ref<matterTree[]>([{name:'root',uuid:'root',children:[]}])
const treeRef = ref(); const treeRef = ref();
@ -69,6 +69,7 @@ const fileList=ref([])//upload files
function onShareMatter(row?:matterInfo){ function onShareMatter(row?:matterInfo){
const showSharePermission=ref(false) const showSharePermission=ref(false)
let permited ="" let permited =""
let infos=""
let _len=0 let _len=0
ElMessageBox({ ElMessageBox({
title: row?.name+' 请选择分享有效时间', title: row?.name+' 请选择分享有效时间',
@ -103,13 +104,11 @@ function onShareMatter(row?:matterInfo){
uid: uid, uid: uid,
uuid: row?.uuid ?? "", uuid: row?.uuid ?? "",
modelValue: showSharePermission.value, modelValue: showSharePermission.value,
// "onUpdate:modelValue": (val: boolean) => { confirmFunc: (_list: string[],_infos:string[]) => {
// showSharePermission.value = val
// },
confirmFunc: (_list: string[]) => {
// //
_len=_list.length _len=_list.length
permited = btoa(_list.join("|")) permited = btoa(_list.join("|"))
infos=_infos.join("|"),
showSharePermission.value = false showSharePermission.value = false
}, },
closeFunc: () => { closeFunc: () => {
@ -122,9 +121,11 @@ function onShareMatter(row?:matterInfo){
}).then(() => { }).then(() => {
let param; let param;
if (row){ 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){ }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){ if(param){

41
src/views/doc/share.vue

@ -17,8 +17,8 @@ import {
Share, Share,
Avatar, Avatar,
} from '@element-plus/icons-vue' } from '@element-plus/icons-vue'
import {ElDialog, ElText } from "element-plus"; import {ElText } from "element-plus";
import { getExpirTime, getFileIcon,checkExpirTime } from "./tools" import {getFileIcon,checkExpirTime } from "./tools"
import sharePermission from './sharePermission.vue'; import sharePermission from './sharePermission.vue';
const route = useRoute() const route = useRoute()
@ -26,13 +26,14 @@ const userStore = useUserStore();
const uid=btoa("p0"+userStore.userInfoCont.userId); const uid=btoa("p0"+userStore.userInfoCont.userId);
const siteHost=document.location.origin; const siteHost=document.location.origin;
const apiURL=import.meta.env.VITE_APP_BASE_API+"/hxpan/api" 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 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' 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,{ dynamicVNode.value=h(sharePermission,{
uid:uid, uid:uid,
uuid:row.uuid, uuid:row.uuid,
closeFunc:()=>{ closeFunc:(refresh?:boolean)=>{
dynamicVNode.value=null dynamicVNode.value=null
if (refresh) {
permitListRef.value=""
drawerModel.value=false
onLoadShareList()
}
} }
}) })
} }
@ -150,7 +156,7 @@ onMounted(() => {
<el-table-column width="250" align="center"> <el-table-column width="250" align="center">
<template #default="scope"> <template #default="scope">
<div v-show="currentHoverRow === scope.row.uuid"> <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="Share" circle @click="showShareMessage(scope.row)"></el-button>
<el-button size="small" :icon="Delete" circle @click="onShareDelete(scope.row)"></el-button> <el-button size="small" :icon="Delete" circle @click="onShareDelete(scope.row)"></el-button>
</div> </div>
@ -165,6 +171,25 @@ onMounted(() => {
</el-table> </el-table>
</el-row> </el-row>
</div> </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"> <div v-if="dynamicVNode">
<component :is="dynamicVNode" /> <component :is="dynamicVNode" />
</div> </div>

32
src/views/doc/sharePermission.vue

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

Loading…
Cancel
Save