Showing
1 changed file
with
52 additions
and
12 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 | }, | ... | ... |