소스 검색

update 注册审核

15724580513 5 년 전
부모
커밋
240a2df40b

+ 35 - 0
src/api/develop.js

@@ -0,0 +1,35 @@
+import request           from '@/utils/request';
+
+const pre = `/home/develop`
+
+export function getDevelopList(data = {}) {
+    return request({
+                       url:    `${pre}/list`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+export function getDevelopHandle(data = {}) {
+    return request({
+                       url:    `${pre}/handle`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+export function getDevelopUnhandled(data = {}) {
+    return request({
+                       url:    `${pre}/unhandled`,
+                       method: 'post',
+                       data,
+                   });
+}
+
+export function getDevelopExport(data = {}) {
+    return request({
+                       url:    `${pre}/export`,
+                       method: 'post',
+                       data,
+                   });
+}

+ 18 - 6
src/router.js

@@ -143,7 +143,7 @@ const router = new Router({
                                       },
                                       isAdminMenu: true,
                                       component: () => {
-                                          return import(/* webpackChunkName: "Home" */ './views/management/Home/index.vue');
+                                          return import(/* webpackChunkName: "admin" */ './views/management/Home/index.vue');
                                       },
                                       children:  [
                                           {
@@ -155,7 +155,7 @@ const router = new Router({
                                               },
                                               isAdminMenu: true,
                                               component: () => {
-                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/XinWenFenLei/index.vue');
+                                                  return import(/* webpackChunkName: "newsClassify" */ './views/management/XinWenFenLei/index.vue');
                                               },
                                           },
                                           {
@@ -167,14 +167,14 @@ const router = new Router({
                                               },
                                               isAdminMenu: true,
                                               component: () => {
-                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/XingWenZiXun/index.vue');
+                                                  return import(/* webpackChunkName: "news" */ './views/management/XingWenZiXun/index.vue');
                                               },
                                           },
                                           {
                                               path: '/news/config',
                                               name: 'newsConfig',
                                               component: () => {
-                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/XingWenZiXun/XinWenZiXunConfig/index.vue');
+                                                  return import(/* webpackChunkName: "newsConfig" */ './views/management/XingWenZiXun/XinWenZiXunConfig/index.vue');
                                               },
                                           },
                                           {
@@ -186,7 +186,7 @@ const router = new Router({
                                               },
                                               isAdminMenu: true,
                                               component: () => {
-                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/YouQingLianJie/index.vue');
+                                                  return import(/* webpackChunkName: "blogroll" */ './views/management/YouQingLianJie/index.vue');
                                               },
                                           },
                                           {
@@ -198,7 +198,19 @@ const router = new Router({
                                               },
                                               isAdminMenu: true,
                                               component: () => {
-                                                  return import(/* webpackChunkName: "HangYeZiXun" */ './views/management/Advertising/index.vue');
+                                                  return import(/* webpackChunkName: "Advertising" */ './views/management/Advertising/index.vue');
+                                              },
+                                          },
+                                          {
+                                              path: '/register',
+                                              name: 'register',
+                                              meta: {
+                                                  icon: "",
+                                                  title: "注册审核"
+                                              },
+                                              isAdminMenu: true,
+                                              component: () => {
+                                                  return import(/* webpackChunkName: "register" */ './views/management/RegistrationManagement/index.vue');
                                               },
                                           },
                                       ],

+ 93 - 0
src/views/management/RegistrationManagement/components/Pagination.vue

@@ -0,0 +1,93 @@
+<template>
+    <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page.sync="page"
+            :page-sizes="pageSizes"
+            :page-size="size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+    </el-pagination>
+</template>
+
+<script>
+    export default {
+        name:     'Pagination',
+        props:    {
+            pageSizes: {
+                type:    Array,
+                default: () => [],
+            },
+            codePage: {
+                type: String,
+                default: 'page'
+            },
+            codeSize: {
+                type: String,
+                default: 'size'
+            },
+            codeTotal: {
+                type: String,
+                default: 'total'
+            }
+        },
+        inject:   {
+            paginationServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+            tableServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+        },
+        computed: {
+            page:  {
+                get() {
+                    return this.paginationServiceData[this.codePage];
+                },
+                set(val) {
+                    this.paginationServiceData[this.codePage] = val;
+                },
+            },
+            size:  {
+                get() {
+                    return this.paginationServiceData[this.codeSize];
+                },
+                set(val) {
+                    this.paginationServiceData[this.codeSize] = val;
+                },
+            },
+            total: {
+                get() {
+                    return this.paginationServiceData[this.codeTotal];
+                },
+                set(val) {
+                    this.this.paginationServiceData[this.codeTotal] = val;
+                },
+            },
+        },
+        watch:    {
+            total(newVal) {
+                if (newVal >= this.size && !this.tableServiceData.myData.length && this.page > 1) {
+                    this.page--;
+                    this.$emit('current-page', this.page);
+                }
+            },
+        },
+        methods:  {
+            handleSizeChange(val) {
+                this.$emit('size-change', val);
+            },
+            handleCurrentChange(val) {
+                this.$emit('current-page', val);
+            },
+        },
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 101 - 0
src/views/management/RegistrationManagement/components/SearchArea.vue

@@ -0,0 +1,101 @@
+<template>
+    <div class="admin-registration-search">
+        <div>
+            <el-date-picker
+                    v-model="startTime"
+                    type="date"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择开始日期">
+            </el-date-picker>
+            <span class="line">—</span>
+            <el-date-picker
+                    v-model="endTime"
+                    value-format="yyyy-MM-dd"
+                    type="date"
+                    placeholder="选择开始日期">
+            </el-date-picker>
+
+            <el-select class="select-state" v-model="state" placeholder="请选择状态">
+                <el-option
+                        v-for="item in status"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value">
+                </el-option>
+            </el-select>
+
+            <el-button class="btn-search" size="small" @click="search">查询</el-button>
+        </div>
+        <div>
+            <el-button size="small" @click="exportResisterData">导出</el-button>
+        </div>
+    </div>
+</template>
+
+<script>
+    const status = [
+        {
+            value: -1,
+            label: '全部',
+        },
+        {
+            value: 0,
+            label: '未处理',
+        },
+        {
+            value: 1,
+            label: '已处理',
+        },
+    ];
+    export default {
+        name:    'SearchArea',
+        data() {
+            return {
+                startTime: null,
+                endTime:   null,
+                status:    status,
+                state:     -1,
+            };
+        },
+        methods: {
+            search() {
+                const opt = {
+                    startTime: this.startTime,
+                    endTime:   this.endTime,
+                    state: this.state,
+                };
+                this.$emit('search', opt);
+            },
+            exportResisterData() {
+                const opt = {
+                    startTime: this.startTime,
+                    endTime:   this.endTime,
+                    state: this.state,
+                };
+                this.$emit('exportList', opt)
+            },
+        },
+        mounted() {
+            this.search();
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+    .admin-registration-search {
+        display: flex;
+        justify-content: space-between;
+
+        .select-state {
+            margin-left: 20px;
+        }
+
+        .line {
+            margin: 0 20px;
+        }
+
+        .btn-search {
+            margin-left: 20px;
+        }
+    }
+</style>

+ 93 - 0
src/views/management/RegistrationManagement/components/Table.vue

@@ -0,0 +1,93 @@
+<template>
+    <el-table
+            :data="tableData"
+            border
+            class="table"
+            @selection-change="handleSelectionChange"
+            style="width: 100%">
+        <el-table-column
+                type="selection"
+                fixed
+                width="55">
+        </el-table-column>
+        <el-table-column
+                prop="phone"
+                label="手机号"
+                width="360">
+        </el-table-column>
+        <el-table-column
+                prop="stateName"
+                label="状态"
+                width="360">
+        </el-table-column>
+        <el-table-column
+                prop="createTime"
+                label="注册时间"
+                width="360">
+        </el-table-column>
+
+        <el-table-column
+                label="操作"
+                fixed="right"
+        >
+            <template slot-scope="scope">
+                <el-button v-if="scope.row.state === 0" type="text" @click="handleAudit(scope.row)">处理</el-button>
+                <el-button v-else type="text" @click="handleUnAudit(scope.row)">撤回</el-button>
+            </template>
+        </el-table-column>
+    </el-table>
+</template>
+
+<script>
+    export default {
+        name:     'Table',
+        inject:   {
+            tableServiceData:      {
+                type:    Object,
+                default: () => {
+                },
+            },
+            paginationServiceData: {
+                type:    Object,
+                default: () => {
+                },
+            },
+        },
+        computed: {
+            tableData() {
+                return this.tableServiceData.myData;
+            },
+        },
+        methods:  {
+            handleSelectionChange(data) {
+                const arr = [];
+                data.forEach(item => {
+                    arr.push(item.deId);
+                });
+                this.$emit('select-change', arr);
+            },
+            handleAudit(data) {
+                this.$emit('audit', data);
+            },
+            handleUnAudit(data) {
+                this.$emit('unAudit', data);
+            },
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    .table {
+        ::v-deep .is-leaf {
+            .cell {
+                text-align: center;
+            }
+        }
+
+        ::v-deep .el-table-column--selection {
+            .cell {
+                text-align: center;
+            }
+        }
+    }
+</style>

+ 181 - 0
src/views/management/RegistrationManagement/index.vue

@@ -0,0 +1,181 @@
+<template>
+    <div class="admin-Registration-management">
+        <!--   搜索     -->
+        <SearchArea
+                @search="handleSearch"
+                @exportList="handleExportList"
+        ></SearchArea>
+        <!--   列表     -->
+        <MtaTable
+                class="mta-Table"
+                @audit="handleAudit"
+                @unAudit="handleUnAudit"
+        ></MtaTable>
+        <!--   分页     -->
+        <MtaPagination class="my-Pagination"
+                       :pageSizes="defaultPageSizes"
+                       @size-change="handleSizeChange"
+                       @current-page="handleCurrentPage"></MtaPagination>
+    </div>
+</template>
+
+<script>
+    import SearchArea       from './components/SearchArea';
+    import MtaTable         from './components/Table';
+    import MtaPagination    from './components/Pagination';
+    import * as commonTools from '@/utils/admin/tools';
+    import Vue              from 'vue';
+    import * as Develop     from '@/api/develop';
+
+    const pagination = {
+        page:  1,
+        size:  10,
+        total: 0,
+    };
+    const tableData = {
+        myData: [],
+    };
+    const defaultPageSizes = [10, 20, 30, 40];
+    const paginationServiceData = Vue.observable(pagination);
+    const tableServiceData = Vue.observable(tableData);
+
+    export default {
+        name:       'index',
+        components: {
+            SearchArea,
+            MtaTable,
+            MtaPagination,
+        },
+        provide:    {
+            tableServiceData,
+            paginationServiceData,
+        },
+        data() {
+            return {
+                defaultPageSizes: defaultPageSizes,
+                searchOpt:        {},
+                userId:           null,
+            };
+        },
+        methods:    {
+            async handleExportList(data) {
+                const opt = {
+                    startTime: data.startTime,
+                    endTime:   data.endTime,
+                    state:     data.state,
+                };
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const res = await Develop.getDevelopExport(opt);
+                    if (res.code === 0) {
+                        window.location.href = res.data;
+                        loading.close();
+                    }
+                } catch (e) {
+                    loading.close();
+                }
+
+            },
+            async handleAudit(data) {
+                const opt = {
+                    deId:   data.deId,
+                    userId: this.userId,
+                };
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+
+                try {
+                    const res = await Develop.getDevelopHandle(opt);
+                    if (res.code === 0 && res.data) {
+                        // 更新table
+                        this.getDevelopListData();
+                    }
+                    loading.close();
+                } catch (e) {
+                    loading.close();
+                }
+            },
+            async handleUnAudit(data) {
+
+                const opt = {
+                    deId:   data.deId,
+                    userId: this.userId,
+                };
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+
+                try {
+                    const res = await Develop.getDevelopUnhandled(opt);
+                    if (res.code === 0 && res.data) {
+                        // 更新table
+                        this.getDevelopListData();
+                    }
+                    loading.close();
+                } catch (e) {
+                    loading.close();
+                }
+            },
+            handleSearch(data) {
+                paginationServiceData.page = 1;
+                this.searchOpt = data;
+                this.getDevelopListData(data);
+
+            },
+            handleSizeChange(val) {
+                paginationServiceData.size = val;
+                this.getDevelopListData();
+            },
+            handleCurrentPage(val) {
+                paginationServiceData.page = val;
+                this.getDevelopListData();
+            },
+            async getDevelopListData() {
+                const opt = Object.assign({}, this.searchOpt, paginationServiceData, { userId: this.userId });
+                delete opt.total;
+
+                const loading = this.$loading({ background: 'rgba(0, 0, 0, 0.7)' });
+                try {
+                    const res = await Develop.getDevelopList(opt);
+                    if (res.code === 0) {
+                        this.updateTable(res.data);
+                    }
+                    loading.close();
+                } catch (e) {
+                    console.log('请求异常接口:getDevelopListData');
+                    loading.close();
+                }
+            },
+            updateTable(data) {
+                console.log(data);
+                tableServiceData.myData = data.data;
+                paginationServiceData.total = data.total;
+            },
+            clearData() {
+                paginationServiceData.page = 1;
+                paginationServiceData.size = 10;
+                paginationServiceData.total = 0;
+                tableServiceData.myData = [];
+            },
+        },
+        created() {
+            const userAuth = commonTools.getUserAuth();
+            this.userId = userAuth && userAuth.userId;
+        },
+        beforeDestroy() {
+            this.clearData();
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    .admin-Registration-management {
+        padding: 20px;
+
+        .mta-Table {
+            margin-top: 20px;
+        }
+
+        .my-Pagination {
+            margin-top: 20px;
+        }
+
+    }
+</style>

+ 0 - 1
src/views/management/XingWenZiXun/index.vue

@@ -49,7 +49,6 @@
     const tableData = {
         myData: [],
     };
-
     const pagination = {
         page:  1,
         size:  10,