From 2e2a14781554a7082e3bf6844b127d3f2df0599f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 1 Oct 2025 10:48:23 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91=E3=80=90ele?= =?UTF-8?q?=E3=80=91=E7=BB=9F=E4=B8=80=20infra=20=E5=92=8C=20system=20?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC=EF=BC=88demo03/er?= =?UTF-8?q?p=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/crm/product/category/index.vue | 2 +- .../src/views/infra/demo/demo01/index.vue | 2 +- .../views/infra/demo/demo01/modules/form.vue | 21 ++-- .../src/views/infra/demo/demo03/erp/index.vue | 106 +++++++++--------- .../demo03/erp/modules/demo03-course-form.vue | 2 - .../demo03/erp/modules/demo03-course-list.vue | 77 +++++++------ .../demo03/erp/modules/demo03-grade-form.vue | 2 - .../demo03/erp/modules/demo03-grade-list.vue | 75 ++++++------- .../infra/demo/demo03/erp/modules/form.vue | 21 ++-- .../views/infra/demo/demo03/inner/index.vue | 2 +- .../views/infra/demo/demo03/normal/index.vue | 2 +- .../views/infra/demo/general/demo01/index.vue | 2 +- .../views/infra/demo/general/demo02/index.vue | 2 +- .../infra/demo/general/demo03/erp/index.vue | 2 +- .../infra/demo/general/demo03/inner/index.vue | 2 +- .../demo/general/demo03/normal/index.vue | 2 +- .../src/views/mall/product/category/index.vue | 2 +- apps/web-antd/src/views/system/menu/index.vue | 2 +- .../src/views/infra/demo/demo01/index.vue | 2 +- .../views/infra/demo/demo01/modules/form.vue | 21 ++-- .../src/views/infra/demo/demo03/erp/data.ts | 6 +- .../src/views/infra/demo/demo03/erp/index.vue | 30 +++-- .../demo03/erp/modules/demo03-course-form.vue | 2 - .../demo03/erp/modules/demo03-course-list.vue | 19 ++-- .../demo03/erp/modules/demo03-grade-form.vue | 2 - .../demo03/erp/modules/demo03-grade-list.vue | 19 ++-- .../infra/demo/demo03/erp/modules/form.vue | 21 ++-- .../views/infra/demo/demo03/inner/index.vue | 4 +- .../views/infra/demo/demo03/normal/index.vue | 4 +- .../views/infra/demo/general/demo01/index.vue | 4 +- .../views/infra/demo/general/demo02/index.vue | 3 +- .../infra/demo/general/demo03/erp/index.vue | 4 +- .../demo03/erp/modules/demo03-course-list.vue | 2 - .../demo03/erp/modules/demo03-grade-list.vue | 2 - .../infra/demo/general/demo03/inner/index.vue | 4 +- .../demo/general/demo03/normal/index.vue | 4 +- .../src/views/mall/product/category/index.vue | 2 +- apps/web-ele/src/views/system/menu/index.vue | 2 +- 38 files changed, 222 insertions(+), 261 deletions(-) diff --git a/apps/web-antd/src/views/crm/product/category/index.vue b/apps/web-antd/src/views/crm/product/category/index.vue index 6506d0ce..1a5c780e 100644 --- a/apps/web-antd/src/views/crm/product/category/index.vue +++ b/apps/web-antd/src/views/crm/product/category/index.vue @@ -37,7 +37,7 @@ function handleRefresh() { /** 创建分类 */ function handleCreate() { - formModalApi.setData({}).open(); + formModalApi.setData(null).open(); } /** 添加下级分类 */ diff --git a/apps/web-antd/src/views/infra/demo/demo01/index.vue b/apps/web-antd/src/views/infra/demo/demo01/index.vue index 843fe203..eaaa44b8 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo01/index.vue @@ -39,7 +39,7 @@ async function handleExport() { /** 创建示例联系人 */ function handleCreate() { - formModalApi.setData({}).open(); + formModalApi.setData(null).open(); } /** 编辑示例联系人 */ diff --git a/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue b/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue index 35a36074..e430bf2b 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue +++ b/apps/web-antd/src/views/infra/demo/demo01/modules/form.vue @@ -65,21 +65,20 @@ const [Modal, modalApi] = useVbenModal({ return; } // 加载数据 - let data = modalApi.getData(); - if (!data) { + const data = modalApi.getData(); + if (!data || !data.id) { return; } - if (data.id) { - modalApi.lock(); - try { - data = await getDemo01Contact(data.id); - } finally { - modalApi.unlock(); + modalApi.lock(); + try { + formData.value = await getDemo01Contact(data.id); + // 设置到 values + if (formData.value) { + await formApi.setValues(formData.value); } + } finally { + modalApi.unlock(); } - // 设置到 values - formData.value = data; - await formApi.setValues(formData.value); }, }); diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue index af78d1fd..610f11cc 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/index.vue @@ -2,13 +2,12 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { Demo03StudentApi } from '#/api/infra/demo/demo03/erp'; -import { h, ref } from 'vue'; +import { ref } from 'vue'; -import { Page, useVbenModal } from '@vben/common-ui'; -import { Download, Plus, Trash2 } from '@vben/icons'; +import { confirm, Page, useVbenModal } from '@vben/common-ui'; import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { Button, message, Tabs } from 'ant-design-vue'; +import { message, Tabs } from 'ant-design-vue'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -34,48 +33,53 @@ const [FormModal, formModalApi] = useVbenModal({ }); /** 刷新表格 */ -function onRefresh() { +function handleRefresh() { gridApi.query(); } +/** 导出表格 */ +async function handleExport() { + const data = await exportDemo03Student(await gridApi.formApi.getValues()); + downloadFileFromBlobPart({ fileName: '学生.xls', source: data }); +} + /** 创建学生 */ -function onCreate() { - formModalApi.setData({}).open(); +function handleCreate() { + formModalApi.setData(null).open(); } /** 编辑学生 */ -function onEdit(row: Demo03StudentApi.Demo03Student) { +function handleEdit(row: Demo03StudentApi.Demo03Student) { formModalApi.setData(row).open(); } /** 删除学生 */ -async function onDelete(row: Demo03StudentApi.Demo03Student) { +async function handleDelete(row: Demo03StudentApi.Demo03Student) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.id]), duration: 0, - key: 'action_process_msg', }); try { await deleteDemo03Student(row.id!); message.success($t('ui.actionMessage.deleteSuccess', [row.id])); - onRefresh(); + handleRefresh(); } finally { hideLoading(); } } /** 批量删除学生 */ -async function onDeleteBatch() { +async function handleDeleteBatch() { + await confirm($t('ui.actionMessage.deleteBatchConfirm')); const hideLoading = message.loading({ - content: $t('ui.actionMessage.deleting'), + content: $t('ui.actionMessage.deletingBatch'), duration: 0, - key: 'action_process_msg', }); try { await deleteDemo03StudentList(checkedIds.value); checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); + handleRefresh(); } finally { hideLoading(); } @@ -85,17 +89,11 @@ const checkedIds = ref([]); function handleRowCheckboxChange({ records, }: { - records: Demo03StudentApi.Demo03Grade[]; + records: Demo03StudentApi.Demo03Student[]; }) { checkedIds.value = records.map((item) => item.id!); } -/** 导出表格 */ -async function onExport() { - const data = await exportDemo03Student(await gridApi.formApi.getValues()); - downloadFileFromBlobPart({ fileName: '学生.xls', source: data }); -} - const [Grid, gridApi] = useVbenVxeGrid({ formOptions: { schema: useGridFormSchema(), @@ -139,39 +137,37 @@ const [Grid, gridApi] = useVbenVxeGrid({