Bläddra i källkod

Merge remote-tracking branch 'origin/v3' into v3

wukai 1 år sedan
förälder
incheckning
86044535ee

BIN
src/assets/images/folder_white.png


+ 106 - 0
src/components/ScanFile/ScanFile.vue

@@ -0,0 +1,106 @@
+<template>
+  <div>
+    <el-dialog
+      v-model="props.openScan"
+      width="964px"
+      top="20vh"
+      title="扫描文档"
+      @close="closeOpen"
+    >
+      <div class="main">
+        <!-- 头部的总计和移动按钮 -->
+        <div class="statistics">
+          <el-checkbox v-model="checkedAll">共{{ total }}项</el-checkbox>
+          <div class="">
+            <el-button color="#2E6BC8">
+              <img src="@/assets/images/folder_white.png" alt="" />&nbsp; 移动到
+            </el-button>
+          </div>
+        </div>
+        <!-- 盒子区域 -->
+        <div class="bigBox">
+          <div v-for="item in 10" :key="item" class="one_box">
+            <img src="@/assets/images/bigLogin.png" alt="" />
+            <div class="top_check">
+              <el-checkbox ></el-checkbox>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {
+  ref,
+  computed,
+  reactive,
+  defineComponent,
+  watch,
+  toRaw,
+  onMounted,
+  defineExpose,
+  onDeactivated,
+} from "vue";
+const props = defineProps({
+  openScan: {
+    type: Boolean,
+    default: false,
+  },
+});
+const checkedAll = ref(false); //是否全选
+const total = ref(333); //总计数量
+const emit = defineEmits(["closeOpen"]);
+const closeOpen = () => {
+  emit("closeOpen");
+};
+</script>
+
+<style lang="scss" scoped>
+.main {
+  width: 100%;
+}
+.statistics {
+  width: 100%;
+  height: 50px;
+  border-bottom: 1px solid #c1cce3;
+  padding: 0 16px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.bigBox {
+  margin-top: 16px;
+  width: 100%;
+  padding: 0 16px;
+  max-height: 700px;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+  overflow-y: auto;
+  .one_box {
+    width: 300px;
+    height: 420px;
+    border: 1px solid #c1cce3;
+    box-sizing: border-box;
+    margin-bottom: 16px;
+    border-radius: 4px 4px 4px 4px;
+    box-shadow: 0px 2px 10px 1px rgba(199, 203, 216, 0.4);
+    position: relative;
+    img {
+      width: 100%;
+      height: 100%;
+      object-fit: cover;
+    }
+    .top_check {
+      position: absolute;
+      top: 5%;
+      right: 10%;
+    }
+  }
+}
+:deep(.el-dialog__body) {
+  padding: 0 !important;
+}
+</style>

+ 34 - 5
src/layout/indexCommon.vue

@@ -71,7 +71,7 @@
             > -->
             <el-tabs v-model="editableTabsValue" @tab-add="addTab" type="card" class="common-tabs">
               <!-- <el-tab-pane label="首页" @click="clickTab('/index')"> </el-tab-pane> -->
-              <el-tab-pane v-for="(item, index) in toRaw(editableTabs)" :key="item.path" :label="item.label"
+              <el-tab-pane v-for="(item, index) in toRaw(editableTabs)" :key="item.label" :label="item.label"
                 :name="item.path" :data-item="JSON.stringify(item)">
                 <template #label>
                   <div class="tab_pane" @click="paneClick(item)">
@@ -125,10 +125,11 @@
       </el-container>
     </el-container>
   </div>
+    <div v-loading.fullscreen="loadingPreview" v-if="loadingPreview" class="lodingBox"></div>
 </template>
 
 <script setup>
-import { nextTick, onMounted, provide, ref, watchEffect, watch } from "vue";
+import { nextTick, onMounted,onBeforeMount, provide, ref, watchEffect, watch } from "vue";
 import { ElMessageBox, ElMessage } from "element-plus";
 import useAppStore from "@/store/modules/app";
 import useUserStore from "@/store/modules/user";
@@ -172,6 +173,7 @@ const selectValue = ref(1); //文档空间类型
 const wangzhi = import.meta.env.VITE_APP_BASE_API;
 const isAlive = ref(true);
 const toFileData = ref();
+const loadingPreview = ref(true)
 const uid = useUserStore().uid;
 let hasNewMessage = ref(false)
 let isSwitchFileIframe = ref(false); //是否切换到文件预览标签
@@ -287,8 +289,12 @@ function toggleSideBar() {
 }
 const logingName = ref("");
 let lisetenMessageTime = null;
-onMounted(() => {
-  needRepass()
+onBeforeMount(()=>{
+   needRepass()
+   loadingPreview.value = false
+})
+onMounted(async () => {
+
   logingName.value = Cookies.get("username");
   clearInterval(lisetenMessageTime)
   lisetenMessageTime = setInterval(() => {
@@ -790,11 +796,26 @@ const addFolderAdd = (data) => {
   editableTabsValue.value = data.path
   toFileData.value = data
   clickTab(data)
-  // console.log("editableTabs", toRaw(editableTabs.value));
+  console.log("editableTabs", toRaw(editableTabs.value));
 };
+const upFirstFolderData = (query)=>{
+  console.log('query',query);
+  const arr = toRaw(editableTabs.value);
+  // if(!arr.some(item=>item.clickRowId.dirId === query.dirId)) return
+  arr.map(item=>{
+    if(item.clickRowId && item.clickRowId.dirId === query.dirId){
+      item.label = query.dirName
+      return item
+    }
+    return item
+  })
+  editableTabs.value = JSON.parse(JSON.stringify(arr))
+  console.log('editableTabs',editableTabs.value);
+}
 provide("addTab", addTab);
 provide("addFolderAdd", addFolderAdd);
 provide("addFileTab", addFileTab);
+provide("upFirstFolderData", upFirstFolderData);
 // TODO 删除tab事件
 const closeTab = (item, index, e) => {
   e.preventDefault();
@@ -937,6 +958,14 @@ watch(() => editableTabsValue.value, (newValue, oldValue) => {
 .el-container {
   height: 94vh;
 }
+.lodingBox {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100vh;
+    height: 100vh;
+    z-index: 10000000;
+}
 
 :deep .el-main {
   --el-main-padding: 8px !important;

+ 0 - 834
src/views/department/Department.vue

@@ -1,834 +0,0 @@
-<template>
-    <div>
-        <div class="bigBox">
-            <div class="settingBox">
-                <!-- 设置盒子顶部搜索 -->
-                <div class="topSearch">
-                    <div style="position: relative;">
-                        <el-input v-model="searchFire" class="searchFire" size="large" placeholder="搜索文件" />
-                        <el-icon style="color: gray;display: inline-block;position: absolute;top: 8px;right: 5px;">
-                            <Search />
-                        </el-icon>
-                    </div>
-                    <div>
-                        <el-icon style="font-size: 24px;">
-                            <Plus />
-                        </el-icon>
-                    </div>
-                </div>
-                <!-- 方块点击盒子 -->
-                <div
-                    style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 540px;">
-                    <!-- v-for盒子 -->
-                    <div class="setBox" @click="changeFile">
-                        <el-dropdown trigger="click" class="selectChe">
-                            <span class="el-dropdown-link">
-                                ...
-                            </span>
-                            <template #dropdown>
-                                <el-dropdown-menu>
-                                    <el-dropdown-item @click="addPeople">
-                                        <img :src="togger" alt="">
-                                        <span>添加人员</span>
-                                    </el-dropdown-item>
-                                    <el-dropdown-item>
-                                        <img :src="textbox" alt="">
-                                        <span>重命名</span>
-                                    </el-dropdown-item>
-                                    <el-dropdown-item>
-                                        <img :src="trash" alt="">
-                                        <span>删除</span>
-                                    </el-dropdown-item>
-                                </el-dropdown-menu>
-                            </template>
-                        </el-dropdown>
-                        <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
-                        <p>xxx文件</p>
-                    </div>
-                </div>
-                <div>
-                    <p>
-                        <span style="margin-left: 10px;">5G/1T</span>
-                        <span style="margin-left: 10rem;font-size: 12px;color: blue;cursor: pointer;"
-                            @click="askApply">申请扩容</span>
-                    </p>
-                    <el-progress style="margin-left: 8px;" :percentage="50" />
-                </div>
-            </div>
-            <!-- 右侧大盒子 -->
-            <div class="mesBox">
-                <!-- 功能盒子  -->
-                <div class="useBox">
-                    <!-- table切换 -->
-                    <div style="width: 100%;height: 24px;background-color: #7084B4;line-height: 20px;">
-                        <template v-for="(item, index) in menuList">
-                            <span @click="tableChange(item, index)"
-                                :class="['tables', { tableLis: selectedIndex === index }]">
-                                {{ item.name }}
-                                <img v-if="selectedIndex === index ? true : false"
-                                    style="position: absolute;top: 4px;right: 4px;" src="../../assets/images/close.png"
-                                    @click="shotdown(item)">
-                            </span>
-                        </template>
-                    </div>
-                    <!-- 众多功能 -->
-                    <div class="manyUse">
-                        <div
-                            style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;">
-                                    <Plus />
-                                </el-icon>
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;" @click="createNew">新建
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <el-dropdown-menu>
-                                            <!-- <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template> -->
-                                            <el-dropdown-item @click="directoryOpen">
-                                                组织目录
-                                            </el-dropdown-item>
-                                            <el-dropdown-item @click="directoryOpen">
-                                                公开目录
-                                            </el-dropdown-item>
-                                        </el-dropdown-menu>
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                        <template v-for="(item, index) in useMenu">
-                            <div
-                                style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                                <div style="margin-left: 5px;">
-                                    <img :src="item.img" style="width: 24px;height: 24px;" alt="">
-                                </div>
-                                <div style="margin-left: 5px;">
-                                    <span style="font-size: 12px;">{{ item.name }}</span>
-                                </div>
-                            </div>
-                        </template>
-                        <div
-                            style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <img :src="funnel" style="width: 24px;height: 24px;" alt="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;">快速筛选
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <!-- <el-dropdown-menu>
-                                            <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template>
-                                        </el-dropdown-menu> -->
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                        <div
-                            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="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;">上传
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <el-dropdown-menu>
-                                            <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template>
-                                        </el-dropdown-menu>
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- 面包屑功能栏 -->
-                    <div class="breadBox">
-                        <!-- 左侧 -->
-                        <div style="display: flex;justify-content: space-around;align-items: center;">
-                            <!-- 前进后退 -->
-                            <div style="display: flex;justify-content: space-around;align-items: center;">
-                                <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt="">
-                                <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
-                            </div>
-                            <!-- 面包屑 -->
-                            <div>
-                                <el-breadcrumb separator="/">
-                                    <el-breadcrumb-item style="font-size: 12px;">homepage</el-breadcrumb-item>
-                                    <el-breadcrumb-item style="font-size: 12px;">promotion management</el-breadcrumb-item>
-                                    <el-breadcrumb-item style="font-size: 12px;">promotion detail</el-breadcrumb-item>
-                                </el-breadcrumb>
-                            </div>
-                        </div>
-                        <!-- 右侧 -->
-                        <div>
-                            <img :src="sort" alt="">
-                            <img :src="squre" alt="">
-                        </div>
-                    </div>
-                </div>
-                <!-- 展示文件夹盒子 -->
-                <div>
-                    <!-- 文件夹 -->
-                    <div class="detailBox">
-                        <el-collapse v-model="folder" accordion class="collapse">
-                            <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
-
-                            </el-collapse-item>
-                        </el-collapse>
-                    </div>
-                    <!-- 文件 -->
-                    <div class="fileTable">
-                        <el-collapse v-model="files" accordion class="collapse">
-                            <el-collapse-item title="文件" name="2" class="custom-collapse-item">
-                                <el-table :data="fileList" style="width: 100%" @row-click="handleRowClick">
-                                    <el-table-column label="Image" width="100">
-                                        <template slot-scope="scope">
-                                            <!-- 插入固定图片 -->
-                                            <span>1</span>
-                                            <img :src="fileBox" alt="" />
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="date" label="Date" width="180" />
-                                    <el-table-column prop="name" label="Name" width="180" />
-                                    <el-table-column prop="address" label="Address" />
-                                </el-table>
-                                <!-- <div class="setCli" v-if="cliCC">
-                                    <template v-for="(item, index) in mouseCli">
-                                        <p @click="chooseSet(item, index)" class="chooseSet">
-                                            <img :src="item.img" alt="">
-                                            {{ item.name }}
-                                            <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
-                                                style="color: #7084B4;float: right;">></span>
-                                        </p>
-                                    </template>
-                                </div> -->
-                            </el-collapse-item>
-                        </el-collapse>
-                    </div>
-                    <!-- 添加人员穿梭框 -->
-                    <div>
-                        <el-dialog v-model="transferModal" title="添加人员" width="40%">
-                            <el-transfer v-model="tranvalue" filterable :filter-method="filterMethod"
-                                filter-placeholder="State Abbreviations" :data="trandata" />
-                            <template #footer>
-                                <span class="dialog-footer">
-                                    <el-button @click="transferModal = false">取消</el-button>
-                                    <el-button type="primary" @click="transferSure">确定</el-button>
-                                </span>
-                            </template>
-                        </el-dialog>
-                    </div>
-                </div>
-            </div>
-            <!-- 扩容弹窗 -->
-            <div>
-                <el-dialog v-model="askTo" title="扩容申请" width="30%">
-                    <el-form>
-                        <el-form-item label="新容量">
-                            <el-input-number v-model="askNum" :min="1" :max="10" />
-                        </el-form-item>
-                        <el-form-item label="申请理由">
-                            <el-input v-model="askTalk" maxlength="150" placeholder="请输入申请理由" show-word-limit
-                                type="textarea" />
-                        </el-form-item>
-                    </el-form>
-                    <template #footer>
-                        <span class="dialog-footer">
-                            <el-button @click="askTo = false">取消</el-button>
-                            <el-button type="primary" @click="sureAsk">
-                                确定
-                            </el-button>
-                        </span>
-                    </template>
-                </el-dialog>
-            </div>
-            <!-- 新建组织目录 -->
-            <div>
-                <el-dialog v-model="directoryModal" title="新建目录" width="55%">
-                    <el-form :data="v1form">
-                        <el-form-item label="目录名称">
-                            <el-input v-model="v1form.names"></el-input>
-                        </el-form-item>
-                        <el-form-item label="目录分类">
-                            <el-radio-group v-model="v1form.types" class="ml-4" @change="directoryChange">
-                                <el-radio label="公开目录" value="0" size="large"></el-radio>
-                                <el-radio label="组织目录" value="1" size="large"></el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="成员权限" v-if="directoryPower">
-                            <el-checkbox-group v-model="v1form.power">
-                                <el-checkbox label="可查看" />
-                                <el-checkbox label="可编辑" />
-                                <el-checkbox label="可上传" />
-                                <el-checkbox label="可删除" />
-                            </el-checkbox-group>
-                        </el-form-item>
-                        <el-form-item label="选择成员" v-if="directoryPower">
-                            <!-- <el-transfer v-model="v1form.tranvalue1" filterable :filter-method="filterMethod1"
-                                filter-placeholder="State Abbreviations" :data="trandata1" /> -->
-                            <!-- <template #footer>
-                                <span class="dialog-footer">
-                                    <el-button @click="transferModal = false">取消</el-button>
-                                    <el-button type="primary" @click="transferSure">确定</el-button>
-                                </span>
-                            </template> -->
-                            <TransferModal  :isNewMenu="isNewMenu"></TransferModal>
-                        </el-form-item>
-                    </el-form>
-                    <template #footer>
-                        <span class="dialog-footer">
-                            <el-button @click="directoryModal = false">取消</el-button>
-                            <el-button type="primary">
-                                确定
-                            </el-button>
-                        </span>
-                    </template>
-                </el-dialog>
-            </div>
-        </div>
-    </div>
-</template>
-
-<script>
-import { ref } from 'vue'
-import myfile from '../../api/myfile/myfile'
-import TransferModal from '../myfile/modalComponebts/Transfer.vue'
-import { Search } from '@element-plus/icons-vue'
-import copy from '../../assets/images/copy.png'
-import clipboard from '../../assets/images/clipboard.png'
-import share from '../../assets/images/share.png'
-import trash from '../../assets/images/trash.png'
-import file from '../../assets/images/file.png'
-import folder from '../../assets/images/folder.png'
-import image from '../../assets/images/image.png'
-import filmSlate from '../../assets/images/filmSlate.png'
-import musicNotes from '../../assets/images/musicNotes.png'
-import blueLeft from '../../assets/images/blueLeft.png'
-import grayRight from "../../assets/images/grayRight.png"
-import sort from '../../assets/images/sort.png'
-import squre from '../../assets/images/squre.png'
-import addolder from '../../assets/images/addolder.png'
-import textbox from '../../assets/images/textbox.png'
-import goon from '../../assets/images/goon.png'
-import notePencil from '../../assets/images/notePencil.png'
-import togger from '../../assets/images/togger.png'
-import icc from '../../assets/images/icc.png'
-import history from '../../assets/images/history.png'
-import fileBox from '../../assets/images/fileBox.png'
-import funnel from '../../assets/images/funnel.png'
-import txt from '../../assets/images/txt.png'
-import pptx from '../../assets/images/pptx.png'
-import word from '../../assets/images/word.png'
-import pdf from '../../assets/images/pdf.png'
-import xlxs from '../../assets/images/xlxs.png'
-export default {
-    setup() {
-        let searchFire = ref('')
-        let selectedIndex = ref(0)
-        let folder = ref(['1'])
-        let files = ref(['2'])
-        let folderList = ref([])
-        let askTo = ref(false)
-        let askNum = ref(1)
-        let askTalk = ref('')
-        // let cliCC = ref(false)
-        let transferModal = ref(false)
-        let directoryModal = ref(false)
-        let directoryPower = ref(true)
-        let trandata = ref(generateData())
-        let trandata1 = ref(generateData1())
-        let tranvalue = ref([])
-        const isNewMenu=ref([])  //是否是新建组织目录
-        // let tranvalue1 = ref([])
-        let v1form = ref({
-            names:"",
-            types:"1",
-            power:[],
-            tranvalue1:[]
-        })
-        let fileList = ref([
-            {
-                date: '2016-05-03',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-02',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-04',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-01',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-        ])
-        let menuList = ref([
-            {
-                name: "标签1",
-                choose: "1"
-            },
-            {
-                name: "标签2",
-                choose: "2"
-            },
-        ])
-        let useMenu = ref([
-            {
-                img: copy,
-                name: "复制"
-            },
-            {
-                img: clipboard,
-                name: "粘贴"
-            },
-            {
-                img: share,
-                name: "分享给"
-            },
-            {
-                img: trash,
-                name: "删除"
-            },
-        ])
-        let arrorMenu = ref([
-            {
-                img: file,
-                name: "文件"
-            },
-            {
-                img: folder,
-                name: '文件夹'
-            },
-            {
-                img: image,
-                name: "图片"
-            },
-            {
-                img: filmSlate,
-                name: "视频"
-            },
-            {
-                img: musicNotes,
-                name: "音频"
-            }
-        ])
-        let mouseCli = ref([
-            {
-                img: addolder,
-                name: "移动",
-            },
-            {
-                img: copy,
-                name: "复制",
-            },
-            {
-                img: clipboard,
-                name: "粘贴"
-            },
-            {
-                img: textbox,
-                name: "重命名"
-            },
-            {
-                img: goon,
-                name: "发送"
-            },
-            {
-                img: share,
-                name: "分享"
-            },
-            {
-                img: notePencil,
-                name: "在线编辑"
-            },
-            {
-                img: togger,
-                name: "协作"
-            },
-            {
-                img: icc,
-                name: "文字识别"
-            },
-            {
-                img: history,
-                name: "历史版本"
-            },
-            {
-                img: share,
-                name: "删除"
-            }
-        ])
-        function getAll() {
-            myfile.getAllFileMenu().then(res => {
-                console.log(res, 'eee');
-            })
-        }
-        function changeFile(row) {
-
-        }
-        // tableMenu切换
-        function tableChange(row, num) {
-            this.selectedIndex = num
-        }
-        // x图标事件
-        function shotdown(row) {
-            this.menuList = this.menuList.filter(item => item.name !== row.name)
-        }
-        // 文件名表格每一行点击事件
-        function handleRowClick(row) {
-            cliCC.value = true
-        }
-        // 申请扩容
-        function askApply() {
-            this.askTo = true
-        }
-        function sureAsk() {
-            this.askTo = false
-        }
-        //mouse弹框
-        function chooseSet(row, num) {
-            if (row.name == '在线编辑' || row.name == '协作') {
-                cliCC.value = true
-            } else {
-                cliCC.value = false
-            }
-            // if (row.name == '分享') {
-            //     transferModal.value = true
-            // } else {
-            //     transferModal.value = false
-            // }
-        }
-        // 穿梭框数据
-        function generateData() {
-            const data = []
-            const states = [
-                '某人1',
-                '某人2',
-                '某人3',
-                '某人4',
-                '某人5',
-                '某人6',
-                '某人7 ',
-            ]
-            const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
-            states.forEach((city, index) => {
-                data.push({
-                    label: city,
-                    key: index,
-                    initial: initials[index],
-                })
-            })
-            return data
-        }
-        // 新建目录时选择的穿梭框数据
-        function generateData1() {
-            const data = []
-            const states = [
-                '某某1',
-                '某某2',
-                '某某3',
-                '某某4',
-                '某某5',
-                '某某6',
-                '某某7 ',
-            ]
-            const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
-            states.forEach((city, index) => {
-                data.push({
-                    label: city,
-                    key: index,
-                    initial: initials[index],
-                })
-            })
-            return data
-        }
-        function filterMethod(query, item) {
-            return item.initial.toLowerCase().includes(query.toLowerCase())
-        }
-        function filterMethod1(query, item) {
-            return item.initial.toLowerCase().includes(query.toLowerCase())
-        }
-        // 添加人员
-        function addPeople() {
-            transferModal.value = true
-        }
-        // 新建组织目录
-        function directoryOpen() {
-            directoryModal.value = true
-        }
-        function directoryChange(e){
-            if(e==='公开目录'){
-                directoryPower.value = false
-            }else{
-                directoryPower.value = true
-                isNewMenu.value=true
-            }
-        }
-        return {
-            folderList,//文件夹的数据
-            fileList,//文件夹的数据
-            getAll,//拿到数据的方法
-            searchFire,//搜索文件的model
-            changeFile,//切换右侧视图的file
-            menuList,//右侧切换
-            tableChange,//改变class点击事件
-            selectedIndex,//当前选中下标
-            shotdown,//筛选出当前数据
-            useMenu,
-            arrorMenu,
-            blueLeft,//返回
-            grayRight,//前进
-            squre,//视图切换
-            sort,//排序
-            folder,
-            files,
-            handleRowClick,
-            askApply,//申请扩容
-            askTo,
-            sureAsk,
-            askNum,
-            askTalk,
-            // cliCC,
-            addolder,//图片↓
-            textbox,
-            goon,
-            notePencil,
-            togger,
-            icc,
-            history,
-            mouseCli,//文件点击弹框
-            chooseSet,
-            fileBox,
-            transferModal,
-            generateData,
-            generateData1,
-            filterMethod,
-            filterMethod1,
-            trandata,
-            trandata1,
-            tranvalue,
-            trash,//删除图标
-            funnel,//筛选图标
-            folder,//文件夹图标
-            addPeople,
-            directoryModal,
-            directoryOpen,//新建组织目录
-            v1form,
-            directoryChange,
-            directoryPower,
-            txt,
-            pptx,
-            xlxs,
-            pdf,
-            word,
-        }
-    },
-    created() {
-        this.getAll();
-    },
-    components: {
-        TransferModal,
-    },
-}
-</script>
-
-<style scoped>
-p {
-    margin: 0;
-    padding: 0;
-}
-
-.bigBox {
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
-}
-
-.settingBox {
-    width: 342px;
-    height: 666px;
-    border: 2px solid black;
-    border-radius: 4px;
-    /* margin: 5px 5px; */
-    margin-right: 15px;
-    background-color: white;
-}
-
-.topSearch {
-    width: 100%;
-    height: 48px;
-    background-color: #EBEFF6;
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
-}
-
-.searchFire {
-    width: 248px;
-    height: 32px;
-}
-
-.setBox {
-    width: 88px;
-    height: 112px;
-    text-align: center;
-    margin-left: 12px;
-    margin-top: 5px;
-    position: relative;
-}
-
-.setBox:hover {
-    background-color: #EEF9FF;
-}
-
-.setBox:hover .selectChe {
-    background-color: #EEF9FF;
-    display: block;
-}
-
-.selectChe {
-    display: none;
-    width: 20px;
-    height: 20px;
-    background: rgba(255, 255, 255, 0.7);
-    border-radius: 4px 4px 4px 4px;
-    position: absolute;
-    top: 2px;
-    right: 2px;
-    line-height: 10px;
-}
-
-.mesBox {
-    width: 70vw;
-    height: 666px;
-    /* margin: 5px 5px; */
-    border-radius: 4px;
-    background-color: white;
-}
-
-.useBox {
-    width: 100%;
-    height: 96px;
-}
-
-.tables {
-    display: inline-block;
-    width: 112px;
-    height: 22px;
-    border-radius: 4px;
-    line-height: 21px;
-    text-align: center;
-    font-size: 12px;
-    margin-left: 5px;
-    position: relative;
-}
-
-.tableLis {
-    display: inline-block;
-    width: 112px;
-    height: 22px;
-    border-radius: 4px;
-    background-color: #EBEFF6;
-    line-height: 21px;
-    text-align: center;
-    font-size: 12px;
-    margin-left: 5px;
-    position: relative;
-}
-
-.manyUse {
-    width: 100%;
-    height: 48px;
-    background-color: white;
-    line-height: 48px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-}
-
-.el-dropdown-link {
-    color: white;
-}
-
-.breadBox {
-    width: 100%;
-    height: 24px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    background-color: #D9E0F0;
-}
-
-::v-deep .el-collapse-item__header {
-    height: 24px !important;
-    background-color: #EBEFF6 !important;
-}
-
-.detailBox {
-    width: 100%;
-    height: 270px;
-}
-
-::v-deep .el-dialog__header {
-    background-color: #ECEFF7;
-    margin-right: 0px;
-}
-
-.fileTable {
-    position: relative;
-}
-
-.setCli {
-    width: 156px;
-    height: auto;
-    position: absolute;
-    top: -70px;
-    left: 300px;
-    background-color: white;
-    border: 1px solid gray;
-    border-radius: 4px;
-    z-index: 2;
-}
-
-.chooseSet:hover {
-    width: 100%;
-    height: 40px;
-    line-height: 40px;
-    background-color: #8693b2;
-    color: white;
-}
-</style>

+ 12 - 1
src/views/department/MyFile.vue

@@ -224,7 +224,7 @@
                                 </el-table-column>
 
                                 </el-table>
-                                <PlaceGridFolder v-else @folderClick="folderClick" :restName="restName"
+                                <PlaceGridFolder v-else @folderClick="folderClick" :folderList="folderList" :restName="restName"
                                     :collectFolder="collectFolder" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack"  :thisFolder="thisFolder" :impDirId="impDirId">
                                 </PlaceGridFolder>
                             </el-collapse-item>
@@ -754,6 +754,11 @@ export default {
             })
         }
         function changeFile(row, num) {
+             const labelItem = {
+                name:row.dirName,
+                dirId:row.dirId
+            }      
+            pathLabelData.value = [labelItem]
           const addData = {
                 path:'/department'+row.dirId,
                 name:row.dirName,
@@ -1238,6 +1243,12 @@ export default {
                     }
                     console.log('newArr',newArr);
                     pathLabelData.value = JSON.parse(JSON.stringify(oldArr))
+                }else{
+                    const labelItem = {
+                        name:row.dirName,
+                        dirId:row.dirId
+                    }      
+                    pathLabelData.value = [labelItem]
                 }
             }else{
                 row =thisFolder.value

+ 21 - 7
src/views/department/components/PlaceGridFolder.vue

@@ -2,8 +2,8 @@
     <div>
         <div>
             <!-- flex盒子 -->
-            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderListGrid?.length">
-                <template v-for="(item, index) in folderListGrid" :key="index">
+            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderList?.length">
+                <template v-for="(item, index) in folderList" :key="index">
                     <!-- 循环盒子 -->
                     <div class="flexBox" @contextmenu="rightClick(item, $event)" @click="folderClickGrid(item)">
                         <!-- 图片 -->
@@ -46,7 +46,7 @@
 </template>
 
 <script>
-import { ref, onMounted } from "vue"
+import { ref, onMounted , toRaw,watch} from "vue"
 import { ElMessage } from "element-plus";
 import myfile from "../../../api/myfile/myfile";
 import documents from "../../../api/document/document";
@@ -58,7 +58,7 @@ export default {
     props: {
         folderClick: {
             type: Function,
-            required: true,
+            // required: true,
         },
         restName: {
             type: Function,
@@ -75,6 +75,10 @@ export default {
         thisFolder: {
             type: Object,
             required: true
+        },
+        folderList: {
+            type: Object,
+            required: true
         }
 
     },
@@ -95,6 +99,7 @@ export default {
         let copySpa = ref(0)
         let copyNma = ref("")
         let copyFir = ref("")
+        let folderList = ref(toRaw(props.folderList))
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(2).then(res => {
@@ -186,14 +191,22 @@ export default {
             emit('folderBack', copyDir.value, copySpa.value, copyNma.value)
         }
         const folderClickGrid = (item) => {
-            getAllTop()
+            // getAllTop()
             emit("folderClick", item)
            console.log('item', item)
         }
         onMounted(() => {
-            getAllTop()
+            // getAllTop()
             window.addEventListener("click", mouseClick, true);
         })
+        watch(() => props.folderList, (newValue, oldValue) => {
+            console.log('newValue 发生改变了', newValue, oldValue);
+            folderList.value = newValue
+
+            }, {
+            immediate: true,
+            deep: true
+        });
         return {
             folderClickGrid,
             getAllTop,
@@ -218,7 +231,8 @@ export default {
             copyNma,
             copyFir,
             ordinaryList,
-            fileBox
+            fileBox,
+            folderList
         }
     },
     components:{

+ 5 - 2
src/views/department/modalComponebts/CreateFloder.vue

@@ -52,7 +52,7 @@
 </template>
 
 <script>
-import { ref, onMounted, toRef,toRaw } from 'vue';
+import { ref, onMounted, toRef,toRaw,inject } from 'vue';
 import documents from '../../../api/document/document';
 import {listUser} from '../../../api/biz/user';
 import { getLevel } from '@/api/level/level.js';
@@ -114,6 +114,7 @@ export default {
             dir_rules
         } = proxy.useDict('dir_rules');
         let { addBack, sureAddBoser, diClose } = toRef(props)
+        const upFirstFolderData = inject("upFirstFolderData");
         let result = props.folderCase
         let free = props.oneOrTwo
         let spId = props.impSpaceId
@@ -282,6 +283,7 @@ export default {
                             })
                         }
                         addBoser.value = false
+                        upFirstFolderData(query)
                         emit("getChildrenC", addBoser.value)
                         props.refreshFile()
                     })
@@ -338,7 +340,8 @@ export default {
             thisType,
             getUser,
             users,
-            sureUpBoser
+            sureUpBoser,
+            upFirstFolderData
         }
     },
     components: {

+ 29 - 11
src/views/myfile/MyFile.vue

@@ -236,12 +236,6 @@
                                             </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.isEncrypt == 'N'">公开目录</span>
-                                                <span v-else>加密目录</span>
-                                            </template>
-                                        </el-table-column> -->
                                         <el-table-column label="加密等级">
                                             <template #default="scope">
                                                 <span>
@@ -250,7 +244,7 @@
                                             </template>
                                         </el-table-column>
                                     </el-table>
-                                    <PlaceGridFolder v-else @folderClick="folderClick" :restName="restName"
+                                    <PlaceGridFolder v-else @folderClick="folderClick" :folderList="folderList" :restName="restName"
                                         :collectFolder="collectFolder" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack" :thisFolder="thisFolder">
                                     </PlaceGridFolder>
                                 </el-collapse-item>
@@ -443,6 +437,8 @@
     <div v-loading.fullscreen="loadingPreview" v-if="loadingPreview" class="lodingBox"></div>
     <!-- 新增文档 -->
     <AddFile v-if="newAdd" :newAdd="newAdd" @threeBe="threeBe" :clickFileData="clickFileData"></AddFile>
+    <!-- 扫描文档 -->
+    <ScanFile v-if="openScan" :openScan="openScan" @closeOpen="closeOpen"></ScanFile>
 </template>
 
 <script>
@@ -477,6 +473,7 @@ import level3 from "@/assets/images/level3.png";
 import level4 from "@/assets/images/level4.png";
 import { ElMessage, ElLoading } from 'element-plus'
 import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
+import ScanFile from '@/components/ScanFile/ScanFile.vue'
 import PathLabel from '@/components/PathLabel/index.vue'
 import { preview } from "@/api/common/common.js";
 import historyList from "@/components/historyList/index.vue"; //选择文件发送的列表,历史版本
@@ -696,6 +693,7 @@ export default {
         ])
          //控制宫格展示
         const isList = ref(false); //控制显示方式
+        const openScan = ref(false)//控制扫描文档显示
         const changeShow = (fileGrids) => {
         //   isList.value = !isList.value;
         //   fileGrid.value = fileGrids
@@ -764,6 +762,11 @@ export default {
         }
         function changeFile(row, num) {
             // 创建标签
+             const labelItem = {
+                name:row.dirName,
+                dirId:row.dirId
+            }      
+            pathLabelData.value = [labelItem]
             const addData = {
                 path: '/myfile' + row.dirId,
                 name: row.dirName,
@@ -1254,7 +1257,10 @@ export default {
         }
         function getMenu(row, num,canDo) {
             if (row.name === '删除') {
-                if(!canDo) return
+                if(!canDo){
+                    // openScan.value = true
+                    return
+                } 
                 const datas = []
                 const isFile = ref(false)
                 delMoreFile.value.map(i => {//多选删除
@@ -1364,6 +1370,12 @@ export default {
                     }
                     console.log('newArr',newArr);
                     pathLabelData.value = JSON.parse(JSON.stringify(oldArr))
+                }else{
+                    const labelItem = {
+                        name:row.dirName,
+                        dirId:row.dirId
+                    }      
+                    pathLabelData.value = [labelItem]
                 }
             } else {
                 row = thisFolder.value
@@ -1492,6 +1504,9 @@ export default {
             copyFolderName.value = nam
             copyFileName.value = spa
         }
+        const closeOpen = ()=>{
+            openScan.value = false
+        }
         //历史版本
         const forwardTreeData = reactive({ data: {} });
         const historycopyRow = ref({})
@@ -1512,7 +1527,7 @@ export default {
         //对mouseCli数组进行筛选,实现菜单的区分显示
         const filterMouseCli = () => {
             const canPreviewArray = ['.doc','.dps','.et', '.wps', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.pdf', '.rtf', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp', '.pot', '.potm', '.potx', '.pps', '.ppsm', '.ppsx', '.ppt', '.pptm', '.pptx']
-            const typeArr = ['.png', '.jpg', '.jpeg', '.JPG', '.mp3', '.mp4']
+            const typeArr = ['.png', '.jpg', '.jpeg', '.JPG','.PNG', '.mp3', '.mp4']
             const imgTypeArr = ['.png', '.jpg', '.jpeg', '.JPG','.PNG']
             const canEditArr = ['.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.txt', '.djvu', '.xps', '.csv', '.fods', '.ods', '.ots', '.xls', '.xlsm', '.xlsx', '.xlt', '.xltm', '.xltx', '.fodp', '.odp', '.otp', '.doc', '.docm', '.docx', '.dot', '.dotm', '.dotx', '.epub', '.fodt', '.htm', '.html', '.mht', '.odt', '.ott', '.rtf', '.txt', '.djvu', '.xps', '.wps','.dps','.et', '.pptx']
             let arr = []
@@ -2121,7 +2136,9 @@ export default {
             pathLabelData,
             backTopPath,
             maxFileSize,
-            upBefore
+            upBefore,
+            openScan,
+            closeOpen
         }
     },
     watch: {
@@ -2141,7 +2158,8 @@ export default {
         PlaceGridFolder,
         PalaceGridFile,
         inputPassword,
-        PathLabel
+        PathLabel,
+        ScanFile
     },
 }
 

+ 1 - 1
src/views/myfile/components/FileEdit.vue

@@ -81,7 +81,7 @@ export default {
             import.meta.env.VITE_APP_BASE_API
           }/api/access/${obj.docId}?uid=${uid}`;
           // option.value.url = `http://8.142.173.95:19527/api/access/${obj.docId}?uid=${uid}`;
-          //  console.log('option.value.url',option.value.url);
+           console.log('option.value.url',option.value.url);
           option.value.title = obj.fileName;
           option.value.key = obj.fileId;
           option.value.fileType = obj.fileType.replace(".", "");

+ 61 - 62
src/views/myfile/components/PlaceGridFolder.vue

@@ -2,8 +2,8 @@
     <div>
         <div>
             <!-- flex盒子 -->
-            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderListGrid?.length">
-                <template v-for="(item, index) in folderListGrid" :key="index">
+            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderList?.length">
+                <template v-for="(item, index) in folderList" :key="index">
                     <!-- 循环盒子 -->
                     <div class="flexBox" @contextmenu="rightClick(item, $event)" @click="folderClickGrid(item)">
                         <!-- 图片 -->
@@ -42,7 +42,7 @@
 </template>
 
 <script>
-import { ref, onMounted } from "vue"
+import { ref, onMounted, toRaw,watch } from "vue"
 import { ElMessage } from "element-plus";
 import myfile from "../../../api/myfile/myfile";
 import documents from "../../../api/document/document";
@@ -52,7 +52,7 @@ export default {
     props: {
         folderClick: {
             type: Function,
-            required: true,
+            // required: true,
         },
         restName: {
             type: Function,
@@ -69,6 +69,10 @@ export default {
         thisFolder: {
             type: Object,
             required: true
+        },
+        folderList: {
+            type: Object,
+            required: true
         }
     },
     setup(props, { emit }) {
@@ -88,60 +92,45 @@ export default {
         let copySpa = ref(0)
         let copyNma = ref("")
         let copyFir = ref("")
+        let folderList = ref(toRaw(props.folderList))
         // 获取文件夹,中栏,文件
-        function getAllTop() {
-            documents.getTop(3).then(res => {
-                let userMe = [res]
-                impDirId.value = userMe[0].dirId//固定
-                impSpaceId.value = userMe[0].spaceId//固定
-                newSpaceId.value = userMe[0].spaceId//变化
-                newDirId.value = userMe[0].dirId//变化
-                topPath.value = userMe[0].dirPath
-                let obj = {
-                    pageNum: 1,
-                    pageSize: 10
-                }
-                const fileId =props.thisFolder.dirId?props.thisFolder.dirId:userMe[0].dirId - 0
-                documents.getALLdocument({ parentId:fileId, spaceId: userMe[0].spaceId, pageNum: obj.pageNum, pageSize: obj.pageSize }).then(res => {
-                    fileMenu.value = res.data
-                    folderListGrid.value = res.data
-                })
-                // myfile.getById(userMe[0].dirId - 0, 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(userMe[0].dirId - 0, 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 rightClick(row, num, eve) {
-        //     console.log('row=====', row,num,eve)
-        //     eve.preventDefault();
-        //     eve.stopPropagation();
-        //     folderleft.value = eve.pageX
-        //     foldertop.value = eve.pageY
-        //     copyDir.value = row.dirId
-        //     copySpa.value = row.spaceId
-        //     copyNma.value = row.dirName
-        //     copyFir.value = row.dirName
-        //     if (folderVisible.value) {
-        //         folderVisible.value = false
-        //     } else {
-        //         folderVisible.value = true
-        //     }
+        // function getAllTop() {
+        //     documents.getTop(3).then(res => {
+        //         let userMe = [res]
+        //         impDirId.value = userMe[0].dirId//固定
+        //         impSpaceId.value = userMe[0].spaceId//固定
+        //         newSpaceId.value = userMe[0].spaceId//变化
+        //         newDirId.value = userMe[0].dirId//变化
+        //         topPath.value = userMe[0].dirPath
+        //         let obj = {
+        //             pageNum: 1,
+        //             pageSize: 10
+        //         }
+        //         const fileId =props.thisFolder.dirId?props.thisFolder.dirId:userMe[0].dirId - 0
+        //         documents.getALLdocument({ parentId:fileId, spaceId: userMe[0].spaceId, pageNum: obj.pageNum, pageSize: obj.pageSize }).then(res => {
+        //             fileMenu.value = res.data
+        //             folderListGrid.value = res.data
+        //         })
+        //         // myfile.getById(userMe[0].dirId - 0, 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(userMe[0].dirId - 0, 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
+        //         //                 })
+        //         //             }
+        //         //         }
+        //         //     }
+        //         // })
+        //     })
         // }
        const rightClick = (row,e)=>{
         emit("folderRClick", row,null,e)
@@ -179,16 +168,25 @@ export default {
             emit('folderBack', copyDir.value, copySpa.value, copyNma.value)
         }
         const folderClickGrid = (item) => {
-            getAllTop()
-            emit("folderClick", item)
+            // getAllTop()
            console.log('item', item)
+            emit("folderClick", item)
         }
         onMounted(() => {
-            getAllTop()
+            // props.getAllTop()
+            // getAllTop()
+            console.log('folderList',folderList);
             window.addEventListener("click", mouseClick, true);
         })
+        watch(() => props.folderList, (newValue, oldValue) => {
+            console.log('newValue 发生改变了', newValue, oldValue);
+            folderList.value = newValue
+
+            }, {
+            immediate: true,
+            deep: true
+        });
         return {
-            getAllTop,
             impDirId,
             impSpaceId,
             newDirId,
@@ -209,7 +207,8 @@ export default {
             copySpa,
             copyNma,
             copyFir,
-            folderClickGrid
+            folderClickGrid,
+            folderList
         }
     },
     components:{

+ 0 - 834
src/views/publicment/Department.vue

@@ -1,834 +0,0 @@
-<template>
-    <div>
-        <div class="bigBox">
-            <div class="settingBox">
-                <!-- 设置盒子顶部搜索 -->
-                <div class="topSearch">
-                    <div style="position: relative;">
-                        <el-input v-model="searchFire" class="searchFire" size="large" placeholder="搜索文件" />
-                        <el-icon style="color: gray;display: inline-block;position: absolute;top: 8px;right: 5px;">
-                            <Search />
-                        </el-icon>
-                    </div>
-                    <div>
-                        <el-icon style="font-size: 24px;">
-                            <Plus />
-                        </el-icon>
-                    </div>
-                </div>
-                <!-- 方块点击盒子 -->
-                <div
-                    style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 540px;">
-                    <!-- v-for盒子 -->
-                    <div class="setBox" @click="changeFile">
-                        <el-dropdown trigger="click" class="selectChe">
-                            <span class="el-dropdown-link">
-                                ...
-                            </span>
-                            <template #dropdown>
-                                <el-dropdown-menu>
-                                    <el-dropdown-item @click="addPeople">
-                                        <img :src="togger" alt="">
-                                        <span>添加人员</span>
-                                    </el-dropdown-item>
-                                    <el-dropdown-item>
-                                        <img :src="textbox" alt="">
-                                        <span>重命名</span>
-                                    </el-dropdown-item>
-                                    <el-dropdown-item>
-                                        <img :src="trash" alt="">
-                                        <span>删除</span>
-                                    </el-dropdown-item>
-                                </el-dropdown-menu>
-                            </template>
-                        </el-dropdown>
-                        <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
-                        <p>xxx文件</p>
-                    </div>
-                </div>
-                <div>
-                    <p>
-                        <span style="margin-left: 10px;">5G/1T</span>
-                        <span style="margin-left: 10rem;font-size: 12px;color: blue;cursor: pointer;"
-                            @click="askApply">申请扩容</span>
-                    </p>
-                    <el-progress style="margin-left: 8px;" :percentage="50" />
-                </div>
-            </div>
-            <!-- 右侧大盒子 -->
-            <div class="mesBox">
-                <!-- 功能盒子  -->
-                <div class="useBox">
-                    <!-- table切换 -->
-                    <div style="width: 100%;height: 24px;background-color: #7084B4;line-height: 20px;">
-                        <template v-for="(item, index) in menuList">
-                            <span @click="tableChange(item, index)"
-                                :class="['tables', { tableLis: selectedIndex === index }]">
-                                {{ item.name }}
-                                <img v-if="selectedIndex === index ? true : false"
-                                    style="position: absolute;top: 4px;right: 4px;" src="../../assets/images/close.png"
-                                    @click="shotdown(item)">
-                            </span>
-                        </template>
-                    </div>
-                    <!-- 众多功能 -->
-                    <div class="manyUse">
-                        <div
-                            style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;">
-                                    <Plus />
-                                </el-icon>
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;" @click="createNew">新建
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <el-dropdown-menu>
-                                            <!-- <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template> -->
-                                            <el-dropdown-item @click="directoryOpen">
-                                                组织目录
-                                            </el-dropdown-item>
-                                            <el-dropdown-item @click="directoryOpen">
-                                                公开目录
-                                            </el-dropdown-item>
-                                        </el-dropdown-menu>
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                        <template v-for="(item, index) in useMenu">
-                            <div
-                                style="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                                <div style="margin-left: 5px;">
-                                    <img :src="item.img" style="width: 24px;height: 24px;" alt="">
-                                </div>
-                                <div style="margin-left: 5px;">
-                                    <span style="font-size: 12px;">{{ item.name }}</span>
-                                </div>
-                            </div>
-                        </template>
-                        <div
-                            style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <img :src="funnel" style="width: 24px;height: 24px;" alt="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;">快速筛选
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <!-- <el-dropdown-menu>
-                                            <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template>
-                                        </el-dropdown-menu> -->
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                        <div
-                            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="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <el-dropdown trigger="click">
-                                    <span style="color: black;cursor: pointer;font-size: 12px;">上传
-                                        <el-icon>
-                                            <arrow-down />
-                                        </el-icon>
-                                    </span>
-                                    <template #dropdown>
-                                        <el-dropdown-menu>
-                                            <template v-for="(item, index) in arrorMenu">
-                                                <el-dropdown-item>
-                                                    <img :src="item.img" alt="">
-                                                    <span>{{ item.name }}</span>
-                                                </el-dropdown-item>
-                                            </template>
-                                        </el-dropdown-menu>
-                                    </template>
-                                </el-dropdown>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- 面包屑功能栏 -->
-                    <div class="breadBox">
-                        <!-- 左侧 -->
-                        <div style="display: flex;justify-content: space-around;align-items: center;">
-                            <!-- 前进后退 -->
-                            <div style="display: flex;justify-content: space-around;align-items: center;">
-                                <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt="">
-                                <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
-                            </div>
-                            <!-- 面包屑 -->
-                            <div>
-                                <el-breadcrumb separator="/">
-                                    <el-breadcrumb-item style="font-size: 12px;">homepage</el-breadcrumb-item>
-                                    <el-breadcrumb-item style="font-size: 12px;">promotion management</el-breadcrumb-item>
-                                    <el-breadcrumb-item style="font-size: 12px;">promotion detail</el-breadcrumb-item>
-                                </el-breadcrumb>
-                            </div>
-                        </div>
-                        <!-- 右侧 -->
-                        <div>
-                            <img :src="sort" alt="">
-                            <img :src="squre" alt="">
-                        </div>
-                    </div>
-                </div>
-                <!-- 展示文件夹盒子 -->
-                <div>
-                    <!-- 文件夹 -->
-                    <div class="detailBox">
-                        <el-collapse v-model="folder" accordion class="collapse">
-                            <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
-
-                            </el-collapse-item>
-                        </el-collapse>
-                    </div>
-                    <!-- 文件 -->
-                    <div class="fileTable">
-                        <el-collapse v-model="files" accordion class="collapse">
-                            <el-collapse-item title="文件" name="2" class="custom-collapse-item">
-                                <el-table :data="fileList" style="width: 100%" @row-click="handleRowClick">
-                                    <el-table-column label="Image" width="100">
-                                        <template slot-scope="scope">
-                                            <!-- 插入固定图片 -->
-                                            <span>1</span>
-                                            <img :src="fileBox" alt="" />
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="date" label="Date" width="180" />
-                                    <el-table-column prop="name" label="Name" width="180" />
-                                    <el-table-column prop="address" label="Address" />
-                                </el-table>
-                                <!-- <div class="setCli" v-if="cliCC">
-                                    <template v-for="(item, index) in mouseCli">
-                                        <p @click="chooseSet(item, index)" class="chooseSet">
-                                            <img :src="item.img" alt="">
-                                            {{ item.name }}
-                                            <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
-                                                style="color: #7084B4;float: right;">></span>
-                                        </p>
-                                    </template>
-                                </div> -->
-                            </el-collapse-item>
-                        </el-collapse>
-                    </div>
-                    <!-- 添加人员穿梭框 -->
-                    <div>
-                        <el-dialog v-model="transferModal" title="添加人员" width="40%">
-                            <el-transfer v-model="tranvalue" filterable :filter-method="filterMethod"
-                                filter-placeholder="State Abbreviations" :data="trandata" />
-                            <template #footer>
-                                <span class="dialog-footer">
-                                    <el-button @click="transferModal = false">取消</el-button>
-                                    <el-button type="primary" @click="transferSure">确定</el-button>
-                                </span>
-                            </template>
-                        </el-dialog>
-                    </div>
-                </div>
-            </div>
-            <!-- 扩容弹窗 -->
-            <div>
-                <el-dialog v-model="askTo" title="扩容申请" width="30%">
-                    <el-form>
-                        <el-form-item label="新容量">
-                            <el-input-number v-model="askNum" :min="1" :max="10" />
-                        </el-form-item>
-                        <el-form-item label="申请理由">
-                            <el-input v-model="askTalk" maxlength="150" placeholder="请输入申请理由" show-word-limit
-                                type="textarea" />
-                        </el-form-item>
-                    </el-form>
-                    <template #footer>
-                        <span class="dialog-footer">
-                            <el-button @click="askTo = false">取消</el-button>
-                            <el-button type="primary" @click="sureAsk">
-                                确定
-                            </el-button>
-                        </span>
-                    </template>
-                </el-dialog>
-            </div>
-            <!-- 新建组织目录 -->
-            <div>
-                <el-dialog v-model="directoryModal" title="新建目录" width="55%">
-                    <el-form :data="v1form">
-                        <el-form-item label="目录名称">
-                            <el-input v-model="v1form.names"></el-input>
-                        </el-form-item>
-                        <el-form-item label="目录分类">
-                            <el-radio-group v-model="v1form.types" class="ml-4" @change="directoryChange">
-                                <el-radio label="公开目录" value="0" size="large"></el-radio>
-                                <el-radio label="组织目录" value="1" size="large"></el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="成员权限" v-if="directoryPower">
-                            <el-checkbox-group v-model="v1form.power">
-                                <el-checkbox label="可查看" />
-                                <el-checkbox label="可编辑" />
-                                <el-checkbox label="可上传" />
-                                <el-checkbox label="可删除" />
-                            </el-checkbox-group>
-                        </el-form-item>
-                        <el-form-item label="选择成员" v-if="directoryPower">
-                            <!-- <el-transfer v-model="v1form.tranvalue1" filterable :filter-method="filterMethod1"
-                                filter-placeholder="State Abbreviations" :data="trandata1" /> -->
-                            <!-- <template #footer>
-                                <span class="dialog-footer">
-                                    <el-button @click="transferModal = false">取消</el-button>
-                                    <el-button type="primary" @click="transferSure">确定</el-button>
-                                </span>
-                            </template> -->
-                            <TransferModal  :isNewMenu="isNewMenu"></TransferModal>
-                        </el-form-item>
-                    </el-form>
-                    <template #footer>
-                        <span class="dialog-footer">
-                            <el-button @click="directoryModal = false">取消</el-button>
-                            <el-button type="primary">
-                                确定
-                            </el-button>
-                        </span>
-                    </template>
-                </el-dialog>
-            </div>
-        </div>
-    </div>
-</template>
-
-<script>
-import { ref } from 'vue'
-import myfile from '../../api/myfile/myfile'
-import TransferModal from '../myfile/modalComponebts/Transfer.vue'
-import { Search } from '@element-plus/icons-vue'
-import copy from '../../assets/images/copy.png'
-import clipboard from '../../assets/images/clipboard.png'
-import share from '../../assets/images/share.png'
-import trash from '../../assets/images/trash.png'
-import file from '../../assets/images/file.png'
-import folder from '../../assets/images/folder.png'
-import image from '../../assets/images/image.png'
-import filmSlate from '../../assets/images/filmSlate.png'
-import musicNotes from '../../assets/images/musicNotes.png'
-import blueLeft from '../../assets/images/blueLeft.png'
-import grayRight from "../../assets/images/grayRight.png"
-import sort from '../../assets/images/sort.png'
-import squre from '../../assets/images/squre.png'
-import addolder from '../../assets/images/addolder.png'
-import textbox from '../../assets/images/textbox.png'
-import goon from '../../assets/images/goon.png'
-import notePencil from '../../assets/images/notePencil.png'
-import togger from '../../assets/images/togger.png'
-import icc from '../../assets/images/icc.png'
-import history from '../../assets/images/history.png'
-import fileBox from '../../assets/images/fileBox.png'
-import funnel from '../../assets/images/funnel.png'
-import txt from '../../assets/images/txt.png'
-import pptx from '../../assets/images/pptx.png'
-import word from '../../assets/images/word.png'
-import pdf from '../../assets/images/pdf.png'
-import xlxs from '../../assets/images/xlxs.png'
-export default {
-    setup() {
-        let searchFire = ref('')
-        let selectedIndex = ref(0)
-        let folder = ref(['1'])
-        let files = ref(['2'])
-        let folderList = ref([])
-        let askTo = ref(false)
-        let askNum = ref(1)
-        let askTalk = ref('')
-        // let cliCC = ref(false)
-        let transferModal = ref(false)
-        let directoryModal = ref(false)
-        let directoryPower = ref(true)
-        let trandata = ref(generateData())
-        let trandata1 = ref(generateData1())
-        let tranvalue = ref([])
-        const isNewMenu=ref([])  //是否是新建组织目录
-        // let tranvalue1 = ref([])
-        let v1form = ref({
-            names:"",
-            types:"1",
-            power:[],
-            tranvalue1:[]
-        })
-        let fileList = ref([
-            {
-                date: '2016-05-03',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-02',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-04',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-            {
-                date: '2016-05-01',
-                name: 'Tom',
-                address: 'No. 189, Grove St, Los Angeles',
-            },
-        ])
-        let menuList = ref([
-            {
-                name: "标签1",
-                choose: "1"
-            },
-            {
-                name: "标签2",
-                choose: "2"
-            },
-        ])
-        let useMenu = ref([
-            {
-                img: copy,
-                name: "复制"
-            },
-            {
-                img: clipboard,
-                name: "粘贴"
-            },
-            {
-                img: share,
-                name: "分享给"
-            },
-            {
-                img: trash,
-                name: "删除"
-            },
-        ])
-        let arrorMenu = ref([
-            {
-                img: file,
-                name: "文件"
-            },
-            {
-                img: folder,
-                name: '文件夹'
-            },
-            {
-                img: image,
-                name: "图片"
-            },
-            {
-                img: filmSlate,
-                name: "视频"
-            },
-            {
-                img: musicNotes,
-                name: "音频"
-            }
-        ])
-        let mouseCli = ref([
-            {
-                img: addolder,
-                name: "移动",
-            },
-            {
-                img: copy,
-                name: "复制",
-            },
-            {
-                img: clipboard,
-                name: "粘贴"
-            },
-            {
-                img: textbox,
-                name: "重命名"
-            },
-            {
-                img: goon,
-                name: "发送"
-            },
-            {
-                img: share,
-                name: "分享"
-            },
-            {
-                img: notePencil,
-                name: "在线编辑"
-            },
-            {
-                img: togger,
-                name: "协作"
-            },
-            {
-                img: icc,
-                name: "文字识别"
-            },
-            {
-                img: history,
-                name: "历史版本"
-            },
-            {
-                img: share,
-                name: "删除"
-            }
-        ])
-        function getAll() {
-            myfile.getAllFileMenu().then(res => {
-                console.log(res, 'eee');
-            })
-        }
-        function changeFile(row) {
-
-        }
-        // tableMenu切换
-        function tableChange(row, num) {
-            this.selectedIndex = num
-        }
-        // x图标事件
-        function shotdown(row) {
-            this.menuList = this.menuList.filter(item => item.name !== row.name)
-        }
-        // 文件名表格每一行点击事件
-        function handleRowClick(row) {
-            cliCC.value = true
-        }
-        // 申请扩容
-        function askApply() {
-            this.askTo = true
-        }
-        function sureAsk() {
-            this.askTo = false
-        }
-        //mouse弹框
-        function chooseSet(row, num) {
-            if (row.name == '在线编辑' || row.name == '协作') {
-                cliCC.value = true
-            } else {
-                cliCC.value = false
-            }
-            // if (row.name == '分享') {
-            //     transferModal.value = true
-            // } else {
-            //     transferModal.value = false
-            // }
-        }
-        // 穿梭框数据
-        function generateData() {
-            const data = []
-            const states = [
-                '某人1',
-                '某人2',
-                '某人3',
-                '某人4',
-                '某人5',
-                '某人6',
-                '某人7 ',
-            ]
-            const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
-            states.forEach((city, index) => {
-                data.push({
-                    label: city,
-                    key: index,
-                    initial: initials[index],
-                })
-            })
-            return data
-        }
-        // 新建目录时选择的穿梭框数据
-        function generateData1() {
-            const data = []
-            const states = [
-                '某某1',
-                '某某2',
-                '某某3',
-                '某某4',
-                '某某5',
-                '某某6',
-                '某某7 ',
-            ]
-            const initials = ['CA', 'IL', 'MD', 'TX', 'FL', 'CO', 'CT']
-            states.forEach((city, index) => {
-                data.push({
-                    label: city,
-                    key: index,
-                    initial: initials[index],
-                })
-            })
-            return data
-        }
-        function filterMethod(query, item) {
-            return item.initial.toLowerCase().includes(query.toLowerCase())
-        }
-        function filterMethod1(query, item) {
-            return item.initial.toLowerCase().includes(query.toLowerCase())
-        }
-        // 添加人员
-        function addPeople() {
-            transferModal.value = true
-        }
-        // 新建组织目录
-        function directoryOpen() {
-            directoryModal.value = true
-        }
-        function directoryChange(e){
-            if(e==='公开目录'){
-                directoryPower.value = false
-            }else{
-                directoryPower.value = true
-                isNewMenu.value=true
-            }
-        }
-        return {
-            folderList,//文件夹的数据
-            fileList,//文件夹的数据
-            getAll,//拿到数据的方法
-            searchFire,//搜索文件的model
-            changeFile,//切换右侧视图的file
-            menuList,//右侧切换
-            tableChange,//改变class点击事件
-            selectedIndex,//当前选中下标
-            shotdown,//筛选出当前数据
-            useMenu,
-            arrorMenu,
-            blueLeft,//返回
-            grayRight,//前进
-            squre,//视图切换
-            sort,//排序
-            folder,
-            files,
-            handleRowClick,
-            askApply,//申请扩容
-            askTo,
-            sureAsk,
-            askNum,
-            askTalk,
-            // cliCC,
-            addolder,//图片↓
-            textbox,
-            goon,
-            notePencil,
-            togger,
-            icc,
-            history,
-            mouseCli,//文件点击弹框
-            chooseSet,
-            fileBox,
-            transferModal,
-            generateData,
-            generateData1,
-            filterMethod,
-            filterMethod1,
-            trandata,
-            trandata1,
-            tranvalue,
-            trash,//删除图标
-            funnel,//筛选图标
-            folder,//文件夹图标
-            addPeople,
-            directoryModal,
-            directoryOpen,//新建组织目录
-            v1form,
-            directoryChange,
-            directoryPower,
-            txt,
-            pptx,
-            xlxs,
-            pdf,
-            word,
-        }
-    },
-    created() {
-        this.getAll();
-    },
-    components: {
-        TransferModal,
-    },
-}
-</script>
-
-<style scoped>
-p {
-    margin: 0;
-    padding: 0;
-}
-
-.bigBox {
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
-}
-
-.settingBox {
-    width: 342px;
-    height: 666px;
-    border: 2px solid black;
-    border-radius: 4px;
-    /* margin: 5px 5px; */
-    margin-right: 15px;
-    background-color: white;
-}
-
-.topSearch {
-    width: 100%;
-    height: 48px;
-    background-color: #EBEFF6;
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
-}
-
-.searchFire {
-    width: 248px;
-    height: 32px;
-}
-
-.setBox {
-    width: 88px;
-    height: 112px;
-    text-align: center;
-    margin-left: 12px;
-    margin-top: 5px;
-    position: relative;
-}
-
-.setBox:hover {
-    background-color: #EEF9FF;
-}
-
-.setBox:hover .selectChe {
-    background-color: #EEF9FF;
-    display: block;
-}
-
-.selectChe {
-    display: none;
-    width: 20px;
-    height: 20px;
-    background: rgba(255, 255, 255, 0.7);
-    border-radius: 4px 4px 4px 4px;
-    position: absolute;
-    top: 2px;
-    right: 2px;
-    line-height: 10px;
-}
-
-.mesBox {
-    width: 70vw;
-    height: 666px;
-    /* margin: 5px 5px; */
-    border-radius: 4px;
-    background-color: white;
-}
-
-.useBox {
-    width: 100%;
-    height: 96px;
-}
-
-.tables {
-    display: inline-block;
-    width: 112px;
-    height: 22px;
-    border-radius: 4px;
-    line-height: 21px;
-    text-align: center;
-    font-size: 12px;
-    margin-left: 5px;
-    position: relative;
-}
-
-.tableLis {
-    display: inline-block;
-    width: 112px;
-    height: 22px;
-    border-radius: 4px;
-    background-color: #EBEFF6;
-    line-height: 21px;
-    text-align: center;
-    font-size: 12px;
-    margin-left: 5px;
-    position: relative;
-}
-
-.manyUse {
-    width: 100%;
-    height: 48px;
-    background-color: white;
-    line-height: 48px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-}
-
-.el-dropdown-link {
-    color: white;
-}
-
-.breadBox {
-    width: 100%;
-    height: 24px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    background-color: #D9E0F0;
-}
-
-::v-deep .el-collapse-item__header {
-    height: 24px !important;
-    background-color: #EBEFF6 !important;
-}
-
-.detailBox {
-    width: 100%;
-    height: 270px;
-}
-
-::v-deep .el-dialog__header {
-    background-color: #ECEFF7;
-    margin-right: 0px;
-}
-
-.fileTable {
-    position: relative;
-}
-
-.setCli {
-    width: 156px;
-    height: auto;
-    position: absolute;
-    top: -70px;
-    left: 300px;
-    background-color: white;
-    border: 1px solid gray;
-    border-radius: 4px;
-    z-index: 2;
-}
-
-.chooseSet:hover {
-    width: 100%;
-    height: 40px;
-    line-height: 40px;
-    background-color: #8693b2;
-    color: white;
-}
-</style>

+ 12 - 1
src/views/publicment/MyFile.vue

@@ -222,7 +222,7 @@
                                 </el-table-column>
 
                                 </el-table>
-                                <PlaceGridFolder v-else  @folderClick="folderClick" :restName="restName"
+                                <PlaceGridFolder v-else  @folderClick="folderClick" :folderList="folderList" :restName="restName"
                                     :collectFolder="collectFolder" @folderRClick="folderRClick" :getAllTop="getAllTop" @folderBack="folderBack" :thisFolder="thisFolder">
                                 </PlaceGridFolder>
                             </el-collapse-item>
@@ -762,6 +762,11 @@ export default {
             }
         }
         function changeFile(row, num) {
+             const labelItem = {
+                name:row.dirName,
+                dirId:row.dirId
+            }      
+            pathLabelData.value = [labelItem]
              const addData = {
                 path:'/publicment'+row.dirId,
                 name:row.dirName,
@@ -1237,6 +1242,12 @@ export default {
                     }
                     console.log('newArr',newArr);
                     pathLabelData.value = JSON.parse(JSON.stringify(oldArr))
+                }else{
+                    const labelItem = {
+                        name:row.dirName,
+                        dirId:row.dirId
+                    }      
+                    pathLabelData.value = [labelItem]
                 }
             }else{
                 row =thisFolder.value

+ 21 - 7
src/views/publicment/components/PlaceGridFolder.vue

@@ -2,8 +2,8 @@
     <div>
         <div>
             <!-- flex盒子 -->
-            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderListGrid?.length">
-                <template v-for="(item, index) in folderListGrid" :key="index">
+            <div class="bigBox" style="height: 250px; overflow: auto;" v-if="folderList?.length">
+                <template v-for="(item, index) in folderList" :key="index">
                     <!-- 循环盒子 -->
                     <div class="flexBox" @contextmenu="rightClick(item,$event)" @click="folderClickGrid(item)">
                         <!-- 图片 -->
@@ -46,7 +46,7 @@
 </template>
 
 <script>
-import { ref, onMounted } from "vue"
+import { ref, onMounted , toRaw,watch} from "vue"
 import { ElMessage } from "element-plus";
 import myfile from "../../../api/myfile/myfile";
 import documents from "../../../api/document/document";
@@ -58,7 +58,7 @@ export default {
     props: {
         folderClick: {
             type: Function,
-            required: true,
+            // required: true,
         },
         restName: {
             type: Function,
@@ -75,6 +75,10 @@ export default {
         thisFolder: {
             type: Object,
             required: true
+        },
+        folderList: {
+            type: Object,
+            required: true
         }
 
     },
@@ -95,6 +99,7 @@ export default {
         let copySpa = ref(0)
         let copyNma = ref("")
         let copyFir = ref("")
+        let folderList = ref(toRaw(props.folderList))
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(1).then(res => {
@@ -185,14 +190,22 @@ export default {
             emit('folderBack', copyDir.value, copySpa.value, copyNma.value)
         }
         const folderClickGrid = (item) => {
-            getAllTop()
+            // getAllTop()
             emit("folderClick", item)
            console.log('item', item)
         }
         onMounted(() => {
-            getAllTop()
+            // getAllTop()
             window.addEventListener("click", mouseClick, true);
         })
+        watch(() => props.folderList, (newValue, oldValue) => {
+            console.log('newValue 发生改变了', newValue, oldValue);
+            folderList.value = newValue
+
+            }, {
+            immediate: true,
+            deep: true
+        });
         return {
             folderClickGrid,
             getAllTop,
@@ -217,7 +230,8 @@ export default {
             copyNma,
             copyFir,
             ordinaryList,
-            fileBox
+            fileBox,
+            folderList
         }
     },
     components:{

+ 5 - 2
src/views/publicment/modalComponebts/CreateFloder.vue

@@ -52,7 +52,7 @@
 </template>
 
 <script>
-import { ref, onMounted, toRef,toRaw } from 'vue';
+import { ref, onMounted, toRef,toRaw,inject } from 'vue';
 import documents from '../../../api/document/document';
 import {listUser} from '../../../api/biz/user';
 import { getLevel } from '@/api/level/level.js';
@@ -114,6 +114,7 @@ export default {
             dir_rules
         } = proxy.useDict('dir_rules');
         let { addBack, sureAddBoser, diClose } = toRef(props)
+        const upFirstFolderData = inject("upFirstFolderData");
         let result = props.folderCase
         let free = props.oneOrTwo
         let spId = props.impSpaceId
@@ -281,6 +282,7 @@ export default {
                             })
                         }
                         addBoser.value = false
+                        upFirstFolderData(query)
                         emit("getChildrenC", addBoser.value)
                         props.refreshFile()
                     })
@@ -337,7 +339,8 @@ export default {
             thisType,
             getUser,
             users,
-            sureUpBoser
+            sureUpBoser,
+            upFirstFolderData
         }
     },
     components: {

+ 48 - 6
src/views/search/index.vue

@@ -47,10 +47,10 @@
     <!-- 文件列表 -->
     <div class="fileList">
       <div>
-        <div v-if="isList" style="height: calc(98vh - 320px);overflow-y: auto;">
+        <div v-if="isList" style="height: calc(98vh - 320px);overflow-y: hidden;">
           <!-- 表格 -->
           <el-table :data="tableData" style="width: 100%;height:calc(98vh - 220px);" ref="container"
-            @scroll="handleScroll">
+            @scroll="handleScroll" @row-click="clickRow">
             <el-table-column label="名称" width="400">
               <template #default="scope">
                 <div class="flie_name">
@@ -92,6 +92,9 @@
       </div>
     </div>
   </div>
+  <ImgPreview :previewData="previewData" :copyFileType="copyFileType" :showPreview="showPreview"
+    @closeImgPreview="closeImgPreview"></ImgPreview>
+      <div v-loading.fullscreen="loadingPreview" v-if="loadingPreview" class="lodingBox"></div>
 </template>
 
 <script setup>
@@ -100,7 +103,10 @@ import { search } from "@/api/search/search.js";
 import { flieSearch } from "@/api/search/search.js";
 import { useRoute, useRouter, onBeforeRouteUpdate } from "vue-router";
 import Pagination from "@/components/Pagination/index.vue";
-import { ElTable, ElTableColumn, ElInfiniteScroll } from 'element-plus';
+import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
+import { canPreviewFile, rightMenuRole } from "@/utils/index.js"
+import { preview } from "@/api/common/common.js";
+import { ElMessageBox, ElMessage } from "element-plus";
 //---------------导入图片--------------------------
 import file_DOC from "@/assets/images/fileType/file_DOC.png";
 import file_pdf from "@/assets/images/fileType/file_pdf.png";
@@ -133,12 +139,17 @@ const limit = ref(2); //pagesize
 const container = ref(null)
 const historyParams = history.state.params
 console.log('historyParams', historyParams);
-
+const loadingPreview = ref(false)
+const showPreview = ref(false)//控制图片预览组件显示
+const previewData = ref()
+const copyFileType = ref()
 const reload = inject("reload");
+const addFileTab = inject("addFileTab");
 
 const tableData = ref([]);
 // 切换搜索范围
 const changeSearchFor = async(name) => {
+  numnum = 1
   const typeArr = setType(searchType.value);
   let baseDataObj = toRaw(baseData.value);
   var fileTypes = ''
@@ -228,6 +239,30 @@ const pagination = async (obj) => {
   tableData.value = res.rows;
   changeSearchFor(searchFor.value);
 };
+// 点击预览事件
+const clickRow =async (row)=>{
+  console.log('row',row);
+  const typeArr = ['.png', '.jpg', '.jpeg', '.JPG','.PNG', '.mp3', '.mp4']
+  // loadingPreview.value = true
+  const filePreview = canPreviewFile(row.fileType)
+   if (filePreview) {
+        loadingPreview.value = false
+        addFileTab(row, 0,0); 
+    } else if(typeArr.some(item=>item == row.fileType)) {
+        const res = await preview(row.docId)
+        copyFileType.value = row.fileType
+        showPreview.value = true
+        previewData.value = URL.createObjectURL(res)
+    }else{
+      ElMessage.error("该文件格式不支持预览!");
+    }
+    loadingPreview.value = false
+}
+//关闭图片预览事件
+const closeImgPreview = () => {
+    // console.log('close');
+    showPreview.value = false
+}
 // 设置图标
 const setIcon = (fileType) => {
   switch (fileType) {
@@ -311,7 +346,7 @@ async function handleScroll(e) {
   const tableContainer = e.target;
   const scrollPosition = tableContainer.scrollTop + tableContainer.clientHeight;
   const contentHeight = tableContainer.scrollHeight;
-  console.log(scrollPosition, contentHeight, '对比');
+  // console.log(scrollPosition, contentHeight, '对比');
   if (scrollPosition + 0.40005 >= contentHeight) {
     numnum++
     const query = {
@@ -357,7 +392,14 @@ onMounted(() => {
   border-radius: 4px;
   overflow: hidden;
 }
-
+.lodingBox {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100vh;
+    height: 100vh;
+    z-index: 10000000;
+}
 .searchTitle {
   width: 100%;
   height: 40px;