index.vue 5.9 KB

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