role.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <!-- -->
  2. <template>
  3. <div class="hc-layout-box role-page">
  4. <hc-card :scrollbar="false" action-size="lg">
  5. <template #header>
  6. <el-button color="#20C98B" type="primary" @click="addClick">
  7. <hc-icon name="add" class="text-white" />
  8. <span class="text-white">新增</span>
  9. </el-button>
  10. <el-button color="#FF6C6C" :disabled="tableCheckedKeys.length === 0" @click="rowDelClick">
  11. <hc-icon name="delete-bin-2" class="text-white" />
  12. <span class="text-white">删除</span>
  13. </el-button>
  14. </template>
  15. <hc-table
  16. class="role-page-table"
  17. is-check
  18. :column="tableColumn"
  19. :datas="tableData"
  20. @selection-change="tableSelectionChange"
  21. >
  22. <template #action="{ row }">
  23. <el-link type="success" @click="rowEditClick(row)"> <hc-icon name="edit" />编辑</el-link>
  24. <el-link type="success" @click="rowDelClick(row)"> <hc-icon name="delete-bin-2" />删除</el-link>
  25. </template>
  26. </hc-table>
  27. <template #action>
  28. <HcPages :pages="searchForm" @change="pageChange" />
  29. </template>
  30. </hc-card>
  31. </div>
  32. <hc-dialog v-model="addModal" title="新增" widths="50rem">
  33. <hc-icon name="user" style="font-size: 18px;" class="font-bold" />
  34. <span class="font-bold">基础信息</span>
  35. <el-divider style="margin-top: 10px;" />
  36. <el-form :inline="true" :model="baseForm" label-width="auto" :rules="baseFormRules">
  37. <div class="hc-form-item">
  38. <el-form-item label="角色名称:" prop="user">
  39. <el-input v-model="baseForm.user" placeholder="请输入" clearable />
  40. </el-form-item>
  41. </div>
  42. </el-form>
  43. <hc-icon name="user-settings" style="font-size: 18px;" class="font-bold" />
  44. <span class="font-bold">权限设置</span>
  45. <el-divider style="margin-top: 10px;" />
  46. <el-tree
  47. ref="treeRef"
  48. style="max-width: 600px"
  49. :data="data"
  50. show-checkbox
  51. default-expand-all
  52. node-key="id"
  53. highlight-current
  54. :props="defaultProps"
  55. />
  56. </hc-dialog>
  57. </template>
  58. <script setup>
  59. import { ref, watch } from 'vue'
  60. import { HcDelMsg } from 'hc-vue3-ui'
  61. const tableColumn = [
  62. { key: 'key1', name: '角色名称', align:'center' },
  63. { key: 'action', name: '操作', align:'center' },
  64. ]
  65. const tableData = ref([
  66. { key1: 'admin', key2: 'xxx', key3: '超级管理员' },
  67. { key1: '13028304756', key2: 'aaa', key3: '角色' },
  68. ])
  69. const addModal = ref(false)
  70. const addClick = ()=>{
  71. addModal.value = true
  72. }
  73. const baseForm = ref({
  74. user:'',
  75. username: '',
  76. password: '',
  77. role: '',
  78. })
  79. const baseFormRules = {
  80. user: {
  81. required: true,
  82. trigger: 'blur',
  83. message: '请输入登陆账户',
  84. },
  85. password: {
  86. required: true,
  87. trigger: 'blur',
  88. message: '请输入密码',
  89. },
  90. username: {
  91. required: true,
  92. trigger: 'blur',
  93. message: '请输入用户名',
  94. },
  95. role: {
  96. required: true,
  97. trigger: 'blur',
  98. message: '请选择角色',
  99. },
  100. }
  101. const tableCheckedKeys = ref([])
  102. //多选事件
  103. const tableSelectionChange = (rows) => {
  104. tableCheckedKeys.value = rows
  105. }
  106. //搜索表单
  107. const searchForm = ref({
  108. queryValue: null, current: 1, size: 20, total: 0,
  109. })
  110. const getTableData = ()=>{
  111. }
  112. //分页被点击
  113. const pageChange = ({ current, size }) => {
  114. searchForm.value.current = current
  115. searchForm.value.size = size
  116. getTableData()
  117. }
  118. const rowEditClick = (row)=>{
  119. addModal.value = true
  120. baseForm.value = row
  121. }
  122. const rowDelClick = ()=>{
  123. HcDelMsg( async ( resolve) => {
  124. // await removeContractTreeNode()
  125. resolve() //关闭弹窗的回调
  126. })
  127. }
  128. const treeRef = ref(null)
  129. const defaultProps = {
  130. children: 'children',
  131. label: 'label',
  132. }
  133. const data = [
  134. {
  135. id: 1,
  136. label: 'Level one 1',
  137. children: [
  138. {
  139. id: 4,
  140. label: 'Level two 1-1',
  141. children: [
  142. {
  143. id: 9,
  144. label: 'Level three 1-1-1',
  145. },
  146. {
  147. id: 10,
  148. label: 'Level three 1-1-2',
  149. },
  150. ],
  151. },
  152. ],
  153. },
  154. {
  155. id: 2,
  156. label: 'Level one 2',
  157. children: [
  158. {
  159. id: 5,
  160. label: 'Level two 2-1',
  161. },
  162. {
  163. id: 6,
  164. label: 'Level two 2-2',
  165. },
  166. ],
  167. },
  168. {
  169. id: 3,
  170. label: 'Level one 3',
  171. children: [
  172. {
  173. id: 7,
  174. label: 'Level two 3-1',
  175. },
  176. {
  177. id: 8,
  178. label: 'Level two 3-2',
  179. },
  180. ],
  181. },
  182. ]
  183. </script>
  184. <style lang='scss' scoped>
  185. .hc-layout-box{
  186. position: relative;
  187. height: 100%;
  188. width: 100%;
  189. }
  190. </style>
  191. <style>
  192. .role-page-table .el-table[hc].new {
  193. --el-table-header-bg-color: #101010;
  194. --el-table-header-text-color: #fff;
  195. --el-table-text-color: #101010;
  196. .is-group th.el-table__cell {
  197. background: var(--el-table-header-bg-color);
  198. }
  199. .el-table-fixed-column--left.el-table__cell,
  200. .el-table-fixed-column--right.el-table__cell {
  201. background: var(--el-table-header-bg-color) !important;
  202. }
  203. tbody .el-table-fixed-column--left.el-table__cell,
  204. tbody .el-table-fixed-column--right.el-table__cell {
  205. background: var(--el-table-tr-bg-color) !important;
  206. }
  207. .el-table__body tr.current-row>td.el-table__cell {
  208. background-color: var(--el-table-current-row-bg-color) !important;
  209. }
  210. }
  211. </style>