liyangzheng 2 jaren geleden
bovenliggende
commit
7828d20120

+ 27 - 19
src/api/fileCount/fileCount.js

@@ -1,48 +1,56 @@
 import request from '../../utils/request'
 // 查询文档协作人员
 // data为docid
-function getActor(data){
+function getActor(data) {
     return request({
-        url:`/biz/actor/${data}`,
-        method:"get",
-        params:data
+        url: `/biz/actor/${data}`,
+        method: "get",
+        params: data
     })
 }
 // 归档
-function lockActor(data){
+function lockActor(data) {
     return request({
-        url:`/biz/actor/${data}`,
-        method:"put",
+        url: `/biz/actor/${data}`,
+        method: "put",
     })
 }
 // 添加协作人员
-function addActor(num,data){
+function addActor(num, data) {
     return request({
-        url:`/biz/actor/${num}`,
-        method:"post",
+        url: `/biz/actor/${num}`,
+        method: "post",
         data
     })
 }
 // 我发起的
-function myCount(data){
+function myCount(data) {
     return request({
-        url:`/biz/actor/initiation`,
-        method:"get",
-        params:data,
+        url: `/biz/actor/initiation`,
+        method: "get",
+        params: data,
     })
 }
 // 我参与的
-function myJoin(data){
+function myJoin(data) {
     return request({
-        url:`/biz/actor/participation`,
-        method:"get",
-        params:data,
+        url: `/biz/actor/participation`,
+        method: "get",
+        params: data,
     })
 }
-export default{
+function createFiles(data) {
+    return request({
+        url: `/biz/info/create`,
+        method: "get",
+        params: data,
+    })
+}
+export default {
     getActor,
     addActor,
     lockActor,
     myCount,
     myJoin,
+    createFiles,
 }

BIN
src/assets/images/manyBody.png


BIN
src/assets/images/manyBodyFalse.png


+ 8 - 0
src/layout/indexCommon.vue

@@ -121,6 +121,8 @@ import chuanshu from "@/assets/images/chuanshu.png";
 import bechuanshu from "@/assets/images/bechuanshu.png";
 import highsearch from "@/assets/images/highsearch.png";
 import behighsearch from "@/assets/images/behighsearch.png";
+import manyBody from "@/assets/images/manyBody.png";
+import manyBodyFalse from "@/assets/images/manyBodyFalse.png";
 import { AppMain, Navbar, Settings, TagsView } from "./components";
 import { flieSearch } from "@/api/search/search.js";
 import { useRouter, useRoute } from "vue-router";
@@ -281,6 +283,12 @@ const menuList = reactive({
       imgs: system,
       beimgs: issystem,
     },
+    {
+      label: "我的协作",
+      path: "/myjoin",
+      imgs: manyBody,
+      beimgs: manyBodyFalse,
+    },
   ],
 });
 const clickPath = (index, items) => {

+ 9 - 0
src/router/index.js

@@ -110,6 +110,15 @@ export const constantRoutes = [{
 				}
 			},
 			{
+				path: "/myjoin",
+				component: () => import("@/views/myjoin/MyJoin"),
+				name: "myjoin",
+				meta: {
+					title: "我的协作",
+					icon: "myjoin"
+				}
+			},
+			{
 				path: "/department",
 				component: () => import("@/views/department/Department"),
 				name: "department",

+ 86 - 22
src/views/myfile/MyFile.vue

@@ -122,7 +122,7 @@
                         <!-- 右侧 -->
                         <div>
                             <img :src="sort" alt="">
-                            <img :src="squre" alt="">
+                            <img :src="squre" alt="" @click="gridChange">
                         </div>
                     </div>
                 </div>
@@ -159,7 +159,9 @@
                                 </el-table-column>
 
                             </el-table>
-                            <PlaceGridFolder v-else></PlaceGridFolder>
+                            <PlaceGridFolder v-else :folderClick="folderClick" :restName="restName"
+                                :collectFolder="collectFolder" :getAllTop="getAllTop" @folderBack="folderBack">
+                            </PlaceGridFolder>
                         </el-collapse-item>
                     </el-collapse>
                     <!-- 右键唤出的菜单 -->
@@ -209,7 +211,8 @@
                                     </template>
                                 </el-table-column>
                             </el-table>
-                            <PalaceGridFile v-else @showFile="showFile"></PalaceGridFile>
+                            <PalaceGridFile v-else @showFile="showFile" :getAllTop="getAllTop" @navBack="navBack"
+                                @lastBB="lastBB" @onlineCase="onlineCase" @shareBack="shareBack"></PalaceGridFile>
                         </el-collapse-item>
                     </el-collapse>
                     <div class="setCli" v-if="cliCC" :style="{ left: xz + 'px', top: yz - 260 + 'px' }">
@@ -222,7 +225,7 @@
                             </p>
                         </template>
                     </div>
-                    <div class="setCli1" v-if="anyP">
+                    <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz + 'px' }">
                         <p @click="chooseSet1(0)" class="chooseSet">
                             <img src="../../assets/images/user.png" alt="">
                             选择人员
@@ -233,7 +236,6 @@
                         </p>
                     </div>
                 </div>
-
             </div>
             <div v-else>
                 <div>
@@ -412,6 +414,10 @@ export default {
         let fileList = ref([
         ])
         let menuList = ref([
+            {
+                name: "我的空间",
+                choose: "我的空间"
+            }
         ])
         let useMenu = ref([
             // {
@@ -611,7 +617,9 @@ export default {
             this.selectedIndex = num
             const newItem = {
                 name: row.dirName,
-                choose: row.dirName
+                choose: row.dirName,
+                dirIds: row.dirId,
+                spaceIds: row.spaceId
             };
             // 检查 newItem 是否已存在于 menuList 中
             const isItemExist = menuList.value.some(item => item.choose === newItem.choose);
@@ -623,11 +631,43 @@ export default {
 
         // tableMenu切换
         function tableChange(row, num) {
-            this.selectedIndex = num
+            if (row.name == '我的空间') {
+                getAllTop()
+            } else {
+                let obj = {
+                    pageNum: 1,
+                    pageSize: 10
+                }
+                documents.getALLdocument({ parentId: row.dirIds - 0, spaceId: row.spaceIds - 0, pageNum: obj.pageNum, pageSize: obj.pageSize }).then(res => {
+                    // fileMenu.value = res.data
+                    folderList.value = res.data
+                })
+                myfile.getById(row.dirIds - 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
+                                })
+                            }
+                        }
+                    }
+                })
+            }
+            selectedIndex.value = num
         }
         // x图标事件
         function shotdown(row) {
-            this.menuList = this.menuList.filter(item => item.name !== row.name)
+            menuList.value = menuList.value.filter(item => item.name !== row.name)
+            selectedIndex.value = -1
         }
         // 文件名表格每一行点击事件
         function handleRowClick(row, col, e) {
@@ -660,8 +700,6 @@ export default {
         async function chooseSet(row, index, num) {
             if (row.name == '在线编辑' || row.name == '协作') {
                 cliCC.value = true
-            } else {
-                cliCC.value = false
             }
             if (row.name == '分享') {
                 workOrEdit.value = num
@@ -853,7 +891,6 @@ export default {
             copyFolderName.value = row.dirName
             selectedBox.value = row.dirId
             rename.value = true
-
         }
         function getMenu(row, num) {
             if (row.name === '删除') {
@@ -926,7 +963,10 @@ export default {
             // console.log('topPath',toRaw(topPath.value));
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
-            documents.getALLdocument({ parentId: row.dirId - 0, spaceId: row.spaceId - 0 }).then(res => {
+            documents.getALLdocument({
+                parentId: newDirId.value - 0,
+                spaceId: newSpaceId.value - 0
+            }).then(res => {
                 folderList.value = res.data
                 if (res.data.length === 0) {
                     myfile.getById(newDirId.value).then(res => {
@@ -935,7 +975,7 @@ export default {
                         }
                     })
                 } else {
-                    myfile.getById(row.dirId - 0).then(res => {
+                    myfile.getById(newDirId.value).then(res => {
                         if (res.code === 200) {
                             fileList.value = res.rows
                         }
@@ -999,12 +1039,29 @@ export default {
         function getSpaceC(data) {
             spaces.value = data
         }
-        function showFile(data,e,a) {
-            // console.log(data,e,a,'data');
+        function navBack(data, name) {
+            nameForm.value.name = name
+            fileNameChange.value = data
+        }
+        function onlineCase(data, uid, row) {
+            editOnline.value = data
+            clickRowId.value = uid
+            copyRow = row
+        }
+        function shareBack(data, num) {
+            thanks.value = data
+            workOrEdit.value = num
+        }
+        function showFile(data, e, a) {
             editOnline.value = data
             clickRowId.value = e
             copyRow = a
         }
+        function folderBack(dir, spa, nam) {
+            selectedBox.value = dir
+            copyFolderName.value = nam
+            copyFileName.value = spa
+        }
         //历史版本
         const forwardTreeData = reactive({ data: {} });
         const historycopyRow = ref({})
@@ -1017,7 +1074,11 @@ export default {
             }
             openForwardFile.value = val
         }
-
+        function lastBB(data, row, num) {
+            openForwardFile.value = data
+            historyTotal.value = row
+            fileUserTreeData.data = num
+        }
         //对mouseCli数组进行筛选,实现菜单的区分显示
         const filterMouseCli = () => {
             const canPreviewArray = ['.doc', '.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']
@@ -1064,15 +1125,15 @@ export default {
             folderVisible.value = false;
         };
         // 文件夹收藏事件
-        const collectFolder = ()=>{
+        const collectFolder = () => {
             isFolder.value = 'Y'
             clickRow.value = thisFolder.value
             copyFileName.value = thisFolder.value.dirName
             collects.value = true
-            console.log('thisFolder',thisFolder.value);
+            console.log('thisFolder', thisFolder.value);
         }
         // 左箭头事件
-        const arrowLift = ()=>{
+        const arrowLift = () => {
             // router.go(-1)
         }
         // 归档
@@ -1133,7 +1194,7 @@ export default {
             getSpaceList()
             // 添加监听,点击其他地方关闭文件夹右键菜单
             window.addEventListener("click", closeRMenu, true);
-            window.addEventListener("click", mouseClick);
+            window.addEventListener("click", mouseClick, true);
         })
         return {
             getSpaceList,
@@ -1275,6 +1336,11 @@ export default {
             arrowLift,
             formatStorage,
             showFile,
+            navBack,
+            onlineCase,
+            lastBB,
+            shareBack,
+            folderBack,
         }
     },
     watch: {
@@ -1476,8 +1542,6 @@ p {
     width: 156px;
     height: auto;
     position: absolute;
-    top: 185px;
-    left: 455px;
     background-color: white;
     border: 1px solid gray;
     border-radius: 4px;

+ 50 - 15
src/views/myfile/components/PalaceGridFile.vue

@@ -20,12 +20,12 @@
                     <p @click="chooseSet(item, index, 1)" class="chooseSet">
                         <img :src="item.img" alt="">
                         {{ item.name }}
-                        <span v-if="item.name == '在线编辑' || item.name == '协作' ? true : false"
+                        <span v-if="item.name == '协作' ? true : false"
                             style="color: #7084B4;float: right;position: relative;" class="arrow">></span>
                     </p>
                 </template>
             </div>
-            <div class="setCli1" v-if="anyP">
+            <div class="setCli1" v-if="anyP" :style="{ left: xz + 155 + 'px', top: yz-50 + 'px' }">
                 <p @click="chooseSet1(0)" class="chooseSet">
                     <img src="../../../assets/images/user.png" alt="">
                     选择人员
@@ -35,10 +35,10 @@
                     归档
                 </p>
             </div>
-            <div>
+            <!-- <div>
                 <TransferModal v-if="thanks" :thanks="thanks" :clickRowId="clickRowId" :workOrEdit="workOrEdit"
                     @getCback="getCback"></TransferModal>
-            </div>
+            </div> -->
             <!-- 复制粘贴 -->
             <div>
                 <FileTree v-if="fileTrees" :fileTrees="fileTrees" :newSpaceId="newSpaceId" :fileId="clickRowId"
@@ -48,10 +48,10 @@
                 <ImgPreview :previewData="previewData" :copyFileType="copyFileType" :showPreview="showPreview"
                     @closeImgPreview="closeImgPreview"></ImgPreview>
             </div>
-            <!-- <div>
-                <FileEdit v-if="editOnline" :docId="clickRowId" :copyRow="copyRow" :historyPrew="historyPrew" :historycopyRow="historycopyRow"
-                    :onlyView="onlyView" @cancleHistoryPrew="cancleHistoryPrew"></FileEdit>
-            </div> -->
+            <div>
+                <FileCollect v-if="collects" :collects="collects" @getCollects="getCollects" :copyFileName="copyFileName"
+                    :copyFileId="copyFileId" :isFolder="isFolder" :clickRow="clickRow"></FileCollect>
+            </div>
         </div>
     </div>
 </template>
@@ -61,8 +61,10 @@ import { ref, onMounted } from "vue"
 import { ElMessage } from "element-plus";
 import myfile from "../../../api/myfile/myfile";
 import documents from "../../../api/document/document";
+import fileCount from "../../../api/fileCount/fileCount";
 import TransferModal from '../modalComponebts/Transfer.vue'
 import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
+import FileCollect from '../modalComponebts/FileCollect.vue'
 import FileEdit from './FileEdit.vue'
 import FileTree from './FileTree.vue'
 import ImgFile from "../jsComponents/ImgFile";
@@ -70,6 +72,12 @@ import { canPreviewFile } from "@/utils/index.js"
 import { preview } from "@/api/common/common.js";
 import { listVersion } from "@/api/biz/version";
 export default {
+    props:{
+        getAllTop:{
+            type:Function,
+            required:true
+        }
+    },
     setup(props, { emit }) {
         let impDirId = ref(0)
         let impSpaceId = ref(0)
@@ -106,6 +114,9 @@ export default {
         let editOnline = ref(false)
         let showPreview = ref(false)
         let historyPrew = ref(false)
+        let fileNameChange = ref(false)
+        let collects = ref(false)
+        let openForwardFile = ref(false)
         let historyTotal = ref(0)
         const fileUserTreeData = reactive({ data: {} });
         let previewData = ref()
@@ -271,7 +282,7 @@ export default {
             }
         }
         async function chooseSet(row, index, num) {
-            if (row.name == '在线编辑' || row.name == '协作') {
+            if (row.name == '协作') {
                 cliCC.value = true
             } else {
                 cliCC.value = false
@@ -279,6 +290,7 @@ export default {
             if (row.name == '分享') {
                 workOrEdit.value = num
                 thanks.value = true
+                emit("shareBack",thanks.value,workOrEdit.value)
             } else {
                 thanks.value = false
             }
@@ -291,6 +303,7 @@ export default {
             } else {
                 anyP.value = false
             }
+            console.log(anyP.value,'anyp');
             if (row.name == '删除') {
                 myfile.delMenu(clickRowId.value).then(res => {
                     if (res.code === 200) {
@@ -312,6 +325,7 @@ export default {
             }
             if (row.name === '重命名') {
                 fileNameChange.value = true
+                emit("navBack", fileNameChange.value,nameForm.value.name)
             }
             if (row.name === "下载") {
                 location.href = `${import.meta.env.VITE_APP_BASE_API}/api/download/${copyFileId.value}`;
@@ -321,7 +335,7 @@ export default {
             }
             if (row.name === '在线编辑') {
                 editOnline.value = false
-                cliCC.value = false
+                emit("onlineCase",editOnline.value,clickRowId.value, copyRow.value)
             }
             if (row.name === '文字识别') {
                 router.push({
@@ -344,7 +358,6 @@ export default {
                     showPreview.value = true
                     const res = await preview(copyFileId.value)
                     previewData.value = URL.createObjectURL(res)
-                    console.log(888);
                 }
                 showPreview.value = true
                 const res = await preview(copyFileId.value)
@@ -354,6 +367,7 @@ export default {
                 historyTotal.value = resHistory.total
                 fileUserTreeData.data = resHistory.rows;
                 openForwardFile.value = true
+                emit("lastBB",openForwardFile.value,historyTotal.value,fileUserTreeData.data)
             }
         }
         function changeMsgClose(val, item) {
@@ -370,6 +384,7 @@ export default {
             workOrEdit.value = num
             thanks.value = true
             anyP.value = false
+            emit("shareBack",thanks.value,workOrEdit.value)
         }
         function getChildren(data) {
             fileTrees.value = data
@@ -383,9 +398,25 @@ export default {
         function cancleHistoryPrew(data) {
             historyPrew.value = false
         }
+        function getCollects(data) {
+            collects.value = false
+        }
+         // 归档
+         function goLock() {
+            fileCount.lockActor(clickRowId.value).then(res => {
+                if (res.code === 200) {
+                    ElMessage({
+                        type: "success",
+                        message: "归档成功"
+                    })
+                    cliCC.value = false
+                    anyP.value = false
+                }
+            })
+        }
         onMounted(() => {
             getAllTop()
-            window.addEventListener("click", mouseClick);
+            window.addEventListener("click", mouseClick,true);
         })
         return {
             getAllTop,
@@ -434,13 +465,19 @@ export default {
             historycopyRow,
             changeMsgClose,
             historyPrew,
+            getCollects,
+            collects,
+            fileNameChange,
+            editOnline,
+            goLock
         }
     },
     components: {
         TransferModal,
         FileTree,
         ImgPreview,
-        FileEdit
+        FileEdit,
+        FileCollect,
     }
 }
 </script>
@@ -495,8 +532,6 @@ export default {
     width: 156px;
     height: auto;
     position: absolute;
-    top: 185px;
-    left: 455px;
     background-color: white;
     border: 1px solid gray;
     border-radius: 4px;

+ 115 - 3
src/views/myfile/components/PlaceGridFolder.vue

@@ -5,7 +5,7 @@
             <div class="bigBox">
                 <template v-for="(item, index) in folderList">
                     <!-- 循环盒子 -->
-                    <div class="flexBox">
+                    <div class="flexBox" @contextmenu="rightClick(item, index, $event)">
                         <!-- 图片 -->
                         <div class="imgBox">
                             <img src="../../../assets/images/folderBig.png" alt="" style="vertical-align: middle;">
@@ -16,6 +16,22 @@
                         </div>
                     </div>
                 </template>
+                <!-- 右键唤出的菜单 -->
+                <div class="rightList" v-if="folderVisible"
+                    :style="{ left: folderleft + 30 + 'px', top: foldertop - 50 + 'px' }">
+                    <div class="menu_item" @click="fatherOpen(null, null)">
+                        <img src="@/assets/images/trash.png" alt="" />
+                        <span>打开</span>
+                    </div>
+                    <div class="menu_item" @click="fatherRest(null, null)">
+                        <img src="@/assets/images/textbox.png" alt="" />
+                        <span>重命名</span>
+                    </div>
+                    <div class="menu_item" @click="fatherCollect">
+                        <img src="@/assets/images/collect.png" alt="" />
+                        <span>收藏</span>
+                    </div>
+                </div>
             </div>
         </div>
     </div>
@@ -28,7 +44,26 @@ import myfile from "../../../api/myfile/myfile";
 import documents from "../../../api/document/document";
 import ImgFile from "../jsComponents/ImgFile";
 export default {
-    setup() {
+    props: {
+        folderClick: {
+            type: Function,
+            required: true,
+        },
+        restName: {
+            type: Function,
+            required: true
+        },
+        collectFolder: {
+            type: Function,
+            required: true
+        },
+        getAllTop: {
+            type: Function,
+            required: true
+        },
+
+    },
+    setup(props, { emit }) {
         let impDirId = ref(0)
         let impSpaceId = ref(0)
         let newSpaceId = ref(0)
@@ -38,6 +73,13 @@ export default {
         let folderList = ref([])
         let fileTotal = ref(0)
         let fileMenu = ref([])
+        let folderleft = ref(0)
+        let foldertop = ref(0)
+        let folderVisible = ref(false)
+        let copyDir = ref(0)
+        let copySpa = ref(0)
+        let copyNma = ref("")
+        let copyFir = ref("")
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(3).then(res => {
@@ -76,8 +118,56 @@ export default {
                 })
             })
         }
-        onMounted(()=>{
+        function rightClick(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 mouseClick() {
+            folderVisible.value = false
+        }
+        function fatherOpen(a, b) {
+            documents.getALLdocument({
+                parentId: copyDir.value - 0,
+                spaceId: copySpa.value - 0
+            }).then(res => {
+                folderList.value = res.data
+                if (res.data.length === 0) {
+                    myfile.getById(copyDir.value).then(res => {
+                        if (res.code === 200) {
+                            fileList.value = res.rows
+                        }
+                    })
+                } else {
+                    myfile.getById(copyDir.value).then(res => {
+                        if (res.code === 200) {
+                            fileList.value = res.rows
+                        }
+                    })
+                }
+            })
+        }
+        function fatherCollect() {
+            emit("folderBack", copyNma.value, copyFir.value)
+            props.collectFolder()
+        }
+        function fatherRest(a, b) {
+            props.restName(a, b)
+            emit('folderBack', copyDir.value, copySpa.value, copyNma.value)
+        }
+        onMounted(() => {
             getAllTop()
+            window.addEventListener("click", mouseClick, true);
         })
         return {
             getAllTop,
@@ -89,6 +179,18 @@ export default {
             fileMenu,
             folderList,
             fileTotal,
+            rightClick,
+            folderleft,
+            foldertop,
+            folderVisible,
+            mouseClick,
+            fatherCollect,
+            fatherOpen,
+            fatherRest,
+            copyDir,
+            copySpa,
+            copyNma,
+            copyFir
         }
     }
 }
@@ -114,6 +216,7 @@ export default {
 .flexBox {
     width: 104px;
     height: 148px;
+    position: relative;
 }
 
 .nameName {
@@ -126,4 +229,13 @@ export default {
     text-overflow: ellipsis;
     /* 显示省略号 */
 }
+
+.rightList {
+    width: 100px;
+    height: auto;
+    position: absolute;
+    background-color: white;
+    border: 1px solid black;
+    border-radius: 5px;
+}
 </style>

+ 7 - 7
src/views/myfile/modalComponebts/SpaceBig.vue

@@ -56,13 +56,13 @@ export default {
             emit("getSpaceC", askTo.value)
         }
         function addSpace() {
-            // fileSpace.addSpace({
-            //     spaceId: spid - 0,
-            //     expandCap: spaceForm.value.newCup - 0,
-            //     expandReason: spaceForm.value.newTalk
-            // }).then(res => {
-            //     console.log(res,'ssq');
-            // })
+            fileSpace.addSpace({
+                spaceId: spid - 0,
+                expandCap: spaceForm.value.newCup - 0,
+                expandReason: spaceForm.value.newTalk
+            }).then(res => {
+                console.log(res,'ssq');
+            })
             askTo.value = false
             emit("getSpaceC", askTo.value)
         }

+ 177 - 0
src/views/myjoin/MyJoin.vue

@@ -0,0 +1,177 @@
+<template>
+    <div>
+        <div class="bigBox">
+            <!-- 功能 -->
+            <div class="tabBox">
+                <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick" tab-position="top">
+                    <el-tab-pane label="我发起的" name="first">
+                        <div>
+                            <el-button @click="newFileAdd">新建文件</el-button>
+                        </div>
+                        <div>
+                            <el-table :data="myEjoy" style="width: 100%">
+                                <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="时间" sortable width="180" />
+                                <el-table-column prop="fileType" label="类型" />
+                                <el-table-column label="大小">
+                                    <template #default="scope">
+                                        <span>
+                                            {{ formatFileSize(scope.row.fileSize) }}
+                                        </span>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </div>
+                    </el-tab-pane>
+                    <el-tab-pane label="我参与的" name="second">
+                        <el-table :data="myPack" style="width: 100%">
+                            <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="时间" sortable width="180" />
+                            <el-table-column prop="fileType" label="类型" />
+                            <el-table-column label="大小">
+                                <template #default="scope">
+                                    <span>
+                                        {{ formatFileSize(scope.row.fileSize) }}
+                                    </span>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                    </el-tab-pane>
+                </el-tabs>
+            </div>
+            <!-- 新增文件盒子 -->
+            <div>
+                <AddFile v-if="newAdd" :newAdd="newAdd" @threeBe="threeBe"></AddFile>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted } from 'vue'
+import fileCount from '../../api/fileCount/fileCount';
+import ImgFile from '../myfile/jsComponents/ImgFile';
+import AddFile from './components/AddFile.vue'
+import { ElMessage } from 'element-plus';
+export default {
+    setup() {
+        const activeName = ref('first')
+        let collectImg = ref(true)
+        let myEjoy = ref([])
+        let myPack = ref([])
+        let newAdd = ref(false)
+        function getCountPeople() {
+            fileCount.myCount({}).then(res => {
+                myEjoy.value = res.rows
+            })
+        }
+        function getMyJoin() {
+            fileCount.myJoin({}).then(res => {
+                myPack.value = res.rows
+            })
+        }
+        function handleClick(data, e) {
+            console.log(data, e, 'tab');
+        }
+        function getImage(file) {
+            if (file === '.txt') {
+                return ImgFile.txt
+            } else if (file === '.xlxs' || file === '.docx') {
+                return ImgFile.xlxs
+            } else if (file === '.pptx') {
+                return ImgFile.pptx
+            } else if (file === '.word') {
+                return ImgFile.word
+            } else if (file === '.pdf') {
+                return ImgFile.pdf
+            }
+        }
+        function formatFileSize(fileSize) {
+            if (fileSize >= 1024 * 1024 * 1024) {
+                // 大于等于1GB,显示GB
+                return (fileSize / (1024 * 1024 * 1024)).toFixed(2) + 'GB';
+            } else if (fileSize >= 1024 * 1024) {
+                // 大于等于1MB,显示MB
+                return (fileSize / (1024 * 1024)).toFixed(2) + 'MB';
+            } else if (fileSize >= 1024) {
+                // 大于等于1KB,显示KB
+                return (fileSize / 1024).toFixed(2) + 'KB';
+            } else {
+                // 小于1KB,显示字节
+                return fileSize + 'B';
+            }
+        }
+        function newFileAdd(){
+            newAdd.value = true
+        }
+        function threeBe(data){
+            newAdd.value = data
+        }
+        onMounted(() => {
+            getCountPeople()
+            getMyJoin()
+        })
+        return {
+            activeName,
+            handleClick,
+            myEjoy,
+            myPack,
+            getCountPeople,
+            getMyJoin,
+            collectImg,
+            getImage,
+            formatFileSize,
+            newAdd,
+            newFileAdd,
+            threeBe,
+        }
+    },
+    components:{
+        AddFile,
+    }
+}
+</script>
+
+<style scoped>
+.bigBox {
+    width: 100%;
+    height: 92vh;
+    margin: 0 auto;
+    background-color: white;
+}
+
+.tabBox {
+    width: 100%;
+    height: 40px;
+    margin: 0 auto;
+    background-color: #F5F7F9;
+}
+
+:deep(.el-tabs__nav) {
+    margin: 0 calc(100% - 55%);
+}
+</style>

+ 140 - 0
src/views/myjoin/components/AddFile.vue

@@ -0,0 +1,140 @@
+<template>
+    <div>
+        <div>
+            <el-dialog v-model="addFile" title="新建文件" width="30%" @close="backTo">
+                <el-form :model="createFile">
+                    <el-form-item label="文件目录">
+                        <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" />
+                    </el-form-item>
+                    <el-form-item label="你选择的目录是">
+                        <p>{{ nowFolder }}</p>
+                    </el-form-item>
+                    <el-form-item label="文件名">
+                        <el-input v-model="createFile.name" maxlength="150" placeholder="请输入文件名" type="textarea" />
+                    </el-form-item>
+                    <el-form-item label="文件类型">
+                        <el-select v-model="createFile.fileType" clearable placeholder="Select" @change="optChange">
+                            <el-option v-for="item in typeF" :key="item.value" :label="item.label" :value="item.value" />
+                        </el-select>
+                    </el-form-item>
+                </el-form>
+                <template #footer>
+                    <span class="dialog-footer">
+                        <el-button @click="back">取消</el-button>
+                        <el-button type="primary" @click="sureAddFile">
+                            确定
+                        </el-button>
+                    </span>
+                </template>
+            </el-dialog>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, toRef } from 'vue'
+import fileCount from "../../../api/fileCount/fileCount"
+import documents from '../../../api/document/document';
+export default {
+    props: {
+        newAdd: {
+            type: Boolean,
+            required: true
+        }
+    },
+    setup(props, { emit }) {
+        let { sureAddFile, back } = toRef(props)
+        let result = props.newAdd
+        let createFile = ref({
+            name: "",
+            fileType: ""
+        })
+        let treeData = ref([])
+        let defaultProps = ref({
+            label: "label",
+            value: "id",
+            disable: false
+        })
+        let typeF = ref([
+            {
+                label: "word",
+                value: "word"
+            },
+            {
+                label: "excel",
+                value: "excel"
+            },
+            {
+                label: "ppt",
+                value: "ppt"
+            },
+            {
+                label: "txt",
+                value: "txt"
+            }
+        ])
+        let noChangeSpaceId = ref(0)
+        let dirIds = ref(0)
+        let addFile = ref(false)
+        let nowFolder = ref("")
+        function inlineList() {
+            addFile.value = result
+        }
+        //获取文件树
+        function getFileTree() {
+            documents.fileTree(3).then(res => {
+                treeData.value = [res]
+            })
+            documents.getTop(3).then(res => {
+                noChangeSpaceId.value = res.spaceId
+            })
+        }
+        function handleNodeClick(data) {
+            console.log(data, 'data');
+            dirIds.value = data.id
+            nowFolder.value = data.label
+        }
+        function backTo() {
+            addFile.value = false
+            emit('threeBe', addFile.value)
+        }
+        function everyDunk() {
+            fileCount.createFiles({
+                dirId: dirIds.value - 0,
+                spaceId: noChangeSpaceId.value - 0,
+                type: createFile.value.fileType + ""
+            }).then(res => {
+                console.log(res, 'rrr');
+                addFile.value = false
+                emit('threeBe', addFile.value)
+            })
+
+        }
+        function optChange(e) {
+            createFile.value.fileType = e
+        }
+        onMounted(() => {
+            inlineList()
+            getFileTree()
+        })
+        return {
+            createFile,
+            getFileTree,
+            treeData,
+            defaultProps,
+            handleNodeClick,
+            typeF,
+            addFile,
+            backTo,
+            noChangeSpaceId,
+            dirIds,
+            back: backTo,
+            sureAddFile: everyDunk,
+            nowFolder,
+            optChange,
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 1 - 1
vite.config.js

@@ -41,7 +41,7 @@ export default defineConfig(({
 				'/dev-api': {
 					// target: 'http://192.168.1.28:8080/',
 					// target: 'http://8.142.173.95:19527/',
-					target:'http://192.168.1.11:8080/',
+					target:'http://192.168.1.28:8080/',
 					changeOrigin: true,
 					rewrite: (p) => p.replace(/^\/dev-api/, '')
 				},