Explorar o código

Merge branch 'liuqiang' into v3

liuQiang hai 1 ano
pai
achega
36d305b3fb

+ 1 - 0
package.json

@@ -23,6 +23,7 @@
     "axios": "0.27.2",
     "clipboard": "^2.0.11",
     "echarts": "5.4.0",
+    "el-table-infinite-scroll": "^3.0.3",
     "element-plus": "2.2.27",
     "file-saver": "2.0.5",
     "fuse.js": "6.6.2",

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

@@ -7,11 +7,10 @@ function getAllFileMenu(data) {
         params: data
     })
 }
-function getById(num,data) {
+function getById(num) {
     return request({
         url: `/biz/info/list/${num}`,
         method: "get",
-        params:data
     })
 }
 // 新增

+ 61 - 6
src/views/department/MyFile.vue

@@ -223,7 +223,7 @@
                     <div class="fileTable">
                         <el-collapse v-model="files" >
                             <el-collapse-item title="文件" name="2" class="">
-                                <el-table v-if="fileGrid" height="38vh" :data="fileList" :scrollbar-always-on="true" style="width: 100%"
+                                <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid" height="38vh" :data="fileList" :scrollbar-always-on="true" style="width: 100%"
                                     @row-contextmenu="handleRowClick" @selection-change="handleSelectionChange"
                                     @row-click="mouseClick" :default-sort="{ prop: 'createTime', order: 'descending' }">
                                     <el-table-column type="selection" width="55" />
@@ -419,8 +419,12 @@ import fileSpace from '../../api/filespace/fileSpace';
 import { getLeveldetail } from '../../api/level/level';
 import { encrypt, decrypt } from "@/utils/jsencrypt";
 import Cookies from "js-cookie";
+import elTableInfiniteScroll from 'el-table-infinite-scroll'
 
 export default {
+    directives: {
+            'el-table-infinite-scroll': elTableInfiniteScroll
+    },
     setup() {
         const { proxy } = getCurrentInstance();
         let fileTrees = ref(false)//filetree父传子
@@ -621,6 +625,9 @@ export default {
         const addTab = inject("addTab");
         const addFileTab = inject("addFileTab");
         const addFolderAdd = inject("addFolderAdd");
+        const filePageNum = ref(1) //获取文件分页
+        const tableBeEnd = ref(true)//控制下拉是否到底
+        const tableTotal = ref(0)//表格数据总数
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(2).then(res => {
@@ -1069,6 +1076,10 @@ export default {
 
         // 文件夹每行点击事件
         function folderClick(row, list) {
+            // 初始化分页数据
+            tableBeEnd.value = true
+            filePageNum.value = 1
+            tableTotal.value = 0
             // 上一级dirId就是下一级的parentId
             // 判断是点击打开还是右键菜单打开
             if(row){
@@ -1088,20 +1099,32 @@ export default {
             // console.log('topPath',toRaw(topPath.value));
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
+            const query = `${newDirId.value}?pageSize=10&pageNum=${filePageNum.value}`
             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 => {
+                   myfile.getById(query).then(res => {
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = res.rows
                         }
                     })
                 } else {
-                    myfile.getById(newDirId.value).then(res => {
+                    myfile.getById(query).then(res => {
+                        console.log('folerFile',res);
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = JSON.parse(JSON.stringify(res.rows))
                             // console.log('fileList',toRaw(fileList.value));
                         }
@@ -1503,6 +1526,34 @@ export default {
                 reader.readAsText(res);
             })
         }
+        // 触底加载事件
+        const setScroll =async ()=>{
+            console.log('setScroll','到底喽');
+
+            // console.log('tableBeEnd.value',tableBeEnd.value);
+            filePageNum.value = filePageNum.value+1
+            const query = `${thisFolder.value.dirId}?pageSize=10&pageNum=${filePageNum.value}`
+            // -------------先禁止掉事件 定时器1秒钟后才能再次触发
+            tableBeEnd.value = true
+            
+            // --------------------
+            const res = await myfile.getById(query)
+            console.log('setScrollres',res);
+            if (res.code === 200) {
+                // const newarr = res.rows.concat(toRaw(fileList.value))
+                const newarr = toRaw(fileList.value).concat(res.rows)
+                console.log('newarr',newarr);
+                fileList.value = JSON.parse(JSON.stringify(newarr))
+                if(newarr.length < tableTotal.value){
+                    //获取后的数量<total就可以再次获取
+                    setTimeout(()=>{
+                        tableBeEnd.value = false 
+                    },1000)
+                }
+            }
+            // console.log('query',query);
+            // console.log('fileList',fileList.value);
+        }
         onMounted(() => {
             getAllTop()
             getSpaceList()
@@ -1516,9 +1567,9 @@ export default {
             setTimeout(()=>{
                 if(route.query.clickRowId){
                     const newRow = JSON.parse(route.query.clickRowId)
-                    console.log('newRow',newRow);
+                    // console.log('newRow',newRow);
                      myfile.getDir(newRow).then(res=>{
-                        console.log('tores',res);
+                        // console.log('tores',res);
                         thisFolder.value = res.data
                         refreshFile()
                     })
@@ -1718,7 +1769,11 @@ export default {
             addTab,
             addFileTab,
             addFolderAdd,
-            ordinaryFolder
+            ordinaryFolder,
+            filePageNum,
+            setScroll,
+            tableBeEnd,
+            tableTotal
         }
     },
     watch: {

+ 61 - 7
src/views/myfile/MyFile.vue

@@ -256,8 +256,8 @@
                         <!-- 文件 -->
                         <div class="fileTable">
                             <el-collapse v-model="files"  >
-                                <el-collapse-item title="文件" name="2" class="custom-collapse-item">
-                                    <el-table v-if="fileGrid" height="38vh" :data="fileList" :scrollbar-always-on="true" style="width: 100%;"
+                                <el-collapse-item  title="文件" name="2" class="custom-collapse-item">
+                                     <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd"  v-if="fileGrid" height="38vh" :data="fileList" :scrollbar-always-on="true" style="width: 100%;"
                                         @row-contextmenu="handleRowClick" @selection-change="handleSelectionChange"
                                         @row-click="mouseClick" :default-sort="{ prop: 'createTime', order: 'descending' }">
                                         <el-table-column type="selection" width="55" />
@@ -457,8 +457,12 @@ import fileSpace from '../../api/filespace/fileSpace';
 import { getLeveldetail } from '../../api/level/level';
 import { encrypt, decrypt } from "@/utils/jsencrypt";
 import Cookies from "js-cookie";
+import elTableInfiniteScroll from 'el-table-infinite-scroll'
 
 export default {
+     directives: {
+        'el-table-infinite-scroll': elTableInfiniteScroll
+    },
     setup() {
         const { proxy } = getCurrentInstance();
         let fileTrees = ref(false)//filetree父传子
@@ -643,6 +647,9 @@ export default {
         const addFileTab = inject("addFileTab");
         const addFolderAdd = inject("addFolderAdd");
         const spaceName = ref()
+        const filePageNum = ref(1) //获取文件分页
+        const tableBeEnd = ref(true)//控制下拉是否到底
+        const tableTotal = ref(0)//表格数据总数
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(3).then(res => {
@@ -1164,6 +1171,10 @@ export default {
 
         // 文件夹每行点击事件
         function folderClick(row, list) {
+            // 初始化分页数据
+            tableBeEnd.value = true
+            filePageNum.value = 1
+            tableTotal.value = 0
             // 上一级dirId就是下一级的parentId
             // 判断是点击打开还是右键菜单打开
             if(row){
@@ -1182,21 +1193,32 @@ export default {
             // console.log('topPath',toRaw(topPath.value));
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
+            const query = `${newDirId.value}?pageSize=10&pageNum=${filePageNum.value}`
             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 => {
+                    myfile.getById(query).then(res => {
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = res.rows
                         }
                     })
                 } else {
-                    myfile.getById(newDirId.value).then(res => {
+                    myfile.getById(query).then(res => {
                         console.log('folerFile',res);
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = JSON.parse(JSON.stringify(res.rows))
                             // console.log('fileList',toRaw(fileList.value));
                         }
@@ -1586,6 +1608,34 @@ export default {
                 reader.readAsText(res);
             })
         }
+        // 触底加载事件
+        const setScroll =async ()=>{
+            console.log('setScroll','到底喽');
+
+            // console.log('tableBeEnd.value',tableBeEnd.value);
+            filePageNum.value = filePageNum.value+1
+            const query = `${thisFolder.value.dirId}?pageSize=10&pageNum=${filePageNum.value}`
+            // -------------先禁止掉事件 定时器1秒钟后才能再次触发
+            tableBeEnd.value = true
+            
+            // --------------------
+            const res = await myfile.getById(query)
+            // console.log('setScrollres',res);
+            if (res.code === 200) {
+                // const newarr = res.rows.concat(toRaw(fileList.value))
+                const newarr = toRaw(fileList.value).concat(res.rows)
+                console.log('newarr',newarr);
+                fileList.value = JSON.parse(JSON.stringify(newarr))
+                if(newarr.length < tableTotal.value){
+                    //获取后的数量<total就可以再次获取
+                    setTimeout(()=>{
+                        tableBeEnd.value = false 
+                    },1000)
+                }
+            }
+            // console.log('query',query);
+            // console.log('fileList',fileList.value);
+        }
         onMounted(() => {
             // if(!thisFolder.value){
                 getAllTop()
@@ -1614,9 +1664,9 @@ export default {
              setTimeout(()=>{
                 if(route.query.clickRowId){
                     const newRow = JSON.parse(route.query.clickRowId)
-                    console.log('newRow',newRow);
+                    // console.log('newRow',newRow);
                      myfile.getDir(newRow).then(res=>{
-                        console.log('tores',res);
+                        // console.log('tores',res);
                         thisFolder.value = res.data
                         refreshFile()
                     })
@@ -1818,7 +1868,11 @@ export default {
             addFileTab,
             threeBe,
             newAdd,
-            spaceName
+            spaceName,
+            filePageNum,
+            setScroll,
+            tableBeEnd,
+            tableTotal
         }
     },
     watch: {

+ 61 - 6
src/views/publicment/MyFile.vue

@@ -222,7 +222,7 @@
                     <div class="fileTable">
                         <el-collapse v-model="files" >
                             <el-collapse-item title="文件" name="2" class="">
-                                <el-table v-if="fileGrid" :data="fileList" height="38vh" :scrollbar-always-on="true" style="width: 100%"
+                                <el-table v-el-table-infinite-scroll="setScroll" :infinite-scroll-distance="10" :infinite-scroll-disabled="tableBeEnd" v-if="fileGrid" :data="fileList" height="38vh" :scrollbar-always-on="true" style="width: 100%"
                                     @row-contextmenu="handleRowClick" @selection-change="handleSelectionChange"
                                     @row-click="mouseClick" :default-sort="{ prop: 'createTime', order: 'descending' }">
                                     <el-table-column type="selection" width="55" />
@@ -416,8 +416,12 @@ import fileSpace from '../../api/filespace/fileSpace';
 import { getLeveldetail } from '../../api/level/level';
 import { encrypt, decrypt } from "@/utils/jsencrypt";
 import Cookies from "js-cookie";
+import elTableInfiniteScroll from 'el-table-infinite-scroll'
 
 export default {
+    directives: {
+        'el-table-infinite-scroll': elTableInfiniteScroll
+    },
     setup() {
         const { proxy } = getCurrentInstance();
         let fileTrees = ref(false)//filetree父传子
@@ -630,6 +634,9 @@ export default {
         const addTab = inject("addTab");
         const addFileTab = inject("addFileTab");
         const addFolderAdd = inject("addFolderAdd");
+        const filePageNum = ref(1) //获取文件分页
+        const tableBeEnd = ref(true)//控制下拉是否到底
+        const tableTotal = ref(0)//表格数据总数
         // 获取文件夹,中栏,文件
         function getAllTop() {
             documents.getTop(1).then(res => {
@@ -1079,6 +1086,10 @@ export default {
 
         // 文件夹每行点击事件
         function folderClick(row, list) {
+            // 初始化分页数据
+            tableBeEnd.value = true
+            filePageNum.value = 1
+            tableTotal.value = 0
             // 上一级dirId就是下一级的parentId
             // 判断是点击打开还是右键菜单打开
             if(row){
@@ -1098,20 +1109,32 @@ export default {
             // console.log('topPath',toRaw(topPath.value));
             newDirId.value = row.dirId
             newSpaceId.value = row.spaceId
+            const query = `${newDirId.value}?pageSize=10&pageNum=${filePageNum.value}`
             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 => {
+                     myfile.getById(query).then(res => {
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = res.rows
                         }
                     })
                 } else {
-                    myfile.getById(newDirId.value).then(res => {
+                   myfile.getById(query).then(res => {
+                        console.log('folerFile',res);
                         if (res.code === 200) {
+                            tableTotal.value =res.total
+                            if(res.rows.length<res.total){
+                                //第一次拿到的数据少于总数开启下拉事件
+                                tableBeEnd.value = false
+                            }
                             fileList.value = JSON.parse(JSON.stringify(res.rows))
                             // console.log('fileList',toRaw(fileList.value));
                         }
@@ -1512,6 +1535,34 @@ export default {
                 reader.readAsText(res);
             })
         }
+        // 触底加载事件
+        const setScroll =async ()=>{
+            console.log('setScroll','到底喽');
+
+            // console.log('tableBeEnd.value',tableBeEnd.value);
+            filePageNum.value = filePageNum.value+1
+            const query = `${thisFolder.value.dirId}?pageSize=10&pageNum=${filePageNum.value}`
+            // -------------先禁止掉事件 定时器1秒钟后才能再次触发
+            tableBeEnd.value = true
+            
+            // --------------------
+            const res = await myfile.getById(query)
+            // console.log('setScrollres',res);
+            if (res.code === 200) {
+                // const newarr = res.rows.concat(toRaw(fileList.value))
+                const newarr = toRaw(fileList.value).concat(res.rows)
+                console.log('newarr',newarr);
+                fileList.value = JSON.parse(JSON.stringify(newarr))
+                if(newarr.length < tableTotal.value){
+                    //获取后的数量<total就可以再次获取
+                    setTimeout(()=>{
+                        tableBeEnd.value = false 
+                    },1000)
+                }
+            }
+            // console.log('query',query);
+            // console.log('fileList',fileList.value);
+        }
         onMounted(() => {
             getAllTop()
             getSpaceList()
@@ -1526,9 +1577,9 @@ export default {
             setTimeout(()=>{
                if(route.query.clickRowId){
                     const newRow = JSON.parse(route.query.clickRowId)
-                    console.log('newRow',newRow);
+                    // console.log('newRow',newRow);
                      myfile.getDir(newRow).then(res=>{
-                        console.log('tores',res);
+                        // console.log('tores',res);
                         thisFolder.value = res.data
                         refreshFile()
                     })
@@ -1727,7 +1778,11 @@ export default {
             addFolderAdd,
             addFileTab,
             addTab,
-            ordinaryFolder
+            ordinaryFolder,
+            filePageNum,
+            setScroll,
+            tableBeEnd,
+            tableTotal
         }
     },
     watch: {