guhongwei 4 năm trước cách đây
mục cha
commit
c77bbae595

+ 15 - 2
src/views/superAdminCenter/adminUser/index.vue

@@ -8,7 +8,13 @@
         <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
       </el-col>
       <el-dialog :title="theme" width="60%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
-        <data-form :data="form" :fields="formFields" @save="toSave" :isNew="dialogIsNew" :rules="rules"></data-form>
+        <data-form :data="form" :fields="formFields" @save="toSave" :isNew="dialogIsNew" :rules="rules">
+          <template #options="{item}">
+            <template v-if="item.model === 'pid'">
+              <el-option v-for="(i, index) in adminList" :key="index" :label="i.name" :value="i.id"></el-option>
+            </template>
+          </template>
+        </data-form>
       </el-dialog>
     </el-row>
   </div>
@@ -54,6 +60,7 @@ export default {
 
       formFields: [
         { label: '机构代码或邀请码', prop: 'code', model: 'code' },
+        { label: '所属管理员', model: 'pid', type: 'select' },
         { label: '姓名', prop: 'name', model: 'name' },
         { label: '机构名称', prop: 'deptname', model: 'deptname' },
         { label: '手机号', prop: 'phone', model: 'phone', options: { maxLength: 11, minLength: 11, type: 'number' } },
@@ -62,14 +69,16 @@ export default {
       rules: {
         code: [{ required: true, message: '请输入推荐码' }],
       },
+      adminList: [],
     };
   },
   created() {
     this.search();
+    this.getOtherList();
   },
   methods: {
     ...users(['query', 'fetch', 'create', 'update', 'delete']),
-    ...authUser({ authUserDelete: 'delete' }),
+    ...authUser({ authUserDelete: 'delete', getAdminUser: 'query' }),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       const res = await this.query({ skip, limit, pid: this.user.uid, ...info });
       if (this.$checkRes(res)) {
@@ -114,6 +123,10 @@ export default {
       this.form = {};
       this.dialogIsNew = true;
     },
+    async getOtherList() {
+      const res = await this.getAdminUser({ pid: this.user.uid, role: '0' });
+      if (this.$checkRes(res)) this.$set(this, `adminList`, res.data);
+    },
   },
   computed: {
     ...mapState(['user']),

+ 130 - 0
src/views/superAdminCenter/business/index.vue

@@ -0,0 +1,130 @@
+<template>
+  <div id="business">
+    <el-row>
+      <el-col :span="24" class="add" style="text-align:right;padding: 10px 20px;">
+        <el-button size="mini" type="primary" @click="toAdd" icon="el-icon-plus" v-if="user.pid">添加{{ theme }}</el-button>
+      </el-col>
+      <el-col :span="24" class="main">
+        <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
+      </el-col>
+      <el-dialog :title="theme" width="60%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
+        <data-form :data="form" :fields="formFields" @save="toSave" :isNew="dialogIsNew" :rules="rules"></data-form>
+      </el-dialog>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import dataForm from '@/components/form.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: users } = createNamespacedHelpers('users');
+const { mapActions: authUser } = createNamespacedHelpers('authUser');
+export default {
+  name: 'business',
+  props: {},
+  components: { dataTable, dataForm },
+  data: function() {
+    return {
+      theme: '业务管理员',
+      dialog: false,
+      form: {},
+      dialogIsNew: true,
+      opera: [
+        {
+          label: '编辑',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+          confirm: true,
+        },
+      ],
+      fields: [
+        { label: '机构代码或邀请码', prop: 'code' },
+        { label: '用户名', prop: 'name', filter: 'input' },
+        { label: '机构名称', prop: 'deptname', filter: 'input' },
+        { label: '电话', prop: 'phone', filter: 'input' },
+      ],
+      list: [],
+      total: 0,
+
+      formFields: [
+        { label: '机构代码或邀请码', prop: 'code', model: 'code' },
+        { label: '姓名', prop: 'name', model: 'name' },
+        { label: '机构名称', prop: 'deptname', model: 'deptname' },
+        { label: '手机号', prop: 'phone', model: 'phone', options: { maxLength: 11, minLength: 11, type: 'number' } },
+        { label: '密码', prop: 'password', model: 'password', type: 'password' },
+      ],
+      rules: {
+        code: [{ required: true, message: '请输入推荐码' }],
+      },
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...users(['query', 'fetch', 'create', 'update', 'delete']),
+    ...authUser({ authUserDelete: 'delete' }),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, pid: this.user.uid, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.$set(this, `total`, res.total);
+      }
+    },
+    // 添加
+    toAdd() {
+      this.dialog = true;
+    },
+    toEdit({ data }) {
+      this.$set(this, 'form', data);
+      this.dialog = true;
+      this.dialogIsNew = false;
+    },
+    async toSave({ isNew, data }) {
+      let res;
+      let msg;
+      if (isNew) {
+        data.pid = this.user.uid;
+        data.status = '1';
+        data.role = '1';
+        res = await this.create(data);
+        msg = '创建成功';
+      } else {
+        res = await this.update(data);
+        msg = '修改成功';
+      }
+      if (this.$checkRes(res, msg, res.errmsg)) {
+        this.handleClose();
+        this.search();
+      }
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      const arr = await this.authUserDelete(data.id);
+      if (this.$checkRes(arr, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+    handleClose() {
+      this.dialog = false;
+      this.form = {};
+      this.dialogIsNew = true;
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 5 - 1
src/views/superAdminCenter/index.vue

@@ -34,6 +34,8 @@ import role from './role/index.vue';
 import permission from './permission/index.vue';
 import adminUser from './adminUser/index.vue';
 import vip from './vip/index.vue';
+import business from './business/index.vue';
+import manager from './manager/index.vue';
 import heads from '@/layout/userCenter/heads.vue';
 import foot from '@/layout/live/foot.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
@@ -47,6 +49,8 @@ export default {
     permission,
     adminUser,
     vip,
+    business,
+    manager,
     menus,
     top,
   },
@@ -61,7 +65,7 @@ export default {
     setRight(menu) {
       let { name, cpt } = menu;
       this.$set(this, `topTitle`, name);
-      // this.$set(this, `cpt`, cpt);
+      this.$set(this, `cpt`, cpt);
     },
   },
   computed: {

+ 122 - 0
src/views/superAdminCenter/manager/index.vue

@@ -0,0 +1,122 @@
+<template>
+  <div id="role">
+    <el-row>
+      <el-col :span="24" class="add" style="text-align:right;padding: 10px 20px;">
+        <el-button size="mini" type="primary" @click="toAdd" icon="el-icon-plus">添加{{ theme }}</el-button>
+      </el-col>
+      <el-col :span="24" class="main">
+        <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
+      </el-col>
+      <el-dialog :title="theme" width="60%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
+        <data-form :data="form" :fields="formFields" @save="toSave" :isNew="dialogIsNew"></data-form>
+      </el-dialog>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import dataForm from '@/components/form.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('authUser');
+export default {
+  name: 'role',
+  props: {},
+  components: { dataTable, dataForm },
+  data: function() {
+    return {
+      theme: '管理员',
+      dialog: false,
+      form: {},
+      dialogIsNew: true,
+      opera: [
+        {
+          label: '编辑',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+          confirm: true,
+        },
+      ],
+      fields: [
+        { label: '机构代码或邀请码', prop: 'code', model: 'code' },
+        { label: '姓名', prop: 'name', model: 'name' },
+        { label: '机构名称', prop: 'deptname', model: 'deptname' },
+        { label: '手机号', prop: 'phone', model: 'phone', options: { maxLength: 11, minLength: 11, type: 'number' } },
+      ],
+      formFields: [
+        { label: '机构代码或邀请码', prop: 'code', model: 'code' },
+        { label: '姓名', prop: 'name', model: 'name' },
+        { label: '机构名称', prop: 'deptname', model: 'deptname' },
+        { label: '手机号', prop: 'phone', model: 'phone', options: { maxLength: 11, minLength: 11, type: 'number' } },
+        { label: '密码', prop: 'passwd', model: 'passwd', type: 'password' },
+      ],
+      list: [],
+      total: 0,
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...mapActions(['query', 'create', 'update', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      const res = await this.query({ skip, limit, ...info, pid: this.user.uid, role: '0' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data.reverse());
+        this.$set(this, `total`, res.total);
+      }
+    },
+    // 添加
+    toAdd() {
+      this.dialog = true;
+    },
+    toEdit({ data }) {
+      this.$set(this, 'form', data);
+      this.dialog = true;
+      this.dialogIsNew = false;
+    },
+    async toSave({ isNew, data }) {
+      let res;
+      let msg;
+      if (isNew) {
+        data.pid = this.user.uid;
+        data.role = '0';
+        res = await this.create(data);
+        msg = '创建成功';
+      } else {
+        res = await this.update(data);
+        msg = '修改成功';
+      }
+      if (this.$checkRes(res, msg, res.errmsg)) {
+        this.handleClose();
+        this.search();
+      }
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+    handleClose() {
+      this.dialog = false;
+      this.form = {};
+      this.dialogIsNew = true;
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>