UserQuitModal.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <BasicModal v-bind="$attrs" @register="registerModal" title="离职人员信息" :showOkBtn="false" width="1000px" destroyOnClose>
  3. <BasicTable @register="registerTable" :rowSelection="rowSelection">
  4. <!--插槽:table标题-->
  5. <template #tableTitle>
  6. <a-dropdown v-if="selectedRowKeys.length > 0">
  7. <template #overlay>
  8. <a-menu>
  9. <a-menu-item key="1" @click="batchHandleRevert">
  10. <Icon icon="ant-design:redo-outlined"></Icon>
  11. 批量取消
  12. </a-menu-item>
  13. </a-menu>
  14. </template>
  15. <a-button
  16. >批量操作
  17. <Icon icon="ant-design:down-outlined"></Icon>
  18. </a-button>
  19. </a-dropdown>
  20. </template>
  21. <!--操作栏-->
  22. <template #action="{ record }">
  23. <TableAction :actions="getTableAction(record)" />
  24. </template>
  25. </BasicTable>
  26. </BasicModal>
  27. </template>
  28. <script lang="ts" setup name="user-quit-modal">
  29. import { ref, toRaw, unref } from 'vue';
  30. import { BasicModal, useModalInner } from '/@/components/Modal';
  31. import { BasicTable, useTable, TableAction } from '/@/components/Table';
  32. import { recycleColumns } from './user.data';
  33. import { getQuitList, putCancelQuit, deleteRecycleBin } from './user.api';
  34. import { useMessage } from '/@/hooks/web/useMessage';
  35. import { useListPage } from '/@/hooks/system/useListPage';
  36. import { Modal } from 'ant-design-vue';
  37. import { defHttp } from '/@/utils/http/axios';
  38. const { createConfirm } = useMessage();
  39. // 声明Emits
  40. const emit = defineEmits(['success', 'register']);
  41. const checkedKeys = ref<Array<string | number>>([]);
  42. const [registerModal] = useModalInner(() => {
  43. checkedKeys.value = [];
  44. });
  45. //注册table数据
  46. const { prefixCls, tableContext } = useListPage({
  47. tableProps: {
  48. api: getQuitList,
  49. columns: recycleColumns,
  50. rowKey: 'id',
  51. useSearchForm: false,
  52. actionColumn: {
  53. width: 120,
  54. },
  55. },
  56. });
  57. //注册table数据
  58. const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
  59. /**
  60. * 取消离职事件
  61. * @param record
  62. */
  63. async function handleCancelQuit(record) {
  64. await putCancelQuit({ userIds: record.id, usernames: record.username }, reload);
  65. emit('success');
  66. }
  67. /**
  68. * 批量取消离职事件
  69. */
  70. function batchHandleRevert() {
  71. Modal.confirm({
  72. title: '取消离职',
  73. content: '取消离职交接人也会清空',
  74. okText: '确认',
  75. cancelText: '取消',
  76. onOk: () => {
  77. let rowValue = selectedRows.value;
  78. let rowData: any = [];
  79. for (const value of rowValue) {
  80. rowData.push(value.username);
  81. }
  82. handleCancelQuit({ id: toRaw(unref(selectedRowKeys)).join(','), username: rowData.join(',') });
  83. },
  84. });
  85. }
  86. //获取操作栏事件
  87. function getTableAction(record) {
  88. return [
  89. {
  90. label: '取消离职',
  91. icon: 'ant-design:redo-outlined',
  92. popConfirm: {
  93. title: '是否取消离职,取消离职交接人也会清空',
  94. confirm: handleCancelQuit.bind(null, record),
  95. },
  96. },
  97. ];
  98. }
  99. </script>
  100. <style scoped lang="less">
  101. :deep(.ant-popover-inner-content) {
  102. width: 185px !important;
  103. }
  104. </style>