data.vue 3.0 KB

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