index.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <div class="padding-20">
  3. <div class="search-box">
  4. <el-form ref="form" :inline="true" :model="searchForm" clearable label-width="100px" class="mt-10">
  5. <el-form-item label="创建时间:">
  6. <el-date-picker
  7. :editable="false"
  8. v-model="time"
  9. @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
  10. type="daterange"
  11. value-format="yyyy-MM-dd"
  12. start-placeholder="开始时间"
  13. end-placeholder="结束时间"
  14. ></el-date-picker>
  15. </el-form-item>
  16. <el-form-item label="角色名称:">
  17. <el-input v-model="searchForm.role_name" placeholder="请输入角色名称" clearable></el-input>
  18. </el-form-item>
  19. <el-form-item class="ml-10">
  20. <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
  21. </el-form-item>
  22. <el-form-item class="ml-10">
  23. <el-button icon="el-icon-plus" type="primary" @click="add" v-permission="'roles_list_add'">新增</el-button>
  24. </el-form-item>
  25. </el-form>
  26. </div>
  27. <el-table :data="tableData" stripe v-loading="tableLoading" fit class="marginT-10 order-table" border
  28. :max-height="vheight">
  29. <el-table-column label="角色ID" prop="id" width="80"></el-table-column>
  30. <el-table-column label="创建时间" prop="created_at" width="160"></el-table-column>
  31. <el-table-column label="角色名称" prop="role_name"></el-table-column>
  32. <el-table-column label="角色介绍" prop="role_desc"></el-table-column>
  33. <el-table-column label="所属项目" prop="role_project_name"></el-table-column>
  34. <el-table-column label="所属部门" prop="role_department_name"></el-table-column>
  35. <el-table-column label="操作" width="180">
  36. <template slot-scope="scope">
  37. <el-button type="text" @click="edit(scope.row)" v-permission="'roles_list_edit'">编辑</el-button>
  38. <el-button type="text" @click="del(scope.row)" v-permission="'roles_list_del'">删除</el-button>
  39. <el-button type="text" @click="setPermissions(scope.row)" v-permission="'roles_list_setRole'">权限设置</el-button>
  40. </template>
  41. </el-table-column>
  42. </el-table>
  43. <el-pagination
  44. class="marginT-20"
  45. @size-change="handleSizeChange"
  46. @current-change="handleCurrentChange"
  47. :hide-on-single-page="true"
  48. :current-page="page"
  49. :page-size="page_size"
  50. :page-sizes="[10, 20, 100, 200, 300, 400]"
  51. background
  52. layout="total, sizes, prev, pager, next, jumper"
  53. :total="totalCount"/>
  54. <detail v-if="detailsDialog.show" v-model="detailsDialog.show" :exData="detailsDialog.exData"
  55. @success="init"></detail>
  56. <permissions v-if="permissionsDialog.show" v-model="permissionsDialog.show" :exData="permissionsDialog.exData"
  57. @success="init"></permissions>
  58. </div>
  59. </template>
  60. <script>
  61. import page from '@/mixin/page'
  62. import detail from './details'
  63. import permissions from './permissions'
  64. export default {
  65. mixins: [page],
  66. components: {
  67. detail,
  68. permissions,
  69. },
  70. data () {
  71. return {
  72. detailsDialog: {
  73. show: false,
  74. exData: {}
  75. },
  76. permissionsDialog: {
  77. show: false,
  78. exData: {}
  79. },
  80. time: [],
  81. searchForm: {},
  82. tableData: [],
  83. tableUrl: '/role/list'
  84. }
  85. },
  86. methods: {
  87. add () {
  88. this.detailsDialog.exData = {}
  89. this.detailsDialog.show = true
  90. },
  91. edit (row) {
  92. this.detailsDialog.exData = row
  93. this.detailsDialog.show = true
  94. },
  95. del (row) {
  96. this.$confirm('确定要删除吗', '确认', {
  97. confirmButtonText: '确定',
  98. cancelButtonText: '取消',
  99. type: 'warning'
  100. }).then(async () => {
  101. const data = await this.$fetch('/api/auth/role/del', { id: row.id })
  102. if (data.code == 200) {
  103. this.$message.success('删除成功')
  104. this.init()
  105. }
  106. }).catch(() => {})
  107. },
  108. setPermissions (row) {
  109. this.permissionsDialog.exData = row
  110. this.permissionsDialog.show = true
  111. }
  112. },
  113. mounted () {
  114. this.init()
  115. },
  116. }
  117. </script>
  118. <style lang="scss" scoped>
  119. </style>