user.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <!-- -->
  2. <template>
  3. <div class="hc-layout-box">
  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. <el-button v-yes-com:[refreshPassword] type="info" :disabled="tableCheckedKeys.length === 0" yes-com-text="是否重置密码为 123456">
  15. <hc-icon name="refresh" />
  16. <span>重置密码</span>
  17. </el-button>
  18. <el-button v-yes-com:[exportClick] color="#6CC2FF" yes-com-text="确定导出用户数据?">
  19. <hc-icon name="download" class="text-white" />
  20. <span class="text-white">导出</span>
  21. </el-button>
  22. </template>
  23. <hc-table
  24. is-check
  25. :column="tableColumn"
  26. :datas="tableData"
  27. :header-row-style="tableHeaderRowStyle"
  28. @selection-change="tableSelectionChange"
  29. >
  30. <template #action="{ row }">
  31. <el-link type="success" @click="rowEditClick(row)"> <hc-icon name="edit" />编辑</el-link>
  32. <el-link type="danger" @click="rowDelClick(row)"> <hc-icon name="delete-bin-2" />删除</el-link>
  33. </template>
  34. </hc-table>
  35. <template #action>
  36. <HcPages :pages="searchForm" @change="pageChange" />
  37. </template>
  38. </hc-card>
  39. </div>
  40. <hc-dialog v-model="addModal" title="新增" widths="50rem">
  41. <hc-icon name="user" style="font-size: 18px;" class="font-bold" />
  42. <span class="font-bold">基础信息</span>
  43. <el-divider style="margin-top: 10px;" />
  44. <el-form :inline="true" :model="baseForm" label-width="auto" :rules="baseFormRules">
  45. <div class="hc-form-item">
  46. <el-form-item label="登陆账户:" prop="user">
  47. <el-input v-model="baseForm.user" placeholder="请输入" clearable />
  48. </el-form-item>
  49. <el-form-item label="密码:" prop="password">
  50. <el-input v-model="baseForm.password" placeholder="请输入" clearable show-password type="password" />
  51. </el-form-item>
  52. </div>
  53. <div class="hc-form-item">
  54. <el-form-item label="用户名:" prop="username">
  55. <el-input v-model="baseForm.username" placeholder="请输入" clearable />
  56. </el-form-item>
  57. <el-form-item label="角色:" prop="role">
  58. <el-select
  59. v-model="baseForm.role"
  60. placeholder="请选择"
  61. >
  62. <el-option
  63. v-for="item in roleOptions"
  64. :key="item.value"
  65. :label="item.label"
  66. :value="item.value"
  67. />
  68. </el-select>
  69. </el-form-item>
  70. </div>
  71. </el-form>
  72. </hc-dialog>
  73. </template>
  74. <script setup>
  75. import { ref, watch } from 'vue'
  76. import { HcDelMsg } from 'hc-vue3-ui'
  77. const tableColumn = [
  78. { key: 'key1', name: '登陆账户' },
  79. { key: 'key2', name: '用户名' },
  80. { key: 'key3', name: '角色' },
  81. { key: 'action', name: '操作' },
  82. ]
  83. const tableData = ref([
  84. { key1: 'admin', key2: 'xxx', key3: '超级管理员' },
  85. { key1: '13028304756', key2: 'aaa', key3: '角色' },
  86. ])
  87. //设置表头行的样式
  88. const tableHeaderRowStyle = ({ row, rowIndex }) => {
  89. // --el-table-header-bg-color 是表格,表头行的背景色
  90. return '--el-table-header-bg-color: #4b4b4b; color: white;'
  91. }
  92. const addModal = ref(false)
  93. const addClick = ()=>{
  94. addModal.value = true
  95. }
  96. const baseForm = ref({
  97. user:'',
  98. username: '',
  99. password: '',
  100. role: '',
  101. })
  102. const baseFormRules = {
  103. user: {
  104. required: true,
  105. trigger: 'blur',
  106. message: '请输入登陆账户',
  107. },
  108. password: {
  109. required: true,
  110. trigger: 'blur',
  111. message: '请输入密码',
  112. },
  113. username: {
  114. required: true,
  115. trigger: 'blur',
  116. message: '请输入用户名',
  117. },
  118. role: {
  119. required: true,
  120. trigger: 'blur',
  121. message: '请选择角色',
  122. },
  123. }
  124. const tableCheckedKeys = ref([])
  125. //多选事件
  126. const tableSelectionChange = (rows) => {
  127. tableCheckedKeys.value = rows
  128. }
  129. //搜索表单
  130. const searchForm = ref({
  131. queryValue: null, current: 1, size: 20, total: 0,
  132. })
  133. const getTableData = ()=>{
  134. }
  135. //分页被点击
  136. const pageChange = ({ current, size }) => {
  137. searchForm.value.current = current
  138. searchForm.value.size = size
  139. getTableData()
  140. }
  141. const rowEditClick = (row)=>{
  142. addModal.value = true
  143. baseForm.value = row
  144. }
  145. const rowDelClick = ()=>{
  146. HcDelMsg( async ( resolve) => {
  147. // await removeContractTreeNode()
  148. resolve() //关闭弹窗的回调
  149. })
  150. }
  151. const refreshPassword = async (_, resolve) => {
  152. //这里可以写一些操作
  153. resolve() //这个一定要存在,否则不会关闭弹窗
  154. }
  155. const exportClick = async (_, resolve) => {
  156. //这里可以写一些操作
  157. resolve() //这个一定要存在,否则不会关闭弹窗
  158. }
  159. const roleOptions = ref([ {
  160. value: 'Option1',
  161. label: 'Option1',
  162. },
  163. {
  164. value: 'Option2',
  165. label: 'Option2',
  166. },
  167. {
  168. value: 'Option3',
  169. label: 'Option3',
  170. },
  171. {
  172. value: 'Option4',
  173. label: 'Option4',
  174. },
  175. {
  176. value: 'Option5',
  177. label: 'Option5',
  178. }])
  179. </script>
  180. <style lang='scss' scoped>
  181. .hc-layout-box{
  182. position: relative;
  183. height: 100%;
  184. width: 100%;
  185. }
  186. </style>