role.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <div class="filter-box">
  5. <filter-user
  6. :filter-types.sync="filterTypes"
  7. :filter-btn-name="$t('common.screen')"
  8. @select-value="handleFilterUser"
  9. />
  10. </div>
  11. <el-table :data="tableData" stripe style="width: 100%;" :height="tool.getTableHeight()" @selection-change="handleSelectionChange">
  12. <el-table-column type="selection" width="55" />
  13. <el-table-column prop="ROLE_NAME" :label="$t('Administrator.role')">
  14. <template slot-scope="scope">
  15. <el-tag type="warning" size="small" class="no-border">{{ scope.row.ROLE_NAME }}</el-tag>
  16. </template>
  17. </el-table-column>
  18. <el-table-column prop="REMARK" :label="$t('Administrator.remark')" />
  19. <el-table-column :label="$t('Administrator.creatUser')">
  20. <template slot-scope="scope">
  21. {{ scope.row.CREATE_ADMIN_NAME }}
  22. </template>
  23. </el-table-column>
  24. <el-table-column :label="$t('Administrator.creatAt')">
  25. <template slot-scope="scope">
  26. {{ tool.formatDate(scope.row.CREATED_AT) }}
  27. </template>
  28. </el-table-column>
  29. <el-table-column :label="$t('Administrator.updateUser')">
  30. <template slot-scope="scope">
  31. {{ scope.row.UPDATE_ADMIN_NAME }}
  32. </template>
  33. </el-table-column>
  34. <el-table-column :label="$t('Administrator.updateAt')">
  35. <template slot-scope="scope">
  36. {{ tool.formatDate(scope.row.UPDATED_AT) }}
  37. </template>
  38. </el-table-column>
  39. <el-table-column :fixed="fixedColumn" :label="$t('table.actions')" width="180">
  40. <template slot-scope="scope">
  41. <el-dropdown v-if="scope.row.DONT_DEL==='0'&&(permission.hasPermission(`admin/role-permission`)||permission.hasPermission(`admin/role-edit`)||permission.hasPermission(`admin/role-delete`))" size="small" trigger="click" @command="handleRow" @click.stop="">
  42. <el-button type="primary" size="small">
  43. {{ $t('common.actionThisData') }}<i class="el-icon-arrow-down el-icon--right" />
  44. </el-button>
  45. <el-dropdown-menu slot="dropdown">
  46. <el-dropdown-item v-if="permission.hasPermission(`admin/role-permission`)" :command="`permission|${scope.row.ID}`">{{ $t('permission.permission') }}</el-dropdown-item>
  47. <!-- <el-dropdown-item :command="`column|${scope.row.ID}`" v-if="permission.hasPermission(`admin/role-column`)">列表字段权限</el-dropdown-item>-->
  48. <el-dropdown-item v-if="permission.hasPermission(`admin/role-edit`)" :command="`edit|${scope.row.ID}`">{{ $t('table.edit') }}</el-dropdown-item>
  49. <el-dropdown-item v-if="permission.hasPermission(`admin/role-delete`)" :command="`delete|${scope.row.ID}`">{{ $t('table.delete') }}</el-dropdown-item>
  50. </el-dropdown-menu>
  51. </el-dropdown>
  52. </template>
  53. </el-table-column>
  54. </el-table>
  55. <div class="white-box-footer">
  56. <el-dropdown v-if="permission.hasPermission(`admin/role-delete`)" size="small" trigger="click" @command="muliDelHandle">
  57. <el-button type="primary" size="small">
  58. {{ $t('Administrator.selectData') }}<i class="el-icon-arrow-down el-icon--right" />
  59. </el-button>
  60. <el-dropdown-menu slot="dropdown">
  61. <el-dropdown-item command="delete">{{ $t('table.delete') }}</el-dropdown-item>
  62. </el-dropdown-menu>
  63. </el-dropdown>
  64. <el-button v-if="permission.hasPermission(`admin/role-add`)" type="primary" size="small" icon="el-icon-plus" @click="onAdd">{{ $t('Administrator.addRole') }}</el-button>
  65. <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
  66. </div>
  67. </div>
  68. </div>
  69. </template>
  70. <script>
  71. import { deleteRole, adminRole, batchDeleteRole } from '@/api/filter'
  72. import tool from '@/utils/tool'
  73. import FilterUser from '@/components/FilterUser'
  74. import permission from '@/utils/permission'
  75. import Pagination from '@/components/Pagination'
  76. import filterHelper from '@/utils/filterHelper'
  77. import {getOperatingSystem} from "@/utils"
  78. export default {
  79. name: 'Role',
  80. components: { FilterUser, Pagination },
  81. data() {
  82. return {
  83. fixedColumn:false, // 固定,当手机端不固定,pc固定
  84. tableData: null,
  85. loading: true,
  86. multipleSelection: [],
  87. currentPage: 1,
  88. totalPages: 1,
  89. totalCount: 1,
  90. pageSize: 20,
  91. tool: tool,
  92. permission: permission,
  93. filterData: null,
  94. filterTypes: {
  95. 'ROLE_NAME': { isUserTable: false, name: this.$t('Administrator.role') },
  96. 'REMARK': { isUserTable: false, name: this.$t('Administrator.remark') },
  97. 'CREATE_ADMIN_NAME': { isUserTable: false, name: this.$t('Administrator.creatUser') },
  98. 'CREATED_AT': { isUserTable: false, name: this.$t('Administrator.creatAt'), other: 'date' },
  99. 'UPDATE_ADMIN_NAME': { isUserTable: false, name: this.$t('Administrator.updateUser') },
  100. 'UPDATED_AT': { isUserTable: false, name: this.$t('Administrator.updateAt'), other: 'date' }
  101. },
  102. filterModel: {}
  103. }
  104. },
  105. created() {
  106. },
  107. mounted() {
  108. this.getData()
  109. let system = getOperatingSystem()
  110. if (system == "Android" || system == 'ios') {
  111. this.fixedColumn = false
  112. } else {
  113. this.fixedColumn = 'right'
  114. }
  115. },
  116. methods: {
  117. handleSelectionChange(val) {
  118. this.multipleSelection = val
  119. },
  120. handleCurrentChange(page) {
  121. this.getData(page, this.pageSize)
  122. },
  123. handleSizeChange(pageSize) {
  124. this.getData(this.currentPage, pageSize)
  125. },
  126. handleRow(command) {
  127. const re = command.split('|')
  128. this.handleCommand(re[0], re[1])
  129. },
  130. handleCommand(command, id) {
  131. if (command === 'edit') {
  132. this.$router.push({ path: `/admin/role-edit/${id}` })
  133. } else if (command === 'permission') {
  134. this.$router.push({ path: `/admin/role-permission/${id}` })
  135. } else if (command === 'column') {
  136. this.$router.push({ path: `/admin/role-column/${id}` })
  137. } else if (command === 'delete') {
  138. this.delHandle(this, id)
  139. }
  140. },
  141. onAdd() {
  142. this.$router.push({ path: `/admin/role-add` })
  143. },
  144. delHandle(obj, id) {
  145. obj.$confirm(this.$t('common.deleteTips'), this.$t('common.hint'), {
  146. confirmButtonText: this.$t('common.confirm'),
  147. cancelButtonText: this.$t('common.cancel'),
  148. type: 'warning'
  149. }).then(() => {
  150. deleteRole(id).then(response => {
  151. this.$message({
  152. message: response.data,
  153. type: 'success'
  154. })
  155. this.getData()
  156. }).catch(err => {
  157. console.log('err---------' + err)
  158. })
  159. })
  160. },
  161. muliDelHandle(command) {
  162. if (command === 'delete') {
  163. this.$confirm(this.$t('common.deleteTips'), this.$t('common.hint'), {
  164. confirmButtonText: this.$t('common.confirm'),
  165. cancelButtonText: this.$t('common.cancel'),
  166. type: 'warning'
  167. }).then(() => {
  168. const selectedIds = []
  169. for (const val of this.multipleSelection) {
  170. selectedIds.push(val.ID)
  171. }
  172. batchDeleteRole({
  173. selected: selectedIds
  174. }).then(response => {
  175. this.$message({
  176. message: response.data,
  177. type: 'success'
  178. })
  179. this.getData()
  180. }).catch(err => {
  181. console.log('err---------' + err)
  182. })
  183. })
  184. }
  185. },
  186. handleFilterUser(filterData) {
  187. filterHelper.handleFilterUser(this, filterData)
  188. },
  189. handleFilter() {
  190. this.getData()
  191. },
  192. getData(page, pageSize) {
  193. const filterData = this.filterModel
  194. const vueObj = this
  195. const paramsData = Object.assign({
  196. page: (page === null || page == undefined) ? 1 : page,
  197. pageSize: (pageSize === null || pageSize == undefined) ? vueObj.pageSize : pageSize
  198. }, filterData)
  199. adminRole(paramsData).then(response => {
  200. vueObj.tableData = response.data.list
  201. vueObj.currentPage = page
  202. vueObj.totalPages = parseInt(response.data.totalPages)
  203. vueObj.totalCount = parseInt(response.data.totalCount)
  204. vueObj.pageSize = pageSize
  205. this.loading = false
  206. }).catch(err => {
  207. console.log('err=============' + err)
  208. this.loading = false
  209. })
  210. }
  211. }
  212. }
  213. </script>
  214. <style>
  215. .el-table th > .cell {
  216. padding-left: 14px !important;
  217. padding-right: 14px !important;
  218. }
  219. .el-table__fixed-right-patch {
  220. width: 0px !important;
  221. }
  222. .pagination-container {
  223. float: right;
  224. padding: 0px 0px !important;
  225. margin: 0 0;
  226. }
  227. .white-box-footer .el-dropdown {
  228. margin-right: 10px;
  229. }
  230. </style>