From f85b9e63996168f64490fad727ed3feb804297ad Mon Sep 17 00:00:00 2001 From: ShineKOT <1917095344@qq.com> Date: Thu, 21 Aug 2025 20:36:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=A4=9A=E9=80=89?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E9=80=89=E6=8B=A9=E6=95=B0=E6=8D=AE=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + src/view-engine/mpickup-view-engine.ts | 32 ++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f79f78912..91a46a53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - 修复日历内置导航月和自定义样式导航异常 - 修复数据选择编辑器OBJECT和OBJECTS抛值问题 - 修复表格和树表格刷新模式异常 +- 修复多选视图选择数据异常 ### Changed diff --git a/src/view-engine/mpickup-view-engine.ts b/src/view-engine/mpickup-view-engine.ts index 73bdfa0ed..7618f0b09 100644 --- a/src/view-engine/mpickup-view-engine.ts +++ b/src/view-engine/mpickup-view-engine.ts @@ -125,8 +125,8 @@ export class MPickupViewEngine extends PickupViewEngine { * @param {*} data * @memberof PickupViewEngine */ - protected pickupViewPanelDataActive(data: IData[]): void { - this.handlePushSimpleListItems(data); + protected async pickupViewPanelDataActive(data: IData[]): Promise { + await this.handlePushSimpleListItems(data); } /** @@ -157,22 +157,26 @@ export class MPickupViewEngine extends PickupViewEngine { */ async addSelection(): Promise { const selectItem = await this.pickupViewPanel.getSelectedData(); - this.handlePushSimpleListItems(selectItem); + await this.handlePushSimpleListItems(selectItem); } /** - * 处理添加简单列表数据 - * - * @author zk - * @date 2023-05-26 02:05:41 + * @description 处理添加简单列表数据 + * @protected * @param {IData[]} data * @memberof MPickupViewEngine */ - protected handlePushSimpleListItems(data: IData[]): void { - const allData = this.simpleList.getAllData(); - const items = [...allData, ...data]; + protected async handlePushSimpleListItems(data: IData[]): Promise { + // 每次添加的都是多数据部件当前页数据,因此需先将原来简单列表的当前页数据过滤掉 + const items = await this.pickupViewPanel.getAllData(); + // 过滤出非当前页数据 + const selectItems = this.simpleList + .getAllData() + .filter(selected => !items.some(item => item.srfkey === selected.srfkey)); + // 将多数据部件当前页数据加入简单列表选中 + selectItems.push(...data); // 去重items - const uniqueItems = this.handleUniqueItems(items); + const uniqueItems = this.handleUniqueItems(selectItems); this.setSelectedData(uniqueItems); } @@ -201,7 +205,7 @@ export class MPickupViewEngine extends PickupViewEngine { */ async addAll(): Promise { const allItems = await this.pickupViewPanel.getAllData(); - this.handlePushSimpleListItems(allItems); + await this.handlePushSimpleListItems(allItems); } /** @@ -229,9 +233,7 @@ export class MPickupViewEngine extends PickupViewEngine { const index = items.findIndex( (item: IData) => _item.srfkey === item.srfkey, ); - if (index !== -1) { - items.splice(index, 1); - } + if (index !== -1) items.splice(index, 1); }); this.setSelectedData(items); } -- Gitee