Selaa lähdekoodia

前台、后台文件页面接口联调

chaihaorui 1 vuosi sitten
vanhempi
commit
9865846452

+ 12 - 0
src/api/homepage/file.js

@@ -0,0 +1,12 @@
1
+import axios from "@/util/ajax";
2
+
3
+export default {
4
+    // 获取文件列表
5
+    fileList(params) {
6
+        return axios.get('/xyjc/index-files/list', { params });
7
+    },
8
+    // 删除文件
9
+    deleteFile(params) {
10
+        return axios.get('/xyjc/index-files/delelteFile', { params });
11
+    }
12
+}

+ 15 - 46
src/pages/homepage/file.vue

@@ -1,8 +1,5 @@
1 1
 <template>
2 2
   <div class="body-wrapper">
3
-    <div class="button-block">
4
-      <el-button type="primary" @click="handleUpload">上传</el-button>
5
-    </div>
6 3
     <el-table :data="tableData">
7 4
       <el-table-column v-for="(item, index) in columns" :key="index" :label="item.label" :prop="item.key">
8 5
       </el-table-column>
@@ -10,7 +7,6 @@
10 7
         label="操作"
11 8
         width="100">
12 9
         <template slot-scope="scope">
13
-          <el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
14 10
           <el-button @click="handleDown(scope.row)" type="text" size="small">下载</el-button>
15 11
         </template>
16 12
       </el-table-column>
@@ -20,30 +16,11 @@
20 16
         :current-page.sync="pageNum" :page-size.sync="pageSize">
21 17
       </el-pagination>
22 18
     </div>
23
-    <el-dialog
24
-      title="上传"
25
-      :visible.sync="dialogVisible"
26
-      width="30%">
27
-      <el-upload
28
-        class="upload-demo"
29
-        action="https://jsonplaceholder.typicode.com/posts/"
30
-        :on-preview="handlePreview"
31
-        :on-remove="handleRemove"
32
-        multiple
33
-        :limit="3"
34
-        :on-exceed="handleExceed"
35
-        :file-list="fileList">
36
-        <el-button size="small" type="primary">点击上传</el-button>
37
-        <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
38
-      </el-upload>
39
-      <span slot="footer" class="dialog-footer">
40
-        <el-button @click="dialogVisible = false">取 消</el-button>
41
-        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
42
-      </span>
43
-    </el-dialog>
44 19
   </div>
45 20
 </template>
46 21
 <script>
22
+import api from "@/api/homepage/file.js";
23
+import config from '@/config/index';
47 24
 
48 25
 export default {
49 26
     components: {},
@@ -52,11 +29,11 @@ export default {
52 29
         columns: [
53 30
           {
54 31
             label: '名称',
55
-            key: 'nameCh'
32
+            key: 'fileName'
56 33
           },
57 34
           {
58 35
             label: '时间',
59
-            key: 'nameEn'
36
+            key: 'createdTime'
60 37
           }
61 38
         ],
62 39
         tableData: [],
@@ -68,34 +45,26 @@ export default {
68 45
       }
69 46
     },
70 47
     mounted() {
48
+      this.getTableData()
71 49
     },
72 50
     watch: {
73 51
 
74 52
     },
75 53
     methods: {
76 54
       handlePageChange() {
77
-        console.log('enter handle page change')
78
-      },
79
-      handleDelete(row) {
80
-        console.log('enter handle delete')
55
+        this.getTableData()
81 56
       },
82 57
       handleDown(row) {
83
-        console.log('enter handle down')
84
-      },
85
-      handleUpload() {
86
-        this.dialogVisible = true
87
-      },
88
-      handleRemove(file, fileList) {
89
-        console.log(file, fileList);
90
-      },
91
-      handlePreview(file) {
92
-        console.log(file);
93
-      },
94
-      handleExceed(files, fileList) {
95
-        this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
58
+        window.location.href = `${this.getUrl()}/xyjc/index-files/download/${row.id}`
96 59
       },
97
-      beforeRemove(file, fileList) {
98
-        return this.$confirm(`确定移除 ${ file.name }?`);
60
+      getTableData() {
61
+        const { pageNum, pageSize } = this
62
+        api.fileList({pageNum, pageSize}).then(res => {
63
+            if (res.success) {
64
+                this.tableData = res.data.records
65
+                this.total = res.data.total
66
+            }
67
+        })
99 68
       }
100 69
     }
101 70
 }

+ 6 - 0
src/pages/index/components/searchPage.vue

@@ -7,6 +7,7 @@
7 7
           <img src="../../../../static/homepage/u432.svg" alt="">
8 8
         </el-button>
9 9
       </el-input>
10
+      <el-button class="btn-space" @click="jumpToFilePage">文件</el-button>
10 11
       <el-button class="btn-space" @click="jumpToAudit">审核</el-button>
11 12
     </div>
12 13
     <el-tabs class="bottom-card" v-model="activeName" @tab-click="handleClick">
@@ -469,6 +470,11 @@ export default {
469 470
       this.$router.push({
470 471
         name: "audit",path: "/audit"
471 472
       });
473
+    },
474
+    jumpToFilePage() {
475
+      this.$router.push({
476
+        name: "file",path: "/file"
477
+      });
472 478
     }
473 479
   }
474 480
 };

+ 133 - 0
src/pages/index/file.vue

@@ -0,0 +1,133 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <div class="button-block">
4
+      <el-button type="primary" @click="handleUpload">上传</el-button>
5
+    </div>
6
+    <el-table :data="tableData">
7
+      <el-table-column v-for="(item, index) in columns" :key="index" :label="item.label" :prop="item.key">
8
+      </el-table-column>
9
+      <el-table-column
10
+        label="操作"
11
+        width="100">
12
+        <template slot-scope="scope">
13
+          <el-button @click="handleDelete(scope.row)" type="text" size="small">删除</el-button>
14
+          <el-button @click="handleDown(scope.row)" type="text" size="small">下载</el-button>
15
+        </template>
16
+      </el-table-column>
17
+    </el-table>
18
+    <div class="table-pagination">
19
+      <el-pagination layout="prev, pager, next" :total="total" @current-change="handlePageChange"
20
+        :current-page.sync="pageNum" :page-size.sync="pageSize">
21
+      </el-pagination>
22
+    </div>
23
+    <el-dialog
24
+      title="上传"
25
+      :visible.sync="dialogVisible"
26
+      width="30%"
27
+      :before-close="handleClose">
28
+      <el-upload
29
+        class="upload-demo"
30
+        :action="`${getUrl()}/xyjc/index-files/upload`"
31
+        :on-preview="handlePreview"
32
+        :on-remove="handleRemove"
33
+        multiple
34
+        :file-list="fileList">
35
+        <el-button size="small" type="primary">点击上传</el-button>
36
+        <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
37
+      </el-upload>
38
+    </el-dialog>
39
+  </div>
40
+</template>
41
+<script>
42
+import config from '@/config/index';
43
+import api from "@/api/homepage/file.js";
44
+
45
+export default {
46
+    components: {},
47
+    data() {
48
+      return {
49
+        columns: [
50
+          {
51
+            label: '名称',
52
+            key: 'fileName'
53
+          },
54
+          {
55
+            label: '时间',
56
+            key: 'createdTime'
57
+          }
58
+        ],
59
+        tableData: [],
60
+        total: 0,
61
+        pageSize: 10,
62
+        pageNum: 1,
63
+        dialogVisible: false,
64
+        fileList: []
65
+      }
66
+    },
67
+    mounted() {
68
+        this.getTableData()
69
+    },
70
+    watch: {
71
+
72
+    },
73
+    methods: {
74
+      handlePageChange() {
75
+        this.getTableData()
76
+      },
77
+      handleDelete(row) {
78
+        api.deleteFile({id: row.id}).then(res => {
79
+            if(res.success) {
80
+                this.$message({type: 'success', message: '删除成功!'})
81
+                this.getTableData()
82
+            }
83
+        })
84
+      },
85
+      handleDown(row) {
86
+        window.location.href = `${this.getUrl()}/xyjc/index-files/download/${row.id}`
87
+      },
88
+      handleUpload() {
89
+        this.dialogVisible = true
90
+      },
91
+      handleRemove(file, fileList) {
92
+        console.log(file, fileList);
93
+        this.handleDelete(file.response.data.data[0])
94
+      },
95
+      handlePreview(file) {
96
+        console.log(file);
97
+      },
98
+      beforeRemove(file, fileList) {
99
+        return this.$confirm(`确定移除 ${ file.name }?`);
100
+      },
101
+      getUrl() {
102
+        return process.env.NODE_ENV !== 'development' ? config.build.BASE_API : config.dev.BASE_API;
103
+      },
104
+      getTableData() {
105
+        const { pageNum, pageSize } = this
106
+        api.fileList({pageNum, pageSize}).then(res => {
107
+            if (res.success) {
108
+                this.tableData = res.data.records
109
+                this.total = res.data.total
110
+            }
111
+        })
112
+      },
113
+      handleClose() {
114
+        this.dialogVisible = false
115
+        this.getTableData()
116
+        this.fileList = []
117
+      }
118
+    }
119
+}
120
+</script>
121
+<style  lang="scss" scoped>
122
+.body-wrapper {
123
+  width: 100%;
124
+  padding: 20px;
125
+  .button-block{
126
+    text-align: right;
127
+    margin-bottom: 20px;
128
+  }
129
+  .table-pagination{
130
+    text-align: right;
131
+  }
132
+}
133
+</style>

+ 1 - 1
src/pages/index/layouts/indexLayout.vue

@@ -39,7 +39,7 @@ export default {
39 39
   box-sizing: border-box;
40 40
 
41 41
   .body-wrapper {
42
-    padding: 0 13%;
42
+    // padding: 0 13%;
43 43
     width: 100%;
44 44
     box-sizing: border-box;
45 45
 

+ 5 - 0
src/router/index.js

@@ -29,6 +29,11 @@ export default new Router({
29 29
           name: "audit",
30 30
           path: "/audit",
31 31
           component: () => import("../pages/index/audit.vue")
32
+        },
33
+        {
34
+          name: "file",
35
+          path: "/file",
36
+          component: () => import("../pages/index/file.vue")
32 37
         }
33 38
       ]
34 39
     }