Commit 94dc8a183b0aa7e5cf1ac18367b32b015640472f
Merge branch 'ft' into 'main'
fix:[DEFECT-319] 修复消息模板启用批量删除问题 See merge request huang/yun-teng-iot-front!188
Showing
3 changed files
with
54 additions
and
13 deletions
1 | 1 | <template> |
2 | 2 | <div> |
3 | - <BasicTable @register="registerTable"> | |
3 | + <BasicTable | |
4 | + @selection-change="useSelectionChange" | |
5 | + :rowSelection="{ type: 'checkbox' }" | |
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="disabled"> | |
7 | 11 | 批量删除 |
8 | 12 | </a-button> |
9 | 13 | </template> |
... | ... | @@ -44,8 +48,7 @@ |
44 | 48 | </div> |
45 | 49 | </template> |
46 | 50 | <script lang="ts"> |
47 | - import { defineComponent } from 'vue'; | |
48 | - | |
51 | + import { defineComponent, ref } from 'vue'; | |
49 | 52 | import { BasicTable, TableAction, useTable } from '/@/components/Table'; |
50 | 53 | import { useDrawer } from '/@/components/Drawer'; |
51 | 54 | import TemplateDrawer from './TemplateDrawer.vue'; |
... | ... | @@ -57,21 +60,21 @@ |
57 | 60 | import SendSms from '/@/views/message/template/SendSms.vue'; |
58 | 61 | import { MessageEnum } from '/@/enums/messageEnum'; |
59 | 62 | import SendEmail from '/@/views/message/template/SendEmail.vue'; |
60 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
63 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
61 | 64 | |
62 | 65 | export default defineComponent({ |
63 | 66 | name: 'MessageTemplateManagement', |
64 | 67 | components: { SendSms, SendEmail, BasicTable, TemplateDrawer, TableAction }, |
65 | 68 | setup() { |
69 | + let selectedRowKeys: any = []; | |
70 | + const disabled = ref(true); | |
71 | + const { createMessage } = useMessage(); | |
66 | 72 | const [registerModal, { openModal: openModal }] = useModal(); |
67 | 73 | const [registerMailModal, { openModal: openMailModal }] = useModal(); |
68 | 74 | const go = useGo(); |
69 | 75 | const [registerDrawer, { openDrawer }] = useDrawer(); |
70 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete( | |
71 | - deleteMessageTemplate, | |
72 | - handleSuccess | |
73 | - ); | |
74 | - const [registerTable, { reload }] = useTable({ | |
76 | + | |
77 | + const [registerTable, { reload, getSelectRows, getSelectRowKeys }] = useTable({ | |
75 | 78 | title: '消息模板列表', |
76 | 79 | api: messageTemplatePage, |
77 | 80 | columns, |
... | ... | @@ -79,6 +82,7 @@ |
79 | 82 | labelWidth: 120, |
80 | 83 | schemas: searchFormSchema, |
81 | 84 | }, |
85 | + rowKey: 'id', | |
82 | 86 | useSearchForm: true, |
83 | 87 | showTableSetting: true, |
84 | 88 | bordered: true, |
... | ... | @@ -90,7 +94,6 @@ |
90 | 94 | slots: { customRender: 'action' }, |
91 | 95 | fixed: 'right', |
92 | 96 | }, |
93 | - ...selectionOptions, | |
94 | 97 | }); |
95 | 98 | |
96 | 99 | function handleCreate() { |
... | ... | @@ -132,6 +135,42 @@ |
132 | 135 | function goConfig() { |
133 | 136 | go(PageEnum.MESSAGE_CONFIG); |
134 | 137 | } |
138 | + const useSelectionChange = () => { | |
139 | + selectedRowKeys = getSelectRowKeys(); | |
140 | + if (selectedRowKeys.length > 0) { | |
141 | + disabled.value = false; | |
142 | + } | |
143 | + const isJudge = getSelectRows().map((m) => m.status); | |
144 | + if (isJudge.includes(1)) { | |
145 | + disabled.value = true; | |
146 | + } else { | |
147 | + disabled.value = false; | |
148 | + } | |
149 | + if (isJudge.length === 0) { | |
150 | + disabled.value = true; | |
151 | + } | |
152 | + }; | |
153 | + // 删除或批量删除 | |
154 | + const handleDeleteOrBatchDelete = async (record: Recordable | null) => { | |
155 | + if (record) { | |
156 | + try { | |
157 | + await deleteMessageTemplate([record.id]); | |
158 | + createMessage.success('删除成功'); | |
159 | + handleSuccess(); | |
160 | + } catch (e: any) {} | |
161 | + } else { | |
162 | + try { | |
163 | + await deleteMessageTemplate(selectedRowKeys); | |
164 | + createMessage.success('批量删除成功'); | |
165 | + handleSuccess(); | |
166 | + selectedRowKeys.length = 0; | |
167 | + } catch (e: any) { | |
168 | + selectedRowKeys.length = 0; | |
169 | + } finally { | |
170 | + selectedRowKeys.length = 0; | |
171 | + } | |
172 | + } | |
173 | + }; | |
135 | 174 | return { |
136 | 175 | registerTable, |
137 | 176 | registerDrawer, |
... | ... | @@ -142,7 +181,8 @@ |
142 | 181 | handleSuccess, |
143 | 182 | handleModal, |
144 | 183 | goConfig, |
145 | - hasBatchDelete, | |
184 | + useSelectionChange, | |
185 | + disabled, | |
146 | 186 | handleDeleteOrBatchDelete, |
147 | 187 | }; |
148 | 188 | }, | ... | ... |