Browse Source

解决config中冲突后的提交

“yueshang” 2 năm trước cách đây
mục cha
commit
f272b2c75a

+ 10 - 1
src/api/document/document.js

@@ -15,6 +15,14 @@ function addDocument(data) {
         data,
     })
 }
+// 修改
+function editDocument(data) {
+    return request({
+        url: `/biz/dir`,
+        method: "put",
+        data,
+    })
+}
 // 删除
 function delDocument(data) {
     return request({
@@ -25,5 +33,6 @@ function delDocument(data) {
 export default {
     getALLdocument,
     addDocument,
-    delDocument
+    delDocument,
+    editDocument
 }

+ 38 - 0
src/api/filespace/fileSpace.js

@@ -0,0 +1,38 @@
+import request from '../../utils/request'
+// 获取文档空间
+function getFileSpace(data) {
+    return request({
+        url: `/biz/space/list`,
+        method: "get",
+        params: data
+    })
+}
+// 新增文档空间
+function addFileSpace(data) {
+    return request({
+        url: `/biz/space`,
+        method: "post",
+        data
+    })
+}
+// 删除文档空间
+function delFileSpace(data) {
+    return request({
+        url: `/biz/space/${data}`,
+        method: "delete",
+    })
+}
+// 修改文档空间
+function editFileSpace(data) {
+    return request({
+        url: `/biz/space`,
+        method: "put",
+        data
+    })
+}
+export default {
+    getFileSpace,
+    addFileSpace,
+    delFileSpace,
+    editFileSpace,
+}

BIN
src/assets/images/pdf.png


BIN
src/assets/images/pptx.png


BIN
src/assets/images/txt.png


BIN
src/assets/images/word.png


BIN
src/assets/images/xlxs.png


+ 2 - 2
src/main.js

@@ -19,7 +19,7 @@ import { download } from '@/utils/request'
 //引入字体
 import '@/assets/fonts/font.css'
 
-import VueDND from 'awe-dnd'
+// import VueDND from 'awe-dnd'
 // svg图标
 import 'virtual:svg-icons-register'
 import SvgIcon from '@/components/SvgIcon'
@@ -73,7 +73,7 @@ app.component('Editor', Editor)
 
 app.use(router)
 app.use(store)
-app.use(VueDND)
+// app.use(VueDND)
 app.use(plugins)
 app.use(elementIcons)
 app.component('svg-icon', SvgIcon)

+ 1 - 1
src/views/chat/msg/index.vue

@@ -149,7 +149,7 @@
 </template>
 
 <script setup name="Msg">
-import { listMsg, getMsg, delMsg, addMsg, updateMsg } from "@/api/chat/msg";
+import { listMsg, getMsg, addMsg, updateMsg } from "@/api/chat/msg";
 
 const { proxy } = getCurrentInstance();
 const { chat_msg_type } = proxy.useDict('chat_msg_type');

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

@@ -342,6 +342,11 @@ 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('')
@@ -641,6 +646,11 @@ export default {
             v1form,
             directoryChange,
             directoryPower,
+            txt,
+            pptx,
+            xlxs,
+            pdf,
+            word,
         }
     },
     created() {

+ 276 - 81
src/views/myfile/MyFile.vue

@@ -11,40 +11,41 @@
                         </el-icon>
                     </div>
                     <div>
-                        <el-icon style="font-size: 24px;" @click="createNewMenu">
+                        <el-icon style="font-size: 24px;" @click="createNewFile">
                             <Plus />
                         </el-icon>
                     </div>
                 </div>
                 <!-- 方块点击盒子 -->
                 <div
-                    style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 540px;">
+                    style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 540px;align-content: flex-start;">
                     <!-- v-for盒子 -->
                     <template v-for="(item, index) in fileMenu">
-                        <div class="setBox" @click="changeFile">
+                        <div class="setBox" @click="changeFile(item, index)">
                             <el-dropdown trigger="click" class="selectChe">
                                 <span class="el-dropdown-link">
                                     ...
                                 </span>
                                 <template #dropdown>
                                     <el-dropdown-menu>
-                                        <el-dropdown-item>重命名</el-dropdown-item>
-                                        <el-dropdown-item @click="delBoser(item)">删除</el-dropdown-item>
+                                        <el-dropdown-item @click="restName(item, index)">重命名</el-dropdown-item>
+                                        <el-dropdown-item @click="delName(item, index)">删除</el-dropdown-item>
                                     </el-dropdown-menu>
                                 </template>
                             </el-dropdown>
                             <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
-                            <p>{{ item.dirName }}</p>
+                            <p class="ellipsis-text" v-if="selectedBox !== index">{{ item.spaceName }}</p>
+                            <el-input v-else v-model="newName" @blur="nameChange(item, index)"></el-input>
                         </div>
                     </template>
                 </div>
                 <div>
                     <p>
-                        <span style="margin-left: 10px;">5G/1T</span>
+                        <span style="margin-left: 10px;">{{ useSpace }}G/{{ allSpace * 1024 }}G</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" />
+                    <el-progress style="margin-left: 8px;" :percentage="percent()" />
                 </div>
             </div>
             <!-- 右侧大盒子 -->
@@ -73,13 +74,13 @@
                                     <Plus />
                                 </el-icon>
                             </div>
-                            <div style="margin-left: 5px;">
+                            <div style="margin-left: 5px;" @click="createNewMenu">
                                 <span style="font-size: 14px;">新建</span>
                             </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="display: flex;width: 82px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;"
+                                @click="getMenu(item, index)">
                                 <div style="margin-left: 5px;">
                                     <img :src="item.img" style="width: 24px;height: 24px;" alt="">
                                 </div>
@@ -148,26 +149,63 @@
                 <div>
                     <!-- 文件夹 -->
                     <div class="detailBox">
-                        <el-collapse v-model="folder" accordion class="collapse">
+                        <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">
+                                    <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>
                     <!-- 文件 -->
                     <div class="fileTable">
-                        <el-collapse v-model="files" accordion class="collapse">
+                        <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">
-                                    <!-- <el-table-column label="Image" width="100">
-                                        <template slot-scope="scope">
-                                            <img :src="fileBox" alt="" />
+                                <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="180">
+                                        <template #default="scope">
+                                            <span>
+                                                <img :src="getImage(scope.row.fileType)" alt="">
+                                                {{ scope.row.fileName }}
+                                            </span>
                                         </template>
-                                    </el-table-column> -->
-                                    <el-table-column prop="fileName" label="名称" width="180" />
+                                    </el-table-column>
                                     <el-table-column prop="createTime" label="时间" width="180" />
                                     <el-table-column prop="fileType" label="类型" />
-                                    <el-table-column prop="fileSize" 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 mouseCli">
@@ -231,7 +269,7 @@
                     </template>
                 </el-dialog>
             </div>
-            <!-- 新增中栏下方菜单弹窗 -->
+            <!-- 新增文件夹弹窗 -->
             <div>
                 <el-dialog v-model="addBoser" title="Tips" width="30%">
                     <el-form :model="boserForm" label-width="120px">
@@ -267,23 +305,20 @@
             <div>
                 <el-dialog v-model="addFile" title="Tips" width="30%">
                     <el-form :model="fileForm" label-width="120px">
-                        <el-form-item label="空间id">
-                            <el-input v-model="fileForm.spaceId" />
-                        </el-form-item>
-                        <el-form-item label="目录id">
-                            <el-input v-model="fileForm.dirId" />
+                        <el-form-item label="空间类型">
+                            <el-input v-model="fileForm.spaceType" />
                         </el-form-item>
-                        <el-form-item label="文件名称">
-                            <el-input v-model="fileForm.fileName" />
+                        <el-form-item label="空间名称">
+                            <el-input v-model="fileForm.spaceName" />
                         </el-form-item>
-                        <el-form-item label="文件id">
-                            <el-input v-model="fileForm.fileId" />
+                        <el-form-item label="空间容量">
+                            <el-input v-model="fileForm.spaceCap" />
                         </el-form-item>
-                        <el-form-item label="文件大小">
-                            <el-input v-model="fileForm.fileSize" />
+                        <el-form-item label="已使用空间">
+                            <el-input v-model="fileForm.usedCap" />
                         </el-form-item>
-                        <el-form-item label="文件类型">
-                            <el-input v-model="fileForm.fileType" />
+                        <el-form-item label="剩余空间">
+                            <el-input v-model="fileForm.freeCap" />
                         </el-form-item>
                         <el-form-item label="备注">
                             <el-input v-model="fileForm.remark" />
@@ -308,6 +343,7 @@ import { ref } from 'vue'
 import myfile from '../../api/myfile/myfile'
 import space from '../../api/space/space'
 import documents from '../../api/document/document'
+import fileSpace from '../../api/filespace/fileSpace'
 import { Search } from '@element-plus/icons-vue'
 import copy from '../../assets/images/copy.png'
 import clipboard from '../../assets/images/clipboard.png'
@@ -333,6 +369,11 @@ import fileBox from '../../assets/images/fileBox.png'
 import user from '../../assets/images/user.png'
 import archiveTray from '../../assets/images/archiveTray.png'
 import { ElMessage } from 'element-plus'
+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('')
@@ -348,9 +389,15 @@ export default {
         let addBoser = ref(false)
         let addFile = ref(false)
         let anyP = ref(false)
+        let selectedBox = ref(-1)
+        let newName = ref('')
         let clickRowId = ref("")
         let trandata = ref(generateData())
+        let folderId = ref('')
+        let fileId = ref('')
         let tranvalue = ref([])
+        let useSpace = ref(0)
+        let allSpace = ref(0)
         let boserForm = ref({
             spaceId: "",//空间id
             dirName: "",
@@ -360,13 +407,12 @@ export default {
             remark: ""//备注
         })
         let fileForm = ref({
-            dirId: '',
-            fileId: "",
-            fileName: "",
-            fileSize: '',
-            fileType: "",
+            spaceType: '',
+            spaceName: "",
+            spaceCap: "",
+            usedCap: "",
+            freeCap: "",
             remark: "",
-            spaceId: '',
         })
         let fileList = ref([
             {
@@ -391,14 +437,6 @@ export default {
             },
         ])
         let menuList = ref([
-            {
-                name: "标签1",
-                choose: "1"
-            },
-            {
-                name: "标签2",
-                choose: "2"
-            },
         ])
         let useMenu = ref([
             {
@@ -487,6 +525,7 @@ export default {
             }
         ])
         let fileMenu = ref([])
+        // 获取所有文件夹
         function getAll() {
             myfile.getAllFileMenu({}).then(res => {
                 if (res.code === 200) {
@@ -494,9 +533,29 @@ export default {
                 }
             })
         }
-        function changeFile(row) {
-
+        // 获取所有中栏
+        function getAllMiddle() {
+            fileSpace.getFileSpace({}).then(res => {
+                fileMenu.value = res.rows
+            })
         }
+        function changeFile(row, num) {
+            this.selectedIndex = num
+            const newItem = {
+                name: row.spaceName,
+                choose: row.spaceId
+            };
+            // 检查 newItem 是否已存在于 menuList 中
+            const isItemExist = menuList.value.some(item => item.choose === newItem.choose);
+            // 如果不存在,则添加它
+            if (!isItemExist) {
+                menuList.value.push(newItem);
+            }
+            console.log(row, 'asdasd');
+            useSpace.value = row.usedCap
+            allSpace.value = row.spaceCap
+        }
+
         // tableMenu切换
         function tableChange(row, num) {
             this.selectedIndex = num
@@ -507,8 +566,12 @@ export default {
         }
         // 文件名表格每一行点击事件
         function handleRowClick(row) {
-            clickRowId.value = row.dirId
-            cliCC.value = true
+            clickRowId.value = row.docId
+            if (cliCC.value === true) {
+                cliCC.value = false
+            } else {
+                cliCC.value = true
+            }
         }
         // 申请扩容
         function askApply() {
@@ -519,7 +582,6 @@ export default {
         }
         //mouse弹框
         function chooseSet(row, num) {
-            console.log(row, '1');
             if (row.name == '在线编辑' || row.name == '协作') {
                 cliCC.value = true
             } else {
@@ -537,7 +599,13 @@ export default {
             }
             if (row.name == '删除') {
                 myfile.delMenu(clickRowId.value).then(res => {
-                    console.log(res, 'sss');
+                    if (res.code === 200) {
+                        ElMessage({
+                            type: "success",
+                            message: "删除成功"
+                        })
+                        getAll()
+                    }
                 })
             }
         }
@@ -596,36 +664,23 @@ export default {
                 getAllText()
             })
         }
-        // 删除中栏下方数据
-        function delBoser(row) {
-            documents.delDocument(row.dirId).then(res => {
-                if (res.code === 200) {
-                    ElMessage({
-                        message: "删除成功",
-                        type: "success"
-                    })
-                    getAllText()
-                }
-            })
-        }
         function getAllText() {
             documents.getALLdocument({}).then(res => {
-                fileMenu.value = res.data
+                folderList.value = res.data
             })
         }
         function createNewFile() {
             addFile.value = true
         }
         function sureAddFile() {
-            myfile.addNewMenu(
+            fileSpace.addFileSpace(
                 {
-                    "dirId": fileForm.value.dirId - 0,
-                    "fileId": fileForm.value.fileId - 0,
-                    "fileName": fileForm.value.fileName,
-                    "fileSize": fileForm.value.fileSize,
-                    "fileType": fileForm.value.fileType,
-                    "remark": fileForm.value.remark,
-                    "spaceId": fileForm.value.spaceId - 0,
+                    "spaceName": fileForm.value.spaceName,
+                    "spaceType": fileForm.value.spaceType,
+                    "spaceCap": fileForm.value.spaceCap - 0,//空间容量
+                    "usedCap": fileForm.value.usedCap - 0,//已用空间
+                    "freeCap": fileForm.value.freeCap - 0,//剩余空间
+                    "remark": fileForm.value.remark,//备注
                 }
             ).then(res => {
                 if (res.code === 200) {
@@ -633,7 +688,7 @@ export default {
                         message: "新增成功",
                         type: "success"
                     })
-                    getAll()
+                    getAllMiddle()
                     addFile.value = false
                 } else {
                     ElMessage({
@@ -651,7 +706,6 @@ export default {
                 // 模拟点击文件上传输入框
                 fileInput.click();
             });
-
             // 监听文件选择事件
             fileInput.addEventListener('change', function () {
                 const files = fileInput.files[0]; // 获取选择的文件
@@ -661,16 +715,113 @@ export default {
                     file: files
                 }).then(res => {
                     console.log(res, '222');
-                    if(res.code ===200){
+                    if (res.code === 200) {
                         ElMessage({
-                            message:"上传文件成功",
-                            type:"success"
+                            message: "上传文件成功",
+                            type: "success"
                         })
                         getAll()
                     }
                 })
             });
         }
+        // 筛选后缀图片
+        function getImage(file) {
+            if (file === '.txt') {
+                return txt
+            } else if (file === '.xlxs' || file === '.docx') {
+                return xlxs
+            } else if (file === '.pptx') {
+                return pptx
+            } else if (file === '.word') {
+                return word
+            } else if (file === '.pdf') {
+                return pdf
+            }
+        }
+        // 表格多选框
+        function handleSelectionChange(val) {
+            if (val.length > 1) {
+                // 如果选择了多项,只保留最后一项
+                val.shift();
+            }
+            if (val.length === 1) {
+                fileId.value = val[0].docId
+            }
+        }
+        // 文件夹
+        function handleSelectionChange1(val) {
+            if (val.length > 1) {
+                // 如果选择了多项,只保留最后一项
+                val.shift();
+            }
+            if (val.length === 1) {
+                folderId.value = val[0].docIds
+            }
+        }
+        // 重命名
+        function restName(row, index) {
+            newName.value = row.spaceName
+            selectedBox.value = index
+        }
+        // 重命名失焦事件
+        function nameChange(row, index) {
+            fileSpace.editFileSpace({
+                "spaceId": row.spaceId,
+                "spaceName": newName.value,
+            }).then(res => {
+                if (res.code === 200) {
+                    getAllMiddle()
+                    selectedBox.value = -1
+                    ElMessage({
+                        message: '重命名成功',
+                        type: "success"
+                    })
+                }
+            })
+        }
+        function getMenu(row, num) {
+            if (row.name === '删除') {
+                // 文件夹删除
+                documents.delDocument(folderId.value).then(res => {
+                    if (res.code === 200) {
+                        ElMessage({
+                            message: "删除成功",
+                            type: "success"
+                        })
+                        getAllText()
+                    }
+                })
+                myfile.delMenu(fileId.value).then(res => {
+                    if (res.code === 200) {
+                        ElMessage({
+                            message: "删除成功",
+                            type: "success"
+                        })
+                        getAll()
+                    }
+                })
+            }
+        }
+        function delName(row, num) {
+            fileSpace.delFileSpace(row.spaceId).then(res => {
+                if (res.code === 200) {
+                    getAllMiddle()
+                    ElMessage({
+                        message: "删除成功",
+                        type: "success"
+                    })
+                }
+            })
+        }
+        // 计算百分比
+        function percent() {
+            let numP = 0
+            if (useSpace.value) {
+                numP = parseInt(useSpace.value / (allSpace.value * 1024) * 100)
+                return numP
+            }
+        }
         return {
             folderList,//文件夹的数据
             fileList,//文件夹的数据
@@ -721,7 +872,7 @@ export default {
             boserForm,
             createNewMenu,
             sureAddBoser,
-            delBoser,
+            // delBoser,
             getAllText,
             clickRowId,
             addFile,
@@ -729,12 +880,35 @@ export default {
             fileForm,
             sureAddFile,
             fileUpload,
+            txt,
+            pptx,
+            xlxs,
+            pdf,
+            word,
+            getImage,//筛选文件类型
+            handleSelectionChange,
+            handleSelectionChange1,
+            selectedBox,//重命名相关
+            restName,//重命名相关
+            newName,//重命名相关
+            nameChange,
+            getMenu,
+            folderId,
+            fileId,
+            getAllMiddle,//拿到所有空间信息
+            delName,//删除空间信息
+            useSpace,//使用空间
+            allSpace,//总空间
+            percent,
         }
     },
     created() {
         this.getAll();
         this.getSpace()
         this.getAllText()
+        this.getAllMiddle()
+    },
+    watch: {
     },
 }
 </script>
@@ -827,6 +1001,9 @@ p {
     font-size: 12px;
     margin-left: 5px;
     position: relative;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
 }
 
 .tableLis {
@@ -840,6 +1017,10 @@ p {
     font-size: 12px;
     margin-left: 5px;
     position: relative;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    max-width: auto;
 }
 
 .manyUse {
@@ -882,6 +1063,8 @@ p {
 
 .fileTable {
     position: relative;
+    height: 300px;
+    /* overflow-y: auto; */
 }
 
 .setCli {
@@ -925,4 +1108,16 @@ p {
 ::v-deep [data-v-69cdaa40] .el-collapse-item__header {
     padding-left: 10px;
 }
+
+::v-deep .el-collapse-item__content {
+    height: 260px;
+    overflow-y: auto;
+}
+
+.ellipsis-text {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    max-width: auto;
+}
 </style>

+ 1 - 3
vite.config.js

@@ -39,9 +39,7 @@ export default defineConfig(({
 			proxy: {
 				// https://cn.vitejs.dev/config/#server-proxy
 				'/dev-api': {
-					// target: 'http://192.168.1.28:8080/',
-					target:'http://8.142.173.95:19527/',
-					changeOrigin: true,
+					target: 'http://192.168.1.28:8080/',					changeOrigin: true,
 					rewrite: (p) => p.replace(/^\/dev-api/, '')
 				},
 				//websocket代理