drew 5 роки тому
батько
коміт
fceb2b695d

+ 5 - 0
src/main/vue/src/router.js

@@ -58,6 +58,11 @@ const router = new Router({
                     name: 'userList',
                     component: () => import(/* webpackChunkName: "userList" */ '@/views/UserList.vue'),
                 },
+                {
+                    path: '/sysConfigList',
+                    name: 'sysConfigList',
+                    component: () => import(/* webpackChunkName: "sysConfigList" */ '@/views/SysConfigList.vue'),
+                }
                 /**INSERT_LOCATION**/,
             ],
         },

+ 184 - 0
src/main/vue/src/views/SysConfigList.vue

@@ -0,0 +1,184 @@
+<template>
+    <div class="list-view">
+        <div class="filters-container">
+            <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input>
+            <el-button @click="getData" type="primary" icon="el-icon-search" class="filter-item">搜索 </el-button>
+            <el-button @click="editRow()" type="primary" icon="el-icon-plus" class="filter-item">添加 </el-button>
+            <el-button
+                @click="download"
+                type="primary"
+                icon="el-icon-download"
+                :loading="downloading"
+                class="filter-item"
+                >导出EXCEL
+            </el-button>
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+            :height="tableHeight"
+        >
+            <el-table-column prop="name" label="名称"> </el-table-column>
+            <el-table-column prop="desc" label="描述"> </el-table-column>
+            <el-table-column prop="value" label="值"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" min-width="150">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row, true)" type="primary" size="mini" plain>编辑</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+
+        <el-dialog :visible.sync="showDialog" width="500px">
+            <el-form :model="formData" :rules="rules" ref="form" label-width="52px" label-position="right" size="small">
+                <el-form-item prop="name" label="名称">
+                    <el-input v-model="formData.name" :disabled="edit === true"></el-input>
+                </el-form-item>
+                <el-form-item prop="desc" label="描述">
+                    <el-input v-model="formData.desc"></el-input>
+                </el-form-item>
+                <el-form-item prop="value" label="值">
+                    <el-input v-model="formData.value"></el-input>
+                </el-form-item>
+            </el-form>
+            <span slot="footer">
+                <el-button type="primary" size="mini" @click="save" :loading="saving">保存</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+
+export default {
+    name: 'SysConfigList',
+    mixins: [pageableTable],
+    created() {
+        this.getData();
+    },
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/sysConfig/all',
+            downloading: false,
+            formData: {
+                name: '',
+                desc: '',
+                value: ''
+            },
+            rules: {
+                name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+                desc: [{ required: true, message: '请输入描述', trigger: 'blur' }],
+                value: [{ required: true, message: '请输入值', trigger: 'blur' }]
+            },
+            showDialog: false,
+            saving: false,
+            edit: false
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        beforeGetData() {
+            return { search: this.search, sort: 'name' };
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/sysConfigEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row, edit) {
+            this.edit = edit;
+            if (!row) {
+                row = {
+                    name: '',
+                    desc: '',
+                    value: ''
+                };
+            }
+            this.formData = row;
+            this.showDialog = true;
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/sysConfig/excel', {
+                    responseType: 'blob',
+                    params: { size: 10000 }
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        save() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    let data = { ...this.formData };
+                    this.saving = true;
+                    this.$http
+                        .post('/sysConfig/save', data, { body: 'json' })
+                        .then(res => {
+                            this.saving = false;
+                            this.$message.success('成功');
+                            this.showDialog = false;
+                            this.getData();
+                        })
+                        .catch(e => {
+                            console.log(e);
+                            this.saving = false;
+                            this.showDialog = false;
+                            this.$message.error(e.error);
+                        });
+                } else {
+                    return false;
+                }
+            });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>

+ 0 - 9
src/main/vue/src/views/UserList.vue

@@ -51,15 +51,6 @@
             </el-table-column>
         </el-table>
         <div class="pagination-wrapper">
-            <div class="multiple-mode-wrapper">
-                <el-button v-if="!multipleMode"
-                    @click="toggleMultipleMode(true)">批量编辑</el-button>
-                <el-button-group v-else>
-                    <el-button @click="operation1">批量操作1</el-button>
-                    <el-button @click="operation2">批量操作2</el-button>
-                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
-                </el-button-group>
-            </div>
             <el-pagination background @size-change="onSizeChange"
                 @current-change="onCurrentChange" :current-page="page"
                 :page-sizes="[10, 20, 30, 40, 50]" :page-size="pageSize"