Commit 6455ce34413a36039e05fab7d8c96c55035a4353

Authored by fengtao
1 parent 7e1e31b4

fix:[DEFECT-319] 修复消息模板启用批量删除问题

1 <template> 1 <template>
2 <div> 2 <div>
3 - <BasicTable @register="registerTable"> 3 + <BasicTable
  4 + @selection-change="useSelectionChange"
  5 + :rowSelection="{ type: 'checkbox' }"
  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="disabled">
7 批量删除 11 批量删除
8 </a-button> 12 </a-button>
9 </template> 13 </template>
@@ -44,8 +48,7 @@ @@ -44,8 +48,7 @@
44 </div> 48 </div>
45 </template> 49 </template>
46 <script lang="ts"> 50 <script lang="ts">
47 - import { defineComponent } from 'vue';  
48 - 51 + import { defineComponent, ref } from 'vue';
49 import { BasicTable, TableAction, useTable } from '/@/components/Table'; 52 import { BasicTable, TableAction, useTable } from '/@/components/Table';
50 import { useDrawer } from '/@/components/Drawer'; 53 import { useDrawer } from '/@/components/Drawer';
51 import TemplateDrawer from './TemplateDrawer.vue'; 54 import TemplateDrawer from './TemplateDrawer.vue';
@@ -57,21 +60,21 @@ @@ -57,21 +60,21 @@
57 import SendSms from '/@/views/message/template/SendSms.vue'; 60 import SendSms from '/@/views/message/template/SendSms.vue';
58 import { MessageEnum } from '/@/enums/messageEnum'; 61 import { MessageEnum } from '/@/enums/messageEnum';
59 import SendEmail from '/@/views/message/template/SendEmail.vue'; 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 export default defineComponent({ 65 export default defineComponent({
63 name: 'MessageTemplateManagement', 66 name: 'MessageTemplateManagement',
64 components: { SendSms, SendEmail, BasicTable, TemplateDrawer, TableAction }, 67 components: { SendSms, SendEmail, BasicTable, TemplateDrawer, TableAction },
65 setup() { 68 setup() {
  69 + let selectedRowKeys: any = [];
  70 + const disabled = ref(true);
  71 + const { createMessage } = useMessage();
66 const [registerModal, { openModal: openModal }] = useModal(); 72 const [registerModal, { openModal: openModal }] = useModal();
67 const [registerMailModal, { openModal: openMailModal }] = useModal(); 73 const [registerMailModal, { openModal: openMailModal }] = useModal();
68 const go = useGo(); 74 const go = useGo();
69 const [registerDrawer, { openDrawer }] = useDrawer(); 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 title: '消息模板列表', 78 title: '消息模板列表',
76 api: messageTemplatePage, 79 api: messageTemplatePage,
77 columns, 80 columns,
@@ -79,6 +82,7 @@ @@ -79,6 +82,7 @@
79 labelWidth: 120, 82 labelWidth: 120,
80 schemas: searchFormSchema, 83 schemas: searchFormSchema,
81 }, 84 },
  85 + rowKey: 'id',
82 useSearchForm: true, 86 useSearchForm: true,
83 showTableSetting: true, 87 showTableSetting: true,
84 bordered: true, 88 bordered: true,
@@ -90,7 +94,6 @@ @@ -90,7 +94,6 @@
90 slots: { customRender: 'action' }, 94 slots: { customRender: 'action' },
91 fixed: 'right', 95 fixed: 'right',
92 }, 96 },
93 - ...selectionOptions,  
94 }); 97 });
95 98
96 function handleCreate() { 99 function handleCreate() {
@@ -132,6 +135,42 @@ @@ -132,6 +135,42 @@
132 function goConfig() { 135 function goConfig() {
133 go(PageEnum.MESSAGE_CONFIG); 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 return { 174 return {
136 registerTable, 175 registerTable,
137 registerDrawer, 176 registerDrawer,
@@ -142,7 +181,8 @@ @@ -142,7 +181,8 @@
142 handleSuccess, 181 handleSuccess,
143 handleModal, 182 handleModal,
144 goConfig, 183 goConfig,
145 - hasBatchDelete, 184 + useSelectionChange,
  185 + disabled,
146 handleDeleteOrBatchDelete, 186 handleDeleteOrBatchDelete,
147 }; 187 };
148 }, 188 },