index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div id="index">
  3. <el-row>
  4. <el-col :span="24" class="main">
  5. <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @edit="toEdit"></data-table>
  6. </el-col>
  7. </el-row>
  8. <el-dialog title="菜单信息管理" width="40%" :visible.sync="dialog" @closed="handleClose" :destroy-on-close="true">
  9. <data-form :data="form" :fields="formfields" :rules="rules" @save="toSave">
  10. <template #custom="{item}">
  11. <template v-if="item.model == 'menus'">
  12. <el-checkbox-group v-model="menus">
  13. <el-checkbox v-for="(i, index) in menuList" :key="index" :label="i">{{ i.title }}</el-checkbox>
  14. </el-checkbox-group>
  15. </template>
  16. </template>
  17. </data-form>
  18. </el-dialog>
  19. </div>
  20. </template>
  21. <script>
  22. import dataTable from '@common/src/components/frame/filter-page-table.vue';
  23. import dataForm from '@common/src/components/frame/form.vue';
  24. import { iconmenu } from '@common/src/util/iconmenu';
  25. import { mapState, createNamespacedHelpers } from 'vuex';
  26. export default {
  27. metaInfo() {
  28. return { title: this.$route.meta.title };
  29. },
  30. name: 'index',
  31. props: {},
  32. components: {
  33. dataTable,
  34. dataForm,
  35. },
  36. data: function() {
  37. return {
  38. opera: [
  39. {
  40. label: '分配权限',
  41. method: 'edit',
  42. },
  43. ],
  44. fields: [
  45. { label: '用户名', prop: 'name' },
  46. { label: '机构名称', prop: 'deptname' },
  47. ],
  48. list: [
  49. {
  50. name: '年',
  51. },
  52. ],
  53. total: 0,
  54. // 分配权限
  55. dialog: false,
  56. formfields: [
  57. { label: '用户名', model: 'name' },
  58. { label: '机构名称', model: 'deptname' },
  59. { label: '权限', model: 'menus', custom: true },
  60. ],
  61. form: {},
  62. rules: {},
  63. // 菜单列表
  64. menuList: [
  65. {
  66. icon: 'el-icon-s-home',
  67. index: 'menu',
  68. title: '菜单管理',
  69. },
  70. {
  71. icon: 'el-icon-s-home',
  72. index: 'gly',
  73. title: '管理员管理',
  74. },
  75. {
  76. icon: 'el-icon-s-home',
  77. index: 'jg',
  78. title: '机构管理员',
  79. },
  80. {
  81. icon: 'el-icon-s-home',
  82. index: 'yw',
  83. title: '业务管理员',
  84. },
  85. {
  86. icon: 'el-icon-s-home',
  87. index: 'qx',
  88. title: '权限管理',
  89. },
  90. {
  91. icon: 'el-icon-s-home',
  92. index: 'user',
  93. title: '用户管理',
  94. },
  95. ],
  96. menus: [],
  97. };
  98. },
  99. async created() {
  100. await this.search();
  101. },
  102. methods: {
  103. // 查询列表
  104. search({ skip = 0, limit = 10, ...info } = {}) {
  105. console.log('列表');
  106. },
  107. // 分配权限
  108. toEdit({ data }) {
  109. this.dialog = true;
  110. console.log('分配权限');
  111. },
  112. // 提交分配
  113. toSave({ data }) {
  114. data.menus = this.menus;
  115. console.log(data);
  116. },
  117. // 取消添加
  118. handleClose() {
  119. this.form = {};
  120. this.dialog = false;
  121. this.search();
  122. },
  123. },
  124. computed: {
  125. ...mapState(['user']),
  126. },
  127. watch: {},
  128. };
  129. </script>
  130. <style lang="less" scoped>
  131. .main {
  132. .add {
  133. text-align: right;
  134. margin: 0 0 10px 0;
  135. }
  136. }
  137. </style>