guhongwei 3 years ago
parent
commit
2bea18353b

+ 12 - 14
src/router/index.js

@@ -8,6 +8,10 @@ VueRouter.prototype.push = function push(location) {
 };
 Vue.use(VueRouter);
 const web = [
+  {
+    path: '/',
+    redirect: '/adminCenter/homeIndex',
+  },
   // 管理登录
   {
     path: '/login',
@@ -28,14 +32,9 @@ const web = [
         component: () => import('../views/adminCenter/homeIndex/index.vue'),
       },
       {
-        path: '/adminCenter/test/index',
-        meta: { title: '测试菜单' },
-        component: () => import('../views/adminCenter/test/index.vue'),
-      },
-      {
-        path: '/adminCenter/test/detail',
-        meta: { title: '测试菜单-信息管理' },
-        component: () => import('../views/adminCenter/test/detail.vue'),
+        path: '/adminCenter/examine/index',
+        meta: { title: '审批单' },
+        component: () => import('../views/adminCenter/examine/index.vue'),
       },
     ],
   },
@@ -48,18 +47,17 @@ const router = new VueRouter({
 });
 router.beforeEach((to, from, next) => {
   document.title = `${to.meta.title} `;
-  const token = localStorage.getItem('token');
+  const user = JSON.parse(localStorage.getItem('user'));
   if (to.path == '/adminCenter/homeIndex') {
-    if (!token) {
-      // next('/login');
-      next();
+    if (!user) {
+      next('/login');
     } else {
-      let user = jwt.decode(token);
+      // let user = jwt.decode(token);
       store.commit('setUser', user, { root: true });
       next();
     }
   } else {
-    let user = jwt.decode(token);
+    // let user = jwt.decode(token);
     store.commit('setUser', user, { root: true });
     next();
   }

+ 3 - 2
src/store/index.js

@@ -2,7 +2,8 @@ import Vue from 'vue';
 import Vuex from 'vuex';
 import * as ustate from '@common/src/store/user/state';
 import * as umutations from '@common/src/store/user/mutations';
-import test from '@common/src/store/test';
+import login from '@common/src/store/login';
+import examine from '@common/src/store/examine';
 
 Vue.use(Vuex);
 
@@ -10,5 +11,5 @@ export default new Vuex.Store({
   state: { ...ustate },
   mutations: { ...umutations },
   actions: {},
-  modules: { test },
+  modules: { login, examine },
 });

+ 124 - 0
src/views/adminCenter/examine/index.vue

@@ -0,0 +1,124 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @check="toCheck" @viewMarket="viewMarket"> </data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog title="审批单审核" :visible.sync="oneShow" width="40%" :before-close="oneClose">
+      <check-1 :form="form" @oneClose="oneClose" @onSubmit="onSubmit"></check-1>
+    </el-dialog>
+    <el-dialog class="twoDialog" title="商品列表" :visible.sync="twoShow" width="50%" :before-close="twoClose">
+      <list-1 :list="orderList"></list-1>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import check1 from './parts/check-1.vue';
+import list1 from './parts/list-1.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: examine } = createNamespacedHelpers('examine');
+export default {
+  name: 'index',
+  props: {},
+  components: { check1, list1 },
+  data: function () {
+    return {
+      list: [],
+      total: 0,
+      fields: [
+        { label: '审批单号', prop: 'order_num', filter: 'input' },
+        { label: '购买人', prop: 'buy_name', filter: 'input' },
+        { label: '购买总价(元)', prop: 'totalMoney' },
+        { label: '审批人', prop: 'personal' },
+        { label: '审批时间', prop: 'examine_time' },
+        {
+          label: '审批结果',
+          prop: 'status',
+          format: (item) => {
+            return item === '0' ? '待审' : item === '1' ? '审核通过' : '审核未通过';
+          },
+        },
+      ],
+      opera: [
+        { label: '审核', method: 'check' },
+        { label: '查看商品', method: 'viewMarket' },
+      ],
+      // 审核
+      oneShow: false,
+      form: {},
+      // 商品列表
+      twoShow: false,
+      orderList: [],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...examine(['query', '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);
+      }
+    },
+    // 审核
+    toCheck({ data }) {
+      this.$set(this, `form`, data);
+      this.oneShow = true;
+    },
+    // 提交审核
+    async onSubmit({ data }) {
+      let res = await this.update(data);
+      if (this.$checkRes(res)) {
+        this.$message({ type: `success`, message: `操作成功` });
+        this.search();
+        this.oneClose();
+      }
+    },
+    // 关闭审核
+    oneClose() {
+      this.oneShow = false;
+    },
+    // 查看商品
+    viewMarket({ data }) {
+      this.$set(this, `orderList`, data.order);
+      this.twoShow = true;
+    },
+    // 关闭商品
+    twoClose() {
+      this.twoShow = false;
+    },
+  },
+  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>

+ 88 - 0
src/views/adminCenter/examine/parts/check-1.vue

@@ -0,0 +1,88 @@
+<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="order_num">
+              <el-input v-model="form.order_num" disabled></el-input>
+            </el-form-item>
+            <el-form-item label="审批人" prop="personal">
+              <el-input v-model="form.personal" placeholder="请输入审批人"></el-input>
+            </el-form-item>
+            <el-form-item label="审批时间" prop="examine_time">
+              <el-date-picker v-model="form.examine_time" 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="opinion">
+              <el-input v-model="form.opinion" type="textarea" placeholder="请输入审批意见"></el-input>
+            </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="2">审核未通过</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="oneClose">取消提交</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: 'check-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      rules: {
+        personal: [{ required: true, message: '请输入审批人', trigger: 'blur' }],
+        examine_time: [{ required: true, message: '请选择', trigger: 'change' }],
+        opinion: [{ required: true, message: '请输入审批意见', trigger: 'blur' }],
+        status: [{ required: true, message: '请选择', trigger: 'change' }],
+      },
+    };
+  },
+  created() {},
+  methods: {
+    oneClose() {
+      this.$emit('oneClose');
+    },
+    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>

+ 57 - 0
src/views/adminCenter/examine/parts/list-1.vue

@@ -0,0 +1,57 @@
+<template>
+  <div id="list-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <data-table :fields="fields" :data="list" :usePage="false"> </data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'list-1',
+  props: { list: { type: Array } },
+
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '商品名称', prop: 'name' },
+        { label: '商品类型', prop: 'type' },
+        { label: '单价(元)', prop: 'money' },
+        { label: '购买数量', prop: 'num' },
+        { label: '商品总价(元)', prop: 'totalMoney' },
+        { label: '商户名称', prop: 'mech_name' },
+        {
+          label: '货物状态',
+          prop: 'status',
+          format: (item) => {
+            return item === '0' ? '待发货' : item === '1' ? '用户已收货' : item === '2' ? '订单完成' : '未识别';
+          },
+        },
+      ],
+    };
+  },
+  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></style>

+ 0 - 74
src/views/adminCenter/test/detail.vue

@@ -1,74 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <data-form :fields="fields" :data="form" @save="toSave" returns="/adminCenter/test/index"> </data-form>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: maptest } = createNamespacedHelpers('test');
-export default {
-  name: 'detail',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      form: {
-        img_url: [],
-      },
-      fields: [
-        { label: '标题', model: 'title' },
-        { label: '内容', model: 'content', type: 'editor', url: '/files/study/news_editor/upload' },
-      ],
-    };
-  },
-  created() {
-    if (this.id) this.search();
-  },
-  methods: {
-    ...maptest(['fetch', 'create', 'update']),
-    async search() {
-      let res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `form`, res.data);
-      }
-    },
-    async toSave({ data }) {
-      let dup = _.cloneDeep(data);
-      let res;
-      if (_.get(dup, 'id')) {
-        res = await this.update(dup);
-      } else {
-        res = await this.create(dup);
-      }
-      if (this.$checkRes(res, '保存成功', '保存失败')) {
-        if (this.$dev_mode) this.$router.push('/adminCenter/test/index');
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 0 - 86
src/views/adminCenter/test/index.vue

@@ -1,86 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @edit="toEdit" @del="toDel">
-            <template slot="selfbtn">
-              <el-button type="primary" size="small" @click="toAdd">添加</el-button>
-            </template>
-          </data-table>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: maptest } = createNamespacedHelpers('test');
-
-export default {
-  name: 'index',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      list: [],
-      total: 0,
-      opera: [
-        { label: '修改', method: 'edit' },
-        { label: '删除', method: 'del', type: 'danger' },
-      ],
-      fields: [
-        { label: '标题', prop: 'title', filter: 'input' },
-        { label: '内容', prop: 'content' },
-      ],
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...maptest(['query', '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);
-      }
-    },
-    // 添加数据
-    toAdd() {
-      this.$router.push({ path: '/adminCenter/test/detail' });
-    },
-    // 修改信息
-    toEdit({ data }) {
-      this.$router.push({ path: '/adminCenter/test/detail', query: { id: data.id } });
-    },
-    // 删除信息
-    async toDel({ data }) {
-      let res = await this.delete(data.id);
-      if (this.$checkRes(res)) {
-        this.$message({ type: `success`, message: `删除成功` });
-        this.search();
-      } else {
-        this.$message({ type: `error`, message: `${res.errmsg}` });
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped></style>

+ 10 - 11
src/views/login.vue

@@ -8,13 +8,13 @@
               <el-col :span="24" class="login">
                 <div class="ms-title">后台管理系统</div>
                 <el-form :model="form" :rules="rules" ref="login" label-width="0px" class="ms-content">
-                  <el-form-item prop="username">
-                    <el-input v-model="form.tel" placeholder="请输入手机号">
+                  <el-form-item prop="phone">
+                    <el-input v-model="form.phone" placeholder="请输入手机号">
                       <el-button slot="prepend" icon="el-icon-user"></el-button>
                     </el-input>
                   </el-form-item>
                   <el-form-item prop="password">
-                    <el-input type="password" placeholder="请输入密码" v-model="form.pwd">
+                    <el-input type="password" placeholder="请输入密码" v-model="form.password">
                       <el-button slot="prepend" icon="el-icon-lock"></el-button>
                     </el-input>
                   </el-form-item>
@@ -43,8 +43,8 @@ export default {
     return {
       form: {},
       rules: {
-        tel: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
-        pwd: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+        phone: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
+        password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
       },
     };
   },
@@ -54,12 +54,11 @@ export default {
     submitForm() {
       this.$refs.login.validate(async (valid) => {
         if (valid) {
-          // let res = await this.login({ user: this.form });
-          // if (this.$checkRes(res)) {
-          localStorage.setItem('user', JSON.stringify(this.form));
-          this.$message.success('登录成功');
-          this.$router.push('/adminCenter/homeIndex');
-          // }
+          let res = await this.login({ user: this.form });
+          if (this.$checkRes(res)) {
+            this.$message.success('登录成功');
+            this.$router.push('/adminCenter/homeIndex');
+          }
         } else {
           this.$message.error('请输入账号和密码');
           console.log('error submit!!');

+ 1 - 1
vue.config.js

@@ -23,7 +23,7 @@ module.exports = {
         target: 'http://broadcast.waityou24.cn',
       },
       '/api': {
-        target: 'http://192.168.31.200:9001',
+        target: 'http://127.0.0.1:12001',
         changeOrigin: true,
         ws: false,
       },