Browse Source

申报,类型

guhongwei 3 years ago
parent
commit
7d61087f07

+ 10 - 0
src/router/index.js

@@ -36,6 +36,16 @@ const web = [
         meta: { title: '用户管理' },
         component: () => import('../views/adminCenter/user/index.vue'),
       },
+      {
+        path: '/adminCenter/declare/index',
+        meta: { title: '申报审核' },
+        component: () => import('../views/adminCenter/declare/index.vue'),
+      },
+      {
+        path: '/adminCenter/type/index',
+        meta: { title: '商品类型管理' },
+        component: () => import('../views/adminCenter/type/index.vue'),
+      },
     ],
   },
 ];

+ 6 - 2
src/store/index.js

@@ -3,13 +3,17 @@ import Vuex from 'vuex';
 import * as ustate from '@common/src/store/user/state';
 import * as umutations from '@common/src/store/user/mutations';
 import login from '@common/src/store/login';
+// 用户
 import user from '@common/src/store/user';
-
+// 商品类型
+import type from '@common/src/store/type';
+// 商品申报
+import apply from '@common/src/store/apply';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
   state: { ...ustate },
   mutations: { ...umutations },
   actions: {},
-  modules: { login, user },
+  modules: { login, user, type, apply },
 });

+ 118 - 0
src/views/adminCenter/declare/index.vue

@@ -0,0 +1,118 @@
+<template>
+  <div id="index">
+    <data-table :fields="fields" :opera="opera" @query="search" :data="list" :total="total" @check="toCheck" @del="toDel" @market="toMarket"> </data-table>
+    <el-dialog :title="dialog.title" :visible.sync="dialog.show" :width="dialog.width" :before-close="toClose" :close-on-click-modal="false">
+      <check-1 v-if="dialog.type == '1'" :form="form" @resetForm="toClose" @onSubmit="onSubmit"></check-1>
+      <market-1 v-if="dialog.type == '2'" :form="form"></market-1>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import check1 from './parts/check-1.vue';
+import market1 from './parts/market-1.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: mapApply } = createNamespacedHelpers('apply');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    check1,
+    market1,
+  },
+  data: function () {
+    return {
+      list: [],
+      total: 0,
+      fields: [
+        { label: '申报人', prop: 'apply_personal', filter: 'input' },
+        { label: '联系电话', prop: 'apply_phone', filter: 'input' },
+        { label: '审核人', prop: 'examine_personal' },
+        { label: '审核时间', prop: 'examine_date' },
+        {
+          label: '审核状态',
+          prop: 'status',
+          format: (i) => {
+            return i === '0' ? '待审中' : i === '1' ? '审核通过' : '审核拒绝';
+          },
+        },
+      ],
+      opera: [
+        { label: '申报商品', method: 'market' },
+        { label: '审核', method: 'check' },
+        { label: '删除', method: 'del', type: 'danger' },
+      ],
+      // 弹框
+      dialog: { title: '申报审核', show: false, type: '1', width: '50%' },
+      // 审核
+      form: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...mapApply(['query', 'fetch', 'create', 'update', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+      }
+    },
+    // 审核
+    toCheck({ data }) {
+      data.examine_personal = this.user.name;
+      this.$set(this, `form`, data);
+      this.dialog = { title: '申报审核', show: true, type: '1', width: '50%' };
+    },
+    // 提交审核
+    async onSubmit({ data }) {
+      let res = await this.update(data);
+      if (this.$checkRes(res)) {
+        this.$message({ type: `success`, message: `操作成功` });
+        this.toClose();
+      } else {
+        this.$message({ type: `error`, message: `${res.errmsg}` });
+      }
+    },
+    // 查看申報商品
+    toMarket({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '申报商品', show: true, type: '2', width: '30%' };
+    },
+    // 删除
+    async toDel({ data }) {
+      let res = await this.delete(data.id);
+      if (this.$checkRes(res)) {
+        this.$message({ type: `success`, message: `操作成功` });
+        this.search();
+      }
+    },
+    // 关闭
+    toClose() {
+      this.search();
+      this.dialog = { title: '申报审核', show: false, type: '1', width: '50%' };
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-dialog__body {
+  padding: 10px;
+}
+</style>

+ 94 - 0
src/views/adminCenter/declare/parts/check-1.vue

@@ -0,0 +1,94 @@
+<template>
+  <div id="check-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px">
+            <el-form-item label="申请人" prop="apply_personal">
+              <el-input v-model="form.apply_personal" placeholder="请输入申请人"></el-input>
+            </el-form-item>
+            <el-form-item label="联系电话" prop="apply_phone">
+              <el-input v-model="form.apply_phone" placeholder="请输入联系电话"></el-input>
+            </el-form-item>
+            <el-form-item label="审核人" prop="examine_personal">
+              <el-input v-model="form.examine_personal" placeholder="请输入审核人"></el-input>
+            </el-form-item>
+            <el-form-item label="审核时间" prop="examine_date">
+              <el-date-picker v-model="form.examine_date" placeholder="请选择" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" style="width: 100%">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="审核状态" prop="status">
+              <el-radio-group v-model="form.status">
+                <el-radio label="0">待审中</el-radio>
+                <el-radio label="1">审核通过</el-radio>
+                <el-radio label="-1">审核拒绝</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="审核意见" prop="examine_reason">
+              <el-input v-model="form.examine_reason" placeholder="请输入审核意见" type="textarea"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="danger" size="small" @click="resetForm('form')">关闭审核</el-button>
+              <el-button type="primary" size="small" @click="onSubmit('form')">提交审核</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'check-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      rules: {
+        examine_personal: [{ required: true, message: '请输入审核人', trigger: 'blur' }],
+        examine_date: [{ required: true, message: '请选择审核时间', trigger: 'change' }],
+        status: [{ required: true, message: '请选择审核状态', trigger: 'change' }],
+        examine_reason: [{ required: true, message: '请输入审核意见', trigger: 'blur' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    // 取消审核
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+      this.$emit('resetForm');
+    },
+    // 提交审核
+    onSubmit(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.$emit('onSubmit', { data: this.form });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 81 - 0
src/views/adminCenter/declare/parts/market-1.vue

@@ -0,0 +1,81 @@
+<template>
+  <div id="market-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="list" v-for="(item, index) in form.order" :key="index">
+            <el-col :span="24" class="title">
+              {{ item.name }}
+            </el-col>
+            <el-col :span="24" class="other">
+              <el-col :span="24" class="otherInfo">
+                商品数量:<span>{{ item.num }}</span>
+              </el-col>
+              <el-col :span="24" class="otherInfo">
+                特殊说明:<span>{{ item.desc }}</span>
+              </el-col>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'market-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  .one {
+    .list {
+      border: 1px solid #ccc;
+      border-radius: 10px;
+      margin: 0 0 10px 0;
+      padding: 10px;
+      .title {
+        font-size: 16px;
+        font-weight: bold;
+        margin: 0 0 5px 0;
+      }
+      .other {
+        margin: 0 0 5px 0;
+        .otherInfo {
+          font-size: 14px;
+          color: #666;
+          margin: 0 0 5px 0;
+          span {
+            color: #000;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 109 - 0
src/views/adminCenter/type/index.vue

@@ -0,0 +1,109 @@
+<template>
+  <div id="index">
+    <data-table :fields="fields" :opera="opera" @query="search" :data="list" :total="total" @edit="toEdit">
+      <template slot="selfbtn">
+        <el-button type="primary" size="small" @click="toAdd()">添加</el-button>
+      </template>
+    </data-table>
+    <el-dialog :title="dialog.title" :visible.sync="dialog.show" width="20%" :before-close="toClose" :close-on-click-modal="false">
+      <form-1 :form="form" @onSubmit="onSubmit"></form-1>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import form1 from './parts/form-1.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: mapType } = createNamespacedHelpers('type');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    form1,
+  },
+  data: function () {
+    return {
+      list: [],
+      total: 0,
+      fields: [
+        { label: '类别code', prop: 'code', filter: 'input' },
+        { label: '名称', prop: 'name', filter: 'input' },
+      ],
+      opera: [{ label: '维护', method: 'edit' }],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 添加用户
+      form: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...mapType(['query', 'fetch', 'create', 'update']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let res = await this.query({ skip, limit, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+      }
+    },
+    // 修改
+    async toEdit({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '信息维护', show: true, type: '1' };
+    },
+    // 添加
+    toAdd() {
+      this.dialog = { title: '添加信息', show: true, type: '1' };
+    },
+    // 提交保存
+    async onSubmit({ data }) {
+      if (data.id) {
+        let res = await this.update(data);
+        if (this.$checkRes(res)) {
+          this.$message({ type: `success`, message: `操作完成` });
+          this.toClose();
+        }
+      } else {
+        let res = await this.create(data);
+        if (this.$checkRes(res)) {
+          this.$message({ type: `success`, message: `操作完成` });
+          this.toClose();
+        }
+      }
+    },
+    // 关闭
+    toClose() {
+      this.search();
+      this.form = {};
+      this.dialog = { title: '添加信息', show: false, type: '1' };
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-dialog__body {
+  padding: 10px;
+}
+.twoDialog {
+  /deep/.el-dialog__body {
+    max-height: 300px;
+    overflow-y: auto;
+  }
+}
+</style>

+ 74 - 0
src/views/adminCenter/type/parts/form-1.vue

@@ -0,0 +1,74 @@
+<template>
+  <div id="form-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-form :model="form" :rules="rules" ref="form" label-width="100px">
+            <el-form-item label="类别code" prop="code">
+              <el-input v-model="form.code" placeholder="请输入code"></el-input>
+            </el-form-item>
+            <el-form-item label="名称" prop="name">
+              <el-input v-model="form.name" placeholder="请输入名称"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="danger" @click="onReset('form')">重置信息</el-button>
+              <el-button type="primary" @click="onSubmit('form')">提交保存</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'form-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      rules: {
+        code: [{ required: true, message: '请输入code', trigger: 'blur' }],
+        name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    // 重置信息
+    onReset(formName) {
+      this.$refs[formName].resetFields();
+    },
+    // 提交信息
+    onSubmit(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.$emit('onSubmit', { data: this.form });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 3 - 0
src/views/adminCenter/user/parts/form-1.vue

@@ -28,6 +28,9 @@
             <el-form-item label="联系地址" prop="address">
               <el-input v-model="form.address" placeholder="请输入联系地址"></el-input>
             </el-form-item>
+            <el-form-item label="openid" prop="openid">
+              <el-input v-model="form.openid" placeholder="请输入用户openid"></el-input>
+            </el-form-item>
             <el-form-item label="用户类别" prop="type">
               <el-radio-group v-model="form.type">
                 <el-radio label="1">超级管理员</el-radio>