Kaynağa Gözat

Merge branch 'v3' of ssh://94.191.59.107:10222/houwenfeng/cloudfile-ui into v3

wukai 2 yıl önce
ebeveyn
işleme
11208ba20f

+ 112 - 52
src/views/liveChat/index.vue

@@ -4,7 +4,7 @@ export default {
 };
 </script>
 <script setup>
-import { ref, reactive, toRaw, toRefs } from "vue";
+import { ref, reactive, toRaw, toRefs, nextTick } from "vue";
 import { useRouter, useRoute } from "vue-router";
 import useUserStore from "@/store/modules/user";
 import word from "@/assets/images/word2.png";
@@ -73,12 +73,14 @@ const getMsgList = async () => {
   // );
 
   searchData.value = personList.data;
-    //圆点======
-    searchData.value.map((i) => {
-       if(i.fromId==websoctStore.messOne?.fromId){i.showCircel=true}else{
-        i.showCircel=false
-       }
-    });
+  //圆点======
+  searchData.value.map((i) => {
+    if (i.fromId == websoctStore.messOne?.fromId) {
+      i.showCircel = true;
+    } else {
+      i.showCircel = false;
+    }
+  });
   //圆点======
   sendCont.data.toId =
     personList.data[0]?.toId == userIds.uid
@@ -108,6 +110,14 @@ const msgRecordEvent = async (toIdValue) => {
       i.createTime = i.createTime.substring(11);
   });
   total.value = resMsgData.total;
+  //发送消息后滚动到最底部显示最新消息
+  const chatContainer = document.querySelector(".right-container");
+  // 计算滚动的目标位置
+  const targetScrollTop = chatContainer.scrollHeight;
+  // 设置滚动位置
+  nextTick(() => {
+    chatContainer.scrollTop = targetScrollTop;
+  });
 };
 //点击左侧新建聊天
 const open = ref(false);
@@ -135,9 +145,11 @@ const clickPerson = (index, item) => {
   clickPersonIndex.value = index;
   //点击某个人就不显示红点
   searchData.value.map((i) => {
-       if(i.fromId==websoctStore.messOne?.fromId){i.showCircel=false}
-    });
-    const chatContainer = document.querySelector(".right-container");
+    if (i.fromId == websoctStore.messOne?.fromId) {
+      i.showCircel = false;
+    }
+  });
+  const chatContainer = document.querySelector(".right-container");
   // 计算滚动的目标位置
   const targetScrollTop = chatContainer.scrollHeight;
   // 设置滚动位置
@@ -182,25 +194,46 @@ const changeMsg = async (val) => {
 };
 
 //发送聊天
-const msgSendClick = () => {
-  noMes.value = false;
-  if (messageText.value.trim() == "") {
-    return ElMessage({ message: "不能发送空白消息", type: "error" });
+const inputRef = ref(null);
+const msgSendClick = (event) => {
+  console.log(event);
+  if (event.ctrlKey && event.keyCode == 13) {
+    //CTRL+enter键换行
+    const textarea = event.target;
+    const start = textarea.selectionStart;
+    const end = textarea.selectionEnd;
+    const text = messageText.value;
+    messageText.value = text.slice(0, start) + "\n" + text.slice(end);
+    nextTick(() => {
+      textarea.selectionStart = start + 1;
+      textarea.selectionEnd = start + 1;
+    });
+    event.preventDefault();
+  } else if (event.shiftKey && event.keyCode == 13) {
+    event.preventDefault();
+  } else {
+    console.log("onlyenter");
+    noMes.value = false;
+    if (messageText.value.trim() == "") {
+      return ElMessage({ message: "不能发送空白消息", type: "error" });
+    }
+    const message = {
+      content: messageText.value,
+      msgType: "2",
+      fileList: [],
+      toId: sendCont.data.toId,
+    };
+    websoctStore.sendMessage(message);
+    //发送消息后滚动到最底部显示最新消息
+    const chatContainer = document.querySelector(".right-container");
+    // 计算滚动的目标位置
+    const targetScrollTop = chatContainer.scrollHeight;
+    // 设置滚动位置
+    chatContainer.scrollTop = targetScrollTop;
+    event.preventDefault();
+    messageText.value = "";
+    //  将光标设置到输入框第一行
   }
-  const message = {
-    content: messageText.value,
-    msgType: "2",
-    fileList: [],
-    toId: sendCont.data.toId,
-  };
-  websoctStore.sendMessage(message);
-  //发送消息后滚动到最底部显示最新消息
-  const chatContainer = document.querySelector(".right-container");
-  // 计算滚动的目标位置
-  const targetScrollTop = chatContainer.scrollHeight;
-  // 设置滚动位置
-  chatContainer.scrollTop = targetScrollTop;
-  messageText.value = "";
 };
 //发送文件确认按钮
 const fileChangeMsg = async (val) => {
@@ -236,13 +269,14 @@ watchEffect(() => {
   }
 });
 // 滚动翻页========
+const mainContainer=ref(null)
 const noMes = ref(false);
 const handleScroll = (event) => {
   // 在滚动到顶部时,加载上一页的聊天记录
-  const mainContainer = document.querySelector(".right-container");
+  const mainContainer2 = document.querySelector(".right-container");
   if (
     event.deltaY < 0 &&
-    mainContainer.scrollTop <= 1 &&
+    mainContainer2.scrollTop <= 1 &&
     !noMes.value &&
     !loading.value
   ) {
@@ -256,22 +290,31 @@ const loadPreviousPage = async () => {
     pageNum: currentPageNum,
     pageSize: 10,
   };
-  const resMsgData = await msgRecord(sendCont.data.toId, queryParams);
-  const previousPageData = resMsgData.rows.reverse();
-  chatRecords.data = [...previousPageData, ...chatRecords.data];
-  const nowtime2 = parseTime(new Date().getTime(), "{y}-{m}-{d}");
-  chatRecords.data.map((i) => {
-    if (nowtime2 == i.createTime.substr(0, 10))
-      i.createTime = i.createTime.substring(11);
-  });
-  noMes.value = false;
-  if (currentPageNum * 10 >= resMsgData.total && !noMes.value) {
+  setTimeout(async () => {
+    const resMsgData = await msgRecord(sendCont.data.toId, queryParams);
+    const previousPageData = resMsgData.rows.reverse();
+    chatRecords.data = [...previousPageData, ...chatRecords.data];
+    const nowtime2 = parseTime(new Date().getTime(), "{y}-{m}-{d}");
+    chatRecords.data.map((i) => {
+      if (nowtime2 == i.createTime.substr(0, 10))
+        i.createTime = i.createTime.substring(11);
+    });
+    noMes.value = false;
+    if (currentPageNum * 10 >= resMsgData.total && !noMes.value) {
+      loading.value = false;
+      noMes.value = true;
+      return;
+    }
+    await nextTick();
+    const mainContainer = document.querySelector(".right-container");
+  const newMessages = document.querySelectorAll(".message-container");
+  const firstNewMessage = newMessages[previousPageData.length];
+  const firstNewMessageTop = mainContainer.offsetHeight +  100;
+  console.log('firstNewMessageTop', firstNewMessageTop)
+  mainContainer.scrollTop = firstNewMessageTop;
+    // 将加载的上一页聊天记录插入到 chatRecords.data 的前面
     loading.value = false;
-    noMes.value = true;
-    return;
-  }
-  // 将加载的上一页聊天记录插入到 chatRecords.data 的前面
-  loading.value = false;
+  }, 50);
 };
 const transferFiles = (forwardVal, msgIds, indexs) => {
   chatRecords.data.map((i, index) => {
@@ -311,6 +354,12 @@ const SearchChat = () => {
     getMsgList();
   }
 };
+//转聊天记录的/n为实际样式
+const formatText = (text) => {
+  const formattedText = text.replace(/\n/g, "<br>");
+  return formattedText;
+};
+
 // 滚动翻页========
 onMounted(() => {
   getMsgList();
@@ -386,7 +435,7 @@ onMounted(() => {
         </div>
         <span
           class="yuandian"
-          v-if="item.showCircel&& $route.path == '/index'"
+          v-if="item.showCircel && $route.path == '/index'"
         ></span>
       </div>
     </div>
@@ -443,9 +492,13 @@ onMounted(() => {
                   <span v-if="record.msgType == '1'">{{
                     record.file?.fileName
                   }}</span>
-                  <span v-else-if="record.msgType == '2'">{{
+                  <!-- <span v-else-if="record.msgType == '2'">{{
                     record.content
-                  }}</span>
+                  }}</span> -->
+                  <span
+                    v-else-if="record.msgType == '2'"
+                    v-html="formatText(record.content)"
+                  ></span>
                 </div>
               </div>
               <img :src="chat" class="head-sculpture" />
@@ -479,9 +532,13 @@ onMounted(() => {
                     <span v-if="record.msgType == '1'">{{
                       record.file?.fileName
                     }}</span>
-                    <span v-else-if="record.msgType == '2'">{{
+                    <!-- <span v-else-if="record.msgType == '2'">{{
                       record.content
-                    }}</span>
+                    }}</span> -->
+                    <span
+                      v-else-if="record.msgType == '2'"
+                      v-html="formatText(record.content)"
+                    ></span>
                   </div>
                 </div>
                 <img
@@ -519,12 +576,15 @@ onMounted(() => {
               v-model="messageText"
               class="w-50 m-2"
               type="textarea"
-              :autosize="{ minRows: 3, maxRows:5 }"
+              :autosize="{ minRows: 3, maxRows: 5 }"
               clearable
+              ref="inputRef"
               size="small"
               placeholder="请输入聊天内容"
               maxlength="800"
-              @keydown.enter="msgSendClick"
+              @keyup.ctrl.enter="msgSendClick($event)"
+              @keyup.shift.enter="msgSendClick($event)"
+              @keyup.enter="msgSendClick($event)"
             />
             <!-- 发送按钮 -->
             <img :src="send" class="send-info" @click="msgSendClick" />

+ 149 - 199
src/views/myfile/MyFile.vue

@@ -74,11 +74,11 @@
                             <div style="margin-left: 5px;">
                                 <el-icon
                                     style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
-                                    @click="createNewMenu">
+                                    @click="createNewMenu(0)">
                                     <Plus />
                                 </el-icon>
                             </div>
-                            <div style="margin-left: 5px;" @click="createNewMenu">
+                            <div style="margin-left: 5px;" @click="createNewMenu(0)">
                                 <span style="font-size: 14px;">新建</span>
                             </div>
                         </div>
@@ -111,7 +111,7 @@
                             <!-- 前进后退 -->
                             <div style="display: flex;justify-content: space-around;align-items: center;">
                                 <img style="display:block;width: 11px;height: 11px;" :src="blueLeft" alt=""
-                                    @click="getAllTop()">
+                                    @click="getAllTop">
                                 <img style="display:block;width: 16px;height: 16px;" :src="grayRight" alt="">
                             </div>
                             <!-- 面包屑 -->
@@ -127,93 +127,90 @@
                     </div>
                 </div>
                 <!-- 展示文件夹盒子 -->
-                    <!-- 文件夹 -->
-                    <div class="detailBox">
-                        <el-collapse v-model="folder" accordion class="collapseSell">
-                            <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
-                                <el-table :data="folderList" style="width: 100%" @selection-change="handleSelectionChange1"
-                                    :single-select="true" @row-click="folderClick" @row-contextmenu="folderRClick">
-                                    <el-table-column type="selection" width="55" />
-                                    <el-table-column label="名称" width="180">
-                                        <template #default="scope">
-                                            <span>
-                                                <img src="../../assets/images/fileBox.png" style="width: 20px;height: 24px;"
-                                                    alt="">
-                                                {{ scope.row.dirName }}
-                                            </span>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="createTime" label="时间" width="180" />
-                                    <el-table-column prop="dirType" label="类型">
-                                        <template #default="scope">
-                                            <span>{{ scope.row.dirType === "1" ? "文件夹" : "未知类型" }}</span>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column label="大小">
-                                        <template #default="scope">
-                                            <span>
-                                                10KB
-                                            </span>
-                                        </template>
-                                    </el-table-column>
+                <!-- 文件夹 -->
+                <div class="detailBox" @click="mouseClick">
+                    <el-collapse v-model="folder" accordion class="collapseSell">
+                        <el-collapse-item title="文件夹" name="1" class="custom-collapse-item">
+                            <el-table :data="folderList" style="width: 100%" @selection-change="handleSelectionChange1"
+                                :single-select="true" @row-click="folderClick" @row-contextmenu="folderRClick">
+                                <el-table-column type="selection" width="55" />
+                                <el-table-column label="名称" width="180">
+                                    <template #default="scope">
+                                        <span>
+                                            <img src="../../assets/images/fileBox.png" style="width: 20px;height: 24px;"
+                                                alt="">
+                                            {{ scope.row.dirName }}
+                                        </span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="createTime" label="时间" width="180" />
+                                <el-table-column prop="dirType" label="类型">
+                                    <template #default="scope">
+                                        <span>{{ scope.row.dirType === "1" ? "文件夹" : "未知类型" }}</span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column label="大小">
+                                    <template #default="scope">
+                                        <span>
+                                            10KB
+                                        </span>
+                                    </template>
+                                </el-table-column>
 
-                                </el-table>
-                            </el-collapse-item>
-                        </el-collapse>
-                          <!-- 右键唤出的菜单 -->
-                        <div
-                            class="right_menu"
-                            v-if="folderVisible"
-                            :style="{ left: folderleft + 'px', top: foldertop + 'px' }"
-                        >
-                            <div class="menu_item" @click="restName(null,null)">
+                            </el-table>
+                        </el-collapse-item>
+                    </el-collapse>
+                    <!-- 右键唤出的菜单 -->
+                    <div class="right_menu" v-if="folderVisible"
+                        :style="{ left: folderleft + 'px', top: foldertop + 'px' }">
+                        <div class="menu_item" @click="restName(null, null)">
                             <!-- <img src="@/assets/images/textbox.png" alt="" /> -->
                             <span>重命名</span>
-                            </div>
-                            <div class="menu_item" @click="folderClick(null,null)">
+                        </div>
+                        <div class="menu_item" @click="folderClick(null, null)">
                             <!-- <img src="@/assets/images/trash.png" alt="" /> -->
                             <span>打开</span>
-                            </div>
                         </div>
                     </div>
-                    <!-- 文件 -->
-                    <div class="fileTable">
-                        <el-collapse v-model="files" accordion class="collapse" style="height: 200px;">
-                            <el-collapse-item title="文件" name="2" class="">
-                                <el-table :data="fileList" style="width: 100%" @row-click="handleRowClick"
-                                    @selection-change="handleSelectionChange">
-                                    <el-table-column type="selection" width="55" />
-                                    <el-table-column label="名称" width="200">
-                                        <template #default="scope">
-                                            <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
-                                                <el-icon v-if="collectImg">
-                                                    <Star />
-                                                </el-icon>
-                                                <img v-else src="../../assets/images/yellowstar.png" alt="">
-                                                <img :src="getImage(scope.row.fileType)" alt="">
-                                                {{ scope.row.fileName }}
-                                            </span>
-                                        </template>
-                                    </el-table-column>
-                                    <el-table-column prop="createTime" label="时间" width="180" />
-                                    <el-table-column prop="fileType" label="类型" />
-                                    <el-table-column label="大小">
-                                        <template #default="scope">
-                                            <span>
-                                                {{ scope.row.fileSize }}KB
-                                            </span>
-                                        </template>
-                                    </el-table-column>
+                </div>
+                <!-- 文件 -->
+                <div class="fileTable">
+                    <el-collapse v-model="files" accordion class="collapse" style="height: 200px;">
+                        <el-collapse-item title="文件" name="2" class="">
+                            <el-table :data="fileList" style="width: 100%"  @row-contextmenu="handleRowClick"
+                                @selection-change="handleSelectionChange" @row-click="mouseClick">
+                                <el-table-column type="selection" width="55" />
+                                <el-table-column label="名称" width="200">
+                                    <template #default="scope">
+                                        <span style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
+                                            <el-icon v-if="collectImg">
+                                                <Star />
+                                            </el-icon>
+                                            <img v-else src="../../assets/images/yellowstar.png" alt="">
+                                            <img :src="getImage(scope.row.fileType)" alt="">
+                                            {{ scope.row.fileName }}
+                                        </span>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column prop="createTime" label="时间" width="180" />
+                                <el-table-column prop="fileType" label="类型" />
+                                <el-table-column label="大小">
+                                    <template #default="scope">
+                                        <span>
+                                            {{ scope.row.fileSize }}KB
+                                        </span>
+                                    </template>
+                                </el-table-column>
 
-                                </el-table>
-                                <div class="setCli" v-if="cliCC">
-                                    <template v-for="(item, index) in filterMouseCli()">
-                                        <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;position: relative;" class="arrow">></span>
-                                        </p>
+                            </el-table>
+                            <div class="setCli" v-if="cliCC">
+                                <template v-for="(item, index) in filterMouseCli()">
+                                    <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;position: relative;" class="arrow">></span>
+                                    </p>
                                 </template>
                             </div>
                             <div class="setCli1" v-if="anyP">
@@ -262,21 +259,14 @@
             </div>
             <!-- 新增文件夹弹窗 -->
             <div>
-                <el-dialog v-model="addBoser" title="新建文件夹" width="30%">
-                    <el-form :model="boserForm" label-width="120px">
-                        <el-form-item label="目录名称">
-                            <el-input v-model="boserForm.dirName" />
-                        </el-form-item>
-                    </el-form>
-                    <template #footer>
-                        <span class="dialog-footer">
-                            <el-button @click="addBoser = false">取消</el-button>
-                            <el-button type="primary" @click="sureAddBoser">
-                                确认
-                            </el-button>
-                        </span>
-                    </template>
-                </el-dialog>
+                <CreateFloder v-if="folderCase" :folderCase="folderCase" @getChildrenC="getChildrenC" :oneOrTwo="oneOrTwo"
+                    :impDirId="impDirId"
+                    :impSpaceId="impSpaceId"
+                    :newDirId="newDirId"
+                    :newSpaceId="newSpaceId"
+                    :getAllTop="getAllTop"
+                    >
+                </CreateFloder>
             </div>
             <!-- 废弃的顶层目录新增 -->
             <div>
@@ -420,6 +410,7 @@ import FileTree from './components/FileTree.vue'
 import BreadMenu from './components/BreadMenu.vue'
 import FileEdit from './components/FileEdit.vue'
 import TransferModal from './modalComponebts/Transfer.vue'
+import CreateFloder from './modalComponebts/CreateFloder.vue'
 import ImgFile from "./jsComponents/ImgFile"
 import { Search } from '@element-plus/icons-vue'
 import blueLeft from '../../assets/images/blueLeft.png'
@@ -437,6 +428,7 @@ export default {
     setup() {
         let fileTrees = ref(false)//filetree父传子
         let thanks = ref(false)//transfer父传子
+        let folderCase = ref(false)
         let editOnline = ref(true)
         let searchFire = ref('')
         let selectedIndex = ref(0)
@@ -449,7 +441,6 @@ export default {
         let askTalk = ref('')
         let newTag = ref('')
         let cliCC = ref(false)
-        let addBoser = ref(false)
         let addFile = ref(false)
         let anyP = ref(false)
         let uploadModal = ref(false)
@@ -480,18 +471,11 @@ export default {
         let copyParentId = ref("")//文件夹
         let needBag = ref("")
         let copyOrMove = ref(0)//0代表复制,1代表移动
+        let oneOrTwo = ref(0)//0代表二级,1代表一级
         let sortNum = ref(0)
         const openForwardFile = ref(false)   //历史版本展示
         const historyPrew = ref(false)
         const fileUserTreeData = reactive({ data: {} });
-        let boserForm = ref({
-            spaceId: "",//空间id
-            dirName: "",
-            dirPower: "",
-            dirType: "",
-            parentId: "",
-            remark: ""//备注
-        })
         let fileForm = ref({
             spaceType: '',
             spaceName: "",
@@ -724,7 +708,9 @@ export default {
             this.menuList = this.menuList.filter(item => item.name !== row.name)
         }
         // 文件名表格每一行点击事件
-        function handleRowClick(row) {
+        function handleRowClick(row, col, e) {
+            e.preventDefault();
+            e.stopPropagation();
             copyRow.value = row
             clickRowId.value = row.docId
             copyDirId.value = row.dirId
@@ -738,11 +724,6 @@ export default {
             } else {
                 cliCC.value = true
             }
-            fileShare.getSharePeople(row.docId).then(res => {
-                console.log(res, 'res');
-            }).catch(err => {
-                console.log(err, 'err');
-            })
         }
         // 申请扩容
         function askApply() {
@@ -835,46 +816,8 @@ export default {
             anyP.value = false
         }
         function createNewMenu(num) {
-            impNum.value = num
-            addBoser.value = true
-        }
-        // 新建文件夹
-        function sureAddBoser() {
-            if (impNum.value === 1) {
-                documents.addDocument(
-                    {
-                        "dirName": boserForm.value.dirName,
-                        "parentId": impDirId.value - 0,
-                        "spaceId": impSpaceId.value - 0,
-                    }
-                ).then(res => {
-                    if (res.code === 200) {
-                        ElMessage({
-                            message: '添加一级目录成功',
-                            type: 'success',
-                        })
-                    }
-                    addBoser.value = false
-                    getAllTop()
-                })
-            } else {
-                documents.addDocument(
-                    {
-                        "dirName": boserForm.value.dirName,
-                        "parentId": newDirId.value - 0,
-                        "spaceId": newSpaceId.value - 0,
-                    }
-                ).then(res => {
-                    if (res.code === 200) {
-                        ElMessage({
-                            message: '添加成功',
-                            type: 'success',
-                        })
-                    }
-                    addBoser.value = false
-                    getAllTop()
-                })
-            }
+            oneOrTwo.value = num
+            folderCase.value = true
         }
 
         function createNewFile() {
@@ -1030,7 +973,7 @@ export default {
             // 上一级dirId就是下一级的parentId
             // 判断是点击打开还是右键菜单打开
             row = row ? row : thisFolder.value
-            console.log('row',row);
+            console.log('row', row);
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
             documents.getALLdocument({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 }).then(res => {
@@ -1147,6 +1090,9 @@ export default {
         function getCback(data) {
             thanks.value = data
         }
+        function getChildrenC(data) {
+            folderCase.value = data
+        }
         //历史版本
         const forwardTreeData = reactive({ data: {} });
         const historycopyRow = ref({})
@@ -1161,20 +1107,20 @@ export default {
         }
 
         //对mouseCli数组进行筛选,实现菜单的区分显示
-        const filterMouseCli = ()=>{
-            const typeArr = ['.png','.jpg','.jpeg','.JPG','.mp3','.mp4','.pdf']
-            const imgTypeArr = ['.png','.jpg','.jpeg','.JPG']
+        const filterMouseCli = () => {
+            const typeArr = ['.png', '.jpg', '.jpeg', '.JPG', '.mp3', '.mp4', '.pdf']
+            const imgTypeArr = ['.png', '.jpg', '.jpeg', '.JPG']
             let arr = []
             if (!typeArr.includes(copyFileType.value)) {
                 arr = mouseCli.value.filter(item => item.name !== "预览")
             } else {
                 arr = mouseCli.value.filter(item => item.name !== "在线编辑" && item.name !== "协作" && item.name !== "历史版本")
             }
-            if(!imgTypeArr.includes(copyFileType.value)){
-                arr = arr.filter(item=>item.name !== "文字识别")
+            if (!imgTypeArr.includes(copyFileType.value)) {
+                arr = arr.filter(item => item.name !== "文字识别")
             }
             return arr
-        }  
+        }
         function mouseClick() {
             if (cliCC.value) {
                 cliCC.value = false
@@ -1182,27 +1128,27 @@ export default {
             if (anyP) {
                 anyP.value = false
             }
-        } 
+        }
         // 文件夹右键事件
-        const folderRClick = (row,col,e) => {
-        e.preventDefault();
-        e.stopPropagation();
-        let thisRow = toRaw(row)
-        // console.log("row", thisRow);
-        // console.log("col", toRaw(col));
-        // console.log("e", e);
-        // console.log("item", toRaw(item));
-        thisFolder.value = thisRow;
-        //  唤出右键菜单,思路:获取鼠标位置来定位菜单
-        folderVisible.value = true;
-        foldertop.value = e.pageY;
-        folderleft.value = e.pageX;
+        const folderRClick = (row, col, e) => {
+            e.preventDefault();
+            e.stopPropagation();
+            let thisRow = toRaw(row)
+            // console.log("row", thisRow);
+            // console.log("col", toRaw(col));
+            // console.log("e", e);
+            // console.log("item", toRaw(item));
+            thisFolder.value = thisRow;
+            //  唤出右键菜单,思路:获取鼠标位置来定位菜单
+            folderVisible.value = true;
+            foldertop.value = e.pageY;
+            folderleft.value = e.pageX;
         };
         // 关闭文件夹右键菜单
         const closeRMenu = () => {
-        // console.log("close");
-        folderVisible.value = false;
-        };     
+            // console.log("close");
+            folderVisible.value = false;
+        };
         onMounted(() => {
             getAllTop()
             getAllCollect()
@@ -1240,10 +1186,7 @@ export default {
             anyP,
             chooseSet1,
             fileMenu,
-            addBoser,
-            boserForm,
             createNewMenu,
-            sureAddBoser,
             // delBoser,
             clickRowId,
             addFile,
@@ -1339,6 +1282,9 @@ export default {
             getCback,
             mouseClick,
             workOrEdit,
+            folderCase,//新建文件夹传值
+            getChildrenC,
+            oneOrTwo,//父传子判断
         }
 
     },
@@ -1351,6 +1297,7 @@ export default {
         FileTree,
         historyList,
         TransferModal,
+        CreateFloder,
     },
 }
 
@@ -1371,7 +1318,7 @@ p {
 }
 
 .settingBox {
-    width: 20vw;
+    width: 25vw;
     height: 92vh;
     border: 1px solid black;
     border-radius: 4px;
@@ -1580,27 +1527,30 @@ p {
 }
 
 .right_menu {
-  width: 100px;
-  position: absolute;
-  padding: 8px;
-  box-shadow: 0px 2px 10px 1px rgba(199, 203, 216);
-  border-radius: 4px 4px 4px 4px;
-  border: 1px solid #c1cce3;
-  background-color: #fff;
-  z-index: 10000;
-  .menu_item {
-    width: 100%;
-    height: 40px;
+    width: 100px;
+    position: absolute;
+    padding: 8px;
+    box-shadow: 0px 2px 10px 1px rgba(199, 203, 216);
     border-radius: 4px 4px 4px 4px;
-    display: flex;
-    align-items: center;
-    &:hover {
-      background-color: #f5f7f9;
-    }
-    span {
-      margin-left: 4px;
+    border: 1px solid #c1cce3;
+    background-color: #fff;
+    z-index: 10000;
+
+    .menu_item {
+        width: 100%;
+        height: 40px;
+        border-radius: 4px 4px 4px 4px;
+        display: flex;
+        align-items: center;
+
+        &:hover {
+            background-color: #f5f7f9;
+        }
+
+        span {
+            margin-left: 4px;
+        }
     }
-  }
 }
 
 :deep(.el-tag__content) {

+ 133 - 0
src/views/myfile/modalComponebts/CreateFloder.vue

@@ -0,0 +1,133 @@
+<template>
+    <div>
+        <div>
+            <el-dialog v-model="addBoser" title="新建文件夹" width="30%" @close="diClose">
+                <el-form :model="boserForm" label-width="120px">
+                    <el-form-item label="目录名称">
+                        <el-input v-model="boserForm.dirName" />
+                    </el-form-item>
+                </el-form>
+                <template #footer>
+                    <span class="dialog-footer">
+                        <el-button @click="addBack">取消</el-button>
+                        <el-button type="primary" @click="sureAddBoser">
+                            确认
+                        </el-button>
+                    </span>
+                </template>
+            </el-dialog>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, toRef } from 'vue';
+import documents from '../../../api/document/document';
+import { ElMessage } from 'element-plus';
+export default {
+    props: {
+        folderCase: {
+            type: Boolean,
+            required: true
+        },
+        oneOrTwo: {
+            type: Number,
+            required: true
+        },
+        impDirId:{
+            type:Number,
+            required:true
+        },
+        impSpaceId:{
+            type:Number,
+            required:true
+        },
+        newDirId:{
+            type:Number,
+            required:true
+        },
+        newSpaceId:{
+            type:Number,
+            required:true
+        },
+        getAllTop:Function,
+    },
+    setup(props, { emit }) {
+        let { addBack, sureAddBoser,diClose } = toRef(props)
+        let result = props.folderCase
+        let free = props.oneOrTwo
+        let spId = props.impSpaceId
+        let drId = props.impDirId
+        let newspid=props.newSpaceId
+        let newdrid = props.newDirId
+        let addBoser = ref(false)
+        let boserForm = ref({
+            dirName: "",
+        })
+        function inital() {
+            console.log(free,'free');
+            addBoser.value = result
+        }
+        function backTo() {
+            addBoser.value = false
+            emit("getChildrenC", addBoser.value)
+        }
+        function addFloder() {
+            if (free === 1) {
+                documents.addDocument(
+                    {
+                        "dirName": boserForm.value.dirName,
+                        "parentId": drId - 0,
+                        "spaceId": spId - 0,
+                    }
+                ).then(res => {
+                    if (res.code === 200) {
+                        ElMessage({
+                            message: '添加一级目录成功',
+                            type: 'success',
+                        })
+                    }
+                    addBoser.value = false
+                    emit("getChildrenC", addBoser.value)
+                    props.getAllTop()
+                })
+            } else {
+                documents.addDocument(
+                    {
+                        "dirName": boserForm.value.dirName,
+                        "parentId": newdrid - 0,
+                        "spaceId": newspid - 0,
+                    }
+                ).then(res => {
+                    if (res.code === 200) {
+                        ElMessage({
+                            message: '添加成功',
+                            type: 'success',
+                        })
+                    }
+                    addBoser.value = false
+                    emit("getChildrenC", addBoser.value)
+                    props.getAllTop()
+                })
+            }
+        }
+        onMounted(() => {
+            inital()
+        })
+        return {
+            addBoser,
+            boserForm,
+            inital,
+            addBack: backTo,
+            sureAddBoser:addFloder,
+            diClose:backTo,
+            spId,
+            drId,
+            newdrid,
+            newspid,
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 18 - 11
src/views/myfile/modalComponebts/Transfer.vue

@@ -43,8 +43,8 @@
 import { ref, onMounted, toRef } from 'vue';
 import userTree from '../../../api/user/userTree';
 import fileShare from '../../../api/fileShare/fileShare';
+import fileCount from '../../../api/fileCount/fileCount'
 import { ElMessage } from 'element-plus'
-import { Loading } from '@element-plus/icons-vue';
 export default {
     props: {
         thanks: {
@@ -128,8 +128,8 @@ export default {
                         }
                     })
                 }
-            }else{
-               return
+            } else {
+                return
             }
 
         }
@@ -152,15 +152,22 @@ export default {
                     getAllNodeIds(allTreeData.value);
                 });
             })
-            fileShare.getSharePeople(dees).then(res => {
-                // 去除数组内部的重复元素
-                const uniqueRes = Array.from(new Set(res.map(item => item.userName))).map(id => res.find(item => item.userName === id));
-                // 现在的 uniqueRes 数组不包含重复元素
-                chooseTagData.value = uniqueRes;
-                backScreen.value = chooseTagData.value.map(item => {
-                    return item.userId
+            if (feeh === 1) {
+                fileShare.getSharePeople(dees).then(res => {
+                    // 去除数组内部的重复元素
+                    const uniqueRes = Array.from(new Set(res.map(item => item.userName))).map(id => res.find(item => item.userName === id));
+                    // 现在的 uniqueRes 数组不包含重复元素
+                    chooseTagData.value = uniqueRes;
+                    backScreen.value = chooseTagData.value.map(item => {
+                        return item.userId
+                    })
                 })
-            })
+            } else {
+                fileCount.getActor(dees).then(res => {
+                    console.log(res, 'count');
+                })
+            }
+
         }
         function getBack() {
             transferModals.value = false