index.vue 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div id="index">
  3. <el-row>
  4. <el-col :span="24" class="index">
  5. <el-col :span="24" class="top">
  6. <topInfo :topTitle="pageTitle"></topInfo>
  7. </el-col>
  8. <el-col :span="24" class="add" style="text-align:right">
  9. <el-button size="mini" type="primary" @click="$router.push({ path: './detail' })" icon="el-icon-plus">添加用户</el-button>
  10. </el-col>
  11. </el-col>
  12. <el-col :span="24" class="info">
  13. <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
  14. </el-col>
  15. </el-row>
  16. </div>
  17. </template>
  18. <script>
  19. import topInfo from '@/layout/public/top.vue';
  20. import dataTable from '@/components/data-table.vue';
  21. import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
  22. const { mapActions: users } = createNamespacedHelpers('users');
  23. const { mapActions: exportuser } = createNamespacedHelpers('exportuser');
  24. export default {
  25. name: 'index',
  26. props: {},
  27. components: {
  28. topInfo,
  29. dataTable,
  30. },
  31. data: () => ({
  32. opera: [
  33. {
  34. label: '审核',
  35. icon: 'el-icon-edit',
  36. method: 'edit',
  37. },
  38. {
  39. label: '删除',
  40. icon: 'el-icon-delete',
  41. method: 'delete',
  42. confirm: true,
  43. },
  44. ],
  45. fields: [
  46. { label: '姓名', prop: 'name', filter: 'input' },
  47. { label: '电话', prop: 'phone', filter: 'input' },
  48. { label: '用戶类型', prop: 'role', format: i => (i == '2' ? '个人用户' : i == '3' ? '企业用户' : i == '6' ? '专家' : '临时用户') },
  49. { label: '状态', prop: 'status', format: i => (i == '0' ? '待审核' : i == '1' ? '审核成功' : i == '2' ? '审核拒绝' : '待认证') },
  50. ],
  51. list: [],
  52. total: 0,
  53. }),
  54. created() {
  55. this.search();
  56. },
  57. methods: {
  58. ...users(['query', 'delete', 'update']),
  59. ...exportuser({ exportuserQuery: 'query' }),
  60. async search({ skip = 0, limit = 10, ...info } = {}) {
  61. const res = await this.query({ skip, limit, ...info });
  62. const resTwo = await this.exportuserQuery({ skip, limit, ...info });
  63. var newData = res.data.concat(resTwo.data);
  64. if (this.$checkRes(newData)) {
  65. var arr = newData.filter(item => item.pid == undefined && item.status != '3');
  66. this.$set(this, `list`, arr);
  67. this.$set(this, `total`, arr.length);
  68. }
  69. },
  70. toEdit({ data }) {
  71. this.$router.push({ path: './detail', query: { id: data.id, role: data.role } });
  72. },
  73. async toDelete({ data }) {
  74. const res = await this.delete(data.id);
  75. if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
  76. },
  77. },
  78. computed: {
  79. pageTitle() {
  80. return `${this.$route.meta.title}`;
  81. },
  82. },
  83. metaInfo() {
  84. return { title: this.$route.meta.title };
  85. },
  86. };
  87. </script>
  88. <style lang="less" scoped>
  89. .add {
  90. height: 40px;
  91. line-height: 40px;
  92. padding: 0 15px;
  93. }
  94. </style>