From 15359ab9a33536fa36cc34622a4f232ab22611f6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 6 Sep 2025 17:18:17 +0800 Subject: [PATCH] =?UTF-8?q?reactor=EF=BC=9A=E3=80=90system=20=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E7=AE=A1=E7=90=86=E3=80=91sms/channel=20=E8=BF=9B?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E7=BB=9F=E4=B8=80=E4=BB=A3=E7=A0=81=E9=A3=8E?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/system/sms/channel/data.ts | 27 +++-- .../src/views/system/sms/channel/index.vue | 79 +++++--------- .../views/system/sms/channel/modules/form.vue | 2 +- .../src/views/system/sms/channel/data.ts | 48 ++------- .../src/views/system/sms/channel/index.vue | 101 +++++++++--------- .../views/system/sms/channel/modules/form.vue | 2 +- 6 files changed, 106 insertions(+), 153 deletions(-) diff --git a/apps/web-antd/src/views/system/sms/channel/data.ts b/apps/web-antd/src/views/system/sms/channel/data.ts index d4841c0d9..3320291c2 100644 --- a/apps/web-antd/src/views/system/sms/channel/data.ts +++ b/apps/web-antd/src/views/system/sms/channel/data.ts @@ -48,6 +48,14 @@ export function useFormSchema(): VbenFormSchema[] { }, rules: z.number().default(CommonStatusEnum.ENABLE), }, + { + fieldName: 'remark', + label: '备注', + component: 'Textarea', + componentProps: { + placeholder: '请输入备注', + }, + }, { fieldName: 'apiKey', label: '短信 API 的账号', @@ -73,14 +81,6 @@ export function useFormSchema(): VbenFormSchema[] { placeholder: '请输入短信发送回调 URL', }, }, - { - fieldName: 'remark', - label: '备注', - component: 'Textarea', - componentProps: { - placeholder: '请输入备注', - }, - }, ]; } @@ -134,14 +134,17 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'id', title: '编号', + minWidth: 100, }, { field: 'signature', title: '短信签名', + minWidth: 120, }, { field: 'code', title: '渠道编码', + minWidth: 120, cellRender: { name: 'CellDict', props: { type: DICT_TYPE.SYSTEM_SMS_CHANNEL_CODE }, @@ -150,6 +153,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'status', title: '启用状态', + minWidth: 100, cellRender: { name: 'CellDict', props: { type: DICT_TYPE.COMMON_STATUS }, @@ -158,27 +162,32 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'apiKey', title: '短信 API 的账号', + minWidth: 180, }, { field: 'apiSecret', title: '短信 API 的密钥', + minWidth: 180, }, { field: 'callbackUrl', title: '短信发送回调 URL', + minWidth: 180, }, { field: 'createTime', title: '创建时间', + minWidth: 180, formatter: 'formatDateTime', }, { field: 'remark', title: '备注', + minWidth: 120, }, { title: '操作', - width: 130, + width: 220, fixed: 'right', slots: { default: 'actions' }, }, diff --git a/apps/web-antd/src/views/system/sms/channel/index.vue b/apps/web-antd/src/views/system/sms/channel/index.vue index eaf04e088..df764a9b3 100644 --- a/apps/web-antd/src/views/system/sms/channel/index.vue +++ b/apps/web-antd/src/views/system/sms/channel/index.vue @@ -4,8 +4,8 @@ import type { SystemSmsChannelApi } from '#/api/system/sms/channel'; import { ref } from 'vue'; -import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; +import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; +import { isEmpty } from '@vben/utils'; import { message } from 'ant-design-vue'; @@ -13,7 +13,6 @@ import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteSmsChannel, deleteSmsChannelList, - exportSmsChannel, getSmsChannelPage, } from '#/api/system/sms/channel'; import { $t } from '#/locales'; @@ -27,16 +26,10 @@ const [FormModal, formModalApi] = useVbenModal({ }); /** 刷新表格 */ -function onRefresh() { +function handleRefresh() { gridApi.query(); } -/** 导出表格 */ -async function handleExport() { - const data = await exportSmsChannel(await gridApi.formApi.getValues()); - downloadFileFromBlobPart({ fileName: '短信渠道.xls', source: data }); -} - /** 创建短信渠道 */ function handleCreate() { formModalApi.setData(null).open(); @@ -51,15 +44,29 @@ function handleEdit(row: SystemSmsChannelApi.SmsChannel) { async function handleDelete(row: SystemSmsChannelApi.SmsChannel) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.signature]), - key: 'action_key_msg', + duration: 0, }); try { await deleteSmsChannel(row.id as number); - message.success({ - content: $t('ui.actionMessage.deleteSuccess', [row.signature]), - key: 'action_key_msg', - }); - onRefresh(); + message.success($t('ui.actionMessage.deleteSuccess', [row.signature])); + handleRefresh(); + } finally { + hideLoading(); + } +} + +/** 批量删除短信渠道 */ +async function handleDeleteBatch() { + await confirm($t('ui.actionMessage.deleteBatchConfirm')); + const hideLoading = message.loading({ + content: $t('ui.actionMessage.deletingBatch'), + duration: 0, + }); + try { + await deleteSmsChannelList(checkedIds.value); + checkedIds.value = []; + message.success($t('ui.actionMessage.deleteSuccess')); + handleRefresh(); } finally { hideLoading(); } @@ -74,30 +81,6 @@ function handleRowCheckboxChange({ checkedIds.value = records.map((item) => item.id!); } -/** 批量删除处理 */ -async function handleDeleteBatch() { - if (checkedIds.value.length === 0) { - message.warning('请至少选择一条数据'); - return; - } - const hideLoading = message.loading({ - content: $t('ui.actionMessage.deleting', ['短信渠道']), - key: 'action_key_msg', - }); - try { - await deleteSmsChannelList(checkedIds.value); - checkedIds.value = []; - message.success({ - content: $t('ui.actionMessage.deleteSuccess', ['短信渠道']), - key: 'action_key_msg', - }); - checkedIds.value = []; - onRefresh(); - } finally { - hideLoading(); - } -} - const [Grid, gridApi] = useVbenVxeGrid({ formOptions: { schema: useGridFormSchema(), @@ -125,9 +108,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ refresh: true, search: true, }, - checkboxConfig: { - checkField: 'checked', - }, } as VxeTableGridOptions, gridEvents: { checkboxAll: handleRowCheckboxChange, @@ -142,7 +122,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ - +