From a9ca949bf1f02cbaa797f1b919e4c8be30b76e0f Mon Sep 17 00:00:00 2001 From: Uyarn Date: Thu, 20 Jul 2023 18:26:51 +0800 Subject: [PATCH] fix(transfer): fix disabled value removed from target --- src/transfer/transfer.tsx | 7 +++++++ src/transfer/utils.ts | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/transfer/transfer.tsx b/src/transfer/transfer.tsx index 112154e0c..ec73e5ec0 100644 --- a/src/transfer/transfer.tsx +++ b/src/transfer/transfer.tsx @@ -129,8 +129,15 @@ export default mixins(getConfigReceiverMixins('transfer')).extend({ newTargetValue = oldTargetValue.filter((v) => !checkedValue.includes(v)); } else if (this.targetSort === 'original') { // 按照原始顺序 + const remainValue = this.transferData.reduce((acc, data) => { + if (oldTargetValue.includes(data.value) && data.disabled) { + return acc.concat(data.value); + } + return acc; + }, []); newTargetValue = getDataValues(this.transferData, oldTargetValue.concat(checkedValue), { isTreeMode: this.isTreeMode, + remainValue, }); } else if (this.targetSort === 'unshift') { newTargetValue = checkedValue.concat(oldTargetValue); diff --git a/src/transfer/utils.ts b/src/transfer/utils.ts index 533c7e4b7..eaac8411a 100644 --- a/src/transfer/utils.ts +++ b/src/transfer/utils.ts @@ -42,6 +42,7 @@ function getDataValues( { isTreeMode = false, include = true, // true=保留filterValues,false=删除filterValues中元素 + remainValue = [] as Array, } = {}, ): Array { // 用于处理 tree 组件这种数据结构是树形的 @@ -69,10 +70,13 @@ function getDataValues( } return result; } + // 处理普通结构 return data .filter((item) => { const isInclude = filterValues.includes(item.value); - return ((include && isInclude) || (!include && !isInclude)) && !item.disabled; + return ( + ((include && isInclude) || (!include && !isInclude)) && (!item.disabled || remainValue.includes(item.value)) + ); }) .map((item) => item.value); }