liuQiang 1 年之前
父节点
当前提交
fbb5e7c81a

+ 1 - 1
src/components/LeftList/LeftList.vue

@@ -132,7 +132,7 @@ const setImg = (remark) => {
   return setListImg(remark);
 };
 const getTopDir = async () => {
-  const res = await documents.getTop(3);
+  const res = await documents.getTop(props.spaceType);
   console.log("topres", res);
   curArr.value.push(res.dirId);
   topId.value = res.dirId

+ 25 - 10
src/components/TreeMenu/TreeMenu.vue

@@ -7,7 +7,11 @@
       <!-- <img src="@/assets/images/textbox.png" alt="" /> -->
       <span class="shouzhi">重命名</span>
     </div>
-    <div class="menu_item" @click="openFn">
+    <div
+      class="menu_item"
+      v-if="props.spaceType != 3 && props.isDept"
+      @click="editFolder"
+    >
       <!-- <img src="@/assets/images/textbox.png" alt="" /> -->
       <span class="shouzhi">编辑</span>
     </div>
@@ -40,15 +44,26 @@ const props = defineProps({
     type: Number,
     default: 0,
   },
+  spaceType: {
+    type: Number,
+    default: 0,
+  },
+  isDept: {
+    type: Boolean,
+    default: false,
+  },
 });
-const emit = defineEmits(["restName",'delName']);
-const reNameFn = ()=>{
-    console.log(1);
-    emit('restName')
-}
-const delFn = ()=>{
-    emit('delName')
-}
+const emit = defineEmits(["restName", "delName", "upFirstFoler"]);
+const reNameFn = () => {
+  console.log(1);
+  emit("restName");
+};
+const delFn = () => {
+  emit("delName");
+};
+const editFolder = () => {
+  emit("upFirstFoler");
+};
 </script>
 
 <style lang="scss" scoped>
@@ -59,7 +74,7 @@ const delFn = ()=>{
   padding: 8px;
   box-shadow: 0px 2px 10px 1px rgba(199, 203, 216);
   border-radius: 4px 4px 4px 4px;
-//   border: 1px solid gray;
+  //   border: 1px solid gray;
   background-color: #fff;
   z-index: 10000;
   text-align: center !important;

+ 388 - 202
src/views/department/MyFile.vue

@@ -16,13 +16,27 @@
                 <div
                     style="height: 75vh;overflow-y: auto;">
                     <div class="searchBox">
-                        <el-input v-model="searchFire" @keyup.enter="fileBlur"  class="searchFire" size="large" placeholder="搜索文件" />
-                        <el-icon class="SearchIcon" @click="fileBlur">
-                            <Search />
-                        </el-icon>
+                        <div v-if="leftShowList == 1" style="width:100%">
+                            <el-input v-model="searchFire" @keyup.enter="fileBlur" class="searchFire" size="large"
+                                placeholder="搜索文件夹" />
+                            <el-icon class="SearchIcon" @click="fileBlur">
+                                <Search />
+                            </el-icon>
+                        </div>
+                         <div v-else style="width:100%">
+                            <el-input v-model="searchFolderTree" @keyup.enter="folderBlur" class="searchFire" size="large"
+                                placeholder="搜索文件" />
+                            <el-icon class="SearchIcon" @click="folderBlur">
+                                <Search />
+                            </el-icon>
+                        </div>
+                        <div class="left_changeShow">
+                            <img v-if="leftShowList == 1" src="@/assets/images/squre.png" @click="changeLeftShow" alt="">
+                            <img v-else src="@/assets/images/Frame_187.png" @click="changeLeftShow" alt="">
+                        </div>
                     </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;">
+                    <div v-if="leftShowList == 1" 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" >
                                 <el-dropdown trigger="click" class="selectChe">
@@ -61,6 +75,7 @@
                             </div>
                         </template>
                     </div>
+                    <LeftList v-else :spaceType="2" :isDept="isDept" @treeRClick="treeRClick" :searchFolderTree="searchFolderTree" :ListtreeData="ListtreeData" @listfolderClick="listfolderClick"></LeftList>
                 </div>
                 <div class="expansion">
                     <div class="top_box">
@@ -79,7 +94,7 @@
                     <!-- 众多功能 -->
                     <div class="manyUse">
                         <div class="useMenu">
-                            <div v-if="(thisRole.some(item=>item == 'upload') || (isDept && thisFolder.dirId)) && pathLabelData.length"
+                            <div v-if="(thisRole.some(item=>item == 'upload') || (isDept && thisFolder.dirId)) && (pathLabelData.length || leftShowList == 0)"
                             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="">
@@ -163,203 +178,199 @@
                         <span>使用右键进行文件操作</span>
                        </div>
                     </div>
-                    <!-- 面包屑功能栏 -->
-                    <div class="breadBox">
-                        <!-- 左侧 -->
-                        <div style="display: flex;justify-content: space-around;align-items: center;margin-left: 10px;">
-                            <!-- 前进后退 -->
-                            <!-- <div style="display: flex;justify-content: space-around;align-items: center;margin-right: 5px;" >
-                                <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
-                                    @click="arrowLift">
-                                <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
-                            </div> -->
-                            <!-- 面包屑 -->
-                            <div class="topPath">
-                                <span @click="backTopPath">{{ topPath }}</span>
-                                <PathLabel v-if="!loadingPreview" @folderClick="folderClick" :pathLabelData='pathLabelData'></PathLabel>
-                                <!-- <BreadMenu></BreadMenu> -->
+                    <div v-show="leftShowList == 1">
+                        <!-- 面包屑功能栏 -->
+                        <div class="breadBox">
+                            <!-- 左侧 -->
+                            <div style="display: flex;justify-content: space-around;align-items: center;margin-left: 10px;">
+                                <!-- 前进后退 -->
+                                <!-- <div style="display: flex;justify-content: space-around;align-items: center;margin-right: 5px;" >
+                                    <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
+                                        @click="arrowLift">
+                                    <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
+                                </div> -->
+                                <!-- 面包屑 -->
+                                <div class="topPath">
+                                    <span @click="backTopPath">{{ topPath }}</span>
+                                    <PathLabel v-if="!loadingPreview" @folderClick="folderClick" :pathLabelData='pathLabelData'></PathLabel>
+                                    <!-- <BreadMenu></BreadMenu> -->
+                                </div>
                             </div>
-                        </div>
-                        <!-- 右侧 -->
-                        <div>
-                            <img
-                                src="@/assets/images/sort.png"
-                                @click="changeSort"
-                                v-if="isAsc == 'asc'"
+                            <!-- 右侧 -->
+                            <div>
+                                <img
+                                    src="@/assets/images/sort.png"
+                                    @click="changeSort"
+                                    v-if="isAsc == 'asc'"
+                                    alt=""
+                                />
+                                <img
+                                    src="@/assets/images/Frame_188.png"
+                                    @click="changeSort"
+                                    v-else
+                                    alt=""
+                                />
+                                <!-- //控制宫格展示 -->
+                                <img
+                                v-if="fileGrid"
+                                src="@/assets/images/squre.png"
+                                class="shouzhi palace-grid"
                                 alt=""
-                            />
-                            <img
-                                src="@/assets/images/Frame_188.png"
-                                @click="changeSort"
+                                @click="changeShow(true)"
+                                />
+                                <img
                                 v-else
+                                src="@/assets/images/Frame_187.png"
+                                class="shouzhi palace-grid"
                                 alt=""
-                            />
-                            <!-- //控制宫格展示 -->
-                            <img
-                              v-if="fileGrid"
-                              src="@/assets/images/squre.png"
-                              class="shouzhi palace-grid"
-                              alt=""
-                              @click="changeShow(true)"
-                            />
-                            <img
-                              v-else
-                              src="@/assets/images/Frame_187.png"
-                              class="shouzhi palace-grid"
-                              alt=""
-                              @click="changeShow(false)"
-                            />
-                            <!-- <img :src="squre" alt="" @click="gridChange" class="shouzhi"> -->
+                                @click="changeShow(false)"
+                                />
+                                <!-- <img :src="squre" alt="" @click="gridChange" class="shouzhi"> -->
+                            </div>
                         </div>
-                    </div>
-                <!-- </div> -->
-                <!-- 展示文件夹盒子 -->
-                <!-- 文件夹 -->
-                <div class="showBox">
-                  <div class="detailBox file-jia" @click="mouseClick">
-                    <el-collapse v-model="folder">
-                        <el-collapse-item name="1" class="custom-collapse-item">
-                            <template #title>
-                               <span class="file-title">文件夹</span>
-                            </template>
-                            <el-table v-if="fileGrid == 1" :data="folderList" height="37vh" 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="名称" :show-overflow-tooltip="true" :tooltip-options="{showAfter: 1000}" width="600">
-                                    <template #default="scope">
-                                        <span class="juzhong">
-                                            <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,true)" class="juli">
-                                                <Star />
-                                            </el-icon>
-                                            <img v-else @click.stop="delCollect(scope.row,true)" src="../../assets/images/yellowstar.png" alt="" class="juli">
-                                            <img :src="scope.row.dirType=='1'?fileBox:ordinary" style="width: 20px;height: 24px;"
-                                                alt="" class="juli">
-                                                <span class="shouzhi"> {{ scope.row.dirName }}</span>
-                                        </span>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column prop="createTime" label="时间" width="280" />
-                                <el-table-column prop="dirType" label="类型">
-                                    <template #default="scope">
-                                        <span v-if="scope.row.dirType == '1'">普通目录</span>
-                                        <span v-else>组织目录</span>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column label="加密等级">
-                                    <template #default="scope">
-                                         <span>
-                                            {{setTablelevel(scope.row.encryptLevel)}}
-                                        </span>
+                        <!-- </div> -->
+                        <!-- 展示文件夹盒子 -->
+                        <!-- 文件夹 -->
+                        <div class="showBox">
+                        <div class="detailBox file-jia" @click="mouseClick">
+                            <el-collapse v-model="folder">
+                                <el-collapse-item name="1" class="custom-collapse-item">
+                                    <template #title>
+                                    <span class="file-title">文件夹</span>
                                     </template>
-                                </el-table-column>
+                                    <el-table v-if="fileGrid == 1" :data="folderList" height="37vh" 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="名称" :show-overflow-tooltip="true" :tooltip-options="{showAfter: 1000}" width="600">
+                                            <template #default="scope">
+                                                <span class="juzhong">
+                                                    <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,true)" class="juli">
+                                                        <Star />
+                                                    </el-icon>
+                                                    <img v-else @click.stop="delCollect(scope.row,true)" src="../../assets/images/yellowstar.png" alt="" class="juli">
+                                                    <img :src="scope.row.dirType=='1'?fileBox:ordinary" style="width: 20px;height: 24px;"
+                                                        alt="" class="juli">
+                                                        <span class="shouzhi"> {{ scope.row.dirName }}</span>
+                                                </span>
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column prop="createTime" label="时间" width="280" />
+                                        <el-table-column prop="dirType" label="类型">
+                                            <template #default="scope">
+                                                <span v-if="scope.row.dirType == '1'">普通目录</span>
+                                                <span v-else>组织目录</span>
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="加密等级">
+                                            <template #default="scope">
+                                                <span>
+                                                    {{setTablelevel(scope.row.encryptLevel)}}
+                                                </span>
+                                            </template>
+                                        </el-table-column>
 
-                                </el-table>
-                                <PlaceGridFolder v-else @folderClick="folderClick" :folderList="folderList" :restName="restName"
-                                    :collectFolder="collectFolder" @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack"  :thisFolder="thisFolder" :impDirId="impDirId">
-                                </PlaceGridFolder>
-                            </el-collapse-item>
-                        </el-collapse>
-                        <!-- 右键唤出的菜单 -->
-                        <div class="right_menu" v-if="folderVisible"
-                            :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
-                            <!-- <div class="menu_item" @click="folderClick(null, null)">
-                                <img src="@/assets/images/trash.png" alt="" />
-                                <span>打开</span>
-                            </div> -->
-                            <div class="menu_item" @click="restName(null, null)">
-                                <img src="@/assets/images/textbox.png" alt="" />
-                                <span class="shouzhi">重命名</span>
-                            </div>
-                            <div class="menu_item" @click="collectFolder">
-                                <img src="@/assets/images/collect.png" alt="" />
-                                <span class="shouzhi">收藏</span>
-                            </div>
-                            <div class="menu_item" v-if="thisFolder.dirType ==='1' && clickRow.dirType === '2' && isDept" @click="upFirstFoler(null)">
-                                <img src="@/assets/images/notePencil.png" alt="" />
-                                <span class="shouzhi">编辑</span>
+                                        </el-table>
+                                        <PlaceGridFolder v-else @folderClick="folderClick" :folderList="folderList" :restName="restName"
+                                            :collectFolder="collectFolder" @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack"  :thisFolder="thisFolder" :impDirId="impDirId">
+                                        </PlaceGridFolder>
+                                    </el-collapse-item>
+                                </el-collapse>
+                                <!-- 右键唤出的菜单 -->
+                                <div class="right_menu" v-if="folderVisible"
+                                    :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
+                                    <!-- <div class="menu_item" @click="folderClick(null, null)">
+                                        <img src="@/assets/images/trash.png" alt="" />
+                                        <span>打开</span>
+                                    </div> -->
+                                    <div class="menu_item" @click="restName(null, null)">
+                                        <img src="@/assets/images/textbox.png" alt="" />
+                                        <span class="shouzhi">重命名</span>
+                                    </div>
+                                    <div class="menu_item" @click="collectFolder">
+                                        <img src="@/assets/images/collect.png" alt="" />
+                                        <span class="shouzhi">收藏</span>
+                                    </div>
+                                    <div class="menu_item" v-if="thisFolder.dirType ==='1' && clickRow.dirType === '2' && isDept" @click="upFirstFoler(null)">
+                                        <img src="@/assets/images/notePencil.png" alt="" />
+                                        <span class="shouzhi">编辑</span>
+                                    </div>
+                                </div>
                             </div>
-                        </div>
-                    </div>
-                    <!-- 文件 -->
-                    <div class="fileTable">
-                        <el-collapse v-model="files" >
-                            <el-collapse-item name="2" class="">
-                                <template #title>
-                                   <span class="file-title">文件</span>
-                                </template>
-                                <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="30" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid == 1" :height="fileHeight" :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="600">
-                                        <template #default="scope">
-                                            <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" class="juzhong">
-                                            <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,false)">
-                                                <Star />
-                                            </el-icon>
-                                            <img v-else @click.stop="delCollect(scope.row,false)" src="../../assets/images/yellowstar.png" alt="" class="juli">
-                                            <img :src="setImg(scope.row.fileType)" style="width:22px;height:22px;" alt="" class="juli">
-                                                <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>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="createTime" label="时间" sortable width="280" />
-                                    <el-table-column prop="fileType" label="类型" />
-                                    <el-table-column label="大小">
-                                        <template #default="scope">
-                                            <span>
-                                                {{ formatFileSize(scope.row.fileSize) }}
-                                            </span>
+                            <!-- 文件 -->
+                            <div class="fileTable">
+                                <el-collapse v-model="files" >
+                                    <el-collapse-item name="2" class="">
+                                        <template #title>
+                                        <span class="file-title">文件</span>
                                         </template>
-                                    </el-table-column>
-                                </el-table>
-                                <PalaceGridFile v-else :fileHeight="fileHeight" @showFile="showFile" :getAllTop="getAllTop" @navBack="navBack"
-                                    @lastBB="lastBB"  @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @handleRowClick="handleRowClick" @onlineCase="onlineCase" @shareBack="shareBack"  :thisFolder="thisFolder" :fileList="fileList"></PalaceGridFile>
-                            </el-collapse-item>
-                        </el-collapse>
-                        <div :class="{'setCli':!noMenuItem}" v-if="cliCC" :style="{ left: xz + 'px', top: yz -100 + 'px' }">
-                            <template v-for="(item, index) in filterMouseCli()" :key="index">
-                                <p @click="chooseSet(item, index, 1)" v-if="!noMenuItem" class="chooseSet shouzhi">
-                                    <img :src="item.img" alt="">
-                                    <span class="shouzhi"></span>{{ item.name }}
-                                    <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
-                                        style="color: #7084B4;float: right;position: relative;" class="arrow">></span>
-                                </p>
-                            </template>
-                        </div>
-                        <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz + 'px' }">
-                            <p @click="chooseSet1(0)" class="chooseSet">
-                                <img src="../../assets/images/user.png" alt="">
-                                选择人员
-                            </p>
-                            <p class="chooseSet" @click="goLock">
-                                <img src="../../assets/images/archiveTray.png" alt="">
-                                归档
-                            </p>
-                        </div>
-                    </div>
+                                        <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="30" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid == 1" :height="fileHeight" :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="600">
+                                                <template #default="scope">
+                                                    <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" class="juzhong">
+                                                    <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,false)">
+                                                        <Star />
+                                                    </el-icon>
+                                                    <img v-else @click.stop="delCollect(scope.row,false)" src="../../assets/images/yellowstar.png" alt="" class="juli">
+                                                    <img :src="setImg(scope.row.fileType)" style="width:22px;height:22px;" alt="" class="juli">
+                                                        <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>
+                                                </template>
+                                            </el-table-column>
+                                            <el-table-column prop="createTime" label="时间" sortable width="280" />
+                                            <el-table-column prop="fileType" label="类型" />
+                                            <el-table-column label="大小">
+                                                <template #default="scope">
+                                                    <span>
+                                                        {{ formatFileSize(scope.row.fileSize) }}
+                                                    </span>
+                                                </template>
+                                            </el-table-column>
+                                        </el-table>
+                                        <PalaceGridFile v-else :fileHeight="fileHeight" @showFile="showFile" :getAllTop="getAllTop" @navBack="navBack"
+                                            @lastBB="lastBB"  @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @handleRowClick="handleRowClick" @onlineCase="onlineCase" @shareBack="shareBack"  :thisFolder="thisFolder" :fileList="fileList"></PalaceGridFile>
+                                    </el-collapse-item>
+                                </el-collapse>
+                                
+                            </div>
 
-                </div>
-                    </div>
-                <div v-else>
-                    <div>
-                        <el-button @click="editOnline = true; historyPrew = false">返回</el-button>
+                        </div>
                     </div>
-                    <FileEdit :docId="clickRowId" :copyRow="copyRow" :historyPrew="historyPrew"
-                        :historycopyRow="historycopyRow" :onlyView="onlyView" @cancleHistoryPrew="cancleHistoryPrew">
-                    </FileEdit>
+                     <ListShow v-show="leftShowList == 0" @handleSelectionChange="handleSelectionChange" :fileList="fileList" @changeListSort="changeListSort" @delCollect="delCollect" @collectByStar="collectByStar" @handleRowClick="handleRowClick"></ListShow>
                 </div>
             </div>
+            <div :class="{'setCli':!noMenuItem}" v-if="cliCC" :style="{ left: xz + 'px', top: yz -100 + 'px' }">
+                <template v-for="(item, index) in filterMouseCli()" :key="index">
+                    <p @click="chooseSet(item, index, 1)" v-if="!noMenuItem" class="chooseSet shouzhi">
+                        <img :src="item.img" alt="">
+                        <span class="shouzhi"></span>{{ item.name }}
+                        <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
+                            style="color: #7084B4;float: right;position: relative;" class="arrow">></span>
+                    </p>
+                </template>
+            </div>
+            <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz + 'px' }">
+                <p @click="chooseSet1(0)" class="chooseSet">
+                    <img src="../../assets/images/user.png" alt="">
+                    选择人员
+                </p>
+                <p class="chooseSet" @click="goLock">
+                    <img src="../../assets/images/archiveTray.png" alt="">
+                    归档
+                </p>
+            </div>
 
             <!-- 扩容弹窗 -->
             <div>
@@ -466,6 +477,7 @@
     </div>
     <!-- 扫描文件移动到 -->
     <MoveTo v-if="openScanMove" :spaceType='2' :scanFileArr="scanFileArr" :thisFolder="thisFolder" :openScanMove="openScanMove" @closeOpenScanMove='closeOpenScanMove'></MoveTo>
+    <TreeMenu v-show="showTreeMenu" :spaceType='2' :isDept="isDept" @upFirstFoler="upFirstFoler" @restName="restName" @delName="delName" :xz="xz" :yz="yz"></TreeMenu>
 </template>
 
 <script>
@@ -488,6 +500,8 @@ import SpaceBig from './modalComponebts/SpaceBig.vue'
 import PlaceGridFolder from '@/views/myfile/components/PlaceGridFolder.vue'
 import PalaceGridFile from '@/views/myfile/components/PalaceGridFile.vue'
 import ImgFile from "./jsComponents/ImgFile"
+import LeftList from "@/components/LeftList/LeftList.vue"
+import ListShow from "@/components/ListShow/ListShow.vue"
 import { Search } from '@element-plus/icons-vue'
 import blueLeft from '../../assets/images/blueLeft.png'
 import grayRight from "../../assets/images/grayRight.png"
@@ -523,6 +537,7 @@ import elTableInfiniteScroll from 'el-table-infinite-scroll'
 import { getConfigKey } from "@/api/system/config.js"
 import { setIcon } from "@/utils/index.js";
 import uploadApi from '../../api/upload/upload'
+import TreeMenu from '@/components/TreeMenu/TreeMenu.vue'
 
 export default {
     directives: {
@@ -750,6 +765,11 @@ export default {
         const isCode = ref(false)// 验证的类型
         const isAsc = ref("desc");
         const clickPath = inject("clickPath");
+        const leftShowList = ref(localStorage.getItem('leftShowList') ||1)
+        const thisFirst = ref()
+        const ListtreeData = ref()
+        const searchFolderTree = ref()
+        const showTreeMenu = ref(false)
         const changeSort = async () => {
            isAsc.value == "asc" ? (isAsc.value = "desc") : (isAsc.value = "asc")
            refreshFile()
@@ -764,6 +784,18 @@ export default {
                    // folderList.value = res.rows
                })
            }
+        const changeListSort = async (listAsc)=>{
+             const query = `${thisFolder.value.dirId}?isAsc=${listAsc}&orderByColumn=createTime&pageSize=9999&pageNum=1`
+             myfile.getById(query)
+                .then(res => {
+                    if (res.code === 200) {
+                        fileList.value = res.rows;
+                    }
+                })
+                .catch(error => {
+                    console.error("myfile.getAllFileMenu 调用失败:", error);
+                });
+        }
         const changeShow =async (fileGrids) => {
             // console.log('fileGrid',fileGrid.value);
         filePageNum.value = 1
@@ -866,11 +898,34 @@ export default {
             }
         }
         function getSpaceList() {
+            getFileTree()
             myfile.fileType(2).then(res => {
                 useSpace.value = res.data.usedCap
                 allSpace.value = res.data.spaceCap
             })
         }
+         //获取文件树
+        function getFileTree() {
+        documents.fileTree(2).then((res) => {
+            res.disabled = true;
+            ListtreeData.value = [res];
+            function getAllNodeIds(nodes) {
+            nodes.forEach((node) => {
+                if (node.remark) {
+                node.remark = JSON.parse(node.remark);
+                }
+                if (node.children && node.children.length > 0) {
+                getAllNodeIds(node.children);
+                }
+            });
+            return nodes;
+            }
+            // 调用递归函数获取所有节点的 id
+            getAllNodeIds(ListtreeData.value);
+            // console.log("treedataarr", arr);
+            // console.log("treeData", treeData.value);
+        });
+        }
         function changeFile(row, num) {
              const labelItem = {
                 name:row.dirName,
@@ -935,7 +990,18 @@ export default {
                 menuList.value.push(newItem);
             }
         }
-
+        function folderBlur() {
+            console.log('searchFolderTree',searchFolderTree.value);
+            // if (searchFire.value == '') {
+            //     getAllTop()
+            // } else {
+            //     const searchTerm = searchFire.value.trim().toLowerCase(); // 转换为小写字母并去除首尾空格
+            //     fileMenu.value = fileMenu.value.filter(item => {
+            //         const dirName = item.dirName.trim();
+            //         return dirName.includes(searchTerm);
+            //     });
+            // }
+        }
         // x图标事件
         function shotdown(row) {
             menuList.value = menuList.value.filter(item => item.name !== row.name)
@@ -969,6 +1035,18 @@ export default {
                 cliCC.value = true
             }
         }
+        // 树节点右键事件
+        function treeRClick(row, col, e) {
+            console.log('row', row);
+            // isFolder.value = "N"
+            clickRow.value = row
+            e.preventDefault();
+            e.stopPropagation();
+            xz.value = e.pageX
+            yz.value = e.pageY
+            showTreeMenu.value = true
+          
+        }
         // 申请扩容
        async function askApply() {
             const res =  await fileSpace.querySpace(impSpaceId.value)
@@ -1216,6 +1294,7 @@ export default {
         const closeUpload =() =>{
           uploadModal.value = false;
           fileArr.value = [];
+          fileBig.value = 0
           loadingUpload.value = false
         }
         // 移除上传的某些文件
@@ -1317,16 +1396,24 @@ export default {
             }
         }
         function delName(row, num) {
+            row = row ? row : clickRow.value
             documents.delDocument(row.dirId).then(res => {
                 if (res.code === 200) {
                     getAllTop()
+                    getSpaceList()
                     ElMessage({
                         message: "删除成功",
                         type: "success"
                     })
+                    delFolder()
                 }
             })
         }
+        const delFolder = ()=>{
+            const arrJson = sessionStorage.getItem('tabData')
+            const tableData = JSON.parse(arrJson)
+            console.log('tableData',tableData);
+        }
         // 计算百分比
         function percent() {
             let numP = 0;
@@ -1338,7 +1425,7 @@ export default {
 
         // 文件夹每行点击事件
         function folderClick(row, list,e,jump) {
-            if(!pathLabelData.value[0]){
+            if(!pathLabelData.value[0]&& leftShowList.value == 1){
                  // 创建标签
                 const addData = {
                     path: '/department' + row.dirId,
@@ -1428,6 +1515,58 @@ export default {
                 }
             })
         }
+        // 左边树节点每行点击事件
+        function listfolderClick(row,firstData) {
+            if(row){
+                thisFolder.value = row
+            }
+            row = row?row:thisFolder.value
+            
+            if (row.isEncrypt === "Y") {
+                getLeveldetailFn(row.encryptLevel)
+            } else {
+                thisFolderRole.value = null
+            }
+            console.log('row',row);
+            console.log('rowthisFolderRole',thisFolderRole.value);
+            newDirId.value = row.dirId
+            newSpaceId.value = row.spaceId
+             const query = `${newDirId.value}?isAsc=${isAsc.value}&orderByColumn=createTime&pageSize=9999&pageNum=1`
+            documents.getALLdocumentByType({
+                parentId: newDirId.value - 0,
+                spaceId: newSpaceId.value - 0,
+                isAsc: isAsc.value,
+                orderByColumn: "createTime"
+            }, 2).then(res => {
+                folderList.value = res.rows
+                if (res.rows.length === 0) {
+                    myfile.getById(query).then(res => {
+                        // console.log('res = ',res);
+                        if (res.code === 200) {
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
+                            fileList.value = JSON.parse(JSON.stringify(res.rows))
+                        }
+                    // console.log('folderClickshijian1',tableTotal.value,tableBeEnd.value);
+                    })
+                } else {
+                    myfile.getById(query).then(res => {
+                        if (res.code === 200) {
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
+                            fileList.value = JSON.parse(JSON.stringify(res.rows))
+                        }
+                        // console.log('fileList',fileList.value);
+                    })
+                }
+            })
+        }
         // 确认文件重命名
         function sureChangeName() {
             myfile.editNewMenu({
@@ -1548,7 +1687,7 @@ export default {
                 arr = arr.filter(item => item.name !== "文字识别")
             }
             // console.log('thisFolderRole',thisFolderRole.value);
-            if(thisFolderRole.value.roles){
+            if(thisFolderRole.value?.roles){
                 // 加密登记
                 // console.log('thisFolderRole',thisFolderRole.value);
                 arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
@@ -1597,6 +1736,11 @@ export default {
             // console.log("close");
             folderVisible.value = false;
         };
+        // 关闭tree右键菜单
+        const closeTreeRMenu = () => {
+            // console.log("close");
+            showTreeMenu.value = false;
+        };
         // 文件夹收藏事件
         const collectFolder = () => {
              if(clickRow.value.isFavorite === "Y"){
@@ -1691,11 +1835,11 @@ export default {
             if(edit){
                 getFirstFolder()
             }
-            if(toRaw(thisFolder.value).dirId && !leftNewFile.value){//如果点开了文件夹
-            // console.log(111);
-               folderClick()
-            }else{
-            // console.log(222);
+           if (toRaw(thisFolder.value)?.dirId && !leftNewFile.value && leftShowList.value == 1 ) {//如果点开了文件夹
+                folderClick()
+            } else if(toRaw(thisFolder.value)?.dirId && !leftNewFile.value && leftShowList.value == 0){
+                listfolderClick()
+            }else {
                 getAllTop()
             }
             getSpaceList()
@@ -2002,6 +2146,20 @@ export default {
             openScanMove.value = false
             refreshFile()
         }
+        const changeLeftShow = ()=>{
+            leftShowList.value = leftShowList.value == 1?0:1
+            thisFolder.value = {}
+            localStorage.setItem('leftShowList',leftShowList.value)
+            if(!leftShowList.value){
+                console.log('toList');
+                 // 创建标签
+                const addData = {
+                    path: '/department',
+                    label: '部门文件'
+                }
+                clickPath(null,addData)
+            }
+        }
         watch(() => folder.value, async(newValue, oldValue) => {
             // console.log('iFrameData 发生改变了', newValue, oldValue);
             console.log('files',newValue);
@@ -2055,6 +2213,7 @@ export default {
             }
         });
         onMounted(() => {
+            leftShowList.value = localStorage.getItem('leftShowList') ||0
             getAllTop()
             getSpaceList()
             getUserInfo()
@@ -2067,6 +2226,7 @@ export default {
             window.addEventListener("click", closeRMenu, true);
             window.addEventListener("mousewheel", mouseClick, true);
             window.addEventListener("click", mouseClick, true);
+            window.addEventListener("click", closeTreeRMenu, true);
         })
          onActivated(()=>{
             // console.log('onActivated.query',route.query);
@@ -2097,6 +2257,7 @@ export default {
                         refreshFile()
                     })
                 }
+                leftShowList.value = localStorage.getItem('leftShowList') ||0
                     loadingPreview.value = false
             },500)
 
@@ -2346,7 +2507,19 @@ export default {
             fileBig,
             isAsc,
             changeSort,
-            clickPath
+            clickPath,
+            leftShowList,
+            changeLeftShow,
+            listfolderClick,
+            ListtreeData,
+            getFileTree,
+            searchFolderTree,
+            treeRClick,
+            showTreeMenu,
+            closeTreeRMenu,
+            delFolder,
+            changeListSort,
+            folderBlur
         }
     },
     watch: {
@@ -2367,7 +2540,10 @@ export default {
         inputPassword,
         PathLabel,
         ScanFile,
-        MoveTo
+        MoveTo,
+        LeftList,
+        ListShow,
+        TreeMenu
     },
 }
 
@@ -2425,15 +2601,25 @@ p {
 .searchBox{
     display: flex;
     justify-content: space-between;
+    align-items: center;
     position: relative;
     padding: 8px 16px;
-    .SearchIcon{
+    .SearchIcon {
         color: gray;
         position: absolute;
-        right: 5%;
+        right: calc(5% + 34px);
         top: 35%;
 
     }
+    .left_changeShow{
+        margin-left: 10px;
+        width: 24px;
+        height: 24px;
+        img{
+            width: 24px;
+            height: 24px;
+        }
+    }
 }
 .setBox {
     width: 88px;

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

@@ -513,7 +513,7 @@
     </div>
     <!-- 扫描文件移动到 -->
     <MoveTo v-if="openScanMove" :spaceType='3' :scanFileArr="scanFileArr" :thisFolder="thisFolder" :openScanMove="openScanMove" @closeOpenScanMove='closeOpenScanMove'></MoveTo>
-    <TreeMenu v-show="showTreeMenu" @restName="restName" @delName="delName" :xz="xz" :yz="yz"></TreeMenu>
+    <TreeMenu v-show="showTreeMenu" :spaceType='3'  @restName="restName" @delName="delName" :xz="xz" :yz="yz"></TreeMenu>
 </template>
 
 <script>
@@ -1420,6 +1420,7 @@ export default {
         const closeUpload =() =>{
             uploadModal.value = false;
             fileArr.value = [];
+            fileBig.value = 0
             loadingUpload.value = false
         }
         // 移除上传的某些文件

+ 376 - 202
src/views/publicment/MyFile.vue

@@ -16,13 +16,27 @@
                 <div
                     style="height: 75vh;overflow-y: auto;">
                     <div class="searchBox">
-                        <el-input v-model="searchFire" @keyup.enter="fileBlur" class="searchFire" size="large" placeholder="搜索文件"/>
-                        <el-icon class="SearchIcon" @click="fileBlur">
-                            <Search/>
-                        </el-icon>
+                        <div v-if="leftShowList == 1" style="width:100%">
+                            <el-input v-model="searchFire" @keyup.enter="fileBlur" class="searchFire" size="large"
+                                placeholder="搜索文件夹" />
+                            <el-icon class="SearchIcon" @click="fileBlur">
+                                <Search />
+                            </el-icon>
+                        </div>
+                         <div v-else style="width:100%">
+                            <el-input v-model="searchFolderTree" @keyup.enter="folderBlur" class="searchFire" size="large"
+                                placeholder="搜索文件" />
+                            <el-icon class="SearchIcon" @click="folderBlur">
+                                <Search />
+                            </el-icon>
+                        </div>
+                        <div class="left_changeShow">
+                            <img v-if="leftShowList == 1" src="@/assets/images/squre.png" @click="changeLeftShow" alt="">
+                            <img v-else src="@/assets/images/Frame_187.png" @click="changeLeftShow" alt="">
+                        </div>
                     </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;">
+                    <div v-if="leftShowList == 1" 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" >
                                 <el-dropdown trigger="click" class="selectChe">
@@ -59,6 +73,7 @@
                             </div>
                         </template>
                     </div>
+                     <LeftList v-else :spaceType="1" @treeRClick="treeRClick" :searchFolderTree="searchFolderTree" :ListtreeData="ListtreeData" @listfolderClick="listfolderClick"></LeftList>
                 </div>
                 <!-- <div class="expansion">
                     <div class="top_box">
@@ -77,7 +92,7 @@
                     <!-- 众多功能 -->
                     <div class="manyUse">
                         <div class="useMenu">
-                            <div v-if="(thisRole.some(item=>item == 'upload') || (isDept && thisFolder.dirId)) && pathLabelData.length"
+                            <div v-if="(thisRole.some(item=>item == 'upload') || (isDept && thisFolder.dirId)) && (pathLabelData.length || leftShowList == 0)"
                             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="">
@@ -161,201 +176,196 @@
                             <span>使用右键进行文件操作</span>
                        </div>
                     </div>
-                    <!-- 面包屑功能栏 -->
-                    <div class="breadBox">
-                        <!-- 左侧 -->
-                        <div style="display: flex;justify-content: space-around;align-items: center;margin-left: 5px;">
-                            <!-- 前进后退 -->
-                            <!-- <div style="display: flex;justify-content: space-around;align-items: center;">
-                                <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
-                                    @click="arrowLift">
-                                <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
-                            </div> -->
-                            <!-- 面包屑 -->
-                            <div class="topPath">
-                                <span @click="backTopPath">{{ topPath }}</span>
-                                <PathLabel v-if="!loadingPreview" @folderClick="folderClick" :pathLabelData='pathLabelData'></PathLabel>
-                                <!-- <BreadMenu></BreadMenu> -->
+                    <div v-show="leftShowList == 1">
+                        <!-- 面包屑功能栏 -->
+                        <div class="breadBox">
+                            <!-- 左侧 -->
+                            <div style="display: flex;justify-content: space-around;align-items: center;margin-left: 5px;">
+                                <!-- 前进后退 -->
+                                <!-- <div style="display: flex;justify-content: space-around;align-items: center;">
+                                    <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
+                                        @click="arrowLift">
+                                    <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
+                                </div> -->
+                                <!-- 面包屑 -->
+                                <div class="topPath">
+                                    <span @click="backTopPath">{{ topPath }}</span>
+                                    <PathLabel v-if="!loadingPreview" @folderClick="folderClick" :pathLabelData='pathLabelData'></PathLabel>
+                                    <!-- <BreadMenu></BreadMenu> -->
+                                </div>
                             </div>
-                        </div>
-                        <!-- 右侧 -->
-                        <div>
-                            <img
-                                src="@/assets/images/sort.png"
-                                @click="changeSort"
-                                v-if="isAsc == 'asc'"
+                            <!-- 右侧 -->
+                            <div>
+                                <img
+                                    src="@/assets/images/sort.png"
+                                    @click="changeSort"
+                                    v-if="isAsc == 'asc'"
+                                    alt=""
+                                />
+                                <img
+                                    src="@/assets/images/Frame_188.png"
+                                    @click="changeSort"
+                                    v-else
+                                    alt=""
+                                />
+                                <!-- //控制宫格展示 -->
+                                <img
+                                v-if="fileGrid"
+                                src="@/assets/images/squre.png"
+                                class="shouzhi palace-grid"
                                 alt=""
-                            />
-                            <img
-                                src="@/assets/images/Frame_188.png"
-                                @click="changeSort"
+                                @click="changeShow(true)"
+                                />
+                                <img
                                 v-else
+                                src="@/assets/images/Frame_187.png"
+                                class="shouzhi palace-grid"
                                 alt=""
-                            />
-                            <!-- //控制宫格展示 -->
-                            <img
-                              v-if="fileGrid"
-                              src="@/assets/images/squre.png"
-                              class="shouzhi palace-grid"
-                              alt=""
-                              @click="changeShow(true)"
-                            />
-                            <img
-                              v-else
-                              src="@/assets/images/Frame_187.png"
-                              class="shouzhi palace-grid"
-                              alt=""
-                              @click="changeShow(false)"
-                            />
-                            <!-- <img :src="squre" alt="" @click="gridChange" class="shouzhi"> -->
-                        </div>
-                    </div>
-                <!-- </div> -->
-                <!-- 展示文件夹盒子 -->
-            <div class="showBox">
-                <!-- 文件夹 -->
-                <div class="detailBox file-jia" @click="mouseClick">
-                    <el-collapse v-model="folder">
-                            <el-collapse-item name="1" class="custom-collapse-item">
-                            <template #title>
-                               <span class="file-title">文件夹</span>
-                            </template>
-                            <el-table v-if="fileGrid == 1" 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="名称" :show-overflow-tooltip="true" width="600">
-                                    <template #default="scope">
-                                        <span class="juzhong">
-                                            <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,true)" class="juli">
-                                                <Star />
-                                            </el-icon>
-                                            <img v-else @click.stop="delCollect(scope.row,true)" src="../../assets/images/yellowstar.png" alt="" class="juli">
-                                            <img :src="scope.row.dirType=='1'?fileBox:ordinary" style="width: 20px;height: 24px;"
-                                                alt="" class="juli">
-                                                <span class="shouzhi">{{ scope.row.dirName }}</span>
-                                        </span>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column prop="createTime" label="时间" width="280" />
-                                <el-table-column prop="dirType" label="类型">
-                                     <template #default="scope">
-                                        <span v-if="scope.row.dirType == '1'">普通目录</span>
-                                        <span v-else>组织目录</span>
-                                    </template>
-                                </el-table-column>
-                                <el-table-column label="加密等级">
-                                    <template #default="scope">
-                                         <span>
-                                            {{setTablelevel(scope.row.encryptLevel)}}
-                                        </span>
-                                    </template>
-                                </el-table-column>
-
-                                </el-table>
-                                <PlaceGridFolder v-else  @folderClick="folderClick" :folderList="folderList" :restName="restName"
-                                    :collectFolder="collectFolder" @collectByStar="collectByStar" @delCollect="delCollect"  @setScroll="setScroll" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack" :thisFolder="thisFolder">
-                                </PlaceGridFolder>
-                            </el-collapse-item>
-                    </el-collapse>
-                        <!-- 右键唤出的菜单 -->
-                        <div class="right_menu" v-if="folderVisible"
-                            :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
-                            <!-- <div class="menu_item" @click="folderClick(null, null)">
-                                <img src="@/assets/images/trash.png" alt="" />
-                                <span>打开</span>
-                            </div> -->
-                            <div class="menu_item" @click="restName(null, null)">
-                                <img src="@/assets/images/textbox.png" alt="" />
-                                <span class="shouzhi">重命名</span>
-                            </div>
-                            <div class="menu_item" @click="collectFolder">
-                                <img src="@/assets/images/collect.png" alt="" />
-                                <span  class="shouzhi">收藏</span>
-                            </div>
-                            <div class="menu_item" v-if="thisFolder.dirType ==='1' && clickRow.dirType === '2' && isDept" @click="upFirstFoler(null)">
-                                <img src="@/assets/images/notePencil.png" alt="" />
-                                <span class="shouzhi">编辑</span>
+                                @click="changeShow(false)"
+                                />
+                                <!-- <img :src="squre" alt="" @click="gridChange" class="shouzhi"> -->
                             </div>
                         </div>
-                    </div>
-                    <!-- 文件 -->
-                    <div class="fileTable">
-                        <el-collapse v-model="files" >
-                            <el-collapse-item name="2" class="">
-                                <template #title>
-                                   <span class="file-title">文件</span>
-                                </template>
-                                <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid == 1" :data="fileList" :height="fileHeight" :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="600">
-                                        <template #default="scope">
-                                            <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" class="juzhong">
-                                            <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,false)" class="juli">
-                                                <Star />
-                                            </el-icon>
-                                            <img v-else @click.stop="delCollect(scope.row,false)" src="../../assets/images/yellowstar.png" alt="" class="juli">
-                                            <img :src="setImg(scope.row.fileType)" style="width:22px;height:22px;" alt="" class="juli">
-                                                  <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>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="createTime" label="时间" sortable width="280" />
-                                    <el-table-column prop="fileType" label="类型" />
-                                    <el-table-column label="大小">
-                                        <template #default="scope">
-                                            <span>
-                                                {{ formatFileSize(scope.row.fileSize) }}
-                                            </span>
+                        <!-- </div> -->
+                        <!-- 展示文件夹盒子 -->
+                        <div class="showBox">
+                            <!-- 文件夹 -->
+                            <div class="detailBox file-jia" @click="mouseClick">
+                                <el-collapse v-model="folder">
+                                        <el-collapse-item name="1" class="custom-collapse-item">
+                                        <template #title>
+                                        <span class="file-title">文件夹</span>
                                         </template>
-                                    </el-table-column>
-                                </el-table>
-                                <PalaceGridFile v-else :fileHeight="fileHeight" @showFile="showFile" :getAllTop="getAllTop" @navBack="navBack"
-                                    @lastBB="lastBB" @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @handleRowClick="handleRowClick" @onlineCase="onlineCase" @shareBack="shareBack" :thisFolder="thisFolder" :fileList="fileList"></PalaceGridFile>
-                            </el-collapse-item>
-                        </el-collapse>
-                        <div :class="{'setCli':!noMenuItem}" v-if="cliCC" :style="{ left: xz + 'px', top: yz -100 + 'px' }">
-                            <template v-for="(item, index) in filterMouseCli()" :key="index">
-                                <p @click="chooseSet(item, index, 1)" v-if="!noMenuItem" class="chooseSet" style="cursor: pointer;">
-                                    <img :src="item.img" alt="">
-                                    {{ item.name }}
-                                    <span v-if="item.name == '协作' ? true : false"
-                                        style="color: #7084B4;float: right;position: relative;" class="arrow"></span>
-                                </p>
-                            </template>
-                        </div>
-                        <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz + 'px' }">
-                            <p @click="chooseSet1(0)" class="chooseSet">
-                                <img src="../../assets/images/user.png" alt="">
-                                选择人员
-                            </p>
-                            <p class="chooseSet" @click="goLock" v-if="clickRow.isActor === 'Y' && clickRow.isFiled != 'Y'">
-                                <img src="../../assets/images/archiveTray.png" alt="">
-                                归档
-                            </p>
+                                        <el-table v-if="fileGrid == 1" 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="名称" :show-overflow-tooltip="true" width="600">
+                                                <template #default="scope">
+                                                    <span class="juzhong">
+                                                        <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,true)" class="juli">
+                                                            <Star />
+                                                        </el-icon>
+                                                        <img v-else @click.stop="delCollect(scope.row,true)" src="../../assets/images/yellowstar.png" alt="" class="juli">
+                                                        <img :src="scope.row.dirType=='1'?fileBox:ordinary" style="width: 20px;height: 24px;"
+                                                            alt="" class="juli">
+                                                            <span class="shouzhi">{{ scope.row.dirName }}</span>
+                                                    </span>
+                                                </template>
+                                            </el-table-column>
+                                            <el-table-column prop="createTime" label="时间" width="280" />
+                                            <el-table-column prop="dirType" label="类型">
+                                                <template #default="scope">
+                                                    <span v-if="scope.row.dirType == '1'">普通目录</span>
+                                                    <span v-else>组织目录</span>
+                                                </template>
+                                            </el-table-column>
+                                            <el-table-column label="加密等级">
+                                                <template #default="scope">
+                                                    <span>
+                                                        {{setTablelevel(scope.row.encryptLevel)}}
+                                                    </span>
+                                                </template>
+                                            </el-table-column>
+
+                                            </el-table>
+                                            <PlaceGridFolder v-else  @folderClick="folderClick" :folderList="folderList" :restName="restName"
+                                                :collectFolder="collectFolder" @collectByStar="collectByStar" @delCollect="delCollect"  @setScroll="setScroll" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack" :thisFolder="thisFolder">
+                                            </PlaceGridFolder>
+                                        </el-collapse-item>
+                                </el-collapse>
+                                    <!-- 右键唤出的菜单 -->
+                                    <div class="right_menu" v-if="folderVisible"
+                                        :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
+                                        <!-- <div class="menu_item" @click="folderClick(null, null)">
+                                            <img src="@/assets/images/trash.png" alt="" />
+                                            <span>打开</span>
+                                        </div> -->
+                                        <div class="menu_item" @click="restName(null, null)">
+                                            <img src="@/assets/images/textbox.png" alt="" />
+                                            <span class="shouzhi">重命名</span>
+                                        </div>
+                                        <div class="menu_item" @click="collectFolder">
+                                            <img src="@/assets/images/collect.png" alt="" />
+                                            <span  class="shouzhi">收藏</span>
+                                        </div>
+                                        <div class="menu_item" v-if="thisFolder.dirType ==='1' && clickRow.dirType === '2' && isDept" @click="upFirstFoler(null)">
+                                            <img src="@/assets/images/notePencil.png" alt="" />
+                                            <span class="shouzhi">编辑</span>
+                                        </div>
+                                    </div>
+                                </div>
+                                <!-- 文件 -->
+                                <div class="fileTable">
+                                    <el-collapse v-model="files" >
+                                        <el-collapse-item name="2" class="">
+                                            <template #title>
+                                            <span class="file-title">文件</span>
+                                            </template>
+                                            <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid == 1" :data="fileList" :height="fileHeight" :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="600">
+                                                    <template #default="scope">
+                                                        <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" class="juzhong">
+                                                        <el-icon v-if="scope.row.isFavorite == 'N'" @click.stop="collectByStar(scope.row,false)" class="juli">
+                                                            <Star />
+                                                        </el-icon>
+                                                        <img v-else @click.stop="delCollect(scope.row,false)" src="../../assets/images/yellowstar.png" alt="" class="juli">
+                                                        <img :src="setImg(scope.row.fileType)" style="width:22px;height:22px;" alt="" class="juli">
+                                                            <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>
+                                                    </template>
+                                                </el-table-column>
+                                                <el-table-column prop="createTime" label="时间" sortable width="280" />
+                                                <el-table-column prop="fileType" label="类型" />
+                                                <el-table-column label="大小">
+                                                    <template #default="scope">
+                                                        <span>
+                                                            {{ formatFileSize(scope.row.fileSize) }}
+                                                        </span>
+                                                    </template>
+                                                </el-table-column>
+                                            </el-table>
+                                            <PalaceGridFile v-else :fileHeight="fileHeight" @showFile="showFile" :getAllTop="getAllTop" @navBack="navBack"
+                                                @lastBB="lastBB" @collectByStar="collectByStar" @delCollect="delCollect" @setScroll="setScroll" @handleRowClick="handleRowClick" @onlineCase="onlineCase" @shareBack="shareBack" :thisFolder="thisFolder" :fileList="fileList"></PalaceGridFile>
+                                        </el-collapse-item>
+                                    </el-collapse>
+                                </div>
                         </div>
                     </div>
-            </div>
-                    </div>
-                <div v-else>
-                    <div>
-                        <el-button @click="editOnline = true; historyPrew = false">返回</el-button>
+                     <ListShow v-show="leftShowList == 0" @handleSelectionChange="handleSelectionChange" :fileList="fileList" @changeListSort="changeListSort" @delCollect="delCollect" @collectByStar="collectByStar" @handleRowClick="handleRowClick"></ListShow>
                     </div>
-                    <FileEdit :docId="clickRowId" :copyRow="copyRow" :historyPrew="historyPrew"
-                        :historycopyRow="historycopyRow" :onlyView="onlyView" @cancleHistoryPrew="cancleHistoryPrew">
-                    </FileEdit>
-                </div>
+            </div>
+            <div :class="{'setCli':!noMenuItem}" v-if="cliCC" :style="{ left: xz + 'px', top: yz -100 + 'px' }">
+                <template v-for="(item, index) in filterMouseCli()" :key="index">
+                    <p @click="chooseSet(item, index, 1)" v-if="!noMenuItem" class="chooseSet" style="cursor: pointer;">
+                        <img :src="item.img" alt="">
+                        {{ item.name }}
+                        <span v-if="item.name == '协作' ? true : false"
+                            style="color: #7084B4;float: right;position: relative;" class="arrow"></span>
+                    </p>
+                </template>
+            </div>
+            <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz + 'px' }">
+                <p @click="chooseSet1(0)" class="chooseSet">
+                    <img src="../../assets/images/user.png" alt="">
+                    选择人员
+                </p>
+                <p class="chooseSet" @click="goLock" v-if="clickRow.isActor === 'Y' && clickRow.isFiled != 'Y'">
+                    <img src="../../assets/images/archiveTray.png" alt="">
+                    归档
+                </p>
             </div>
 
             <!-- 扩容弹窗 -->
@@ -462,6 +472,7 @@
     </div>
     <!-- 扫描文件移动到 -->
     <MoveTo v-if="openScanMove" :spaceType='1' :scanFileArr="scanFileArr" :thisFolder="thisFolder" :openScanMove="openScanMove" @closeOpenScanMove='closeOpenScanMove'></MoveTo>
+     <TreeMenu v-show="showTreeMenu" :spaceType='1' :isDept="isDept" @upFirstFoler="upFirstFoler" @restName="restName" @delName="delName" :xz="xz" :yz="yz"></TreeMenu>
 </template>
 
 <script>
@@ -485,6 +496,8 @@ import SpaceBig from './modalComponebts/SpaceBig.vue'
 import PlaceGridFolder from '@/views/myfile/components/PlaceGridFolder.vue'
 import PalaceGridFile from '@/views/myfile/components/PalaceGridFile.vue'
 import ImgFile from "./jsComponents/ImgFile"
+import LeftList from "@/components/LeftList/LeftList.vue"
+import ListShow from "@/components/ListShow/ListShow.vue"
 import { Search } from '@element-plus/icons-vue'
 import blueLeft from '../../assets/images/blueLeft.png'
 import grayRight from "../../assets/images/grayRight.png"
@@ -520,6 +533,7 @@ import elTableInfiniteScroll from 'el-table-infinite-scroll'
 import { getConfigKey } from "@/api/system/config.js"
 import { setIcon } from "@/utils/index.js";
 import uploadApi from '../../api/upload/upload'
+import TreeMenu from '@/components/TreeMenu/TreeMenu.vue'
 
 export default {
     directives: {
@@ -758,6 +772,11 @@ export default {
         const isCode = ref(false)// 验证的类型
         const isAsc = ref("desc");
         const clickPath = inject("clickPath");
+        const leftShowList = ref(localStorage.getItem('leftShowList') ||1)
+        const thisFirst = ref()
+        const ListtreeData = ref()
+        const searchFolderTree = ref()
+        const showTreeMenu = ref(false)
         const changeSort = async () => {
            isAsc.value == "asc" ? (isAsc.value = "desc") : (isAsc.value = "asc")
            refreshFile()
@@ -772,6 +791,18 @@ export default {
                    // folderList.value = res.rows
                })
            }
+        const changeListSort = async (listAsc)=>{
+             const query = `${thisFolder.value.dirId}?isAsc=${listAsc}&orderByColumn=createTime&pageSize=9999&pageNum=1`
+             myfile.getById(query)
+                .then(res => {
+                    if (res.code === 200) {
+                        fileList.value = res.rows;
+                    }
+                })
+                .catch(error => {
+                    console.error("myfile.getAllFileMenu 调用失败:", error);
+                });
+        }
         const changeShow =async (fileGrids) => {
         filePageNum.value = 1
         if(fileGrid.value == 1){
@@ -861,11 +892,34 @@ export default {
                 })
         }
         function getSpaceList() {
+            getFileTree()
             myfile.fileType(1).then(res => {
                 useSpace.value = res.data.usedCap
                 allSpace.value = res.data.spaceCap
             })
         }
+        //获取文件树
+        function getFileTree() {
+        documents.fileTree(1).then((res) => {
+            res.disabled = true;
+            ListtreeData.value = [res];
+            function getAllNodeIds(nodes) {
+            nodes.forEach((node) => {
+                if (node.remark) {
+                node.remark = JSON.parse(node.remark);
+                }
+                if (node.children && node.children.length > 0) {
+                getAllNodeIds(node.children);
+                }
+            });
+            return nodes;
+            }
+            // 调用递归函数获取所有节点的 id
+            getAllNodeIds(ListtreeData.value);
+            // console.log("treedataarr", arr);
+            // console.log("treeData", treeData.value);
+        });
+        }
         function fileBlur() {
             if (searchFire.value == '') {
                 getAllTop()
@@ -974,6 +1028,18 @@ export default {
                 cliCC.value = true
             }
         }
+        // 树节点右键事件
+        function treeRClick(row, col, e) {
+            console.log('row', row);
+            // isFolder.value = "N"
+            clickRow.value = row
+            e.preventDefault();
+            e.stopPropagation();
+            xz.value = e.pageX
+            yz.value = e.pageY
+            showTreeMenu.value = true
+          
+        }
         // 申请扩容
        async function askApply() {
             const res =  await fileSpace.querySpace(impSpaceId.value)
@@ -1208,6 +1274,7 @@ export default {
         const closeUpload =() =>{
             uploadModal.value = false;
             fileArr.value = [];
+            fileBig.value = 0
             loadingUpload.value = false
         }
         // 移除上传的某些文件
@@ -1308,16 +1375,24 @@ export default {
             }
         }
         function delName(row, num) {
+            row = row ? row : clickRow.value
             documents.delDocument(row.dirId).then(res => {
                 if (res.code === 200) {
                     getAllTop()
+                    getSpaceList()
                     ElMessage({
                         message: "删除成功",
                         type: "success"
                     })
+                    delFolder()
                 }
             })
         }
+        const delFolder = ()=>{
+            const arrJson = sessionStorage.getItem('tabData')
+            const tableData = JSON.parse(arrJson)
+            console.log('tableData',tableData);
+        }
         // 计算百分比
         function percent() {
             let numP = 0;
@@ -1329,7 +1404,7 @@ export default {
 
         // 文件夹每行点击事件
         function folderClick(row, list,e,jump) {
-            if(!pathLabelData.value[0]){
+            if(!pathLabelData.value[0] && leftShowList.value == 1){
                  // 创建标签
                 const addData = {
                     path: '/publicment' + row.dirId,
@@ -1419,6 +1494,58 @@ export default {
                 }
             })
         }
+        // 左边树节点每行点击事件
+        function listfolderClick(row,firstData) {
+            if(row){
+                thisFolder.value = row
+            }
+            row = row?row:thisFolder.value
+            
+            if (row.isEncrypt === "Y") {
+                getLeveldetailFn(row.encryptLevel)
+            } else {
+                thisFolderRole.value = null
+            }
+            console.log('row',row);
+            console.log('rowthisFolderRole',thisFolderRole.value);
+            newDirId.value = row.dirId
+            newSpaceId.value = row.spaceId
+             const query = `${newDirId.value}?isAsc=${isAsc.value}&orderByColumn=createTime&pageSize=9999&pageNum=1`
+            documents.getALLdocumentByType({
+                parentId: newDirId.value - 0,
+                spaceId: newSpaceId.value - 0,
+                isAsc: isAsc.value,
+                orderByColumn: "createTime"
+            }, 1).then(res => {
+                folderList.value = res.rows
+                if (res.rows.length === 0) {
+                    myfile.getById(query).then(res => {
+                        // console.log('res = ',res);
+                        if (res.code === 200) {
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
+                            fileList.value = JSON.parse(JSON.stringify(res.rows))
+                        }
+                    // console.log('folderClickshijian1',tableTotal.value,tableBeEnd.value);
+                    })
+                } else {
+                    myfile.getById(query).then(res => {
+                        if (res.code === 200) {
+                            tableTotal.value = res.total
+                            if (res.rows.length < res.total) {
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
+                            fileList.value = JSON.parse(JSON.stringify(res.rows))
+                        }
+                        // console.log('fileList',fileList.value);
+                    })
+                }
+            })
+        }
         // 确认文件重命名
         function sureChangeName() {
             myfile.editNewMenu({
@@ -1545,7 +1672,7 @@ export default {
                 arr = arr.filter(item => item.name !== "文字识别")
             }
             // console.log('arr',arr);
-            if(thisFolderRole.value.roles){
+            if(thisFolderRole.value?.roles){
                 console.log('thisFolderRole',thisFolderRole.value);
                 arr = rightMenuRole(toRaw(thisFolderRole.value),arr)
             }
@@ -1591,6 +1718,11 @@ export default {
             // console.log("close");
             folderVisible.value = false;
         };
+        // 关闭tree右键菜单
+        const closeTreeRMenu = () => {
+            // console.log("close");
+            showTreeMenu.value = false;
+        };
         // 文件夹收藏事件
         const collectFolder = () => {
              if(clickRow.value.isFavorite === "Y"){
@@ -1699,13 +1831,14 @@ export default {
             if(edit){
                 getFirstFolder()
             }
-            if(toRaw(thisFolder.value).dirId && !leftNewFile.value){//如果点开了文件夹
-            // console.log(111);
-               folderClick()
-            }else{
-            // console.log(222);
+           if (toRaw(thisFolder.value)?.dirId && !leftNewFile.value && leftShowList.value == 1 ) {//如果点开了文件夹
+                folderClick()
+            } else if(toRaw(thisFolder.value)?.dirId && !leftNewFile.value && leftShowList.value == 0){
+                listfolderClick()
+            }else {
                 getAllTop()
             }
+            getSpaceList()
         }
         //star收藏事件
         const collectByStar = (row,isfolder)=>{
@@ -2004,6 +2137,20 @@ export default {
             openScanMove.value = false
             refreshFile()
         }
+        const changeLeftShow = ()=>{
+            leftShowList.value = leftShowList.value == 1?0:1
+            thisFolder.value = {}
+            localStorage.setItem('leftShowList',leftShowList.value)
+            if(!leftShowList.value){
+                console.log('toList');
+                 // 创建标签
+                const addData = {
+                    path: '/publicment',
+                    label: '公共文件'
+                }
+                clickPath(null,addData)
+            }
+        }
         watch(() => folder.value, async(newValue, oldValue) => {
             // console.log('iFrameData 发生改变了', newValue, oldValue);
             console.log('files',newValue);
@@ -2057,6 +2204,7 @@ export default {
             }
         });
         onMounted(() => {
+            leftShowList.value = localStorage.getItem('leftShowList') ||0
             getAllTop()
             getSpaceList()
             getUserInfo()
@@ -2069,6 +2217,7 @@ export default {
             window.addEventListener("click", closeRMenu, true);
             window.addEventListener("click", mouseClick, true);
             window.addEventListener("mousewheel", mouseClick, true);
+            window.addEventListener("click", closeTreeRMenu, true);
         })
         // 组件显示
         onActivated(()=>{
@@ -2100,6 +2249,7 @@ export default {
                         refreshFile()
                     })
                 }
+                leftShowList.value = localStorage.getItem('leftShowList') ||0
                     loadingPreview.value = false
             },500)
 
@@ -2348,7 +2498,18 @@ export default {
             upFileData,
             isAsc,
             changeSort,
-            clickPath
+            clickPath,
+            leftShowList,
+            changeLeftShow,
+            listfolderClick,
+            ListtreeData,
+            getFileTree,
+            searchFolderTree,
+            treeRClick,
+            showTreeMenu,
+            closeTreeRMenu,
+            delFolder,
+            changeListSort,
         }
     },
     watch: {
@@ -2369,7 +2530,10 @@ export default {
         inputPassword,
         PathLabel,
         ScanFile,
-        MoveTo
+        MoveTo,
+        LeftList,
+        ListShow,
+        TreeMenu
     },
 }
 
@@ -2427,15 +2591,25 @@ p {
 .searchBox{
     display: flex;
     justify-content: space-between;
+    align-items: center;
     position: relative;
     padding: 8px 16px;
-    .SearchIcon{
+    .SearchIcon {
         color: gray;
         position: absolute;
-        right: 5%;
+        right: calc(5% + 34px);
         top: 35%;
 
     }
+    .left_changeShow{
+        margin-left: 10px;
+        width: 24px;
+        height: 24px;
+        img{
+            width: 24px;
+            height: 24px;
+        }
+    }
 }
 .checkScan{
     background-color: #eee;