From ccf9c3fd53de1b5470bee5d329c5743090cff198 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sat, 9 Aug 2025 12:10:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(@vben/web-antd):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E5=90=8E=20checkedIds=20?= =?UTF-8?q?=E6=9C=AA=E9=87=8D=E7=BD=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/views/erp/purchase/order/index.vue | 1 + apps/web-antd/src/views/infra/codegen/index.vue | 1 + apps/web-antd/src/views/infra/config/index.vue | 1 + apps/web-antd/src/views/infra/demo/demo01/index.vue | 1 + apps/web-antd/src/views/infra/demo/demo03/erp/index.vue | 1 + .../views/infra/demo/demo03/erp/modules/demo03-course-list.vue | 1 + .../views/infra/demo/demo03/erp/modules/demo03-grade-list.vue | 1 + apps/web-antd/src/views/infra/demo/demo03/inner/index.vue | 1 + apps/web-antd/src/views/infra/demo/demo03/normal/index.vue | 1 + apps/web-antd/src/views/infra/demo/general/demo01/index.vue | 1 + apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue | 1 + .../infra/demo/general/demo03/erp/modules/demo03-course-list.vue | 1 + .../infra/demo/general/demo03/erp/modules/demo03-grade-list.vue | 1 + .../web-antd/src/views/infra/demo/general/demo03/inner/index.vue | 1 + .../src/views/infra/demo/general/demo03/normal/index.vue | 1 + apps/web-antd/src/views/infra/file/index.vue | 1 + apps/web-antd/src/views/infra/fileConfig/index.vue | 1 + apps/web-antd/src/views/infra/job/index.vue | 1 + apps/web-antd/src/views/system/dept/index.vue | 1 + apps/web-antd/src/views/system/dict/modules/data-grid.vue | 1 + apps/web-antd/src/views/system/dict/modules/type-grid.vue | 1 + apps/web-antd/src/views/system/mail/account/index.vue | 1 + apps/web-antd/src/views/system/mail/template/index.vue | 1 + apps/web-antd/src/views/system/notice/index.vue | 1 + apps/web-antd/src/views/system/notify/template/index.vue | 1 + apps/web-antd/src/views/system/post/index.vue | 1 + apps/web-antd/src/views/system/role/index.vue | 1 + apps/web-antd/src/views/system/sms/channel/index.vue | 1 + apps/web-antd/src/views/system/sms/template/index.vue | 1 + apps/web-antd/src/views/system/tenant/index.vue | 1 + apps/web-antd/src/views/system/tenantPackage/index.vue | 1 + apps/web-antd/src/views/system/user/index.vue | 1 + 32 files changed, 32 insertions(+) diff --git a/apps/web-antd/src/views/erp/purchase/order/index.vue b/apps/web-antd/src/views/erp/purchase/order/index.vue index 6331bd67c..67f7b9416 100644 --- a/apps/web-antd/src/views/erp/purchase/order/index.vue +++ b/apps/web-antd/src/views/erp/purchase/order/index.vue @@ -91,6 +91,7 @@ async function handleBatchDelete() { }); try { await deletePurchaseOrderList(checkedIds.value); + checkedIds.value = []; message.success({ content: $t('ui.actionMessage.deleteSuccess'), key: 'action_process_msg', diff --git a/apps/web-antd/src/views/infra/codegen/index.vue b/apps/web-antd/src/views/infra/codegen/index.vue index 2473a0934..1783b2345 100644 --- a/apps/web-antd/src/views/infra/codegen/index.vue +++ b/apps/web-antd/src/views/infra/codegen/index.vue @@ -102,6 +102,7 @@ async function handleDeleteBatch() { }); try { await deleteCodegenTableList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/config/index.vue b/apps/web-antd/src/views/infra/config/index.vue index 68b7e9a3f..821552cec 100644 --- a/apps/web-antd/src/views/infra/config/index.vue +++ b/apps/web-antd/src/views/infra/config/index.vue @@ -84,6 +84,7 @@ async function handleDeleteBatch() { }); try { await deleteConfigList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { 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 e92d20655..fa7e1cb4d 100644 --- a/apps/web-antd/src/views/infra/demo/demo01/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo01/index.vue @@ -66,6 +66,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo01ContactList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { 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 2c850ee9c..c47ff0d62 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 @@ -76,6 +76,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue index d5b15c914..d84959421 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue @@ -75,6 +75,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03CourseList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue index ab46b9745..9ce25c263 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue @@ -75,6 +75,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03GradeList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue b/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue index 79ce1b32b..c394f5fd9 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/inner/index.vue @@ -75,6 +75,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue b/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue index 3dc77de61..e0b1c4dfb 100644 --- a/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue +++ b/apps/web-antd/src/views/infra/demo/demo03/normal/index.vue @@ -78,6 +78,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo01/index.vue b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue index a500736ac..d93c06c2a 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo01/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo01/index.vue @@ -123,6 +123,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo01ContactList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue index 62385532b..ce2e3a0f2 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/index.vue @@ -134,6 +134,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue index 47ed647c8..ae5a128d5 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue @@ -81,6 +81,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03CourseList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue index 0f8435c4b..4dbf52a89 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue @@ -81,6 +81,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03GradeList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue index b093a83de..7a9919859 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/inner/index.vue @@ -130,6 +130,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/demo/general/demo03/normal/index.vue b/apps/web-antd/src/views/infra/demo/general/demo03/normal/index.vue index 75db2f158..13e0572a3 100644 --- a/apps/web-antd/src/views/infra/demo/general/demo03/normal/index.vue +++ b/apps/web-antd/src/views/infra/demo/general/demo03/normal/index.vue @@ -124,6 +124,7 @@ async function onDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-antd/src/views/infra/file/index.vue b/apps/web-antd/src/views/infra/file/index.vue index cf92953c8..03b7057b6 100644 --- a/apps/web-antd/src/views/infra/file/index.vue +++ b/apps/web-antd/src/views/infra/file/index.vue @@ -84,6 +84,7 @@ async function handleDeleteBatch() { }); try { await deleteFileList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/fileConfig/index.vue b/apps/web-antd/src/views/infra/fileConfig/index.vue index 019b3e25c..1667f7879 100644 --- a/apps/web-antd/src/views/infra/fileConfig/index.vue +++ b/apps/web-antd/src/views/infra/fileConfig/index.vue @@ -118,6 +118,7 @@ async function handleDeleteBatch() { }); try { await deleteFileConfigList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/infra/job/index.vue b/apps/web-antd/src/views/infra/job/index.vue index 23798dc5f..8878913da 100644 --- a/apps/web-antd/src/views/infra/job/index.vue +++ b/apps/web-antd/src/views/infra/job/index.vue @@ -130,6 +130,7 @@ async function handleDeleteBatch() { }); try { await deleteJobList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/dept/index.vue b/apps/web-antd/src/views/system/dept/index.vue index e3dbc8ffc..1dca1f7b6 100644 --- a/apps/web-antd/src/views/system/dept/index.vue +++ b/apps/web-antd/src/views/system/dept/index.vue @@ -93,6 +93,7 @@ async function handleDeleteBatch() { }); try { await deleteDeptList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/dict/modules/data-grid.vue b/apps/web-antd/src/views/system/dict/modules/data-grid.vue index 57c6f87d3..a452368bd 100644 --- a/apps/web-antd/src/views/system/dict/modules/data-grid.vue +++ b/apps/web-antd/src/views/system/dict/modules/data-grid.vue @@ -90,6 +90,7 @@ async function handleDeleteBatch() { }); try { await deleteDictDataList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/dict/modules/type-grid.vue b/apps/web-antd/src/views/system/dict/modules/type-grid.vue index 0104303d6..5e185130a 100644 --- a/apps/web-antd/src/views/system/dict/modules/type-grid.vue +++ b/apps/web-antd/src/views/system/dict/modules/type-grid.vue @@ -88,6 +88,7 @@ async function handleDeleteBatch() { }); try { await deleteDictTypeList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/mail/account/index.vue b/apps/web-antd/src/views/system/mail/account/index.vue index 0d4626952..b8a19b8eb 100644 --- a/apps/web-antd/src/views/system/mail/account/index.vue +++ b/apps/web-antd/src/views/system/mail/account/index.vue @@ -76,6 +76,7 @@ async function handleDeleteBatch() { }); try { await deleteMailAccountList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/mail/template/index.vue b/apps/web-antd/src/views/system/mail/template/index.vue index 21907b968..2e89d3173 100644 --- a/apps/web-antd/src/views/system/mail/template/index.vue +++ b/apps/web-antd/src/views/system/mail/template/index.vue @@ -88,6 +88,7 @@ async function handleDeleteBatch() { }); try { await deleteMailTemplateList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/notice/index.vue b/apps/web-antd/src/views/system/notice/index.vue index 014ca535f..4bca09bcd 100644 --- a/apps/web-antd/src/views/system/notice/index.vue +++ b/apps/web-antd/src/views/system/notice/index.vue @@ -77,6 +77,7 @@ async function handleDeleteBatch() { }); try { await deleteNoticeList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/notify/template/index.vue b/apps/web-antd/src/views/system/notify/template/index.vue index 9408af8f2..e1e437295 100644 --- a/apps/web-antd/src/views/system/notify/template/index.vue +++ b/apps/web-antd/src/views/system/notify/template/index.vue @@ -94,6 +94,7 @@ async function handleDeleteBatch() { }); try { await deleteNotifyTemplateList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/post/index.vue b/apps/web-antd/src/views/system/post/index.vue index 305222f81..52dee5663 100644 --- a/apps/web-antd/src/views/system/post/index.vue +++ b/apps/web-antd/src/views/system/post/index.vue @@ -83,6 +83,7 @@ async function handleDeleteBatch() { }); try { await deletePostList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/role/index.vue b/apps/web-antd/src/views/system/role/index.vue index b04805ee4..f411b8fd7 100644 --- a/apps/web-antd/src/views/system/role/index.vue +++ b/apps/web-antd/src/views/system/role/index.vue @@ -96,6 +96,7 @@ async function handleDeleteBatch() { }); try { await deleteRoleList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { 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 ee8ae780e..77780e918 100644 --- a/apps/web-antd/src/views/system/sms/channel/index.vue +++ b/apps/web-antd/src/views/system/sms/channel/index.vue @@ -87,6 +87,7 @@ async function handleDeleteBatch() { }); try { await deleteSmsChannelList(checkedIds.value); + checkedIds.value = []; message.success({ content: $t('ui.actionMessage.deleteSuccess', ['短信渠道']), key: 'action_key_msg', diff --git a/apps/web-antd/src/views/system/sms/template/index.vue b/apps/web-antd/src/views/system/sms/template/index.vue index 5daa00d1b..8fde83edd 100644 --- a/apps/web-antd/src/views/system/sms/template/index.vue +++ b/apps/web-antd/src/views/system/sms/template/index.vue @@ -94,6 +94,7 @@ async function handleDeleteBatch() { }); try { await deleteSmsTemplateList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/tenant/index.vue b/apps/web-antd/src/views/system/tenant/index.vue index 463f33a6d..2ffb1e72b 100644 --- a/apps/web-antd/src/views/system/tenant/index.vue +++ b/apps/web-antd/src/views/system/tenant/index.vue @@ -95,6 +95,7 @@ async function handleDeleteBatch() { }); try { await deleteTenantList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/tenantPackage/index.vue b/apps/web-antd/src/views/system/tenantPackage/index.vue index 1e967c534..438e1fe62 100644 --- a/apps/web-antd/src/views/system/tenantPackage/index.vue +++ b/apps/web-antd/src/views/system/tenantPackage/index.vue @@ -76,6 +76,7 @@ async function handleDeleteBatch() { }); try { await deleteTenantPackageList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-antd/src/views/system/user/index.vue b/apps/web-antd/src/views/system/user/index.vue index a0275ece9..45ff181e5 100644 --- a/apps/web-antd/src/views/system/user/index.vue +++ b/apps/web-antd/src/views/system/user/index.vue @@ -118,6 +118,7 @@ async function handleDeleteBatch() { }); try { await deleteUserList(checkedIds.value); + checkedIds.value = []; message.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { From 8eae74879b42f0770d5f46e095ccd0894ae49166 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sat, 9 Aug 2025 12:14:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(@vben/web-ele):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E5=90=8E=20checkedIds=20?= =?UTF-8?q?=E6=9C=AA=E9=87=8D=E7=BD=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web-ele/src/views/infra/codegen/index.vue | 1 + apps/web-ele/src/views/infra/config/index.vue | 1 + .../views/infra/dataSourceConfig/index.vue | 1 + .../src/views/infra/demo/demo01/index.vue | 1 + .../src/views/infra/demo/demo03/erp/index.vue | 1 + .../demo03/erp/modules/demo03-course-list.vue | 1 + .../demo03/erp/modules/demo03-grade-list.vue | 1 + .../views/infra/demo/demo03/inner/index.vue | 1 + .../views/infra/demo/demo03/normal/index.vue | 1 + .../views/infra/demo/general/demo01/index.vue | 1 + .../infra/demo/general/demo03/erp/index.vue | 1 + .../demo03/erp/modules/demo03-course-list.vue | 1 + .../demo03/erp/modules/demo03-grade-list.vue | 1 + .../infra/demo/general/demo03/inner/index.vue | 1 + .../demo/general/demo03/normal/index.vue | 1 + apps/web-ele/src/views/infra/file/index.vue | 1 + .../src/views/infra/fileConfig/index.vue | 1 + apps/web-ele/src/views/infra/job/index.vue | 1 + .../views/mall/product/spu/components/data.ts | 3 +- .../spu/components/description-form.vue | 13 +- .../mall/product/spu/components/model.d.ts | 6 +- .../product/spu/components/other-form.vue | 13 +- .../spu/components/product-attributes.vue | 286 +++--- .../components/product-property-add-form.vue | 17 +- .../mall/product/spu/components/sku-form.vue | 29 +- .../mall/product/spu/components/sku-list.vue | 939 ++++++++++++------ .../views/mall/product/spu/modules/form.vue | 51 +- .../views/system/dict/modules/data-grid.vue | 1 + .../views/system/dict/modules/type-grid.vue | 1 + .../src/views/system/mail/account/index.vue | 1 + .../src/views/system/mail/template/index.vue | 1 + .../web-ele/src/views/system/notice/index.vue | 1 + .../views/system/notify/template/index.vue | 1 + .../src/views/system/oauth2/client/index.vue | 1 + apps/web-ele/src/views/system/post/index.vue | 1 + apps/web-ele/src/views/system/role/index.vue | 1 + .../src/views/system/sms/channel/index.vue | 1 + .../src/views/system/sms/template/index.vue | 1 + .../src/views/system/social/client/index.vue | 1 + .../web-ele/src/views/system/tenant/index.vue | 1 + .../src/views/system/tenantPackage/index.vue | 1 + apps/web-ele/src/views/system/user/index.vue | 1 + 42 files changed, 885 insertions(+), 505 deletions(-) diff --git a/apps/web-ele/src/views/infra/codegen/index.vue b/apps/web-ele/src/views/infra/codegen/index.vue index fc94fce44..ffd139613 100644 --- a/apps/web-ele/src/views/infra/codegen/index.vue +++ b/apps/web-ele/src/views/infra/codegen/index.vue @@ -90,6 +90,7 @@ async function onDelete(row: InfraCodegenApi.CodegenTable) { async function onDeleteBatch() { await confirm('确定要批量删除该代码生成配置吗?'); await deleteCodegenTableList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/infra/config/index.vue b/apps/web-ele/src/views/infra/config/index.vue index 5e1f63da1..031fbe06f 100644 --- a/apps/web-ele/src/views/infra/config/index.vue +++ b/apps/web-ele/src/views/infra/config/index.vue @@ -69,6 +69,7 @@ async function onDelete(row: InfraConfigApi.Config) { async function onDeleteBatch() { await confirm('确定要批量删除该参数吗?'); await deleteConfigList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/infra/dataSourceConfig/index.vue b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue index 43188b058..7c44f87c8 100644 --- a/apps/web-ele/src/views/infra/dataSourceConfig/index.vue +++ b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue @@ -57,6 +57,7 @@ async function onDelete(row: InfraDataSourceConfigApi.DataSourceConfig) { async function onDeleteBatch() { await confirm('确定要批量删除该数据源吗?'); await deleteDataSourceConfigList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/infra/demo/demo01/index.vue b/apps/web-ele/src/views/infra/demo/demo01/index.vue index a0c2bb9ae..bb4c5a906 100644 --- a/apps/web-ele/src/views/infra/demo/demo01/index.vue +++ b/apps/web-ele/src/views/infra/demo/demo01/index.vue @@ -64,6 +64,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo01ContactList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/demo03/erp/index.vue b/apps/web-ele/src/views/infra/demo/demo03/erp/index.vue index 17ef8e123..0cc703dac 100644 --- a/apps/web-ele/src/views/infra/demo/demo03/erp/index.vue +++ b/apps/web-ele/src/views/infra/demo/demo03/erp/index.vue @@ -70,6 +70,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue b/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue index 78bd4d665..83314c08c 100644 --- a/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-course-list.vue @@ -69,6 +69,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03CourseList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue b/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue index 9fb8fc238..0c8db98a0 100644 --- a/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-ele/src/views/infra/demo/demo03/erp/modules/demo03-grade-list.vue @@ -69,6 +69,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03GradeList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/demo03/inner/index.vue b/apps/web-ele/src/views/infra/demo/demo03/inner/index.vue index ce1938e81..a179de870 100644 --- a/apps/web-ele/src/views/infra/demo/demo03/inner/index.vue +++ b/apps/web-ele/src/views/infra/demo/demo03/inner/index.vue @@ -69,6 +69,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/demo03/normal/index.vue b/apps/web-ele/src/views/infra/demo/demo03/normal/index.vue index ff99c665b..305dc3930 100644 --- a/apps/web-ele/src/views/infra/demo/demo03/normal/index.vue +++ b/apps/web-ele/src/views/infra/demo/demo03/normal/index.vue @@ -64,6 +64,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo01/index.vue b/apps/web-ele/src/views/infra/demo/general/demo01/index.vue index 4e16a6292..5962ac037 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo01/index.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo01/index.vue @@ -121,6 +121,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo01ContactList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo03/erp/index.vue b/apps/web-ele/src/views/infra/demo/general/demo03/erp/index.vue index 24cdd1d92..b3b3fa800 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo03/erp/index.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo03/erp/index.vue @@ -133,6 +133,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue b/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue index 69772b7c0..087f8ec90 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-course-list.vue @@ -77,6 +77,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03CourseList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue b/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue index a1cc8057f..5465c054a 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo03/erp/modules/demo03-grade-list.vue @@ -77,6 +77,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03GradeList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo03/inner/index.vue b/apps/web-ele/src/views/infra/demo/general/demo03/inner/index.vue index afaab7bc2..f95f06db3 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo03/inner/index.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo03/inner/index.vue @@ -129,6 +129,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/demo/general/demo03/normal/index.vue b/apps/web-ele/src/views/infra/demo/general/demo03/normal/index.vue index 3a4052163..b3e47596b 100644 --- a/apps/web-ele/src/views/infra/demo/general/demo03/normal/index.vue +++ b/apps/web-ele/src/views/infra/demo/general/demo03/normal/index.vue @@ -122,6 +122,7 @@ async function handleDeleteBatch() { }); try { await deleteDemo03StudentList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); await getList(); } finally { diff --git a/apps/web-ele/src/views/infra/file/index.vue b/apps/web-ele/src/views/infra/file/index.vue index 0d2e87f29..27d3d5558 100644 --- a/apps/web-ele/src/views/infra/file/index.vue +++ b/apps/web-ele/src/views/infra/file/index.vue @@ -79,6 +79,7 @@ async function onDelete(row: InfraFileApi.File) { async function onDeleteBatch() { await confirm('确定要批量删除该文件吗?'); await deleteFileList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/infra/fileConfig/index.vue b/apps/web-ele/src/views/infra/fileConfig/index.vue index 21095febd..8cc1f3dd8 100644 --- a/apps/web-ele/src/views/infra/fileConfig/index.vue +++ b/apps/web-ele/src/views/infra/fileConfig/index.vue @@ -103,6 +103,7 @@ async function onDelete(row: InfraFileConfigApi.FileConfig) { async function onDeleteBatch() { await confirm('确定要批量删除该文件配置吗?'); await deleteFileConfigList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/infra/job/index.vue b/apps/web-ele/src/views/infra/job/index.vue index 5bdb2aac8..6c3ebf662 100644 --- a/apps/web-ele/src/views/infra/job/index.vue +++ b/apps/web-ele/src/views/infra/job/index.vue @@ -122,6 +122,7 @@ async function onDelete(row: InfraJobApi.Job) { async function onDeleteBatch() { await confirm('确定要批量删除该任务吗?'); await deleteJobList(checkedIds.value); + checkedIds.value = []; ElMessage.success($t('ui.actionMessage.deleteSuccess')); onRefresh(); } diff --git a/apps/web-ele/src/views/mall/product/spu/components/data.ts b/apps/web-ele/src/views/mall/product/spu/components/data.ts index 50463a42d..ded4e7666 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/data.ts +++ b/apps/web-ele/src/views/mall/product/spu/components/data.ts @@ -1,6 +1,7 @@ -import type { MallSpuApi } from '#/api/mall/product/spu'; import type { PropertyAndValues } from './model'; +import type { MallSpuApi } from '#/api/mall/product/spu'; + /** * 获得商品的规格列表 - 商品相关的公共函数 * diff --git a/apps/web-ele/src/views/mall/product/spu/components/description-form.vue b/apps/web-ele/src/views/mall/product/spu/components/description-form.vue index 53b1c0741..139b8ead6 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/description-form.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/description-form.vue @@ -1,14 +1,16 @@ + - - diff --git a/apps/web-ele/src/views/mall/product/spu/components/product-property-add-form.vue b/apps/web-ele/src/views/mall/product/spu/components/product-property-add-form.vue index e74826645..48189d5c3 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/product-property-add-form.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/product-property-add-form.vue @@ -1,26 +1,25 @@ .includes(propertyId!)) { + skuPropertyIds.push(propertyId!); + } + }), + ); + const propertyIds = propertyList.map((item) => item.id); + return skuPropertyIds.length === propertyIds.length; +}; + +/** 构建所有排列组合 */ +const build = ( + propertyValuesList: MallSpuApi.Property[][], +): MallSpuApi.Property[] | MallSpuApi.Property[][] => { + if (!propertyValuesList || propertyValuesList.length === 0) { + return []; + } else if (propertyValuesList.length === 1) { + return propertyValuesList[0] || []; + } else { + const result: MallSpuApi.Property[][] = []; + const rest = build(propertyValuesList.slice(1)); + if (propertyValuesList[0] && Array.isArray(rest)) { + for (let i = 0; i < propertyValuesList[0].length; i++) { + for (const restItem of rest) { + const currentItem = propertyValuesList[0][i]; + // 第一次不是数组结构,后面的都是数组结构 + if (Array.isArray(restItem)) { + result.push([currentItem!, ...restItem]); + } else if (restItem) { + // 确保restItem不是undefined,并进行类型断言 + result.push([currentItem!, restItem as MallSpuApi.Property]); + } + } + } + } + return result; + } +}; + +/** 监听属性列表,生成相关参数和表头 */ +watch( + () => props.propertyList, + (propertyList: PropertyAndValues[]) => { + // 如果不是多规格则结束 + if (!formData.value!.specType) { + return; + } + // 如果当前组件作为批量添加数据使用,则重置表数据 + if (props.isBatch) { + skuList.value = [ + { + price: 0, + marketPrice: 0, + costPrice: 0, + barCode: '', + picUrl: '', + stock: 0, + weight: 0, + volume: 0, + firstBrokeragePrice: 0, + secondBrokeragePrice: 0, + }, + ]; + } + + // 判断代理对象是否为空 + if (JSON.stringify(propertyList) === '[]') { + return; + } + // 重置表头 + tableHeaders.value = []; + // 生成表头 + propertyList.forEach((item, index) => { + // name加属性项index区分属性值 + tableHeaders.value.push({ prop: `name${index}`, label: item.name }); + }); + // 如果回显的 sku 属性和添加的属性一致则不处理 + if (validateData(propertyList)) { + return; + } + // 添加新属性没有属性值也不做处理 + if (propertyList.some((item) => !item.values || isEmpty(item.values))) { + return; + } + // 生成 table 数据,即 sku 列表 + generateTableData(propertyList); + }, + { + deep: true, + immediate: true, + }, +); +const activitySkuListRef = ref>(); + +const getSkuTableRef = () => { + return activitySkuListRef.value; +}; +// 暴露出生成 sku 方法,给添加属性成功时调用 +defineExpose({ generateTableData, validateSku, getSkuTableRef }); + + - + - - + - diff --git a/apps/web-ele/src/views/mall/product/spu/modules/form.vue b/apps/web-ele/src/views/mall/product/spu/modules/form.vue index a1619905a..38871d39e 100644 --- a/apps/web-ele/src/views/mall/product/spu/modules/form.vue +++ b/apps/web-ele/src/views/mall/product/spu/modules/form.vue @@ -1,16 +1,19 @@