index.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <div id="index">
  3. <template v-if="view === 'list'">
  4. <data-search :fields="searchFields" v-model="searchInfo" @query="search">
  5. <template #status>
  6. <el-option v-for="i in statusList" :key="i.model" :label="i.label" :value="i.value"></el-option>
  7. </template>
  8. </data-search>
  9. <data-btn :fields="btnFields" @add="toAdd" />
  10. <data-table ref="dataTable" :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search">
  11. <template #code="{ row, item }">
  12. <el-link type="primary" @click="toData(row)">{{ row[item.model] }}</el-link>
  13. </template>
  14. </data-table>
  15. </template>
  16. <template v-else>
  17. <el-row>
  18. <el-col :span="24">
  19. <el-button type="primary" size="mini" @click="toBack()">返回</el-button>
  20. </el-col>
  21. <el-col :span="24">
  22. <data-form :span="12" :fields="infoFields" :rules="rules" v-model="form" labelWidth="150px" @save="toSave">
  23. <template #status>
  24. <el-option v-for="i in statusList" :key="i.model" :label="i.label" :value="i.value"></el-option>
  25. </template>
  26. </data-form>
  27. </el-col>
  28. </el-row>
  29. </template>
  30. </div>
  31. </template>
  32. <script>
  33. const _ = require('lodash');
  34. import methodUtil from '@/util/opera';
  35. import { mapState, createNamespacedHelpers } from 'vuex';
  36. const { mapActions } = createNamespacedHelpers('dictIndex');
  37. export default {
  38. name: 'index',
  39. props: {},
  40. components: {},
  41. data: function () {
  42. return {
  43. view: 'list',
  44. fields: [
  45. { label: '目录名称', model: 'name' },
  46. { label: '目录编码', model: 'code', custom: true },
  47. { label: '状态', model: 'status', format: (i) => (i === '0' ? '使用中' : '已禁用') },
  48. ],
  49. opera: [
  50. { label: '修改', method: 'edit' },
  51. { label: '删除', method: 'delete', confirm: true, type: 'danger' },
  52. ],
  53. list: [],
  54. total: 0,
  55. limit: 20,
  56. btnFields: [{ label: '添加', method: 'add' }],
  57. searchInfo: {},
  58. searchFields: [
  59. { label: '目录名称', model: 'name' },
  60. { label: '目录编码', model: 'code' },
  61. { label: '状态', model: 'status', type: 'select' },
  62. ],
  63. statusList: [
  64. { label: '使用', value: '0' },
  65. { label: '禁用', value: '1' },
  66. ],
  67. infoFields: [
  68. { label: '目录名称', model: 'name' },
  69. { label: '目录编码', model: 'code' },
  70. { label: '状态', model: 'status', type: 'select' },
  71. ],
  72. rules: {},
  73. form: {},
  74. };
  75. },
  76. computed: {
  77. ...mapState(['user']),
  78. },
  79. created() {
  80. this.search();
  81. },
  82. methods: {
  83. ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
  84. ..._.cloneDeep(methodUtil),
  85. initAddData() {
  86. this.form.status = '0';
  87. },
  88. toData(row) {
  89. this.$router.push({ path: '/dev/dict/data', query: { code: row.code } });
  90. },
  91. },
  92. metaInfo() {
  93. return { title: this.$route.meta.title };
  94. },
  95. };
  96. </script>
  97. <style lang="less" scoped></style>