liuQiang il y a 2 ans
Parent
commit
9e02993bb5

+ 1 - 1
index.html

@@ -9,7 +9,7 @@
 		<link rel="icon" href="/favicon.ico">
 		<title>若依管理系统</title>
 		<!--引入onlyoffice组件-->
-		<script type="text/javascript" src="http://192.168.188.188:19531/web-apps/apps/api/documents/api.js" charset="utf-8" async></script>
+		<script type="text/javascript" src="http://192.168.1.28:19531/web-apps/apps/api/documents/api.js" charset="utf-8" async></script>
 		<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
 		<style>
 			html,

+ 19 - 0
src/utils/index.js

@@ -51,6 +51,25 @@ export const rightMenuRole = (role,arr)=>{
   }
   return arr
 }
+/**
+ * 判断该文件是否可以预览
+ * @param {Object} role
+ * @param {Array} arr
+ */
+export const publicRightMenuRole = (role,arr)=>{
+  console.log('role',role);
+  console.log('arr',arr);
+  if(!role.some(item=>item == "download")){
+    arr = arr.filter(item => item.name !== "下载")
+  }
+  if(!role.some(item=>item == "edit")){
+    arr = arr.filter(item => item.name !== "在线编辑")
+  }
+  if(!role.some(item=>item == "delete")){
+    arr = arr.filter(item => item.name !== "删除")
+  }
+  return arr
+}
 
 /**
  * 根据传入的文件类型返回图标

+ 25 - 50
src/views/department/MyFile.vue

@@ -59,7 +59,7 @@
                 <div v-if="editOnline">
                     <!-- 众多功能 -->
                     <div class="manyUse">
-                        <div
+                        <div v-if="thisRole.some(item=>item == 'upload')"
                             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="">
@@ -69,7 +69,17 @@
                                 </span>
                             </div>
                         </div>
-                        <div
+                        <div v-else
+                            style="display: flex;width: 92px;opacity:0.5;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="">
+                            </div>
+                            <div style="margin-left: 5px;">
+                                <span style="color: black;cursor: pointer;">上传
+                                </span>
+                            </div>
+                        </div>
+                        <!-- <div
                             style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;">
                             <div style="margin-left: 5px;">
                                 <el-icon
@@ -81,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;"
@@ -227,7 +237,7 @@
                                     @lastBB="lastBB" @onlineCase="onlineCase" @shareBack="shareBack"></PalaceGridFile>
                             </el-collapse-item>
                         </el-collapse>
-                        <div class="setCli" v-if="cliCC" :style="{ left: xz + 'px', top: yz - 260 + 'px' }">
+                        <div class="setCli" v-if="cliCC" :style="{ left: xz + 'px', top: yz  + 'px' }">
                             <template v-for="(item, index) in filterMouseCli()" :key="index">
                                 <p @click="chooseSet(item, index, 1)" class="chooseSet">
                                     <img :src="item.img" alt="">
@@ -376,7 +386,7 @@ import inputPassword from "./components/inputPassword.vue"; //选择文件发送
 import { listVersion } from "@/api/biz/version";
 import useUserStore from "@/store/modules/user";
 import { useRouter, useRoute } from "vue-router";
-import { canPreviewFile,rightMenuRole } from "@/utils/index.js"
+import { canPreviewFile,rightMenuRole,publicRightMenuRole } from "@/utils/index.js"
 import fileSpace from '../../api/filespace/fileSpace';
 import { getLeveldetail } from '../../api/level/level';
 import { encrypt, decrypt } from "@/utils/jsencrypt";
@@ -492,54 +502,14 @@ export default {
                 name: "预览"
             },
             {
-                img: ImgFile.addolder,
-                name: "移动到...",
-            },
-            {
-                img: ImgFile.copy,
-                name: "复制到...",
-            },
-            // {
-            //     img: ImgFile.clipboard,
-            //     name: "粘贴"
-            // },
-            {
-                img: ImgFile.collect,
-                name: "收藏"
-            },
-            {
                 img: ImgFile.downLoad,
                 name: "下载"
             },
             {
-                img: ImgFile.textbox,
-                name: "重命名"
-            },
-            // {
-            //     img: ImgFile.goon,
-            //     name: "发送"
-            // },
-            {
-                img: ImgFile.share,
-                name: "分享"
-            },
-            {
                 img: ImgFile.notePencil,
                 name: "在线编辑"
             },
             {
-                img: ImgFile.togger,
-                name: "协作"
-            },
-            {
-                img: ImgFile.icc,
-                name: "文字识别"
-            },
-            {
-                img: ImgFile.history,
-                name: "历史版本"
-            },
-            {
                 img: ImgFile.trash,
                 name: "删除"
             }
@@ -568,7 +538,8 @@ export default {
         const isFolder = ref('N') //是否为文件夹
         const clickRow = ref()//当前右键的行数据
         const backFolder = ref()//上一级的文件夹
-        const thisFolderRole = ref()//文件夹权限
+        const thisFolderRole = ref({})//文件夹安全等级
+        const thisRole = ref([])//文件夹权限
         const showInputPassword = ref(false)
         const chooseRow = ref()
         const chooseNum = ref()
@@ -576,6 +547,7 @@ export default {
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(2).then(res => {
+                console.log('getAllTopres',res);
                 let userMe = [res]
                 impDirId.value = userMe[0].dirId//固定
                 impSpaceId.value = userMe[0].spaceId//固定
@@ -624,8 +596,9 @@ export default {
             if(row.isEncrypt === "Y"){
                 getLeveldetailFn(row.encryptLevel)
             }else{
-                thisFolderRole.value = null
+                thisFolderRole.value = {}
             }
+            thisRole.value = row.dirRole?row.dirRole.split(','):[]
             copyParentId.value = row.parentId
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
@@ -1015,8 +988,9 @@ export default {
             if(row.isEncrypt === "Y"){
                 getLeveldetailFn(row.encryptLevel)
             }else{
-                thisFolderRole.value = null
+                thisFolderRole.value = {}
             }
+            thisRole.value = row.dirRole?row.dirRole.split(','):[]
             console.log('row1', toRaw(row));
             topPath.value = row.dirPath
             // console.log('topPath',toRaw(topPath.value));
@@ -1159,7 +1133,7 @@ export default {
             }
             // console.log('arr',arr);
             if(thisFolderRole.value){
-                arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
+                arr = publicRightMenuRole(toRaw(thisRole.value),arr)
             }
             return arr
         }
@@ -1565,7 +1539,8 @@ export default {
             surePass,
             chooseRow,
             chooseNum,
-            loadingPreview
+            loadingPreview,
+            thisRole
         }
     },
     watch: {

+ 190 - 0
src/views/department/components/createTasnsfer.vue

@@ -0,0 +1,190 @@
+<template>
+  <div class="transBox" v-if="open">
+    <div class="allBag">
+      <el-input
+        style="width: 220px; margin-left: 18px; margin-top: 5px"
+        v-model="allBag"
+        placeholder="搜索"
+      ></el-input>
+      <div class="allLog">
+        <el-tree
+          ref="treeRef"
+          :data="allTreeData"
+          :props="allTreeProps"
+          show-checkbox
+          node-key="id"
+          :default-expanded-keys="openTree"
+          @check-change="allTreeChange"
+          :default-checked-keys="backScreen"
+          :check-strictly="false"
+        />
+      </div>
+    </div>
+    <div class="needBag">
+      <div style="border-bottom: 1px solid gray" class="needBag_top">
+        <span>已选择{{ chooseTagData.length }}人</span>
+        <span style="color: red; font-size: 14px; float: right">清空</span>
+      </div>
+      <div class="needLog">
+        <el-scrollbar>
+          <el-tag
+            v-for="(item, index) in chooseTagData"
+            :key="index"
+            class="tagtag"
+            :closable="lastPeople"
+            @close="handleClose(item)"
+          >
+            {{ item.userName ? item.userName : item.name }}
+          </el-tag>
+        </el-scrollbar>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { ref, onMounted, toRef, watch,defineEmits,toRaw } from "vue";
+import userTree from "../../../api/user/userTree";
+import fileShare from "../../../api/fileShare/fileShare";
+import fileCount from "../../../api/fileCount/fileCount";
+import { ElMessage } from "element-plus";
+const open = ref(true);
+const allTreeData = ref([]);
+const chooseTagData = ref([]);
+const lastPeople = ref(false);
+const openTree = ref([]);
+const backScreen = ref([]);
+const allTreeProps = {
+  label: "label",
+  children: "children",
+  disabled: false,
+  id: "id",
+};
+const emit = defineEmits(["setUsers"]);
+
+const props = defineProps({
+  openTrans: {
+    type: Boolean,
+    default: true,
+  },
+});
+watch(
+  () => props.openTrans,
+  (newValue) => {
+    console.log(111);
+    open.value = newValue;
+  }
+);
+function allTreeChange(e) {
+  const id = e.id;
+  const label = e.label;
+  const disabled = e.disabled;
+  // 查找是否已经存在相同 userId 的数据的索引
+  const existingIndex = chooseTagData.value.findIndex(
+    (item) => item.userId === id
+  );
+  if (existingIndex !== -1) {
+    // 如果已存在,删除该项
+    chooseTagData.value.splice(existingIndex, 1);
+  } else {
+    // 选择操作,将数据添加到 needTagData 中
+    chooseTagData.value.push({
+      userId: id,
+      userName: label,
+      disabled: disabled,
+    });
+  }
+  if (chooseTagData.value.length === 1) {
+    lastPeople.value = true;
+  } else {
+    lastPeople.value = false;
+  }
+  chooseTagData.value = chooseTagData.value.filter((item) => !item.disabled);
+   emit("setUsers",toRaw(chooseTagData.value));
+  console.log("chooseTagData", chooseTagData.value);
+}
+// 获取用户树
+function getAllUser() {
+  userTree.getUserTree({}).then((res) => {
+    console.log("userTree", res);
+    allTreeData.value = [res];
+    console.log('open',open.value);
+    userTree.getUserTree({}).then((res) => {
+      allTreeData.value = [res];
+      // 递归函数来获取所有节点的 id
+      function getAllNodeIds(nodes) {
+        nodes.forEach((node) => {
+          openTree.value.push(node.id);
+          if (node.children && node.children.length > 0) {
+            getAllNodeIds(node.children);
+          }
+        });
+      }
+      // 调用递归函数获取所有节点的 id
+      getAllNodeIds(allTreeData.value);
+    });
+  });
+}
+onMounted(() => {
+  getAllUser();
+});
+</script>
+
+<style lang="scss" scoped>
+.transBox {
+  width: 100%;
+  height: 400px;
+  margin: 0 auto;
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+  /* border: 1px solid black; */
+}
+
+.tagtag {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  text-align: start;
+  width: 230px;
+  margin: 0 auto;
+}
+
+.allBag {
+  width: 60%;
+  height: 380px;
+  border: 1px solid green;
+}
+
+.needBag {
+  width: 40%;
+  height: 380px;
+  border: 1px solid green;
+}
+
+.allLog {
+  width: 245px;
+  height: 330px;
+  margin: 5px auto;
+  /* border: 1px solid red; */
+  overflow-y: auto;
+}
+.needBag_top {
+  padding: 0 10px;
+  height: 30px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.needLog {
+  height: 100%;
+}
+
+:deep(.el-tag__content) {
+  display: block;
+}
+
+:deep(.el-icon el-tag__close) {
+  display: block;
+}
+</style>

+ 51 - 18
src/views/department/modalComponebts/CreateFloder.vue

@@ -12,25 +12,22 @@
                             <el-radio :label="2">组织目录</el-radio>
                         </el-radio-group>
                     </el-form-item> -->
-                    <el-form-item label="是否加密" v-if="!(FolderRole && !free )">
+                    <!-- <el-form-item label="是否加密" v-if="!(FolderRole && !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-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> -->
                     <el-form-item label="成员权限">
                           <el-checkbox-group v-model="boserForm.memberRoles">
-                            <el-checkbox  label="see">可查看</el-checkbox>
-                            <el-checkbox  label="edit">可编辑</el-checkbox>
-                            <el-checkbox  label="upload">可上传</el-checkbox>
-                            <el-checkbox  label="del">可删除</el-checkbox>
+                            <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="选择成员">
-                          <TransferModal :isNewMenu="true" :thanks="true"></TransferModal>
                     </el-form-item>
+                    <CreateTasnsfer @setUsers="setUsers" :openTrans="openTrans"></CreateTasnsfer>
                 </el-form>
                 <template #footer>
                     <span class="dialog-footer">
@@ -46,11 +43,15 @@
 </template>
 
 <script>
-import { ref, onMounted, toRef } from 'vue';
+import { ref, onMounted, toRef,toRaw } from 'vue';
 import documents from '../../../api/document/document';
+import {
+    getUser,
+} from "@/api/system/user";
 import { getLevel } from '@/api/level/level.js';
 import { ElMessage } from 'element-plus';
-import TransferModal from '../modalComponebts/Transfer.vue'
+import CreateTasnsfer from '../components/createTasnsfer.vue'
+
 export default {
     props: {
         folderCase: {
@@ -85,6 +86,12 @@ export default {
         getAllTop: Function,
     },
     setup(props, { emit }) {
+        const {
+            proxy
+        } = getCurrentInstance();
+        const {
+            dir_rules
+        } = proxy.useDict('dir_rules');
         let { addBack, sureAddBoser, diClose } = toRef(props)
         let result = props.folderCase
         let free = props.oneOrTwo
@@ -93,6 +100,7 @@ export default {
         let newspid = props.newSpaceId
         let newdrid = props.newDirId
         const FolderRole = props.thisFolderRole
+        const openTrans = ref(true)
         // console.log("FolderRole",props);
         let addBoser = ref(false)
         let boserForm = ref({
@@ -100,7 +108,8 @@ export default {
             dirType:2,
             isEncrypt:"Y",
             encryptLevel:"L1",
-            memberRoles:[]
+            memberRoles:[],
+            users:[]
         })
         const levelList = ref([])
         function inital() {
@@ -112,6 +121,7 @@ export default {
             emit("getChildrenC", addBoser.value)
         }
         function addFloder() {
+            console.log('boserForm',boserForm.value);
             if (boserForm.value.dirName === '') {
                 ElMessage({
                     type: "error",
@@ -124,8 +134,10 @@ export default {
                             "dirName": boserForm.value.dirName,
                             "parentId": drId - 0,
                             "spaceId": spId - 0,
-                            "isEncrypt":boserForm.value.isEncrypt,
-                            "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
+                            "dirRole":boserForm.value.memberRoles.join(','),
+                            "users":boserForm.value.users
+                            // "isEncrypt":boserForm.value.isEncrypt,
+                            // "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
                         }
                     ).then(res => {
                         if (res.code === 200) {
@@ -141,12 +153,13 @@ export default {
                 } else {
                     let query = {}
                     if(FolderRole){
+                        //目前是不可以创建二级目录
                         query={
                             "dirName": boserForm.value.dirName,
                             "parentId": newdrid - 0,
                             "spaceId": newspid - 0,
-                            "isEncrypt":"Y",
-                            "encryptLevel":FolderRole.levelCode
+                            // "isEncrypt":"Y",
+                            // "encryptLevel":FolderRole.levelCode
                         }
                         console.log('query',query);
                         console.log('FolderRole',FolderRole);
@@ -155,8 +168,8 @@ 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
+                            // "isEncrypt":boserForm.value.isEncrypt,
+                            // "encryptLevel":boserForm.value.isEncrypt == "Y"?boserForm.value.encryptLevel:null
                         }
                     }
                     documents.addDocument(
@@ -183,9 +196,24 @@ export default {
             }
             // console.log(res);
         }
+        const setUsers = (arr)=>{
+            const oldArr = toRaw(arr)
+            // boserForm.value.users = oldArr.map(item=>toRaw(item))
+            const newArr = oldArr.map(item=>toRaw(item))
+            boserForm.value.users = newArr.map(item=>{
+                delete item['disabled']
+                return item
+            })
+            console.log('newArr',boserForm.value.users);
+        }
+        const getUserFn =async ()=>{
+            const res = await  getUser()
+            console.log('getUserFn',res);
+        }
         onMounted(() => {
             inital()
             getLevelList()
+            getUserFn()
         })
         return {
             addBoser,
@@ -201,11 +229,16 @@ export default {
             levelList,
             getLevelList,
             FolderRole,
-            free
+            free,
+            openTrans,
+            setUsers,
+            getUserFn,
+            dir_rules,
+            proxy
         }
     },
     components: {
-        TransferModal,
+        CreateTasnsfer,
     },
 }
 </script>

+ 1 - 1
src/views/myjoin/MyJoin.vue

@@ -6,7 +6,7 @@
                 <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick" tab-position="top">
                     <el-tab-pane label="我发起的" name="first">
                         <div>
-                            <el-button @click="newFileAdd">新建文件</el-button>
+                            <!-- <el-button @click="newFileAdd">新建文件</el-button> -->
                         </div>
                         <div>
                             <el-table :data="myEjoy" style="width: 100%" @row-click="rowClickFN">

+ 3 - 2
vite.config.js

@@ -42,13 +42,14 @@ export default defineConfig(({
 					target: 'http://192.168.1.28:8080/',
 					// target: 'http://8.142.173.95:19527/',
 					// target:'http://192.168.1.28:8080/',
+					// target:'http://192.168.1.11:8080',
 					changeOrigin: true,
 					rewrite: (p) => p.replace(/^\/dev-api/, '')
 				},
 				//websocket代理
 				'/websocket': {				
-					target:'ws://8.142.173.95:19527/websocket',
-					// target:'ws://192.168.1.28:8080/websocket',
+					// target:'ws://8.142.173.95:19527/websocket',
+					target:'ws://192.168.1.28:8080/websocket',
 					// target:'ws://192.168.1.11:8080/websocket',
 					changeOrigin: true,
 					rewrite: (p) => p.replace(/^\/websocket/, '')