guhongwei 5 years ago
parent
commit
12b3a9b437
8 changed files with 224 additions and 11908 deletions
  1. 0 11906
      package-lock.json
  2. 2 1
      package.json
  3. 19 0
      src/router/index.js
  4. 3 1
      src/store/index.js
  5. 39 0
      src/store/user.js
  6. 36 0
      src/views/user/exportIndex.vue
  7. 89 0
      src/views/user/index.vue
  8. 36 0
      src/views/user/temporaryIndex.vue

File diff suppressed because it is too large
+ 0 - 11906
package-lock.json


+ 2 - 1
package.json

@@ -17,7 +17,8 @@
     "vue": "^2.6.11",
     "vue-meta": "^2.3.3",
     "vue-router": "^3.1.6",
-    "vuex": "^3.1.3"
+    "vuex": "^3.1.3",
+    "wangeditor": "^3.1.1"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "~4.3.0",

+ 19 - 0
src/router/index.js

@@ -17,6 +17,25 @@ const routes = [
     meta: { title: '菜单管理' },
     component: () => import('../views/menu/index.vue'),
   },
+  // 用戶管理
+  // 个人与企业
+  {
+    path: '/user/index',
+    meta: { title: '个人&企业用户管理' },
+    component: () => import('../views/user/index.vue'),
+  },
+  // 专家
+  {
+    path: '/user/exportIndex',
+    meta: { title: '专家用户管理' },
+    component: () => import('../views/user/exportIndex.vue'),
+  },
+  // 临时
+  {
+    path: '/user/temporaryIndex',
+    meta: { title: '临时用户管理' },
+    component: () => import('../views/user/temporaryIndex.vue'),
+  },
   // 部门管理
   {
     path: '/department/index',

+ 3 - 1
src/store/index.js

@@ -3,12 +3,14 @@ import Vuex from 'vuex';
 import login from '@common/store/login';
 import * as ustate from '@common/store/user/state';
 import * as umutations from '@common/store/user/mutations';
-
+// 个人&企业
+import users from './user';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
   modules: {
     login,
+    users,
   },
   state: { ...ustate },
   mutations: { ...umutations },

+ 39 - 0
src/store/user.js

@@ -0,0 +1,39 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  interface: `/api/market/user`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = 10, ...info } = {}) {
+    const res = await this.$axios.$get(api.interface, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.interface}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.interface}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...info } = {}) {
+    const res = await this.$axios.$post(`${api.interface}/${id}`, { ...info });
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.interface}/${payload}`);
+    return res;
+  },
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 36 - 0
src/views/user/exportIndex.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="exportIndex">
+    <el-row>
+      <el-col :span="24" class="index">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="pageTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="info">
+          主体
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import topInfo from '@/layout/public/top.vue';
+export default {
+  name: 'exportIndex',
+  props: {},
+  components: {
+    topInfo,
+  },
+  data: () => ({}),
+  created() {},
+  methods: {},
+  computed: {
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+<style lang="less" scoped></style>

+ 89 - 0
src/views/user/index.vue

@@ -0,0 +1,89 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="index">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="pageTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="add" style="text-align:right">
+          <el-button size="mini" type="primary" @click="$router.push({ path: './detail' })" icon="el-icon-plus">添加用户</el-button>
+        </el-col>
+      </el-col>
+      <el-col :span="24" class="info">
+        <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import topInfo from '@/layout/public/top.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: users } = createNamespacedHelpers('users');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    topInfo,
+    dataTable,
+  },
+  data: () => ({
+    opera: [
+      {
+        label: '编辑',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+      {
+        label: '删除',
+        icon: 'el-icon-delete',
+        method: 'delete',
+        confirm: true,
+      },
+    ],
+    fields: [
+      { label: '姓名', prop: 'name', filter: 'input' },
+      { label: '身份证号', prop: 'cardnumber', filter: 'input' },
+      { label: '电话', prop: 'phone', filter: 'input' },
+      { label: '状态', prop: 'status', format: i => (i == '0' ? '待审核' : i == '1' ? '审核成功' : '审核拒绝') },
+    ],
+    list: [],
+    total: 0,
+  }),
+  created() {
+    this.search();
+  },
+  methods: {
+    ...users(['query', 'delete', 'update']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip: 0, limit: 10, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+      }
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: './detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+  },
+  computed: {
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+<style lang="less" scoped>
+.add {
+  height: 40px;
+  line-height: 40px;
+  padding: 0 15px;
+}
+</style>

+ 36 - 0
src/views/user/temporaryIndex.vue

@@ -0,0 +1,36 @@
+<template>
+  <div id="temporaryIndex">
+    <el-row>
+      <el-col :span="24" class="index">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="pageTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="info">
+          主体
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import topInfo from '@/layout/public/top.vue';
+export default {
+  name: 'temporaryIndex',
+  props: {},
+  components: {
+    topInfo,
+  },
+  data: () => ({}),
+  created() {},
+  methods: {},
+  computed: {
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+<style lang="less" scoped></style>