Bläddra i källkod

组织文件权限

liuQiang 2 år sedan
förälder
incheckning
33864d3e2c

+ 4 - 4
src/utils/index.js

@@ -34,8 +34,8 @@ export const canPreviewFile = (fileType)=>{
  * @param {Array} arr
  */
 export const rightMenuRole = (role,arr)=>{
-  console.log('role',role);
-  console.log('arr',arr);
+  // console.log('role',role);
+  // console.log('arr',arr);
   const roles = role.roles
   if(!roles.l0100){
     arr = arr.filter(item => item.name !== "预览")
@@ -57,8 +57,8 @@ export const rightMenuRole = (role,arr)=>{
  * @param {Array} arr
  */
 export const publicRightMenuRole = (role,arr)=>{
-  console.log('role',role);
-  console.log('arr',arr);
+  // console.log('role',role);
+  // console.log('arr',arr);
   if(!role.some(item=>item == "download")){
     arr = arr.filter(item => item.name !== "下载")
   }

+ 10 - 8
src/views/department/MyFile.vue

@@ -31,7 +31,7 @@
                                 <template #dropdown>
                                     <el-dropdown-menu>
                                         <el-dropdown-item @click="restName(item, index)">重命名</el-dropdown-item>
-                                        <el-dropdown-item @click="delName(item, index)">删除</el-dropdown-item>
+                                        <el-dropdown-item v-if="item.dirType == '1'" @click="delName(item, index)">删除</el-dropdown-item>
                                     </el-dropdown-menu>
                                 </template>
                             </el-dropdown>
@@ -59,7 +59,7 @@
                 <div v-if="editOnline">
                     <!-- 众多功能 -->
                     <div class="manyUse">
-                        <div v-if="thisRole.some(item=>item == 'upload')"
+                        <div v-if="thisRole.some(item=>item == 'upload') || thisFolder.dirType == '1'"
                             style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
                             <div style="margin-left: 5px;">
                                 <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
@@ -79,7 +79,7 @@
                                 </span>
                             </div>
                         </div>
-                        <!-- <div
+                        <div
                             style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;">
                             <div style="margin-left: 5px;">
                                 <el-icon
@@ -91,7 +91,7 @@
                             <div style="margin-left: 5px;" @click="createNewMenu(0)">
                                 <span style="font-size: 14px;">新建</span>
                             </div>
-                        </div> -->
+                        </div>
                         <template v-for="(item, index) in useMenu" :key="index">
                             <div :class="{ 'isCheck': haveCheck }"
                                 style="display: flex;width: 82px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;cursor: pointer;"
@@ -275,7 +275,7 @@
             </div>
             <!-- 新增文件夹弹窗 -->
             <div>
-                <CreateFloder v-if="folderCase" :folderCase="folderCase" @getChildrenC="getChildrenC" :oneOrTwo="oneOrTwo"
+                <CreateFloder v-if="folderCase" :thisType="thisFolder" :thisRole="thisRole" :folderCase="folderCase" @getChildrenC="getChildrenC" :oneOrTwo="oneOrTwo"
                     :impDirId="impDirId" :impSpaceId="impSpaceId" :newDirId="newDirId" :newSpaceId="newSpaceId" :thisFolderRole="thisFolderRole"
                     :getAllTop="getAllTop">
                 </CreateFloder>
@@ -633,6 +633,7 @@ export default {
             })
         }
         function changeFile(row, num) {
+            thisFolder.value = row
             console.log('row2',row);
             if(row.isEncrypt === "Y"){
                 getLeveldetailFn(row.encryptLevel)
@@ -1175,11 +1176,12 @@ export default {
                 arr = arr.filter(item => item.name !== "文字识别")
             }
             // console.log('arr',arr);
-            if(thisFolderRole.value){
-                arr = publicRightMenuRole(toRaw(thisRole.value),arr)
+            if(thisFolderRole.value.roles){
+                console.log('thisFolderRole',thisFolderRole.value);
+                arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
             }
             if(thisFolderRole.value){
-                arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
+                arr = publicRightMenuRole(toRaw(thisRole.value),arr)
             }
             if(arr.length<1){
                 noMenuItem.value = true

+ 60 - 22
src/views/department/modalComponebts/CreateFloder.vue

@@ -6,29 +6,31 @@
                     <el-form-item label="目录名称">
                         <el-input v-model="boserForm.dirName" />
                     </el-form-item>
-                    <el-form-item label="目录分类">
+                    <el-form-item label="目录分类" v-if="thisType.dirType != '2'">
                         <el-radio-group v-model="boserForm.dirType">
                             <el-radio :label="1">公开目录</el-radio>
                             <el-radio :label="2">组织目录</el-radio>
                         </el-radio-group>
                     </el-form-item>
-                   <template v-if="boserForm.dirType === 2">
-                     <el-form-item label="是否加密" v-if="!(FolderRole && !free )">
+                   <template v-if="boserForm.dirType === 2 || thisType.dirType == '2'">
+                     <el-form-item label="是否加密" v-if="!FolderRole.levelCode || free">
                             <el-switch v-model="boserForm.isEncrypt" active-value="Y" inactive-value="N" />
                     </el-form-item>
-                    <el-form-item label="加密等级" v-if="!(FolderRole && !free) && boserForm.isEncrypt === 'Y'">
+                    <el-form-item label="加密等级" v-if=" (!FolderRole.levelCode || free) && boserForm.isEncrypt === 'Y'">
                         <el-radio-group v-model="boserForm.encryptLevel">
                             <el-radio :label="item.levelCode" v-for="item in levelList" :key="item">{{item.levelName}}</el-radio>
                         </el-radio-group>
                     </el-form-item>
-                    <el-form-item label="成员权限">
-                          <el-checkbox-group v-model="boserForm.memberRoles">
-                            <el-checkbox v-for="item in dir_rules" :key="item.value"  :label="item.value">{{item.label}}</el-checkbox>
-                        </el-checkbox-group>
-                    </el-form-item>
-                    <el-form-item label="选择成员" v-if="boserForm.dirType === 2">
-                    </el-form-item>
-                    <CreateTasnsfer v-if="boserForm.dirType === 2" @setUsers="setUsers" :openTrans="openTrans"></CreateTasnsfer>
+                        <template v-if="thisRole.length<1 || free">
+                            <el-form-item label="成员权限">
+                                <el-checkbox-group v-model="boserForm.memberRoles">
+                                    <el-checkbox v-for="item in dir_rules" :key="item.value"  :label="item.value">{{item.label}}</el-checkbox>
+                                </el-checkbox-group>
+                            </el-form-item>
+                            <el-form-item label="选择成员" v-if="boserForm.dirType === 2">
+                            </el-form-item>
+                            <CreateTasnsfer v-if="boserForm.dirType === 2" @setUsers="setUsers" :openTrans="openTrans"></CreateTasnsfer>
+                        </template>
                    </template>
                 </el-form>
                 <template #footer>
@@ -47,6 +49,7 @@
 <script>
 import { ref, onMounted, toRef,toRaw } from 'vue';
 import documents from '../../../api/document/document';
+import {listUser} from '../../../api/biz/user';
 import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
 import CreateTasnsfer from '../components/createTasnsfer.vue'
@@ -77,11 +80,20 @@ export default {
             type: Number,
             required: true
         },
+        thisType: {
+            type: String,
+            required: true
+        },
         thisFolderRole: {
             type: Object,
             required: true,
             default: ()=>{},
         },
+        thisRole: {
+            type: Object,
+            required: true,
+            default: ()=>{},
+        },
         getAllTop: Function,
     },
     setup(props, { emit }) {
@@ -99,8 +111,13 @@ export default {
         let newspid = props.newSpaceId
         let newdrid = props.newDirId
         const FolderRole = props.thisFolderRole
+        const thisRole = props.thisRole
+        const thisType = props.thisType
+        const users = ref()
         const openTrans = ref(true)
-        // console.log("FolderRole",props);
+        console.log("FolderRole",FolderRole);
+        console.log("thisRole",thisRole);
+        console.log("thisType",thisType);
         let addBoser = ref(false)
         let boserForm = ref({
             dirName: "",
@@ -134,7 +151,7 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": drId - 0,
                             "spaceId": spId - 0,
-                            "dirType":boserForm.value.dirType,
+                            "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
                             "dirRole":boserForm.value.memberRoles.join(','),
                             "users":boserForm.value.users,
                             "isEncrypt":boserForm.value.isEncrypt,
@@ -145,7 +162,7 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": drId - 0,
                             "spaceId": spId - 0,
-                            "dirType":boserForm.value.dirType
+                            "dirType":thisType.dirType=='2'?'2':boserForm.value.dirType,
                             
                     }
                     }
@@ -164,14 +181,15 @@ export default {
                     })
                 } else {
                     let query = {}
-                    if(FolderRole){
-                        //目前是不可以创建二级目录
+                    if(FolderRole.levelCode){
+                        //父级有权限自动继承 没有就用添加的值
                         query={
                             "dirName": boserForm.value.dirName,
                             "parentId": newdrid - 0,
                             "spaceId": newspid - 0,
-                            // "isEncrypt":"Y",
-                            // "encryptLevel":FolderRole.levelCode
+                            "dirType":boserForm.value.dirType,
+                            "isEncrypt":"Y",
+                            "encryptLevel":FolderRole.levelCode
                         }
                         console.log('query',query);
                         console.log('FolderRole',FolderRole);
@@ -180,10 +198,18 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": newdrid - 0,
                             "spaceId": newspid - 0,
-                            // "isEncrypt":boserForm.value.isEncrypt,
-                            // "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
+                            "dirType":boserForm.value.dirType,
+                            "isEncrypt":boserForm.value.isEncrypt,
+                            "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
                         }
                     }
+                    if(thisRole.length){
+                        query.dirRole = thisRole.join(',')
+                    }else{
+                          query.dirRole = boserForm.value.memberRoles.join(',')
+                          query.users = boserForm.value.users
+                    }
+                    console.log('free0query',query);
                     documents.addDocument(
                       query
                     ).then(res => {
@@ -218,9 +244,17 @@ export default {
             })
             console.log('newArr',boserForm.value.users);
         }
+        const getUser =async  ()=>{
+           const  res = await listUser({dirId:thisType.dirId})
+             console.log('getUser',res);
+             users.value = res.rows
+        }
         onMounted(() => {
             inital()
             getLevelList()
+            if(thisRole.length){
+                getUser()
+            }
         })
         return {
             addBoser,
@@ -240,7 +274,11 @@ export default {
             openTrans,
             setUsers,
             dir_rules,
-            proxy
+            proxy,
+            thisRole,
+            thisType,
+            getUser,
+            users
         }
     },
     components: {

+ 2 - 0
src/views/myfile/MyFile.vue

@@ -636,6 +636,7 @@ export default {
             })
         }
         function changeFile(row, num) {
+            thisFolder.value = row
             console.log('row2',row);
             if(row.isEncrypt === "Y"){
                 getLeveldetailFn(row.encryptLevel)
@@ -1717,6 +1718,7 @@ p {
 .setBox:hover .selectChe {
     background-color: #EEF9FF;
     display: block;
+    z-index: 1000;
 }
 
 .selectChe {