liyangzheng 1 rok pred
rodič
commit
7831b7cce0

+ 122 - 107
src/views/myfile/MyFile.vue

@@ -7,7 +7,7 @@
 
                     <div class="spaceName">{{ spaceName }}</div>
                     <div>
-                        <el-icon @click="createNewMenu(1,true)" color="#505870" size="24">
+                        <el-icon @click="createNewMenu(1, true)" color="#505870" size="24">
                             <Plus />
                         </el-icon>
                         <!-- @click="createNewFile" -->
@@ -23,42 +23,42 @@
                         </el-icon>
                     </div>
                     <!-- v-for盒子 -->
-                    <div style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;align-content: flex-start;overflow-y: auto;">
-                        <template v-for="(item, index) in fileMenu"  :key="index">
-                        <div class="setBox" @click="changeFile(item, index)">
-                            <el-dropdown trigger="click" class="selectChe">
-                                <span class="el-dropdown-link">
-                                    ...
-                                </span>
-                                
-                                <template #dropdown>
-                                    <el-dropdown-menu>
-                                        <el-dropdown-item @click="restName(item, index)">重命名</el-dropdown-item>
-                                        <el-dropdown-item v-if="!item.encryptLevel" @click="delName(item, index)">删除</el-dropdown-item>
-                                    </el-dropdown-menu>
-                                </template>
-                            </el-dropdown>
-                          <div class="left_fileBox">
-                              <el-tooltip
-                                  class="box-item tool-tip"
-                                  effect="dark"
-                                  placement="top-start"
-                                  v-if="item.encryptLevel"
-                               > 
-                               <template #content><span>安全级别: {{ item.encryptLevel == 'L1'?'敏感':(item.encryptLevel == 'L2'?'涉密':(item.encryptLevel == 'L3'?'机密':'绝密')) }}</span>  </template>
-                               <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;"></el-tooltip>
-                               <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;" v-else>
-                               <el-tooltip
-                                  class="box-item tool-tip"
-                                  effect="dark"
-                                  placement="top-start"
-                               > <template #content> <span>{{ item.dirName }}</span></template>
-                               <p class="ellipsis-text shouzhi">{{ item.dirName }}</p>
-                               </el-tooltip>
-                              <img class="levelImg shouzhi" v-if="item.isEncrypt === 'Y'" :src="getLevelImg(item.encryptLevel)" alt="">
-                          </div>
-                        </div>
-                    </template>
+                    <div
+                        style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;align-content: flex-start;overflow-y: auto;">
+                        <template v-for="(item, index) in fileMenu" :key="index">
+                            <div class="setBox" @click="changeFile(item, index)">
+                                <el-dropdown trigger="click" class="selectChe">
+                                    <span class="el-dropdown-link">
+                                        ...
+                                    </span>
+
+                                    <template #dropdown>
+                                        <el-dropdown-menu>
+                                            <el-dropdown-item @click="restName(item, index)">重命名</el-dropdown-item>
+                                            <el-dropdown-item v-if="!item.encryptLevel"
+                                                @click="delName(item, index)">删除</el-dropdown-item>
+                                        </el-dropdown-menu>
+                                    </template>
+                                </el-dropdown>
+                                <div class="left_fileBox">
+                                    <el-tooltip class="box-item tool-tip" effect="dark" placement="top-start"
+                                        v-if="item.encryptLevel">
+                                        <template #content><span>安全级别: {{ item.encryptLevel == 'L1' ? '敏感' :
+                                            (item.encryptLevel
+                                                == 'L2' ? '涉密' : (item.encryptLevel == 'L3' ? '机密' : '绝密')) }}</span>
+                                        </template>
+                                        <img src="../../assets/images/fileStyle.png"
+                                            style="width: 72px;height: 72px;"></el-tooltip>
+                                    <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;" v-else>
+                                    <el-tooltip class="box-item tool-tip" effect="dark" placement="top-start"> <template
+                                            #content> <span>{{ item.dirName }}</span></template>
+                                        <p class="ellipsis-text shouzhi">{{ item.dirName }}</p>
+                                    </el-tooltip>
+                                    <img class="levelImg shouzhi" v-if="item.isEncrypt === 'Y'"
+                                        :src="getLevelImg(item.encryptLevel)" alt="">
+                                </div>
+                            </div>
+                        </template>
                     </div>
 
                 </div>
@@ -147,7 +147,7 @@
                                     <Plus />
                                 </el-icon>
                             </div>
-                            <div style="margin-left: 5px;" @click="thisFolder.dirType?createNewMenu(2):null">
+                            <div style="margin-left: 5px;" @click="thisFolder.dirType ? createNewMenu(2) : null">
                                 <span style="font-size: 14px;" class="shouzhi">新建文档</span>
                             </div>
                         </div>
@@ -187,26 +187,30 @@
                             <img :src="squre" alt="" @click="gridChange">
                         </div>
                     </div>
-                <!-- </div> -->
-                <!-- 展示文件夹盒子 -->
-                <!-- 文件夹 -->
-                <div class="showBox">
-                    <div class="detailBox file-jia" @click="mouseClick">
-                        <el-collapse v-model="folder" >
-                            <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
-                                <el-table v-if="folderGrid" height="37vh" :data="folderList" style="width: 100%" :scrollbar-always-on="true"
-                                    @selection-change="handleSelectionChange1" :single-select="true" @row-click="folderClick"
-                                    @row-contextmenu="folderRClick" ref="taskTableRef">
-                                    <el-table-column type="selection" width="55" />
-                                    <el-table-column label="名称" width="180">
-                                        <template #default="scope">
-                                            <span style="display: flex;align-items: center;">
-                                                <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,true)" style="margin-right: 7px;">
-                                                    <Star />
-                                                </el-icon>
-                                                <img v-else @click.stop="delCollect(scope.row,true)" src="../../assets/images/yellowstar.png" alt="">
-                                                <img src="../../assets/images/fileBox.png" style="width: 20px;height: 24px;margin-right: 5px;"
-                                                    alt="">
+                    <!-- </div> -->
+                    <!-- 展示文件夹盒子 -->
+                    <!-- 文件夹 -->
+                    <div class="showBox">
+                        <div class="detailBox file-jia" @click="mouseClick">
+                            <el-collapse v-model="folder">
+                                <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
+                                    <el-table v-if="folderGrid" height="37vh" :data="folderList" style="width: 100%"
+                                        :scrollbar-always-on="true" @selection-change="handleSelectionChange1"
+                                        :single-select="true" @row-click="folderClick" @row-contextmenu="folderRClick"
+                                        ref="taskTableRef">
+                                        <el-table-column type="selection" width="55" />
+                                        <el-table-column label="名称" width="180">
+                                            <template #default="scope">
+                                                <span style="display: flex;align-items: center;">
+                                                    <el-icon v-if="scope.row.isFavorite == 'N'"
+                                                        @click.stop="collectByStar(scope.row, true)"
+                                                        style="margin-right: 7px;">
+                                                        <Star />
+                                                    </el-icon>
+                                                    <img v-else @click.stop="delCollect(scope.row, true)"
+                                                        src="../../assets/images/yellowstar.png" alt="">
+                                                    <img src="../../assets/images/fileBox.png"
+                                                        style="width: 20px;height: 24px;margin-right: 5px;" alt="">
                                                     <!-- <el-tooltip
                                                         class="box-item"
                                                         effect="dark"
@@ -219,22 +223,22 @@
                                                     <span class="shouzhi">{{ scope.row.dirName }}</span>
                                                     </el-tooltip> -->
                                                     <span class="shouzhi">{{ scope.row.dirName }}</span>
-                                            </span>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="createTime" label="时间" width="180" />
-                                    <el-table-column prop="dirType" label="类型">
-                                        <template #default="scope">
-                                            <span>文件夹</span>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column label="大小">
-                                        <template #default="scope">
-                                            <span>
-                                                10KB
-                                            </span>
-                                        </template>
-                                    </el-table-column>
+                                                </span>
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column prop="createTime" label="时间" width="180" />
+                                        <el-table-column prop="dirType" label="类型">
+                                            <template #default="scope">
+                                                <span>文件夹</span>
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="大小">
+                                            <template #default="scope">
+                                                <span>
+                                                    10KB
+                                                </span>
+                                            </template>
+                                        </el-table-column>
 
                                     </el-table>
                                     <PlaceGridFolder v-else :folderClick="folderClick" :restName="restName"
@@ -353,7 +357,8 @@
             <!-- 文件上传 -->
             <div>
                 <el-dialog v-model="uploadModal" title="文件上传" width="30%">
-                    <el-upload class="upload-demo" :file-list="fileArr"  drag :http-request="onSuccess" multiple :on-remove="handleRemove">
+                    <el-upload class="upload-demo" :file-list="fileArr" drag :http-request="onSuccess" multiple
+                        :on-remove="handleRemove">
                         <el-icon class="el-icon--upload"><upload-filled /></el-icon>
                         <div class="el-upload__text">拖入或<em>点击上传</em></div>
                         <template #tip>
@@ -526,7 +531,7 @@ export default {
         const delMoreFile = ref([])  //删除多个文件夹
         const historyTotal = ref(0)
         const historyPrew = ref(false)
-        const leftNewFile =ref(false)  //解决左侧点击后不能显示的问题
+        const leftNewFile = ref(false)  //解决左侧点击后不能显示的问题
         let xz = ref(0)
         let yz = ref(0)
         let newAdd = ref(false)
@@ -822,7 +827,11 @@ export default {
             if (searchFire.value == '') {
                 getAllTop()
             } else {
-                fileMenu.value = fileMenu.value.filter(item => item.dirName == searchFire.value)
+                const searchTerm = searchFire.value.trim().toLowerCase(); // 转换为小写字母并去除首尾空格
+                fileMenu.value = fileMenu.value.filter(item => {
+                    const dirName = item.dirName.trim();
+                    return dirName.includes(searchTerm);
+                });
             }
         }
         // 文件名表格每一行点击事件
@@ -1008,11 +1017,11 @@ export default {
             thanks.value = true
             anyP.value = false
         }
-        function createNewMenu(num,leftNewFiles) {
-            if(leftNewFiles){
+        function createNewMenu(num, leftNewFiles) {
+            if (leftNewFiles) {
                 leftNewFile.value = true  //解决左侧点击文件后不显示的问题
             }
-            if(num==2) {
+            if (num == 2) {
                 newAdd.value = true
             } else {
                 oneOrTwo.value = num
@@ -1023,28 +1032,28 @@ export default {
             newAdd.value = data
             console.log('cli', clickFileData.value)
             let obj = {
-                    pageNum: 1,
-                    pageSize: 10
+                pageNum: 1,
+                pageSize: 10
             }
             myfile.getById(clickFileData.value.dirId, obj).then(res => {
-                    if (res.code === 200) {
-                        fileList.value = res.rows
-                        fileTotal.value = res.total
-                        if (fileTotal.value / 10 != 1) {
-                            let x = Math.trunc(fileTotal.value / 10) + 1
-                            for (var i = 1; i <= x; i++) {
-                                obj.pageNum = i
-                                myfile.getById(clickFileData.value.dirId, obj).then(res => {
-                                    fileList.value = fileList.value.concat(res.rows)
-                                    const uniqueFileList = Array.from(new Set(fileList.value.map(item => item.docId)))
-                                        .map(docId => fileList.value.find(item => item.docId === docId));
-                                    // 合并数组并更新 fileList.value
-                                    fileList.value = uniqueFileList
-                                })
-                            }
+                if (res.code === 200) {
+                    fileList.value = res.rows
+                    fileTotal.value = res.total
+                    if (fileTotal.value / 10 != 1) {
+                        let x = Math.trunc(fileTotal.value / 10) + 1
+                        for (var i = 1; i <= x; i++) {
+                            obj.pageNum = i
+                            myfile.getById(clickFileData.value.dirId, obj).then(res => {
+                                fileList.value = fileList.value.concat(res.rows)
+                                const uniqueFileList = Array.from(new Set(fileList.value.map(item => item.docId)))
+                                    .map(docId => fileList.value.find(item => item.docId === docId));
+                                // 合并数组并更新 fileList.value
+                                fileList.value = uniqueFileList
+                            })
                         }
                     }
-                })
+                }
+            })
         }
         function cancleHistoryPrew(val) {
             historyPrew.value = false
@@ -1061,6 +1070,13 @@ export default {
         }
         // 确认上传
         function sureUpload() {
+          if(useSpace.value*1024+fileBig.value > allSpace.value*1024*1024){
+            ElMessage({
+                message:"超过最大容量,请联系管理员扩容",
+                type:"wanning",
+            })
+            return
+          }else{
             if (fileArr.value.length > 0) {
                 for (var i = 1; i <= fileArr.value.length; i++) {
                     uploadApi.uploadFile({
@@ -1082,17 +1098,17 @@ export default {
                         fileArr.value = []
                     })
                 }
-            }else{
-               return ElMessage({ message: "请选择文件", type: "error"})
+            } 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) => {
+        const handleRemove = (file, rawFile) => {
             fileArr.value = [...rawFile]
         }
         // 筛选后缀图片
@@ -1525,9 +1541,9 @@ export default {
             }
         }
         //点击收藏后刷新文件
-        const refreshFile = ()=>{
-            if(toRaw(thisFolder.value).dirId&&!leftNewFile.value){//如果点开了文件夹
-               folderClick()
+        const refreshFile = () => {
+            if (toRaw(thisFolder.value).dirId && !leftNewFile.value) {//如果点开了文件夹
+                folderClick()
             } else {
                 getAllTop()
             }
@@ -2315,5 +2331,4 @@ p {
 
 .yincang {
     opacity: 0.5;
-}
-</style>
+}</style>

+ 12 - 25
src/views/myfile/modalComponebts/Transfer.vue

@@ -7,15 +7,12 @@
                     <div class="allBag">
                         <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>
+                                 placeholder="搜索"></el-input>
                         </div>
                         <div class="allLog">
-                            <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" />
+                            <el-tree :filter-node-method="filterNode" 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>
@@ -49,7 +46,7 @@
 </template>
 
 <script>
-import { ref, onMounted, toRef } from 'vue';
+import { ref, onMounted, toRef, watch } from 'vue';
 import userTree from '../../../api/user/userTree';
 import fileShare from '../../../api/fileShare/fileShare';
 import fileCount from '../../../api/fileCount/fileCount'
@@ -242,23 +239,13 @@ export default {
             treeData.forEach(node => traverseTree(node));
             return foundItems;
         }
-        function searchPeople() {
-            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
-                }
-            }
+        watch(()=>allBag.value,(val)=>{
+            treeRef.value?.filter(val)
+        })
+        function filterNode(value, data) {
+            if (!value) return true
+            return data.label.includes(value)
         }
-
         function getBack() {
             transferModals.value = false
             emit("getCback", transferModals.value)
@@ -305,8 +292,8 @@ export default {
             backToFather: getBack,
             cleanPeople,
             treeRef,
-            searchPeople,
             have,
+            filterNode,
         }
     }
 }

+ 10 - 4
src/views/search/index.vue

@@ -48,9 +48,9 @@
       <div>
         <div v-if="isList" style="height: calc(98vh - 420px);overflow-y: auto;">
           <!-- 表格 -->
-          <el-table :data="tableData" style="width: 100%;height:calc(98vh - 620px) ;" ref="container"
+          <el-table :data="tableData" style="width: 100%;height:calc(98vh - 620px);" ref="container"
             @scroll="handleScroll">
-            <el-table-column fixed label="名称" width="500">
+            <el-table-column fixed label="名称" width="300">
               <template #default="scope">
                 <div class="flie_name">
                   <img class="table_icon" :src="setIcon(scope.row.fileType)" alt="" style="" />
@@ -59,8 +59,8 @@
               </template>
             </el-table-column>
             <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="createTime" label="时间" width="200" header-align="left" />
+            <el-table-column prop="fileType" label="类型" width="100" />
             <el-table-column prop="fileSize" label="大小" width="100">
               <template #default="scope">
                 <div>{{ formatFileSize(scope.row.fileSize) }}</div>
@@ -653,4 +653,10 @@ watch(() => history, (newValue, oldValue) => {
   margin-left: 25px;
   font-size: 14px;
 }
+:deep(.cell){
+  text-align: center;
+}
+:deep(.el-table td.el-table__cell div){
+  text-align: center;
+}
 </style>