“yueshang” há 1 ano atrás
pai
commit
469f9924fe

+ 249 - 219
src/views/myfile/MyFile.vue

@@ -1,11 +1,11 @@
 <template>
     <div>
         <div class="bigBox">
-            <div  class="settingBox" @click="mouseClick">
+            <div class="settingBox" @click="mouseClick">
                 <!-- 设置盒子顶部搜索 -->
                 <div class="topSearch">
-                    
-                    <div class="spaceName">{{spaceName}}</div>
+
+                    <div class="spaceName">{{ spaceName }}</div>
                     <div>
                         <el-icon @click="createNewMenu(1,true)" color="#505870" size="24">
                             <Plus />
@@ -14,10 +14,10 @@
                     </div>
                 </div>
                 <!-- 方块点击盒子 -->
-                <div
-                    style="height: 75vh;overflow-y: auto;">
+                <div style="height: 75vh;overflow-y: auto;">
                     <div class="searchBox">
-                        <el-input v-model="searchFire" class="searchFire" size="large" placeholder="搜索文件" />
+                        <el-input v-model="searchFire" @blur="fileBlur" class="searchFire" size="large"
+                            placeholder="搜索文件" />
                         <el-icon class="SearchIcon">
                             <Search />
                         </el-icon>
@@ -60,11 +60,12 @@
                         </div>
                     </template>
                     </div>
-                    
+
                 </div>
                 <div class="expansion">
                     <div class="top_box">
-                        <span style="margin-left: 5px;font-size: 14px;font-weight: 500;">{{ formatStorage(useSpace) }}/{{ allSpace + "G" }}</span>
+                        <span style="margin-left: 5px;font-size: 14px;font-weight: 500;">{{ formatStorage(useSpace) }}/{{
+                            allSpace + "G" }}</span>
                         <span style="margin-left: 5px;font-size: 14px;color: #2E6BC8;cursor: pointer;"
                             @click="askApply">申请扩容</span>
                     </div>
@@ -72,9 +73,9 @@
                 </div>
             </div>
             <!-- 右侧大盒子 -->
-            <div  class="mesBox">
+            <div class="mesBox">
                 <!-- 功能盒子  -->
-                    <!-- table切换 -->
+                <!-- table切换 -->
                 <!-- <div class="useBox">
                     <div style="width: 100%;height: 24px;background-color: #7084B4;line-height: 20px;">
                         <template v-for="(item, index) in menuList">
@@ -129,8 +130,7 @@
                             style="display: flex;opacity:0.5;width: 82px;height: 32px;justify-content: flex-start;align-items: center;">
                             <div style="margin-left: 5px;">
                                 <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
-                                    >
+                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;">
                                     <Plus />
                                 </el-icon>
                             </div>
@@ -138,12 +138,12 @@
                                 <span style="font-size: 14px;" class="shouzhi">新建</span>
                             </div>
                         </div>
-                        <div
-                            style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;" :class="!thisFolder.dirType?'yincang':'xianshi'">
+                        <div style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;"
+                            :class="!thisFolder.dirType ? 'yincang' : 'xianshi'">
                             <div style="margin-left: 5px;">
                                 <el-icon
                                     style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
-                                    @click="thisFolder.dirType?createNewMenu(2):null">
+                                    @click="thisFolder.dirType ? createNewMenu(2) : null">
                                     <Plus />
                                 </el-icon>
                             </div>
@@ -261,32 +261,34 @@
                         </div>
                         <!-- 文件 -->
                         <div class="fileTable">
-                            <el-collapse v-model="files"  >
-                                <el-collapse-item  title="文件" name="2" class="custom-collapse-item">
-                                     <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd"  v-if="fileGrid" height="38vh" :data="fileList" :scrollbar-always-on="true" style="width: 100%;"
+                            <el-collapse v-model="files">
+                                <el-collapse-item title="文件" name="2" class="custom-collapse-item">
+                                    <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10"
+                                        :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid" height="38vh"
+                                        :data="fileList" :scrollbar-always-on="true" style="width: 100%;"
                                         @row-contextmenu="handleRowClick" @selection-change="handleSelectionChange"
                                         @row-click="mouseClick" :default-sort="{ prop: 'createTime', order: 'descending' }">
                                         <el-table-column type="selection" width="55" />
                                         <el-table-column label="名称" width="200">
                                             <template #default="scope">
-                                                <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: flex;align-items: center;">
-                                                <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,false)" style="margin-right: 7px;">
-                                                    <Star />
-                                                </el-icon>
-                                                <img v-else @click.stop="delCollect(scope.row,false)" src="../../assets/images/yellowstar.png" alt="" style="margin-right: 5px;">
-                                                <img :src="getImage(scope.row.fileType)" alt="">
-                                                    <el-tooltip
-                                                        class="box-item"
-                                                        effect="dark"
-                                                        placement="top"
-                                                        :show-after="1000"
-                                                        :content="scope.row.fileName"
-                                                    >
-                                                    <!-- <template #content> {{ scope.row.encryptLevel == 'L1'?'敏感':(scope.row.encryptLevel == 'L2'?'涉密':(scope.row.encryptLevel == 'L3'?'机密':'绝密')) }} </template> -->
-                                                    <span class="shouzhi">{{ scope.row.fileName }}</span>
+                                                <span
+                                                    style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: flex;align-items: center;">
+                                                    <el-icon v-if="scope.row.isFavorite == 'N'"
+                                                        @click.stop="collectByStar(scope.row, false)"
+                                                        style="margin-right: 7px;">
+                                                        <Star />
+                                                    </el-icon>
+                                                    <img v-else @click.stop="delCollect(scope.row, false)"
+                                                        src="../../assets/images/yellowstar.png" alt=""
+                                                        style="margin-right: 5px;">
+                                                    <img :src="getImage(scope.row.fileType)" alt="">
+                                                    <el-tooltip class="box-item" effect="dark" placement="top"
+                                                        :show-after="1000" :content="scope.row.fileName">
+                                                        <!-- <template #content> {{ scope.row.encryptLevel == 'L1'?'敏感':(scope.row.encryptLevel == 'L2'?'涉密':(scope.row.encryptLevel == 'L3'?'机密':'绝密')) }} </template> -->
+                                                        <span class="shouzhi">{{ scope.row.fileName }}</span>
                                                     </el-tooltip>
                                                     <!-- <span class="shouzhi">{{ scope.row.fileName }}</span> -->
-                                            </span>
+                                                </span>
                                             </template>
                                         </el-table-column>
                                         <el-table-column prop="createTime" label="时间" sortable width="180" />
@@ -324,9 +326,9 @@
                                 </p>
                             </div>
                         </div>
-                </div>
-               
                     </div>
+
+                </div>
                 <!-- <div v-else>
                     <div>
                         <el-button @click="editOnline = true; historyPrew = false">返回</el-button>
@@ -344,8 +346,8 @@
             <!-- 新增文件夹弹窗 -->
             <div>
                 <CreateFloder v-if="folderCase" :folderCase="folderCase" @getChildrenC="getChildrenC" :oneOrTwo="oneOrTwo"
-                    :impDirId="impDirId" :impSpaceId="impSpaceId" :newDirId="newDirId" :newSpaceId="newSpaceId" :thisFolderRole="thisFolderRole"
-                    :refreshFile="refreshFile">
+                    :impDirId="impDirId" :impSpaceId="impSpaceId" :newDirId="newDirId" :newSpaceId="newSpaceId"
+                    :thisFolderRole="thisFolderRole" :refreshFile="refreshFile">
                 </CreateFloder>
             </div>
             <!-- 文件上传 -->
@@ -387,7 +389,8 @@
             <!-- 文件收藏 -->
             <div>
                 <FileCollect v-if="collects" :collects="collects" @getCollects="getCollects" :copyFileName="copyFileName"
-                    :copyFileId="copyFileId" @refreshFile="refreshFile" :isFolder="isFolder" :clickRow="clickRow"></FileCollect>
+                    :copyFileId="copyFileId" @refreshFile="refreshFile" :isFolder="isFolder" :clickRow="clickRow">
+                </FileCollect>
             </div>
             <!-- 中栏重命名 -->
             <div>
@@ -410,20 +413,21 @@
     </div>
     <!-- 图片预览 -->
     <!-- 历史版本 -->
-    <historyList v-if="openForwardFile" :openFile="openForwardFile" :docId="clickRowId" :name="nameForm.name" :copyRow="copyRow"
-        @close="openForwardFile = false" :fileUserTreeData="fileUserTreeData.data" @changeMsgClose="changeMsgClose"
-        :historyTotal="historyTotal">
+    <historyList v-if="openForwardFile" :openFile="openForwardFile" :docId="clickRowId" :name="nameForm.name"
+        :copyRow="copyRow" @close="openForwardFile = false" :fileUserTreeData="fileUserTreeData.data"
+        @changeMsgClose="changeMsgClose" :historyTotal="historyTotal">
     </historyList>
     <!-- 历史版本 -->
     <!-- 二次密码验证 -->
-    <inputPassword v-if="showInputPassword" @surePass="surePass" @closeIptPass="closeIptPass" :showInputPassword="showInputPassword"></inputPassword>
+    <inputPassword v-if="showInputPassword" @surePass="surePass" @closeIptPass="closeIptPass"
+        :showInputPassword="showInputPassword"></inputPassword>
     <div v-loading.fullscreen="loadingPreview" v-if="loadingPreview" class="lodingBox"></div>
     <!-- 新增文档 -->
     <AddFile v-if="newAdd" :newAdd="newAdd" @threeBe="threeBe" :clickFileData="clickFileData"></AddFile>
 </template>
 
 <script>
-import { ref, toRaw, onMounted ,inject,onActivated} from 'vue'
+import { ref, toRaw, onMounted, inject, onActivated } from 'vue'
 import myfile from '../../api/myfile/myfile'
 import uploadApi from '../../api/upload/upload'
 import { delFavorite } from '@/api/biz/favorite.js'
@@ -450,15 +454,15 @@ import level1 from "@/assets/images/level1.png";
 import level2 from "@/assets/images/level2.png";
 import level3 from "@/assets/images/level3.png";
 import level4 from "@/assets/images/level4.png";
-import { ElMessage ,ElLoading } from 'element-plus'
+import { ElMessage, ElLoading } from 'element-plus'
 import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
 import { preview } from "@/api/common/common.js";
 import historyList from "@/components/historyList/index.vue"; //选择文件发送的列表,历史版本
 import inputPassword from "./components/inputPassword.vue"; //选择文件发送的列表,历史版本
 import { listVersion } from "@/api/biz/version";
 import useUserStore from "@/store/modules/user";
-import { useRouter, useRoute,onBeforeRouteUpdate } from "vue-router";
-import { canPreviewFile,rightMenuRole } from "@/utils/index.js"
+import { useRouter, useRoute, onBeforeRouteUpdate } from "vue-router";
+import { canPreviewFile, rightMenuRole } from "@/utils/index.js"
 import fileSpace from '../../api/filespace/fileSpace';
 import { getLeveldetail } from '../../api/level/level';
 import { encrypt, decrypt } from "@/utils/jsencrypt";
@@ -466,7 +470,7 @@ import Cookies from "js-cookie";
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
 
 export default {
-     directives: {
+    directives: {
         'el-table-infinite-scroll': elTableInfiniteScroll
     },
     setup() {
@@ -658,6 +662,7 @@ export default {
         const tableBeEnd = ref(true)//控制下拉是否到底
         const tableTotal = ref(0)//表格数据总数
         const clickFileData = ref(null);
+        let fileBig = ref(0)
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(3).then(res => {
@@ -673,7 +678,7 @@ export default {
                     pageNum: 1,
                     pageSize: 10
                 }
-                documents.getALLdocumentByType({ parentId: userMe[0].dirId - 0, spaceId: userMe[0].spaceId, pageNum: obj.pageNum, pageSize: obj.pageSize },3).then(res => {
+                documents.getALLdocumentByType({ parentId: userMe[0].dirId - 0, spaceId: userMe[0].spaceId, pageNum: obj.pageNum, pageSize: obj.pageSize }, 3).then(res => {
                     fileMenu.value = res.data
                     folderList.value = res.data
                 })
@@ -708,25 +713,25 @@ export default {
         }
         function changeFile(row, num) {
             // 创建标签
-           
+
             const addData = {
-                path:'/myfile'+row.dirId,
-                name:row.dirName,
-                clickRowId:toRaw(row)
+                path: '/myfile' + row.dirId,
+                name: row.dirName,
+                clickRowId: toRaw(row)
             }
             addFolderAdd(addData)
             thisFolder.value = row
-            console.log('row2',row);
+            console.log('row2', row);
             topPath.value = row.dirPath
-            if(row.isEncrypt === "Y"){
+            if (row.isEncrypt === "Y") {
                 getLeveldetailFn(row.encryptLevel)
-            }else{
+            } else {
                 thisFolderRole.value = null
             }
             copyParentId.value = row.parentId
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
-            documents.getALLdocumentByType({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 },3).then(res => {
+            documents.getALLdocumentByType({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 }, 3).then(res => {
                 folderList.value = res.data
                 // if (res.code === 200) {
                 if (res.data.length === 0) {
@@ -779,7 +784,7 @@ export default {
                     pageNum: 1,
                     pageSize: 10
                 }
-                documents.getALLdocumentByType({ parentId: row.dirIds - 0, spaceId: row.spaceIds - 0, pageNum: obj.pageNum, pageSize: obj.pageSize },3).then(res => {
+                documents.getALLdocumentByType({ parentId: row.dirIds - 0, spaceId: row.spaceIds - 0, pageNum: obj.pageNum, pageSize: obj.pageSize }, 3).then(res => {
                     // fileMenu.value = res.data
                     folderList.value = res.data
                 })
@@ -813,9 +818,16 @@ export default {
                 editOnline.value = true
             }
         }
+        function fileBlur() {
+            if (searchFire.value == '') {
+                getAllTop()
+            } else {
+                fileMenu.value = fileMenu.value.filter(item => item.dirName == searchFire.value)
+            }
+        }
         // 文件名表格每一行点击事件
         function handleRowClick(row, col, e) {
-            console.log('row',row);
+            console.log('row', row);
             isFolder.value = "N"
             clickRow.value = row
             e.preventDefault();
@@ -838,10 +850,10 @@ export default {
             }
         }
         // 申请扩容
-       async function askApply() {
-            const res =  await fileSpace.querySpace(impSpaceId.value)
-            console.log('res',res);
-            if(res.data){
+        async function askApply() {
+            const res = await fileSpace.querySpace(impSpaceId.value)
+            console.log('res', res);
+            if (res.data) {
                 ElMessage({ message: '已存在扩容申请', type: 'error' })
                 return
             }
@@ -850,11 +862,11 @@ export default {
         //mouse弹框
         async function chooseSet(row, index, num) {
             // 权限控制
-            if(thisFolderRole.value && thisFolderRole.value.roles){
-                if(thisFolderRole.value.roles.l0600){
+            if (thisFolderRole.value && thisFolderRole.value.roles) {
+                if (thisFolderRole.value.roles.l0600) {
                     const passArr = localStorage.getItem('passArr');
                     const passArrObj = JSON.parse(passArr)
-                    if((!passArrObj) || !passArrObj.some(item=>item === clickRow.value.docId)){
+                    if ((!passArrObj) || !passArrObj.some(item => item === clickRow.value.docId)) {
                         chooseRow.value = row
                         chooseNum.value = num
                         showInputPassword.value = true
@@ -892,7 +904,7 @@ export default {
                             message: "删除成功"
                         })
                         // getAllTop()
-                         refreshFile()
+                        refreshFile()
                     }
                 })
             }
@@ -909,20 +921,20 @@ export default {
             }
             if (row.name === "下载") {
                 // location.href = `${import.meta.env.VITE_APP_BASE_API}/biz/info/download/${copyFileId.value}`;
-            downLoadfile()
+                downLoadfile()
             }
             if (row.name === '收藏') {
                 collects.value = true
             }
             if (row.name === '在线编辑') {
-                 loadingPreview.value = true
+                loadingPreview.value = true
                 // const filePreview = canPreviewFile(copyFileType.value)
                 // if (filePreview) {
-                     loadingPreview.value = false
-                    addFileTab(clickRow.value,1);
-                    onlyView.value = false
-                    // editOnline.value = false
-                    cliCC.value = false
+                loadingPreview.value = false
+                addFileTab(clickRow.value, 1);
+                onlyView.value = false
+                // editOnline.value = false
+                cliCC.value = false
                 // } else {
                 //     const res = await preview(copyRow.value.docId)
                 //     showPreview.value = true
@@ -960,8 +972,8 @@ export default {
                 loadingPreview.value = true
                 const filePreview = canPreviewFile(copyFileType.value)
                 if (filePreview) {
-                     loadingPreview.value = false
-                    addFileTab(clickRow.value,0);
+                    loadingPreview.value = false
+                    addFileTab(clickRow.value, 0);
                     //    const addData = {
                     //     path:"/fileEdit" + clickRow.value.docId,
                     //     name:clickRow.value.fileName,
@@ -1002,12 +1014,12 @@ export default {
             }
             if(num==2) {
                 newAdd.value = true
-            }else{
+            } else {
                 oneOrTwo.value = num
                 folderCase.value = true
             }
         }
-        function threeBe(data){
+        function threeBe(data) {
             newAdd.value = data
             console.log('cli', clickFileData.value)
             let obj = {
@@ -1073,9 +1085,12 @@ export default {
             }else{
                return ElMessage({ message: "请选择文件", type: "error"})
             }
+
         }
         function onSuccess(files, val) {
+            fileBig.value = files.file.size
             fileArr.value.push(files.file)
+            console.log('大小');
         }
         const handleRemove = (file,rawFile) => {
             fileArr.value = [...rawFile]
@@ -1164,7 +1179,7 @@ export default {
                                 type: "success"
                             })
                             // getAllTop()
-                             refreshFile()
+                            refreshFile()
                         } else {
                             ElMessage({
                                 message: "删除失败,目录应不为空",
@@ -1181,7 +1196,7 @@ export default {
                                 type: "success"
                             })
                             // getAllTop()
-                             refreshFile()
+                            refreshFile()
                         }
                     })
                 }
@@ -1189,7 +1204,7 @@ export default {
             if (row.name == '分享给') {
                 workOrEdit.value = num
                 thanks.value = true
-            } 
+            }
         }
         function delName(row, num) {
             documents.delDocument(row.dirId).then(res => {
@@ -1219,15 +1234,15 @@ export default {
             tableTotal.value = 0
             // 上一级dirId就是下一级的parentId
             // 判断是点击打开还是右键菜单打开
-            if(row){
+            if (row) {
                 backFolder.value = thisFolder.value
                 thisFolder.value = row;
-            }else{
-                row =thisFolder.value
+            } else {
+                row = thisFolder.value
             }
-            if(row.isEncrypt === "Y"){
+            if (row.isEncrypt === "Y") {
                 getLeveldetailFn(row.encryptLevel)
-            }else{
+            } else {
                 thisFolderRole.value = null
             }
             // console.log('row1', toRaw(row));
@@ -1240,13 +1255,13 @@ export default {
             documents.getALLdocumentByType({
                 parentId: newDirId.value - 0,
                 spaceId: newSpaceId.value - 0
-            },3).then(res => {
+            }, 3).then(res => {
                 folderList.value = res.data
                 if (res.data.length === 0) {
                     myfile.getById(query).then(res => {
                         if (res.code === 200) {
-                            tableTotal.value =res.total
-                            if(res.rows.length<res.total){
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
                                 //第一次拿到的数据少于总数开启下拉事件
                                 tableBeEnd.value = false
                             }
@@ -1255,10 +1270,10 @@ export default {
                     })
                 } else {
                     myfile.getById(query).then(res => {
-                        console.log('folerFile',res);
+                        console.log('folerFile', res);
                         if (res.code === 200) {
-                            tableTotal.value =res.total
-                            if(res.rows.length<res.total){
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
                                 //第一次拿到的数据少于总数开启下拉事件
                                 tableBeEnd.value = false
                             }
@@ -1369,10 +1384,10 @@ export default {
         }
         //对mouseCli数组进行筛选,实现菜单的区分显示
         const filterMouseCli = () => {
-            const canPreviewArray = ['.doc','.wps', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.pdf', '.rtf', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp', '.pot', '.potm', '.potx', '.pps', '.ppsm', '.ppsx', '.ppt', '.pptm', '.pptx']
+            const canPreviewArray = ['.doc', '.wps', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.pdf', '.rtf', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp', '.pot', '.potm', '.potx', '.pps', '.ppsm', '.ppsx', '.ppt', '.pptm', '.pptx']
             const typeArr = ['.png', '.jpg', '.jpeg', '.JPG', '.mp3', '.mp4']
             const imgTypeArr = ['.png', '.jpg', '.jpeg', '.JPG']
-            const canEditArr = ['.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp','.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.rtf', '.txt', '.djvu', '.xps', '.wps','.pptx']
+            const canEditArr = ['.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp', '.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.rtf', '.txt', '.djvu', '.xps', '.wps', '.pptx']
             let arr = []
             if (!(typeArr.includes(copyFileType.value) || canPreviewArray.includes(copyFileType.value))) {
                 arr = mouseCli.value.filter(item => item.name !== "预览")
@@ -1386,8 +1401,8 @@ export default {
                 arr = arr.filter(item => item.name !== "文字识别")
             }
             // console.log('arr',arr);
-            if(thisFolderRole.value){
-                arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
+            if (thisFolderRole.value) {
+                arr = rightMenuRole(toRaw(thisFolderRole.value), arr)
             }
             return arr
         }
@@ -1427,7 +1442,7 @@ export default {
             collects.value = true
         }
         // 左箭头事件
-        const arrowLift =async () => {
+        const arrowLift = async () => {
             // router.go(-1)
             // console.log(1);
             topPath.value = backFolder.value.dirPath
@@ -1437,7 +1452,7 @@ export default {
             documents.getALLdocumentByType({
                 parentId: newDirId.value - 0,
                 spaceId: newSpaceId.value - 0
-            },3).then(res => {
+            }, 3).then(res => {
                 folderList.value = res.data
                 if (res.data.length === 0) {
                     myfile.getById(newDirId.value).then(res => {
@@ -1454,7 +1469,7 @@ export default {
                     })
                 }
             })
-            
+
         }
         // 归档
         function goLock() {
@@ -1518,15 +1533,15 @@ export default {
             }
         }
         //star收藏事件
-        const collectByStar = (row,isfolder)=>{
+        const collectByStar = (row, isfolder) => {
             // console.log('row',row);
-            if(isfolder){
+            if (isfolder) {
                 let thisRow = toRaw(row)
                 isFolder.value = 'Y'
                 clickRow.value = thisRow
                 copyFolderName.value = row.dirName
                 copyFileName.value = clickRow.value.dirName
-            }else{
+            } else {
                 isFolder.value = "N"
                 clickRow.value = row
                 copyRow.value = row
@@ -1534,144 +1549,144 @@ export default {
                 copyDirId.value = row.dirId
                 copyFileName.value = row.fileName
             }
-            
+
             collects.value = true
         }
         // 取消文件收藏
-        const delCollect = async (row,isfolder)=>{
+        const delCollect = async (row, isfolder) => {
             const thisRow = toRaw(row)
-            console.log('thisRow',thisRow);
+            console.log('thisRow', thisRow);
             let query = {}
-            if(isfolder){
+            if (isfolder) {
                 query = {
-                    isFolder:"Y",
-                    relaId:thisRow.dirId
+                    isFolder: "Y",
+                    relaId: thisRow.dirId
+                }
+            } else {
+                query = {
+                    isFolder: "N",
+                    relaId: thisRow.docId
                 }
-            }else{
-               query = {
-                    isFolder:"N",
-                    relaId:thisRow.docId
-                } 
             }
             const res = await delFavorite(query)
             //TODO 之后需要重新获取数据 并message提示
-            console.log('res',res);
+            console.log('res', res);
             refreshFile()
         }
         //获取安全图标
-        const getLevelImg = (level)=>{
-             switch (level) {
+        const getLevelImg = (level) => {
+            switch (level) {
                 case "L1":
-                return level1;
-                break;
+                    return level1;
+                    break;
                 case "L2":
-                return level2;
-                break;
+                    return level2;
+                    break;
                 case "L3":
-                return level3;
-                break;
+                    return level3;
+                    break;
                 case "L4":
-                return level4;
-                break;
-                return level1;
-                break;
+                    return level4;
+                    break;
+                    return level1;
+                    break;
             }
         }
         //获取权限详情
-        const getLeveldetailFn =async (data)=>{
+        const getLeveldetailFn = async (data) => {
             const res = await getLeveldetail(data)
             // console.log('getLeveldetailFn',res);
-            if(res.code === 200){
+            if (res.code === 200) {
                 thisFolderRole.value = res.data
             }
             // console.log('thisFolderRole',thisFolderRole.value);
-        } 
-        const closeIptPass = ()=>{
+        }
+        const closeIptPass = () => {
             showInputPassword.value = false
         }
         //输入验证密码后
-        const surePass = (pass)=>{
+        const surePass = (pass) => {
             const passwordCookies = Cookies.get("pass");
             // console.log('pass',pass);
             // console.log('oldPass',passwordCookies);
             // console.log('clickRow',clickRow);
             showInputPassword.value = false
-            if(pass === passwordCookies){
+            if (pass === passwordCookies) {
                 const passArr = localStorage.getItem('passArr');
                 // console.log('passArr',passArr);
-                if(!passArr){
+                if (!passArr) {
                     const newArr = []
                     newArr.push(clickRow.value.docId)
-                    localStorage.setItem('passArr',JSON.stringify(newArr))
-                }else{
+                    localStorage.setItem('passArr', JSON.stringify(newArr))
+                } else {
                     const passArrObj = JSON.parse(passArr)
                     passArrObj.push(clickRow.value.docId)
-                    localStorage.setItem('passArr',JSON.stringify(passArrObj))
+                    localStorage.setItem('passArr', JSON.stringify(passArrObj))
                 }
                 // 设置销毁
-                 setTimeout(()=>{
+                setTimeout(() => {
                     const passArr = localStorage.getItem('passArr');
                     const passArrObj = JSON.parse(passArr)
                     // console.log('```passArrObj',passArrObj);
-                    const newArr = passArrObj.filter(item=>item != clickRow.value.docId)
+                    const newArr = passArrObj.filter(item => item != clickRow.value.docId)
                     // console.log('```newArr',newArr);
-                    localStorage.setItem('passArr',JSON.stringify(newArr))
-                },1000*30)
-                chooseSet(chooseRow.value,null,chooseNum.value) 
-            }else{
+                    localStorage.setItem('passArr', JSON.stringify(newArr))
+                }, 1000 * 30)
+                chooseSet(chooseRow.value, null, chooseNum.value)
+            } else {
                 ElMessage({ message: "验证失败", type: "error" })
             }
         }
         // 文件下载
-        const downLoadfile = ()=>{
-            myfile.fileDown(clickRow.value.docId).then(res=>{
-                 var reader = new FileReader();
-                reader.onloadend = function(event){
-                //event 就是你要的返回内容
-                //因为返回的报错格式是字符串,手动转换成对象,转换成功表示请求失败
-                //转换失败就意味着你拿到的result是文件流,那么直接手动下载就好
-                try{
-                    let data = JSON.parse(event.target.result)
-                }catch(err){
-                    const time = Date.now()
-                    // console.log('time',time);
-                    const link = document.createElement('a');  // 创建a标签
-                    let blob = new Blob([res]);     
-                    link.style.display = 'none';
-                    link.href = URL.createObjectURL(blob);   // 创建下载的链接
-                    link.setAttribute('download',clickRow.value.fileName);  // 给下载后的文件命名
-                    document.body.appendChild(link);
-                    link.click();  // 点击下载
-                    document.body.removeChild(link);  //  完成移除元素
-                    window.URL.revokeObjectURL(link.href);  // 释放blob对象
-                }
+        const downLoadfile = () => {
+            myfile.fileDown(clickRow.value.docId).then(res => {
+                var reader = new FileReader();
+                reader.onloadend = function (event) {
+                    //event 就是你要的返回内容
+                    //因为返回的报错格式是字符串,手动转换成对象,转换成功表示请求失败
+                    //转换失败就意味着你拿到的result是文件流,那么直接手动下载就好
+                    try {
+                        let data = JSON.parse(event.target.result)
+                    } catch (err) {
+                        const time = Date.now()
+                        // console.log('time',time);
+                        const link = document.createElement('a');  // 创建a标签
+                        let blob = new Blob([res]);
+                        link.style.display = 'none';
+                        link.href = URL.createObjectURL(blob);   // 创建下载的链接
+                        link.setAttribute('download', clickRow.value.fileName);  // 给下载后的文件命名
+                        document.body.appendChild(link);
+                        link.click();  // 点击下载
+                        document.body.removeChild(link);  //  完成移除元素
+                        window.URL.revokeObjectURL(link.href);  // 释放blob对象
+                    }
                 };
                 reader.readAsText(res);
             })
         }
         // 触底加载事件
-        const setScroll =async ()=>{
-            console.log('setScroll','到底喽');
+        const setScroll = async () => {
+            console.log('setScroll', '到底喽');
 
             // console.log('tableBeEnd.value',tableBeEnd.value);
-            filePageNum.value = filePageNum.value+1
+            filePageNum.value = filePageNum.value + 1
             const query = `${thisFolder.value.dirId}?pageSize=10&pageNum=${filePageNum.value}`
             // -------------先禁止掉事件 定时器1秒钟后才能再次触发
             tableBeEnd.value = true
-            
+
             // --------------------
             const res = await myfile.getById(query)
             // console.log('setScrollres',res);
             if (res.code === 200) {
                 // const newarr = res.rows.concat(toRaw(fileList.value))
                 const newarr = toRaw(fileList.value).concat(res.rows)
-                console.log('newarr',newarr);
+                console.log('newarr', newarr);
                 fileList.value = JSON.parse(JSON.stringify(newarr))
-                if(newarr.length < tableTotal.value){
+                if (newarr.length < tableTotal.value) {
                     //获取后的数量<total就可以再次获取
-                    setTimeout(()=>{
-                        tableBeEnd.value = false 
-                    },1000)
+                    setTimeout(() => {
+                        tableBeEnd.value = false
+                    }, 1000)
                 }
             }
             // console.log('query',query);
@@ -1679,18 +1694,18 @@ export default {
         }
         onMounted(() => {
             // if(!thisFolder.value){
-                getAllTop()
+            getAllTop()
             // }
             getSpaceList()
             // console.log('!thisFolder.value',thisFolder.value);
-                // refreshFile()
+            // refreshFile()
             // 添加监听,点击其他地方关闭文件夹右键菜单
             window.addEventListener("click", closeRMenu, true);
             window.addEventListener("click", mouseClick, true);
             // console.log('onMounted');
         })
         // 组件显示
-        onActivated(()=>{
+        onActivated(() => {
             // console.log('onActivated.query',route.query);
             loadingPreview.value = true
             // setTimeout(()=>{
@@ -1702,43 +1717,43 @@ export default {
             //     }
             //         loadingPreview.value = false
             // },500)
-             setTimeout(()=>{
-                if(route.query.clickRowId){
+            setTimeout(() => {
+                if (route.query.clickRowId) {
                     const newRow = JSON.parse(route.query.clickRowId)
                     // console.log('newRow',newRow);
-                     myfile.getDir(newRow).then(res=>{
+                    myfile.getDir(newRow).then(res => {
                         // console.log('tores',res);
                         thisFolder.value = res.data
                         refreshFile()
                     })
                 }
-                    loadingPreview.value = false
-            },500)
+                loadingPreview.value = false
+            }, 500)
 
         })
         // 监听路由变化
-        onBeforeRouteUpdate((to,from)=>{
-        // console.log('to',to);
-        // console.log('from',from);
-        if(to.name == 'myfile'){
-            loadingPreview.value = true
-            const thisdirId = to.params.dirId
-            console.log('thisdirId',thisdirId);
-            setTimeout(()=>{
-                if(thisdirId){
-                    myfile.getDir(thisdirId).then(res=>{
-                        console.log('tores',res);
-                        thisFolder.value = res.data
-                        refreshFile()
-                    })
-                }
-                loadingPreview.value = false
-            },500)
-        }
-        // docId = to.query.clickRowId
-        // console.log(docId, "doc");
-        // console.log(copyRow, "row");
-        // edit();
+        onBeforeRouteUpdate((to, from) => {
+            // console.log('to',to);
+            // console.log('from',from);
+            if (to.name == 'myfile') {
+                loadingPreview.value = true
+                const thisdirId = to.params.dirId
+                console.log('thisdirId', thisdirId);
+                setTimeout(() => {
+                    if (thisdirId) {
+                        myfile.getDir(thisdirId).then(res => {
+                            console.log('tores', res);
+                            thisFolder.value = res.data
+                            refreshFile()
+                        })
+                    }
+                    loadingPreview.value = false
+                }, 500)
+            }
+            // docId = to.query.clickRowId
+            // console.log(docId, "doc");
+            // console.log(copyRow, "row");
+            // edit();
         })
         return {
             getSpaceList,
@@ -1916,7 +1931,9 @@ export default {
             tableBeEnd,
             tableTotal,
             clickFileData,
-            leftNewFile
+            leftNewFile,
+            fileBlur,
+            fileBig,
         }
     },
     watch: {
@@ -1943,14 +1960,16 @@ export default {
 
 <style lang="scss" scoped>
 @import "@/assets/styles/my-common.scss";
-.lodingBox{
-    position:absolute;
+
+.lodingBox {
+    position: absolute;
     top: 0;
     left: 0;
     width: 100vh;
     height: 100vh;
     z-index: 10000000;
 }
+
 p {
     margin: 0;
     padding: 0;
@@ -1989,12 +2008,14 @@ p {
     width: 100%;
     height: 32px;
 }
-.searchBox{
+
+.searchBox {
     display: flex;
     justify-content: space-between;
     position: relative;
     padding: 8px 16px;
-    .SearchIcon{
+
+    .SearchIcon {
         color: gray;
         position: absolute;
         right: 5%;
@@ -2002,6 +2023,7 @@ p {
 
     }
 }
+
 .setBox {
     width: 88px;
     height: 112px;
@@ -2009,9 +2031,11 @@ p {
     margin-left: 5px;
     margin-top: 5px;
     position: relative;
-    .left_fileBox{
+
+    .left_fileBox {
         position: relative;
-        .levelImg{
+
+        .levelImg {
             width: 32px;
             height: 32px;
             position: absolute;
@@ -2122,7 +2146,8 @@ p {
     height: 24px !important;
     background-color: #EBEFF6 !important;
 }
-.showBox{
+
+.showBox {
     height: calc(100% - 48px - 24px);
 }
 
@@ -2204,10 +2229,12 @@ p {
     overflow-y: auto;
     padding-bottom: 0;
 }
+
 :deep(.el-scrollbar__wrap) {
-    height: 100% !important; 
+    height: 100% !important;
     // overflow-y: auto;
 }
+
 .ellipsis-text {
     white-space: nowrap;
     overflow: hidden;
@@ -2244,11 +2271,13 @@ p {
         }
     }
 }
+
 // 扩容盒子
-.expansion{
-    margin:  0 16px;
-    border-top: 1px solid #C1CCE3 ;
-    .top_box{
+.expansion {
+    margin: 0 16px;
+    border-top: 1px solid #C1CCE3;
+
+    .top_box {
         margin-top: 16px;
         width: 100%;
         display: flex;
@@ -2282,8 +2311,9 @@ p {
     :deep(.el-table th.el-table__cell:nth-child(1) .cell) {
         visibility: hidden;
     }
-} 
-.yincang{
-    opacity:0.5;
+}
+
+.yincang {
+    opacity: 0.5;
 }
 </style>

+ 48 - 21
src/views/myfile/modalComponebts/Transfer.vue

@@ -5,12 +5,18 @@
             <el-dialog v-model="transferModals" title="分享" width="40%" :close-on-click-modal="false">
                 <div class="transBox">
                     <div class="allBag">
-                        <el-input style="width: 220px;margin-left: 18px;margin-top:5px" v-model="allBag"
-                            @blur="searchPeople" placeholder="搜索"></el-input>
+                        <div style="position: relative;">
+                            <el-input style="width: 220px;margin-left: 18px;margin-top:5px" v-model="allBag"
+                                @keyup.enter="searchPeople" placeholder="搜索"></el-input>
+                            <el-icon @click="searchPeople" style="position: absolute;top: 13px;left: 210px;">
+                                <Search />
+                            </el-icon>
+                        </div>
                         <div class="allLog">
-                            <el-tree ref="treeRef" :data="allTreeData" :props="allTreeProps" show-checkbox node-key="id"
-                                :default-expanded-keys="openTree" @check-change="allTreeChange"
+                            <el-tree v-if="have" 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" />
+                            <span v-else>暂无数据</span>
                         </div>
                     </div>
                     <div class="needBag">
@@ -21,8 +27,8 @@
                         </div>
                         <div class="needLog">
                             <el-scrollbar height="349px">
-                                <el-tag v-for="(item, index) in chooseTagData" :key="index" class="tagtag"
-                                    :closable="lastPeople" @close="handleClose(item)">
+                                <el-tag v-for="(item, index) in chooseTagData" :key="index" class="tagtag" :closable="true"
+                                    @close="handleClose(item)">
                                     {{ item.userName ? item.userName : item.name }}
                                 </el-tag>
                             </el-scrollbar>
@@ -88,6 +94,8 @@ export default {
         let needTagData = ref([])
         let backScreen = ref([])
         let lastPeople = ref(false)
+        let allCancel = ref(false)
+        let have = ref(true)
         function allTeam() {
             if (result) {
                 transferModals.value = result
@@ -95,7 +103,7 @@ export default {
         }
         // 分享穿梭框
         function allTreeChange(e) {
-            console.log('触发了change事件');
+            // console.log('触发了change事件'+ 1++);
             const id = e.id;
             const label = e.label;
             const disabled = e.disabled;
@@ -198,9 +206,6 @@ export default {
             }
             if (feeh === 0) {
                 fileCount.getActor(dees).then(res => {
-                    // 去除数组内部的重复元素
-                    // const uniqueRes = Array.from(new Set(res.map(item => item.userName))).map(id => res.find(item => item.userName === id));
-                    // 现在的 uniqueRes 数组不包含重复元素
                     chooseTagData.value = res;
                     backScreen.value = chooseTagData.value.map(item => {
                         return item.userId
@@ -216,12 +221,14 @@ export default {
         function cleanPeople() {
             treeRef.value.setCheckedKeys([]);
             chooseTagData.value = [];
-            ElMessage({
-                message: "再次点击以完全清空",
-                type: "warning",
-                duration: 1000
+            setTimeout(() => {
+                antherClean()
             })
         }
+        function antherClean() {
+            treeRef.value.setCheckedKeys([]);
+            chooseTagData.value = [];
+        }
         function searchInTreeData(treeData, searchValue) {
             const foundItems = [];
             function traverseTree(node) {
@@ -239,11 +246,14 @@ export default {
             let treeNew = allTreeData.value
             if (allBag.value == '') {
                 getAllUser()
+                have.value = true
             } else {
                 const foundData = searchInTreeData(allTreeData.value, allBag.value);
                 if (foundData.length > 0) {
+                    have.value = true
                     allTreeData.value = foundData
                 } else {
+                    have.value = false
                     allTreeData.value = treeNew
                 }
             }
@@ -255,11 +265,20 @@ export default {
         }
         function handleClose(tag) {
             chooseTagData.value.splice(chooseTagData.value.indexOf(tag), 1);
-            // 从标签中获取 userId
-            // const userId = tag.userId;
-            // 从 chooseTagData 中筛选出不包含当前 userId 的标签
-            // chooseTagData.value = chooseTagData.value.filter(item => item.userId !== userId)
-
+            let result = chooseTagData.value.map((item) => {
+                return item.userId
+            })
+            treeRef.value.setCheckedKeys(result);
+            setTimeout(() => {
+                antherClose(tag)
+            }, 10)
+        }
+        function antherClose(tag) {
+            chooseTagData.value.splice(chooseTagData.value.indexOf(tag), 1);
+            let result = chooseTagData.value.map((item) => {
+                return item.userId
+            })
+            treeRef.value.setCheckedKeys(result);
         }
         onMounted(() => {
             allTeam()
@@ -287,6 +306,7 @@ export default {
             cleanPeople,
             treeRef,
             searchPeople,
+            have,
         }
     }
 }
@@ -314,14 +334,16 @@ export default {
 
 .allBag {
     width: 255px;
-    height: 380px;
+    height: 400px;
     border: 1px solid green;
+    overflow-y: auto;
 }
 
 .needBag {
     width: 255px;
-    height: 380px;
+    height: 400px;
     border: 1px solid green;
+    overflow-y: auto;
 }
 
 .allLog {
@@ -330,6 +352,7 @@ export default {
     margin: 5px auto;
     /* border: 1px solid red; */
     overflow-y: auto;
+    text-align: center;
 }
 
 .needBag_top {
@@ -352,4 +375,8 @@ export default {
 :deep(.el-icon el-tag__close) {
     display: block;
 }
+
+:deep(.el-scrollbar__wrap .el-scrollbar__wrap--hidden-default) {
+    height: 346px !important;
+}
 </style>

+ 1 - 1
src/views/search/index.vue

@@ -61,7 +61,7 @@
             <el-table-column prop="space.spaceName" label="所属空间" width="180" />
             <el-table-column prop="createTime" label="时间" width="auto" header-align="left" />
             <el-table-column prop="fileType" label="类型" width="auto" />
-            <el-table-column prop="fileSize" label="大小" width="auto">
+            <el-table-column prop="fileSize" label="大小" width="100">
               <template #default="scope">
                 <div>{{ formatFileSize(scope.row.fileSize) }}</div>
               </template>