公众号前端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

133 linhas
5.3 KiB

  1. <template>
  2. <div class="mod-role">
  3. <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
  4. <el-form-item>
  5. <el-input v-model="dataForm.roleName" placeholder="角色名称" clearable></el-input>
  6. </el-form-item>
  7. <el-form-item>
  8. <el-button @click="getDataList()">查询</el-button>
  9. <el-button v-if="isAuth('sys:role:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
  10. <el-button v-if="isAuth('sys:role:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
  11. </el-form-item>
  12. </el-form>
  13. <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="selectionChangeHandle" style="width: 100%;">
  14. <el-table-column type="selection" header-align="center" align="center" width="50">
  15. </el-table-column>
  16. <el-table-column prop="roleId" header-align="center" align="center" width="80" label="ID">
  17. </el-table-column>
  18. <el-table-column prop="roleName" header-align="center" align="center" label="角色名称">
  19. </el-table-column>
  20. <el-table-column prop="remark" header-align="center" align="center" label="备注">
  21. </el-table-column>
  22. <el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
  23. <template slot-scope="scope">
  24. <el-button v-if="isAuth('sys:role:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.roleId)">修改</el-button>
  25. <el-button v-if="isAuth('sys:role:delete')" type="text" size="small" @click="deleteHandle(scope.row.roleId)">删除</el-button>
  26. </template>
  27. </el-table-column>
  28. </el-table>
  29. <el-pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" :current-page="pageIndex" :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="totalCount" layout="total, sizes, prev, pager, next, jumper">
  30. </el-pagination>
  31. <!-- 弹窗, 新增 / 修改 -->
  32. <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
  33. </div>
  34. </template>
  35. <script>
  36. import AddOrUpdate from './role-add-or-update'
  37. export default {
  38. data() {
  39. return {
  40. dataForm: {
  41. roleName: ''
  42. },
  43. dataList: [],
  44. pageIndex: 1,
  45. pageSize: 10,
  46. totalCount: 0,
  47. dataListLoading: false,
  48. dataListSelections: [],
  49. addOrUpdateVisible: false
  50. }
  51. },
  52. components: {
  53. AddOrUpdate
  54. },
  55. activated() {
  56. this.getDataList()
  57. },
  58. methods: {
  59. // 获取数据列表
  60. getDataList() {
  61. this.dataListLoading = true
  62. this.$http({
  63. url: this.$http.adornUrl('/sys/role/list'),
  64. method: 'get',
  65. params: this.$http.adornParams({
  66. 'page': this.pageIndex,
  67. 'limit': this.pageSize,
  68. 'roleName': this.dataForm.roleName
  69. })
  70. }).then(({ data }) => {
  71. if (data && data.code === 200) {
  72. this.dataList = data.page.list
  73. this.totalCount = data.page.totalCount
  74. } else {
  75. this.dataList = []
  76. this.totalCount = 0
  77. }
  78. this.dataListLoading = false
  79. })
  80. },
  81. // 每页数
  82. sizeChangeHandle(val) {
  83. this.pageSize = val
  84. this.pageIndex = 1
  85. this.getDataList()
  86. },
  87. // 当前页
  88. currentChangeHandle(val) {
  89. this.pageIndex = val
  90. this.getDataList()
  91. },
  92. // 多选
  93. selectionChangeHandle(val) {
  94. this.dataListSelections = val
  95. },
  96. // 新增 / 修改
  97. addOrUpdateHandle(id) {
  98. this.addOrUpdateVisible = true
  99. this.$nextTick(() => {
  100. this.$refs.addOrUpdate.init(id)
  101. })
  102. },
  103. // 删除
  104. deleteHandle(id) {
  105. var ids = id ? [id] : this.dataListSelections.map(item => item.roleId)
  106. this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
  107. confirmButtonText: '确定',
  108. cancelButtonText: '取消',
  109. type: 'warning'
  110. }).then(() => {
  111. this.$http({
  112. url: this.$http.adornUrl('/sys/role/delete'),
  113. method: 'post',
  114. data: this.$http.adornData(ids, false)
  115. }).then(({ data }) => {
  116. if (data && data.code === 200) {
  117. this.$message({
  118. message: '操作成功',
  119. type: 'success',
  120. duration: 1500,
  121. onClose: () => this.getDataList()
  122. })
  123. } else {
  124. this.$message.error(data.msg)
  125. }
  126. })
  127. }).catch(() => { })
  128. }
  129. }
  130. }
  131. </script>