index.hbs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div class="{{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. <el-form :inline="true" :model="queryForm" @submit.native.prevent>
  14. <el-form-item>
  15. <el-input
  16. v-model.trim="queryForm.title"
  17. placeholder="请输入标题"
  18. clearable
  19. />
  20. </el-form-item>
  21. <el-form-item>
  22. <el-button icon="el-icon-search" type="primary" @click="queryData">
  23. 查询
  24. </el-button>
  25. </el-form-item>
  26. </el-form>
  27. </vab-query-form-right-panel>
  28. </vab-query-form>
  29. <el-table
  30. v-loading="listLoading"
  31. :data="list"
  32. @selection-change="setSelectRows"
  33. >
  34. <el-table-column align="center" label="序号" width="55">
  35. <template slot-scope="{ $index }">
  36. {{ $index + 1 }}
  37. </template>
  38. </el-table-column>
  39. <el-table-column
  40. align="center"
  41. show-overflow-tooltip
  42. type="selection"
  43. ></el-table-column>
  44. <el-table-column
  45. align="center"
  46. show-overflow-tooltip
  47. prop="id"
  48. label="id"
  49. />
  50. <el-table-column
  51. align="center"
  52. show-overflow-tooltip
  53. prop="title"
  54. label="标题"
  55. />
  56. <el-table-column align="center" label="操作" width="85">
  57. <template v-slot="{ row }">
  58. <el-button type="text" @click="handleEdit(row)">编辑</el-button>
  59. <el-button type="text" @click="handleDelete(row)">删除</el-button>
  60. </template>
  61. </el-table-column>
  62. </el-table>
  63. <el-pagination
  64. background
  65. :current-page="queryForm.pageNo"
  66. :page-size="queryForm.pageSize"
  67. :layout="layout"
  68. :total="total"
  69. @size-change="handleSizeChange"
  70. @current-change="handleCurrentChange"
  71. ></el-pagination>
  72. <edit ref="edit" @fetchData="fetchData"></edit>
  73. </div>
  74. </template>
  75. <script>
  76. import { getList, doDelete } from "@/api/{{name}}";
  77. import Edit from "./components/{{properCase name}}Edit";
  78. export default {
  79. name: "{{ properCase name }}",
  80. components: { Edit },
  81. data() {
  82. return {
  83. list: [],
  84. listLoading: true,
  85. layout: "total, sizes, prev, pager, next, jumper",
  86. total: 0,
  87. selectRows: "",
  88. queryForm: {
  89. pageNo: 1,
  90. pageSize: 10,
  91. title: "",
  92. },
  93. };
  94. },
  95. created() {
  96. this.fetchData();
  97. },
  98. methods: {
  99. setSelectRows(val) {
  100. this.selectRows = val;
  101. },
  102. handleEdit(row) {
  103. if (row.id) {
  104. this.$refs["edit"].showEdit(row);
  105. } else {
  106. this.$refs["edit"].showEdit();
  107. }
  108. },
  109. handleDelete(row) {
  110. if (row.id) {
  111. this.$baseConfirm("你确定要删除当前项吗", null, async () => {
  112. const { msg } = await doDelete({ ids: row.id });
  113. this.$baseMessage(msg, "success");
  114. this.fetchData();
  115. });
  116. } else {
  117. if (this.selectRows.length > 0) {
  118. const ids = this.selectRows.map((item) => item.id).join();
  119. this.$baseConfirm("你确定要删除选中项吗", null, async () => {
  120. const { msg } = await doDelete({ ids });
  121. this.$baseMessage(msg, "success");
  122. this.fetchData();
  123. });
  124. } else {
  125. this.$baseMessage("未选中任何行", "error");
  126. return false;
  127. }
  128. }
  129. },
  130. handleSizeChange(val) {
  131. this.queryForm.pageSize = val;
  132. this.fetchData();
  133. },
  134. handleCurrentChange(val) {
  135. this.queryForm.pageNo = val;
  136. this.fetchData();
  137. },
  138. queryData() {
  139. this.queryForm.pageNo = 1;
  140. this.fetchData();
  141. },
  142. async fetchData() {
  143. this.listLoading = true;
  144. const { data, totalCount } = await getList(this.queryForm);
  145. this.list = data;
  146. this.total = totalCount;
  147. this.listLoading = false;
  148. },
  149. },
  150. };
  151. </script>