소스 검색

✨ 新增asin搜索维度

WanGxC 1 년 전
부모
커밋
d01a042eed

+ 1 - 1
src/views/adManage/sp/components/PopoverFilter.vue

@@ -116,7 +116,7 @@ onBeforeUnmount(() => {
                           :style="{ marginLeft: '2px', marginBottom: '2px', color: item.amazonUrl ? '#3a83f7' : '#c0c4cc' }">
                         </el-link>
                         <span class="text-gray-300 mx-1">|</span>
-                        SKU:<span class="text-black">{{ item.sku }}</span>
+                        SKU:<span class="text-black">{{ item.sku ? item.sku : item.skuNum }}</span>
                       </div>
                     </el-tooltip>
                   </div>

+ 10 - 11
src/views/adManage/sp/components/PopoverFilterTable.vue

@@ -19,7 +19,6 @@ const hasMore = ref(true)
 const isScrollSelectAll = ref(false)
 const { parentAsinsSet } = useAddedItem()
 
-
 emitter.on('TopFilter', (value: any) => {
   if (value.isVisible?.value) {
     fetchParentAsin()
@@ -103,28 +102,28 @@ async function selectAllChangeEvent(table: any) {
 
 // 单元格点击事件
 function handleCellClick(table: any) {
-  console.log(vxeRefRight.value.getTableData().tableData)
-  console.log('parentAsinsSet', parentAsinsSet.value)
+  // console.log(vxeRefRight.value.getTableData().tableData)
+  // console.log('parentAsinsSet', parentAsinsSet.value)
   rightPage = 1
   selectedParentAsins.value.splice(0)
   selectedParentAsins.value.push(table.row.parentAsin)
   gridOptionsRight.data.splice(0)
   fetchSearchedItem(selectedParentAsins.value).then(() => {
     // 重新加载完右侧数据后,进行勾选
-    checkRightTableRows();
-  });
+    checkRightTableRows()
+  })
 }
 
 // 这个函数用来勾选右侧表格的行
 function checkRightTableRows() {
-  const rightData = vxeRefRight.value.getTableData().tableData;
+  const rightData = vxeRefRight.value.getTableData().tableData
 
-  rightData.forEach(row => {
-    const concatValue = row.parentAsin + row.sku;
+  rightData.forEach((row) => {
+    const concatValue = searchType === 'sku' ? row.parentAsin + row.sku : row.parentAsin + row.asin
     if (parentAsinsSet.value.has(concatValue)) {
-      vxeRefRight.value.setCheckboxRow(row, true);
+      vxeRefRight.value.setCheckboxRow(row, true)
     }
-  });
+  })
 }
 
 // 右侧表格单选事件
@@ -139,7 +138,7 @@ async function selectChangeRight(table: any) {
       await vxeRef.value.setCheckboxRow(leftRow, true)
     }
   } else {
-    emitter.emit('PopoverFilterTable-needDeleteBySku', table.row.sku)
+    emitter.emit('PopoverFilterTable-needDeleteBySearchType', searchType === 'sku' ? table.row.sku : table.row.asin)
     // 新增代码: 查找并取消选中左侧表格对应的条目
     const parentAsin = table.row.parentAsin
     const leftTableData = vxeRef.value.getTableData().tableData

+ 53 - 23
src/views/adManage/sp/hooks/useAddedItem.ts

@@ -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
     }, [])
   })