Commit 6824f23109ad3d78048403c8d1b1dcfda1ccb00d

Authored by fengtao
1 parent 1de4e6ea

fix:修复超级管理员不能批量删除

... ... @@ -74,7 +74,7 @@
74 74 </div>
75 75 </template>
76 76 <script lang="ts">
77   - import { defineComponent, ref, nextTick, onUnmounted } from 'vue';
  77 + import { defineComponent, ref, nextTick, onUnmounted, reactive } from 'vue';
78 78 import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table';
79 79 import { columns, searchFormSchema } from './device.profile.data';
80 80 import { useMessage } from '/@/hooks/web/useMessage';
... ... @@ -93,7 +93,7 @@
93 93 components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg },
94 94 setup() {
95 95 const deviceDetailRef = ref(null);
96   - let selectedRowKeys: any = [];
  96 + let selectedRowKeys: any = reactive([]);
97 97 const getPathUrl = ref('');
98 98 const getPathUrlName = ref('');
99 99 const disabled = ref(true);
... ... @@ -227,22 +227,30 @@
227 227 }, 10);
228 228 }
229 229 const useSelectionChange = () => {
230   - selectedRowKeys = getSelectRows();
231   - if (selectedRowKeys.length > 0) {
232   - disabled.value = false;
  230 + let getRows = getSelectRows();
  231 + const isJudge = getRows.map((m) => m.default);
  232 + if (isJudge.includes(true)) {
  233 + disabled.value = true;
233 234 } else {
  235 + disabled.value = false;
  236 + }
  237 + if (isJudge.length === 0) {
234 238 disabled.value = true;
235 239 }
236   - };
237   - async function handleTableDel() {
238   - selectedRowKeys = selectedRowKeys
239   - .filter((f: any) => f.default !== true)
240   - .map((m: any) => m.id);
241   - await deviceConfigDelete(selectedRowKeys);
242   - createMessage.success('删除成功');
243   - handleSuccess();
244 240 selectedRowKeys.length = 0;
245   - }
  241 + selectedRowKeys = getRows.filter((f) => f.default !== true).map((m) => m.id);
  242 + };
  243 + const handleTableDel = () => {
  244 + deviceConfigDelete(selectedRowKeys)
  245 + .then((res) => {
  246 + createMessage.success('删除成功');
  247 + selectedRowKeys.length = 0;
  248 + handleSuccess();
  249 + })
  250 + .catch((e) => {
  251 + selectedRowKeys.length = 0;
  252 + });
  253 + };
246 254
247 255 function handleDelete(record: Recordable) {
248 256 let ids = [record.id];
... ...
1 1 <template>
2 2 <div>
3   - <BasicTable @register="registerTable">
  3 + <BasicTable
  4 + :rowSelection="{ type: 'checkbox' }"
  5 + @selection-change="useSelectionChange"
  6 + @register="registerTable"
  7 + >
4 8 <template #toolbar>
5 9 <a-button type="primary" @click="handleCreate">新增角色</a-button>
6   - <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="hasBatchDelete">
  10 + <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="isStatus">
7 11 批量删除
8 12 </a-button>
9 13 </template>
... ... @@ -33,24 +37,25 @@
33 37 </div>
34 38 </template>
35 39 <script lang="ts">
36   - import { defineComponent } from 'vue';
  40 + import { defineComponent, ref } from 'vue';
37 41 import { BasicTable, useTable, TableAction } from '/@/components/Table';
38 42 import { delRole, getRoleListByPage } from '/@/api/system/system';
39 43 import { useDrawer } from '/@/components/Drawer';
40 44 import RoleDrawer from './RoleDrawer.vue';
41 45 import { columns, searchFormSchema } from './role.data';
42 46 import { RoleEnum } from '/@/enums/roleEnum';
43   - import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
  47 + import { useMessage } from '/@/hooks/web/useMessage';
  48 +
44 49 export default defineComponent({
45 50 name: 'RoleManagement',
46 51 components: { BasicTable, RoleDrawer, TableAction },
47 52 setup() {
  53 + const { createMessage } = useMessage();
48 54 const [registerDrawer, { openDrawer }] = useDrawer();
49   - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete(
50   - delRole,
51   - handleSuccess
52   - );
53   - const [registerTable, { reload }] = useTable({
  55 + const isStatus = ref(true);
  56 + let selectArray: any = [];
  57 +
  58 + const [registerTable, { reload, getSelectRows }] = useTable({
54 59 title: '角色列表',
55 60 api: getRoleListByPage,
56 61 columns,
... ... @@ -69,7 +74,6 @@
69 74 slots: { customRender: 'action' },
70 75 fixed: 'right',
71 76 },
72   - ...selectionOptions,
73 77 });
74 78
75 79 function handleCreate() {
... ... @@ -88,6 +92,41 @@
88 92 reload();
89 93 }
90 94
  95 + const useSelectionChange = () => {
  96 + let getRows = getSelectRows();
  97 + const isJudge = getRows.map((m) => m.roleType);
  98 + if (isJudge.includes('SYS_ADMIN')) {
  99 + isStatus.value = true;
  100 + } else {
  101 + isStatus.value = false;
  102 + }
  103 + if (isJudge.length === 0) {
  104 + isStatus.value = true;
  105 + }
  106 + selectArray = getRows.filter((f) => f.status !== 'SYS_ADMIN').map((m) => m.id);
  107 + };
  108 +
  109 + const handleDeleteOrBatchDelete = async (record: Recordable | null) => {
  110 + if (record) {
  111 + try {
  112 + await delRole([record.id]);
  113 + createMessage.success('删除成功');
  114 + handleSuccess();
  115 + } catch (e: any) {}
  116 + } else {
  117 + try {
  118 + await delRole(selectArray);
  119 + createMessage.success('批量删除成功');
  120 + handleSuccess();
  121 + selectArray.length = 0;
  122 + } catch (e: any) {
  123 + selectArray.length = 0;
  124 + } finally {
  125 + selectArray.length = 0;
  126 + }
  127 + }
  128 + };
  129 +
91 130 return {
92 131 registerTable,
93 132 registerDrawer,
... ... @@ -95,8 +134,9 @@
95 134 handleEdit,
96 135 handleSuccess,
97 136 RoleEnum,
98   - hasBatchDelete,
99 137 handleDeleteOrBatchDelete,
  138 + isStatus,
  139 + useSelectionChange,
100 140 };
101 141 },
102 142 });
... ...
... ... @@ -111,9 +111,13 @@
111 111 }
112 112 const useSelectionChange = () => {
113 113 selectedRowKeys = getSelectRows();
114   - if (selectedRowKeys.length !== 0) {
115   - disabled.value = false;
  114 + let isJudge = selectedRowKeys.map((m: any) => m.default);
  115 + if (isJudge.includes(true)) {
  116 + disabled.value = true;
116 117 } else {
  118 + disabled.value = false;
  119 + }
  120 + if (isJudge.length === 0) {
117 121 disabled.value = true;
118 122 }
119 123 };
... ...