浏览代码

普通增删

liyangzheng 2 年之前
父节点
当前提交
54e8dbfd97
共有 6 个文件被更改,包括 345 次插入70 次删除
  1. 29 0
      src/api/document/document.js
  2. 31 2
      src/api/myfile/myfile.js
  3. 2 2
      src/api/space/space.js
  4. 33 33
      src/utils/request.js
  5. 1 1
      src/views/department/Department.vue
  6. 249 32
      src/views/myfile/MyFile.vue

+ 29 - 0
src/api/document/document.js

@@ -0,0 +1,29 @@
+import request from '../../utils/request'
+// 获取所有
+function getALLdocument(data) {
+    return request({
+        url: `/biz/dir/list`,
+        method: "get",
+        params: data,
+    })
+}
+// 新增
+function addDocument(data) {
+    return request({
+        url: `/biz/dir`,
+        method: "post",
+        data,
+    })
+}
+// 删除
+function delDocument(data) {
+    return request({
+        url: `/biz/dir/${data}`,
+        method: "delete",
+    })
+}
+export default {
+    getALLdocument,
+    addDocument,
+    delDocument
+}

+ 31 - 2
src/api/myfile/myfile.js

@@ -1,12 +1,41 @@
 import request from "../../../src/utils/request"
 // 查询文档目录管理列表
-function get(data) {
+function getAllFileMenu(data) {
     return request({
         url: "/biz/info/list",
         method: "get",
         params: data
     })
 }
+// 新增文档目录
+function addNewMenu(data) {
+    return request({
+        url: "/biz/info",
+        method: "post",
+        data
+    })
+}
+// 删除文档目录
+function delMenu(data) {
+    return request({
+        url: `/biz/info/${data}`,
+        method: "delete",
+    })
+}
+// 上传文件
+function uploadFile(data) {
+    return request({
+        url: `/biz/info/upload`,
+        method: "post",
+        data,
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        },
+    })
+}
 export default {
-    get,
+    getAllFileMenu,
+    addNewMenu,
+    delMenu,
+    uploadFile,
 }

+ 2 - 2
src/api/space/space.js

@@ -1,9 +1,9 @@
 import request from "../../../src/utils/request"
 function getSpaceOut(data) {
     return request({
-        url: '/biz/expansion/list',
+        url: `/biz/expansion/list`,
         method: "get",
-        params: data
+        params: data,
     })
 }
 export default {

+ 33 - 33
src/utils/request.js

@@ -1,5 +1,5 @@
 import axios from 'axios'
-import { ElNotification , ElMessageBox, ElMessage, ElLoading } from 'element-plus'
+import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus'
 import { getToken } from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 import { tansParams, blobValidate } from '@/utils/ruoyi'
@@ -67,46 +67,46 @@ service.interceptors.request.use(config => {
   }
   return config
 }, error => {
-    console.log(error)
-    Promise.reject(error)
+  console.log(error)
+  Promise.reject(error)
 })
 
 // 响应拦截器
 service.interceptors.response.use(res => {
-    // 未设置状态码则默认成功状态
-    const code = res.data.code || 200;
-    // 获取错误信息
-    const msg = errorCode[code] || res.data.msg || errorCode['default']
-    // 二进制数据则直接返回
-    if (res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer') {
-      return res.data
-    }
-    if (code === 401) {
-      if (!isRelogin.show) {
-        isRelogin.show = true;
-        ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
-          isRelogin.show = false;
-          useUserStore().logOut().then(() => {
-            location.href = '/index';
-          })
+  // 未设置状态码则默认成功状态
+  const code = res.data.code || 200;
+  // 获取错误信息
+  const msg = errorCode[code] || res.data.msg || errorCode['default']
+  // 二进制数据则直接返回
+  if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
+    return res.data
+  }
+  if (code === 401) {
+    if (!isRelogin.show) {
+      isRelogin.show = true;
+      ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
+        isRelogin.show = false;
+        useUserStore().logOut().then(() => {
+          location.href = '/index';
+        })
       }).catch(() => {
         isRelogin.show = false;
       });
     }
-      return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
-    } else if (code === 500) {
-      ElMessage({ message: msg, type: 'error' })
-      return Promise.reject(new Error(msg))
-    } else if (code === 601) {
-      ElMessage({ message: msg, type: 'warning' })
-      return Promise.reject(new Error(msg))
-    } else if (code !== 200) {
-      ElNotification.error({ title: msg })
-      return Promise.reject('error')
-    } else {
-      return  Promise.resolve(res.data)
-    }
-  },
+    return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
+  } else if (code === 500) {
+    ElMessage({ message: msg, type: 'error' })
+    return Promise.reject(new Error(msg))
+  } else if (code === 601) {
+    ElMessage({ message: msg, type: 'warning' })
+    return Promise.reject(new Error(msg))
+  } else if (code !== 200) {
+    ElNotification.error({ title: msg })
+    return Promise.reject('error')
+  } else {
+    return Promise.resolve(res.data)
+  }
+},
   error => {
     console.log('err' + error)
     let { message } = error;

+ 1 - 1
src/views/department/Department.vue

@@ -485,7 +485,7 @@ export default {
             }
         ])
         function getAll() {
-            myfile.get().then(res => {
+            myfile.getAllFileMenu().then(res => {
                 console.log(res, 'eee');
             })
         }

+ 249 - 32
src/views/myfile/MyFile.vue

@@ -11,7 +11,7 @@
                         </el-icon>
                     </div>
                     <div>
-                        <el-icon style="font-size: 24px;">
+                        <el-icon style="font-size: 24px;" @click="createNewMenu">
                             <Plus />
                         </el-icon>
                     </div>
@@ -20,21 +20,23 @@
                 <div
                     style="display: flex;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;height: 540px;">
                     <!-- v-for盒子 -->
-                    <div class="setBox" @click="changeFile">
-                        <el-dropdown trigger="click" class="selectChe">
-                            <span class="el-dropdown-link">
-                                ...
-                            </span>
-                            <template #dropdown>
-                                <el-dropdown-menu>
-                                    <el-dropdown-item>重命名</el-dropdown-item>
-                                    <el-dropdown-item>删除</el-dropdown-item>
-                                </el-dropdown-menu>
-                            </template>
-                        </el-dropdown>
-                        <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
-                        <p>xxx文件</p>
-                    </div>
+                    <template v-for="(item, index) in fileMenu">
+                        <div class="setBox" @click="changeFile">
+                            <el-dropdown trigger="click" class="selectChe">
+                                <span class="el-dropdown-link">
+                                    ...
+                                </span>
+                                <template #dropdown>
+                                    <el-dropdown-menu>
+                                        <el-dropdown-item>重命名</el-dropdown-item>
+                                        <el-dropdown-item @click="delBoser(item)">删除</el-dropdown-item>
+                                    </el-dropdown-menu>
+                                </template>
+                            </el-dropdown>
+                            <img src="../../assets/images/fileStyle.png" style="width: 72px;height: 72px;">
+                            <p>{{ item.dirName }}</p>
+                        </div>
+                    </template>
                 </div>
                 <div>
                     <p>
@@ -100,6 +102,11 @@
                                     </span>
                                     <template #dropdown>
                                         <el-dropdown-menu>
+                                            <el-dropdown-item @click="fileUpload">
+                                                <img src="../../assets/images/file.png" alt="">
+                                                <span id="uploadButton">上传</span>
+                                                <input id="fileInput" type="file" style="display: none;">
+                                            </el-dropdown-item>
                                             <template v-for="(item, index) in arrorMenu">
                                                 <el-dropdown-item>
                                                     <img :src="item.img" alt="">
@@ -152,16 +159,15 @@
                         <el-collapse v-model="files" accordion class="collapse">
                             <el-collapse-item title="文件" name="2" class="">
                                 <el-table :data="fileList" style="width: 100%" @row-click="handleRowClick">
-                                    <el-table-column label="Image" width="100">
+                                    <!-- <el-table-column label="Image" width="100">
                                         <template slot-scope="scope">
-                                            <!-- 插入固定图片 -->
-                                            <span>1</span>
                                             <img :src="fileBox" alt="" />
                                         </template>
-                                    </el-table-column>
-                                    <el-table-column prop="date" label="Date" width="180" />
-                                    <el-table-column prop="name" label="Name" width="180" />
-                                    <el-table-column prop="address" label="Address" />
+                                    </el-table-column> -->
+                                    <el-table-column prop="fileName" label="名称" width="180" />
+                                    <el-table-column prop="createTime" label="时间" width="180" />
+                                    <el-table-column prop="fileType" label="类型" />
+                                    <el-table-column prop="fileSize" label="大小" />
                                 </el-table>
                                 <div class="setCli" v-if="cliCC">
                                     <template v-for="(item, index) in mouseCli">
@@ -225,6 +231,74 @@
                     </template>
                 </el-dialog>
             </div>
+            <!-- 新增中栏下方菜单弹窗 -->
+            <div>
+                <el-dialog v-model="addBoser" title="Tips" width="30%">
+                    <el-form :model="boserForm" label-width="120px">
+                        <el-form-item label="空间id">
+                            <el-input v-model="boserForm.spaceId" />
+                        </el-form-item>
+                        <el-form-item label="目录类型">
+                            <el-input v-model="boserForm.dirType" />
+                        </el-form-item>
+                        <el-form-item label="目录权限">
+                            <el-input v-model="boserForm.dirPower" />
+                        </el-form-item>
+                        <el-form-item label="目录名称">
+                            <el-input v-model="boserForm.dirName" />
+                        </el-form-item>
+                        <el-form-item label="父目录id">
+                            <el-input v-model="boserForm.parentId" />
+                        </el-form-item>
+                        <el-form-item label="备注">
+                            <el-input v-model="boserForm.remark" />
+                        </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>
+            </div>
+            <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>
+                        <el-form-item label="文件名称">
+                            <el-input v-model="fileForm.fileName" />
+                        </el-form-item>
+                        <el-form-item label="文件id">
+                            <el-input v-model="fileForm.fileId" />
+                        </el-form-item>
+                        <el-form-item label="文件大小">
+                            <el-input v-model="fileForm.fileSize" />
+                        </el-form-item>
+                        <el-form-item label="文件类型">
+                            <el-input v-model="fileForm.fileType" />
+                        </el-form-item>
+                        <el-form-item label="备注">
+                            <el-input v-model="fileForm.remark" />
+                        </el-form-item>
+                    </el-form>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="addFile = false">取消</el-button>
+                            <el-button type="primary" @click="sureAddFile">
+                                确认
+                            </el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </div>
         </div>
     </div>
 </template>
@@ -233,6 +307,7 @@
 import { ref } from 'vue'
 import myfile from '../../api/myfile/myfile'
 import space from '../../api/space/space'
+import documents from '../../api/document/document'
 import { Search } from '@element-plus/icons-vue'
 import copy from '../../assets/images/copy.png'
 import clipboard from '../../assets/images/clipboard.png'
@@ -257,6 +332,7 @@ import history from '../../assets/images/history.png'
 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'
 export default {
     setup() {
         let searchFire = ref('')
@@ -269,9 +345,29 @@ export default {
         let askTalk = ref('')
         let cliCC = ref(false)
         let transferModal = ref(false)
+        let addBoser = ref(false)
+        let addFile = ref(false)
         let anyP = ref(false)
+        let clickRowId = ref("")
         let trandata = ref(generateData())
         let tranvalue = ref([])
+        let boserForm = ref({
+            spaceId: "",//空间id
+            dirName: "",
+            dirPower: "",
+            dirType: "",
+            parentId: "",
+            remark: ""//备注
+        })
+        let fileForm = ref({
+            dirId: '',
+            fileId: "",
+            fileName: "",
+            fileSize: '',
+            fileType: "",
+            remark: "",
+            spaceId: '',
+        })
         let fileList = ref([
             {
                 date: '2016-05-03',
@@ -323,10 +419,10 @@ export default {
             },
         ])
         let arrorMenu = ref([
-            {
-                img: file,
-                name: "文件"
-            },
+            // {
+            //     img: file,
+            //     name: "文件"
+            // },
             {
                 img: folder,
                 name: '文件夹'
@@ -390,9 +486,12 @@ export default {
                 name: "删除"
             }
         ])
+        let fileMenu = ref([])
         function getAll() {
-            myfile.get().then(res => {
-                console.log(res, 'eee');
+            myfile.getAllFileMenu({}).then(res => {
+                if (res.code === 200) {
+                    fileList.value = res.rows
+                }
             })
         }
         function changeFile(row) {
@@ -408,6 +507,7 @@ export default {
         }
         // 文件名表格每一行点击事件
         function handleRowClick(row) {
+            clickRowId.value = row.dirId
             cliCC.value = true
         }
         // 申请扩容
@@ -419,6 +519,7 @@ export default {
         }
         //mouse弹框
         function chooseSet(row, num) {
+            console.log(row, '1');
             if (row.name == '在线编辑' || row.name == '协作') {
                 cliCC.value = true
             } else {
@@ -434,6 +535,11 @@ export default {
             } else {
                 anyP.value = false
             }
+            if (row.name == '删除') {
+                myfile.delMenu(clickRowId.value).then(res => {
+                    console.log(res, 'sss');
+                })
+            }
         }
         function chooseSet1() {
             transferModal.value = true
@@ -463,11 +569,108 @@ export default {
         function filterMethod(query, item) {
             return item.initial.toLowerCase().includes(query.toLowerCase())
         }
-        function getSpace(){
-            space.getSpaceOut({}).then(res=>{
-                console.log(res,'111');
+        function getSpace() {
+
+        }
+
+        function createNewMenu() {
+            addBoser.value = true
+        }
+        // 新增中栏下方数据
+        function sureAddBoser() {
+            documents.addDocument({
+                "dirName": boserForm.value.dirName,
+                "dirRole": boserForm.value.dirPower,
+                "dirType": boserForm.value.dirType,
+                "parentId": boserForm.value.parentId,
+                "remark": boserForm.value.remark,
+                "spaceId": boserForm.value.spaceId,
+            }).then(res => {
+                if (res.code === 200) {
+                    ElMessage({
+                        message: '添加成功',
+                        type: 'success',
+                    })
+                }
+                addBoser.value = false
+                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
             })
         }
+        function createNewFile() {
+            addFile.value = true
+        }
+        function sureAddFile() {
+            myfile.addNewMenu(
+                {
+                    "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,
+                }
+            ).then(res => {
+                if (res.code === 200) {
+                    ElMessage({
+                        message: "新增成功",
+                        type: "success"
+                    })
+                    getAll()
+                    addFile.value = false
+                } else {
+                    ElMessage({
+                        message: "请检查错误",
+                        type: "warning"
+                    })
+                }
+            })
+        }
+        function fileUpload() {
+            const fileInput = document.getElementById('fileInput');
+            const uploadButton = document.getElementById('uploadButton');
+            // 监听按钮点击事件
+            uploadButton.addEventListener('click', function () {
+                // 模拟点击文件上传输入框
+                fileInput.click();
+            });
+
+            // 监听文件选择事件
+            fileInput.addEventListener('change', function () {
+                const files = fileInput.files[0]; // 获取选择的文件
+                myfile.uploadFile({
+                    spaceId: 1,
+                    dirId: 1,
+                    file: files
+                }).then(res => {
+                    console.log(res, '222');
+                    if(res.code ===200){
+                        ElMessage({
+                            message:"上传文件成功",
+                            type:"success"
+                        })
+                        getAll()
+                    }
+                })
+            });
+        }
         return {
             folderList,//文件夹的数据
             fileList,//文件夹的数据
@@ -513,11 +716,25 @@ export default {
             anyP,
             chooseSet1,
             getSpace,//获取内存空间
+            fileMenu,
+            addBoser,
+            boserForm,
+            createNewMenu,
+            sureAddBoser,
+            delBoser,
+            getAllText,
+            clickRowId,
+            addFile,
+            createNewFile,
+            fileForm,
+            sureAddFile,
+            fileUpload,
         }
     },
     created() {
         this.getAll();
         this.getSpace()
+        this.getAllText()
     },
 }
 </script>