index.hbs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <div class="{{ dashCase name }}-container">
  3. <vab-query-form>
  4. <vab-query-form-left-panel :span="12">
  5. <el-button icon="el-icon-plus" type="primary" @click="handleEdit">
  6. 添加
  7. </el-button>
  8. <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
  9. 删除
  10. </el-button>
  11. </vab-query-form-left-panel>
  12. <vab-query-form-right-panel :span="12">
  13. <table-tool :check-list.sync="checkList" :columns="columns" />
  14. </vab-query-form-right-panel>
  15. </vab-query-form>
  16. <el-table
  17. v-loading="listLoading"
  18. :data="list"
  19. :height="height"
  20. @selection-change="setSelectRows">
  21. <el-table-column align="center" show-overflow-tooltip type="selection" />
  22. <el-table-column
  23. v-for="(item, index) in finallyColumns"
  24. :key="index"
  25. align="center"
  26. :label="item.label"
  27. :prop="item.prop"
  28. show-overflow-tooltip
  29. :sortable="item.sortable"
  30. :width="item.width" />
  31. <el-table-column align="center" label="操作" width="85">
  32. <template #default="{ row }">
  33. <el-button type="text" @click="handleEdit(row)">编辑</el-button>
  34. <el-button type="text" @click="handleDelete(row)">删除</el-button>
  35. </template>
  36. </el-table-column>
  37. </el-table>
  38. <el-pagination
  39. background
  40. :current-page="queryForm.pageNo"
  41. :layout="layout"
  42. :page-size="queryForm.pageSize"
  43. :total="total"
  44. @current-change="handleCurrentChange"
  45. @size-change="handleSizeChange" />
  46. <edit ref="edit" @fetch-data="fetchData" />
  47. </div>
  48. </template>
  49. <script>
  50. import {{ camelCase name }}Api from '@/api/{{moduleName}}/{{ camelCase name }}'
  51. import Edit from './components/{{ properCase name }}Edit'
  52. import TableTool from '@/components/table/TableTool'
  53. export default {
  54. name: '{{ properCase name }}',
  55. components: { Edit, TableTool },
  56. data() {
  57. return {
  58. height: this.$baseTableHeight(1),
  59. checkList: [],
  60. columns: [],
  61. list: [],
  62. listLoading: true,
  63. layout: 'total, sizes, prev, pager, next, jumper',
  64. total: 0,
  65. selectRows: '',
  66. queryForm: {
  67. pageNo: 1,
  68. pageSize: 10,
  69. title: '',
  70. },
  71. }
  72. },
  73. computed: {
  74. finallyColumns() {
  75. return this.columns.filter((item) =>
  76. this.checkList.includes(item.label)
  77. )
  78. },
  79. },
  80. created() {
  81. this.fetchData()
  82. },
  83. methods: {
  84. setSelectRows(val) {
  85. this.selectRows = val
  86. },
  87. handleEdit(row) {
  88. if (row.id) {
  89. this.$refs['edit'].showEdit(row)
  90. } else {
  91. this.$refs['edit'].showEdit()
  92. }
  93. },
  94. handleDelete(row) {
  95. if (row.id) {
  96. this.$baseConfirm('你确定要删除当前项吗', null, async () => {
  97. const { msg } = await {{ camelCase name }}Api.doDelete({ ids: [row.id] })
  98. this.$baseMessage(msg, 'success')
  99. await this.fetchData()
  100. })
  101. } else {
  102. if (this.selectRows.length > 0) {
  103. const ids = this.selectRows.map((item) => item.id)
  104. this.$baseConfirm('你确定要删除选中项吗', null, async () => {
  105. const { msg } = await {{ camelCase name }}Api.doDelete({ ids })
  106. this.$baseMessage(msg, 'success')
  107. await this.fetchData()
  108. })
  109. } else {
  110. this.$baseMessage('未选中任何行', 'error')
  111. return false
  112. }
  113. }
  114. },
  115. handleSizeChange(val) {
  116. this.queryForm.pageSize = val
  117. this.fetchData()
  118. },
  119. handleCurrentChange(val) {
  120. this.queryForm.pageNo = val
  121. this.fetchData()
  122. },
  123. queryData() {
  124. this.queryForm.pageNo = 1
  125. this.fetchData()
  126. },
  127. async fetchData() {
  128. this.listLoading = true
  129. const { data } = await {{ camelCase name }}Api.getList(this.queryForm)
  130. const { list, total } = data
  131. this.list = list
  132. this.total = total
  133. this.listLoading = false
  134. },
  135. },
  136. }
  137. </script>