iker.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <div class="role-management">
  3. <!-- 搜索区域 -->
  4. <el-card class="search-area">
  5. <el-form :inline="true">
  6. <el-form-item label="角色名称">
  7. <el-input v-model="searchForm.name" placeholder="请输入角色名称" />
  8. </el-form-item>
  9. <el-form-item label="角色标识">
  10. <el-input v-model="searchForm.identifier" placeholder="请输入角色标识" />
  11. </el-form-item>
  12. <el-form-item label="状态">
  13. <el-select v-model="searchForm.status" placeholder="请选择状态">
  14. <el-option label="全部" value="" />
  15. <el-option label="开启" value="1" />
  16. <el-option label="关闭" value="0" />
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button type="primary" @click="handleSearch">搜索</el-button>
  21. <el-button type="success" @click="handleAdd">新增</el-button>
  22. <el-button @click="handleExport">导出</el-button>
  23. </el-form-item>
  24. </el-form>
  25. </el-card>
  26. <!-- 数据表格 -->
  27. <el-table :data="filteredRoles" border style="width: 100%">
  28. <el-table-column prop="id" label="角色编号" width="100" />
  29. <el-table-column prop="name" label="角色名称" width="150" />
  30. <el-table-column prop="type" label="角色类型" width="120" />
  31. <el-table-column prop="identifier" label="角色标识" width="180" />
  32. <el-table-column prop="order" label="显示顺序" width="100" />
  33. <el-table-column prop="remark" label="备注" />
  34. <el-table-column prop="status" label="状态" width="100">
  35. <template #default="{ row }">
  36. <el-tag :type="row.status ? 'success' : 'danger'">
  37. {{ row.status ? '开启' : '关闭' }}
  38. </el-tag>
  39. </template>
  40. </el-table-column>
  41. <el-table-column prop="createTime" label="创建时间" width="180" />
  42. <el-table-column label="操作" width="220">
  43. <template #default="{ row }">
  44. <el-button link type="primary" @click="handleEdit(row)">编辑</el-button>
  45. <el-button link type="primary" @click="handleMenuAuth(row)">菜单权限</el-button>
  46. <el-button link type="primary" @click="handleDataAuth(row)">数据权限</el-button>
  47. <el-button link type="danger" @click="handleDelete(row)">删除</el-button>
  48. </template>
  49. </el-table-column>
  50. </el-table>
  51. </div>
  52. </template>
  53. <script setup>
  54. import { ref, computed } from 'vue'
  55. // 模拟数据
  56. const roles = ref([
  57. {
  58. id: 101,
  59. name: '测试账号',
  60. type: '自定义',
  61. identifier: '测试',
  62. order: 0,
  63. remark: '',
  64. status: 1,
  65. createTime: '2021-01-06 13:49:35'
  66. },
  67. // 其他数据...
  68. ])
  69. // 搜索表单
  70. const searchForm = ref({
  71. name: '',
  72. identifier: '',
  73. status: ''
  74. })
  75. // 过滤后的数据
  76. const filteredRoles = computed(() => {
  77. return roles.value.filter(role => {
  78. return (
  79. role.name.includes(searchForm.value.name) &&
  80. role.identifier.includes(searchForm.value.identifier) &&
  81. (searchForm.value.status === '' ||
  82. role.status.toString() === searchForm.value.status)
  83. )
  84. })
  85. })
  86. // 操作方法
  87. const handleSearch = () => {
  88. // 搜索逻辑
  89. }
  90. const handleAdd = () => {
  91. // 新增逻辑
  92. }
  93. const handleExport = () => {
  94. // 导出逻辑
  95. }
  96. const handleEdit = (row) => {
  97. // 编辑逻辑
  98. }
  99. const handleMenuAuth = (row) => {
  100. // 菜单权限设置
  101. }
  102. const handleDataAuth = (row) => {
  103. // 数据权限设置
  104. }
  105. const handleDelete = (row) => {
  106. // 删除逻辑
  107. }
  108. </script>
  109. <style scoped>
  110. .search-area {
  111. margin-bottom: 20px;
  112. }
  113. .el-form-item {
  114. margin-bottom: 0;
  115. }
  116. .el-table {
  117. margin-top: 20px;
  118. }
  119. </style>