|
@@ -1,7 +1,6 @@
|
|
|
import { ref } from 'vue'
|
|
|
import emitter from '/@/utils/emitter'
|
|
|
|
|
|
-
|
|
|
export default function useAddedItem() {
|
|
|
// 用于存储从 PopoverFilterTable 组件传来的数据
|
|
|
const receiveData = ref([])
|
|
@@ -12,29 +11,50 @@ export default function useAddedItem() {
|
|
|
|
|
|
// 点击复选框就会触发, 用于处理从 PopoverFilterTable 组件传来的数据
|
|
|
emitter.on('PopoverFilterTable-tableData', (data: any) => {
|
|
|
- // 过滤出 parentAsin 和 sku 都不在 parentAsinsSet 和 allSkus 中的数据,避免重复添加
|
|
|
- const uniqueData = data.filter(
|
|
|
- (item: any) => !parentAsinsSet.value.has(item.parentAsin + item.sku) && !allSkus.value.includes(item.sku)
|
|
|
- )
|
|
|
- // 将过滤后的数据添加到 receiveData 中
|
|
|
- receiveData.value.push(...uniqueData)
|
|
|
- // 将新添加的 parentAsin 和 sku 添加到 parentAsinsSet 和 allSkus 中
|
|
|
- uniqueData.forEach((item: any) => {
|
|
|
- parentAsinsSet.value.add(item.parentAsin + item.sku)
|
|
|
- allSkus.value.push(item.sku)
|
|
|
- })
|
|
|
+ if (searchType.value === 'sku') {
|
|
|
+ // 过滤出 parentAsin 和 sku 都不在 parentAsinsSet 和 allSkus 中的数据,避免重复添加
|
|
|
+ const uniqueData = data.filter(
|
|
|
+ (item: any) => !parentAsinsSet.value.has(item.parentAsin + item.sku) && !allSkus.value.includes(item.sku)
|
|
|
+ )
|
|
|
+ // 将过滤后的数据添加到 receiveData 中
|
|
|
+ receiveData.value.push(...uniqueData)
|
|
|
+ // 将新添加的 parentAsin 和 sku 添加到 parentAsinsSet 和 allSkus 中
|
|
|
+ uniqueData.forEach((item: any) => {
|
|
|
+ parentAsinsSet.value.add(item.parentAsin + item.sku)
|
|
|
+ allSkus.value.push(item.sku)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ const uniqueData = data.filter(
|
|
|
+ (item: any) => !parentAsinsSet.value.has(item.parentAsin + item.asin) && !allSkus.value.includes(item.asin)
|
|
|
+ )
|
|
|
+ receiveData.value.push(...uniqueData)
|
|
|
+ uniqueData.forEach((item: any) => {
|
|
|
+ parentAsinsSet.value.add(item.parentAsin + item.asin)
|
|
|
+ allSkus.value.push(item.asin)
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
- emitter.on('PopoverFilterTable-needDeleteBySku', (skuToDelete: string) => {
|
|
|
+ emitter.on('PopoverFilterTable-needDeleteBySearchType', (searchTypeToDelete: string) => {
|
|
|
// 遍历 receiveData,找到 sku 匹配的项
|
|
|
receiveData.value = receiveData.value.reduce((acc: any[], item: any) => {
|
|
|
- if (item.sku !== skuToDelete) {
|
|
|
- acc.push(item)
|
|
|
+ if (searchType.value === 'sku') {
|
|
|
+ if (item.sku !== searchTypeToDelete) {
|
|
|
+ acc.push(item)
|
|
|
+ } else {
|
|
|
+ // 从 parentAsinsSet 和 allSkus 中删除该 parentAsin 和 sku 的组合
|
|
|
+ parentAsinsSet.value.delete(item.parentAsin + item.sku)
|
|
|
+ allSkus.value = allSkus.value.filter((sku) => sku !== item.sku)
|
|
|
+ }
|
|
|
} else {
|
|
|
- // 从 parentAsinsSet 和 allSkus 中删除该 parentAsin 和 sku 的组合
|
|
|
- parentAsinsSet.value.delete(item.parentAsin + item.sku)
|
|
|
- allSkus.value = allSkus.value.filter((sku) => sku !== item.sku)
|
|
|
+ if (item.asin !== searchTypeToDelete) {
|
|
|
+ acc.push(item)
|
|
|
+ } else {
|
|
|
+ parentAsinsSet.value.delete(item.parentAsin + item.asin)
|
|
|
+ allSkus.value = allSkus.value.filter((asin) => asin !== item.asin)
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
return acc
|
|
|
}, [])
|
|
|
})
|
|
@@ -42,13 +62,23 @@ export default function useAddedItem() {
|
|
|
emitter.on('PopoverFilterTable-needDelete', (parentAsinToDelete: string) => {
|
|
|
// 遍历 receiveData,找到 parentAsin 匹配的项
|
|
|
receiveData.value = receiveData.value.reduce((acc: any[], item: any) => {
|
|
|
- if (item.parentAsin !== parentAsinToDelete) {
|
|
|
- acc.push(item)
|
|
|
+ if (searchType.value === 'sku') {
|
|
|
+ if (item.parentAsin !== parentAsinToDelete) {
|
|
|
+ acc.push(item)
|
|
|
+ } else {
|
|
|
+ // 从 parentAsinsSet 和 allSkus 中删除该 parentAsin 和 sku 的组合
|
|
|
+ parentAsinsSet.value.delete(item.parentAsin + item.sku)
|
|
|
+ allSkus.value = allSkus.value.filter((sku) => sku !== item.sku)
|
|
|
+ }
|
|
|
} else {
|
|
|
- // 从 parentAsinsSet 和 allSkus 中删除该 parentAsin 和 sku 的组合
|
|
|
- parentAsinsSet.value.delete(item.parentAsin + item.sku)
|
|
|
- allSkus.value = allSkus.value.filter((sku) => sku !== item.sku)
|
|
|
+ if (item.parentAsin !== parentAsinToDelete) {
|
|
|
+ acc.push(item)
|
|
|
+ } else {
|
|
|
+ parentAsinsSet.value.delete(item.parentAsin + item.asin)
|
|
|
+ allSkus.value = allSkus.value.filter((asin) => asin !== item.asin)
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
return acc
|
|
|
}, [])
|
|
|
})
|