RoleUserTable.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <template>
  2. <BasicDrawer @register="registerBaseDrawer" title="角色用户" width="800" destroyOnClose>
  3. <BasicTable @register="registerTable" :rowSelection="rowSelection">
  4. <template #tableTitle>
  5. <a-button type="primary" @click="handleCreate" v-if="!disableUserEdit"> 新增用户</a-button>
  6. <a-button type="primary" @click="handleSelect"> 已有用户</a-button>
  7. <a-dropdown v-if="checkedKeys.length > 0">
  8. <template #overlay>
  9. <a-menu>
  10. <a-menu-item key="1" @click="batchHandleDelete">
  11. <Icon icon="bx:bx-unlink"></Icon>
  12. 取消关联
  13. </a-menu-item>
  14. </a-menu>
  15. </template>
  16. <a-button
  17. >批量操作
  18. <Icon icon="ant-design:down-outlined"></Icon>
  19. </a-button>
  20. </a-dropdown>
  21. </template>
  22. <template #action="{ record }">
  23. <TableAction :actions="getTableAction(record)" />
  24. </template>
  25. </BasicTable>
  26. <!--用户操作抽屉-->
  27. <UserDrawer @register="registerDrawer" @success="handleSuccess" />
  28. <!--用户选择弹窗-->
  29. <UseSelectModal @register="registerModal" @select="selectOk" />
  30. </BasicDrawer>
  31. </template>
  32. <script lang="ts" setup>
  33. import { ref, watch, unref } from 'vue';
  34. import { BasicTable, useTable, TableAction } from '/src/components/Table';
  35. import { BasicDrawer, useDrawer, useDrawerInner } from '/src/components/Drawer';
  36. import { useModal } from '/src/components/Modal';
  37. import UserDrawer from '../../user/UserDrawer.vue';
  38. import UseSelectModal from './UseSelectModal.vue';
  39. import { userList, deleteUserRole, batchDeleteUserRole, addUserRole } from '../role.api';
  40. import { userColumns, searchUserFormSchema } from '../role.data';
  41. import { getUserRoles } from '../../user/user.api';
  42. const emit = defineEmits(['register', 'hideUserList']);
  43. const props = defineProps({
  44. disableUserEdit: {type:Boolean,default:false}
  45. })
  46. const checkedKeys = ref<Array<string | number>>([]);
  47. const roleId = ref('');
  48. const [registerBaseDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
  49. roleId.value = data.id;
  50. setProps({ searchInfo: { roleId: data.id } });
  51. reload();
  52. });
  53. //注册drawer
  54. const [registerDrawer, { openDrawer }] = useDrawer();
  55. //注册drawer
  56. const [registerModal, { openModal }] = useModal();
  57. const [registerTable, { reload, updateTableDataRecord, setProps }] = useTable({
  58. title: '用户列表',
  59. api: userList,
  60. columns: userColumns,
  61. formConfig: {
  62. //update-begin---author:wangshuai ---date:20230703 for:【QQYUN-5685】3、租户角色下,查询居左显示
  63. labelWidth: 60,
  64. //update-end---author:wangshuai ---date:20230703 for:【QQYUN-5685】3、租户角色下,查询居左显示
  65. schemas: searchUserFormSchema,
  66. autoSubmitOnEnter: true,
  67. },
  68. striped: true,
  69. useSearchForm: true,
  70. showTableSetting: true,
  71. clickToRowSelect: false,
  72. bordered: true,
  73. showIndexColumn: false,
  74. tableSetting: { fullScreen: true },
  75. canResize: false,
  76. rowKey: 'id',
  77. actionColumn: {
  78. width: 180,
  79. title: '操作',
  80. dataIndex: 'action',
  81. slots: { customRender: 'action' },
  82. fixed: undefined,
  83. },
  84. });
  85. /**
  86. * 选择列配置
  87. */
  88. const rowSelection = {
  89. type: 'checkbox',
  90. columnWidth: 50,
  91. selectedRowKeys: checkedKeys,
  92. onChange: onSelectChange,
  93. };
  94. /**
  95. * 选择事件
  96. */
  97. function onSelectChange(selectedRowKeys: (string | number)[], selectionRows) {
  98. checkedKeys.value = selectedRowKeys;
  99. }
  100. /**
  101. * 新增
  102. */
  103. function handleCreate() {
  104. openDrawer(true, {
  105. isUpdate: false,
  106. selectedroles: [roleId.value],
  107. isRole: true,
  108. });
  109. }
  110. /**
  111. * 编辑
  112. */
  113. async function handleEdit(record: Recordable) {
  114. try {
  115. const userRoles = await getUserRoles({ userid: record.id });
  116. if (userRoles && userRoles.length > 0) {
  117. record.selectedroles = userRoles;
  118. }
  119. } catch (e) {
  120. console.log(e);
  121. }
  122. openDrawer(true, {
  123. record,
  124. isUpdate: true,
  125. isRole: true,
  126. });
  127. }
  128. /**
  129. * 删除事件
  130. */
  131. async function handleDelete(record) {
  132. await deleteUserRole({ userId: record.id, roleId: roleId.value }, reload);
  133. }
  134. /**
  135. * 批量删除事件
  136. */
  137. async function batchHandleDelete() {
  138. await batchDeleteUserRole({ userIds: checkedKeys.value.join(','), roleId: roleId.value }, reload);
  139. }
  140. /**
  141. * 成功回调
  142. */
  143. function handleSuccess({ isUpdate, values }) {
  144. isUpdate ? updateTableDataRecord(values.id, values) : reload();
  145. }
  146. /**
  147. * 选择已有用户
  148. */
  149. function handleSelect() {
  150. openModal(true);
  151. }
  152. /**
  153. * 添加已有用户
  154. */
  155. async function selectOk(val) {
  156. await addUserRole({ roleId: roleId.value, userIdList: val }, reload);
  157. }
  158. /**
  159. * 操作栏
  160. */
  161. function getTableAction(record) {
  162. return [
  163. {
  164. label: '编辑',
  165. onClick: handleEdit.bind(null, record),
  166. ifShow: () => !props.disableUserEdit,
  167. },
  168. {
  169. label: '取消关联',
  170. popConfirm: {
  171. title: '是否确认取消关联',
  172. confirm: handleDelete.bind(null, record),
  173. },
  174. },
  175. ];
  176. }
  177. </script>
  178. <style scoped>
  179. /*update-begin---author:wangshuai ---date:20230703 for:【QQYUN-5685】3、租户角色下,查询居左显示*/
  180. :deep(.ant-form-item-control-input-content){
  181. text-align: left;
  182. }
  183. /*update-end---author:wangshuai ---date:20230703 for:【QQYUN-5685】3、租户角色下,查询居左显示*/
  184. </style>