Commit 6824f23109ad3d78048403c8d1b1dcfda1ccb00d

Authored by fengtao
1 parent 1de4e6ea

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

@@ -74,7 +74,7 @@ @@ -74,7 +74,7 @@
74 </div> 74 </div>
75 </template> 75 </template>
76 <script lang="ts"> 76 <script lang="ts">
77 - import { defineComponent, ref, nextTick, onUnmounted } from 'vue'; 77 + import { defineComponent, ref, nextTick, onUnmounted, reactive } from 'vue';
78 import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; 78 import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table';
79 import { columns, searchFormSchema } from './device.profile.data'; 79 import { columns, searchFormSchema } from './device.profile.data';
80 import { useMessage } from '/@/hooks/web/useMessage'; 80 import { useMessage } from '/@/hooks/web/useMessage';
@@ -93,7 +93,7 @@ @@ -93,7 +93,7 @@
93 components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg }, 93 components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, TableImg },
94 setup() { 94 setup() {
95 const deviceDetailRef = ref(null); 95 const deviceDetailRef = ref(null);
96 - let selectedRowKeys: any = []; 96 + let selectedRowKeys: any = reactive([]);
97 const getPathUrl = ref(''); 97 const getPathUrl = ref('');
98 const getPathUrlName = ref(''); 98 const getPathUrlName = ref('');
99 const disabled = ref(true); 99 const disabled = ref(true);
@@ -227,22 +227,30 @@ @@ -227,22 +227,30 @@
227 }, 10); 227 }, 10);
228 } 228 }
229 const useSelectionChange = () => { 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 } else { 234 } else {
  235 + disabled.value = false;
  236 + }
  237 + if (isJudge.length === 0) {
234 disabled.value = true; 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 selectedRowKeys.length = 0; 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 function handleDelete(record: Recordable) { 255 function handleDelete(record: Recordable) {
248 let ids = [record.id]; 256 let ids = [record.id];
1 <template> 1 <template>
2 <div> 2 <div>
3 - <BasicTable @register="registerTable"> 3 + <BasicTable
  4 + :rowSelection="{ type: 'checkbox' }"
  5 + @selection-change="useSelectionChange"
  6 + @register="registerTable"
  7 + >
4 <template #toolbar> 8 <template #toolbar>
5 <a-button type="primary" @click="handleCreate">新增角色</a-button> 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 </a-button> 12 </a-button>
9 </template> 13 </template>
@@ -33,24 +37,25 @@ @@ -33,24 +37,25 @@
33 </div> 37 </div>
34 </template> 38 </template>
35 <script lang="ts"> 39 <script lang="ts">
36 - import { defineComponent } from 'vue'; 40 + import { defineComponent, ref } from 'vue';
37 import { BasicTable, useTable, TableAction } from '/@/components/Table'; 41 import { BasicTable, useTable, TableAction } from '/@/components/Table';
38 import { delRole, getRoleListByPage } from '/@/api/system/system'; 42 import { delRole, getRoleListByPage } from '/@/api/system/system';
39 import { useDrawer } from '/@/components/Drawer'; 43 import { useDrawer } from '/@/components/Drawer';
40 import RoleDrawer from './RoleDrawer.vue'; 44 import RoleDrawer from './RoleDrawer.vue';
41 import { columns, searchFormSchema } from './role.data'; 45 import { columns, searchFormSchema } from './role.data';
42 import { RoleEnum } from '/@/enums/roleEnum'; 46 import { RoleEnum } from '/@/enums/roleEnum';
43 - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; 47 + import { useMessage } from '/@/hooks/web/useMessage';
  48 +
44 export default defineComponent({ 49 export default defineComponent({
45 name: 'RoleManagement', 50 name: 'RoleManagement',
46 components: { BasicTable, RoleDrawer, TableAction }, 51 components: { BasicTable, RoleDrawer, TableAction },
47 setup() { 52 setup() {
  53 + const { createMessage } = useMessage();
48 const [registerDrawer, { openDrawer }] = useDrawer(); 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 title: '角色列表', 59 title: '角色列表',
55 api: getRoleListByPage, 60 api: getRoleListByPage,
56 columns, 61 columns,
@@ -69,7 +74,6 @@ @@ -69,7 +74,6 @@
69 slots: { customRender: 'action' }, 74 slots: { customRender: 'action' },
70 fixed: 'right', 75 fixed: 'right',
71 }, 76 },
72 - ...selectionOptions,  
73 }); 77 });
74 78
75 function handleCreate() { 79 function handleCreate() {
@@ -88,6 +92,41 @@ @@ -88,6 +92,41 @@
88 reload(); 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 return { 130 return {
92 registerTable, 131 registerTable,
93 registerDrawer, 132 registerDrawer,
@@ -95,8 +134,9 @@ @@ -95,8 +134,9 @@
95 handleEdit, 134 handleEdit,
96 handleSuccess, 135 handleSuccess,
97 RoleEnum, 136 RoleEnum,
98 - hasBatchDelete,  
99 handleDeleteOrBatchDelete, 137 handleDeleteOrBatchDelete,
  138 + isStatus,
  139 + useSelectionChange,
100 }; 140 };
101 }, 141 },
102 }); 142 });
@@ -111,9 +111,13 @@ @@ -111,9 +111,13 @@
111 } 111 }
112 const useSelectionChange = () => { 112 const useSelectionChange = () => {
113 selectedRowKeys = getSelectRows(); 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 } else { 117 } else {
  118 + disabled.value = false;
  119 + }
  120 + if (isJudge.length === 0) {
117 disabled.value = true; 121 disabled.value = true;
118 } 122 }
119 }; 123 };