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
|
});
|