index.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <template>
  2. <div class="user-management-container">
  3. <vab-query-form>
  4. <vab-query-form-left-panel :span="5">
  5. <el-button
  6. icon="el-icon-plus"
  7. type="primary"
  8. @click="handleEdit($event)">
  9. 添加
  10. </el-button>
  11. <el-button
  12. icon="el-icon-delete"
  13. type="danger"
  14. @click="handleDelete($event)">
  15. 删除
  16. </el-button>
  17. </vab-query-form-left-panel>
  18. <vab-query-form-right-panel :span="19">
  19. <el-form :inline="true" :model="queryForm" @submit.native.prevent>
  20. <el-form-item label="字典名称" prop="dictName">
  21. <el-input
  22. v-model.trim="queryForm.dictName"
  23. clearable
  24. placeholder="请输入字典名称" />
  25. </el-form-item>
  26. <el-form-item label="字典类型" prop="dictType">
  27. <el-input
  28. v-model.trim="queryForm.dictType"
  29. clearable
  30. placeholder="请输入字典类型" />
  31. </el-form-item>
  32. <el-form-item label="字典状态" prop="status">
  33. <el-select
  34. v-model="queryForm.status"
  35. clearable
  36. placeholder="字典状态">
  37. <el-option label="正常" value="10" />
  38. <el-option label="停用" value="20" />
  39. </el-select>
  40. </el-form-item>
  41. <el-form-item>
  42. <el-button icon="el-icon-search" type="primary" @click="queryData">
  43. 查询
  44. </el-button>
  45. </el-form-item>
  46. </el-form>
  47. </vab-query-form-right-panel>
  48. </vab-query-form>
  49. <el-table
  50. v-loading="listLoading"
  51. border
  52. :data="list"
  53. :height="height"
  54. @selection-change="setSelectRows">
  55. <el-table-column align="center" show-overflow-tooltip type="selection" />
  56. <el-table-column
  57. align="center"
  58. label="id"
  59. prop="id"
  60. show-overflow-tooltip />
  61. <el-table-column
  62. align="center"
  63. label="字典名称"
  64. prop="dictName"
  65. show-overflow-tooltip />
  66. <el-table-column
  67. align="center"
  68. label="字典类型"
  69. :show-overflow-tooltip="true">
  70. <template slot-scope="scope">
  71. <router-link
  72. class="link-type"
  73. :to="'/system/dict-data/' + scope.row.id">
  74. <span>{{ scope.row.dictType }}</span>
  75. </router-link>
  76. </template>
  77. </el-table-column>
  78. <el-table-column align="center" label="状态" prop="status">
  79. <template #default="{ row }">
  80. {{ row.status === '10' ? '正常' : '停用' }}
  81. </template>
  82. </el-table-column>
  83. <el-table-column
  84. align="center"
  85. label="备注"
  86. prop="remark"
  87. show-overflow-tooltip />
  88. <el-table-column align="center" label="创建时间" prop="createdTime">
  89. <template #default="scope">
  90. <span>{{ parseTime(scope.row.createdTime) }}</span>
  91. </template>
  92. </el-table-column>
  93. <el-table-column
  94. align="center"
  95. label="操作"
  96. show-overflow-tooltip
  97. width="85">
  98. <template #default="{ row }">
  99. <el-button type="text" @click="handleEdit(row)">编辑</el-button>
  100. <el-button type="text" @click="handleDelete(row)">删除</el-button>
  101. </template>
  102. </el-table-column>
  103. <template #empty>
  104. <el-image
  105. class="vab-data-empty"
  106. :src="require('@/assets/empty_images/data_empty.png')" />
  107. </template>
  108. </el-table>
  109. <el-pagination
  110. background
  111. :current-page="queryForm.pageNum"
  112. :layout="layout"
  113. :page-size="queryForm.pageSize"
  114. :total="total"
  115. @current-change="handleCurrentChange"
  116. @size-change="handleSizeChange" />
  117. <edit ref="edit" @fetch-data="fetchData" />
  118. </div>
  119. </template>
  120. <script>
  121. import dictApi from '@/api/system/dict'
  122. import Edit from './components/TypeEdit'
  123. export default {
  124. name: 'Dict',
  125. components: { Edit },
  126. data() {
  127. return {
  128. list: [],
  129. listLoading: true,
  130. layout: 'total, sizes, prev, pager, next, jumper',
  131. total: 0,
  132. selectRows: '',
  133. queryForm: {
  134. pageNum: 1,
  135. pageSize: 10,
  136. dictName: undefined,
  137. dictType: undefined,
  138. status: undefined,
  139. },
  140. }
  141. },
  142. computed: {
  143. height() {
  144. return this.$baseTableHeight(1)
  145. },
  146. },
  147. created() {
  148. this.fetchData()
  149. },
  150. methods: {
  151. setSelectRows(val) {
  152. this.selectRows = val
  153. },
  154. handleEdit(row) {
  155. if (row.id) {
  156. this.$refs['edit'].showEdit(row)
  157. } else {
  158. this.$refs['edit'].showEdit()
  159. }
  160. },
  161. handleDelete(row) {
  162. if (row.id) {
  163. this.$baseConfirm('你确定要删除当前项吗', null, async () => {
  164. const { msg } = await dictApi.deleteDictTypeByIds({ ids: [row.id] })
  165. this.$baseMessage(msg, 'success', 'vab-hey-message-success')
  166. await this.fetchData()
  167. })
  168. } else {
  169. if (this.selectRows.length > 0) {
  170. const ids = this.selectRows.map((item) => item.id).join()
  171. this.$baseConfirm('你确定要删除选中项吗', null, async () => {
  172. const { msg } = await dictApi.deleteDictTypeByIds({ ids })
  173. this.$baseMessage(msg, 'success', 'vab-hey-message-success')
  174. await this.fetchData()
  175. })
  176. } else {
  177. this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
  178. }
  179. }
  180. },
  181. handleSizeChange(val) {
  182. this.queryForm.pageSize = val
  183. this.fetchData()
  184. },
  185. handleCurrentChange(val) {
  186. this.queryForm.pageNum = val
  187. this.fetchData()
  188. },
  189. queryData() {
  190. this.queryForm.pageNum = 1
  191. this.fetchData()
  192. },
  193. async fetchData() {
  194. this.listLoading = true
  195. const {
  196. data: { list, total },
  197. } = await dictApi.getDictTypeList(this.queryForm)
  198. this.list = list
  199. this.total = total
  200. this.listLoading = false
  201. },
  202. },
  203. }
  204. </script>