|  | @@ -3,6 +3,22 @@ import { inject, onBeforeUnmount, reactive, Ref, ref } from 'vue'
 | 
	
		
			
				|  |  |  import { getParentAsin, getSearchedItem } from '../api'
 | 
	
		
			
				|  |  |  import { Connection, Picture as IconPicture } from '@element-plus/icons-vue'
 | 
	
		
			
				|  |  |  import emitter from '/@/utils/emitter'
 | 
	
		
			
				|  |  | +import useAddedItem from '../hooks/useAddedItem'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const profile = <Ref>inject('profile')
 | 
	
		
			
				|  |  | +const parentLoading = ref(false)
 | 
	
		
			
				|  |  | +const rightLoading = ref(false)
 | 
	
		
			
				|  |  | +let page = 1
 | 
	
		
			
				|  |  | +let rightPage = 1
 | 
	
		
			
				|  |  | +let limit = 15
 | 
	
		
			
				|  |  | +let searchType = ''
 | 
	
		
			
				|  |  | +const vxeRef = ref()
 | 
	
		
			
				|  |  | +const vxeRefRight = ref()
 | 
	
		
			
				|  |  | +const selectedParentAsins = ref([])
 | 
	
		
			
				|  |  | +const hasMore = ref(true)
 | 
	
		
			
				|  |  | +const isScrollSelectAll = ref(false)
 | 
	
		
			
				|  |  | +const { parentAsinsSet } = useAddedItem()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  emitter.on('TopFilter', (value: any) => {
 | 
	
		
			
				|  |  |    if (value.isVisible?.value) {
 | 
	
	
		
			
				|  | @@ -18,19 +34,6 @@ emitter.on('TopFilter-confirm', () => {
 | 
	
		
			
				|  |  |    resetSelected()
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const profile = <Ref>inject('profile')
 | 
	
		
			
				|  |  | -const parentLoading = ref(false)
 | 
	
		
			
				|  |  | -const rightLoading = ref(false)
 | 
	
		
			
				|  |  | -let page = 1
 | 
	
		
			
				|  |  | -let rightPage = 1
 | 
	
		
			
				|  |  | -let limit = 15
 | 
	
		
			
				|  |  | -let searchType = ''
 | 
	
		
			
				|  |  | -const vxeRef = ref()
 | 
	
		
			
				|  |  | -const vxeRefRight = ref()
 | 
	
		
			
				|  |  | -const selectedParentAsins = ref([])
 | 
	
		
			
				|  |  | -const hasMore = ref(true)
 | 
	
		
			
				|  |  | -const isScrollSelectAll = ref(false)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  // 父ASIN表格配置
 | 
	
		
			
				|  |  |  const gridOptions = <any>reactive({
 | 
	
		
			
				|  |  |    height: 500,
 | 
	
	
		
			
				|  | @@ -100,25 +103,82 @@ async function selectAllChangeEvent(table: any) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 单元格点击事件
 | 
	
		
			
				|  |  |  function handleCellClick(table: any) {
 | 
	
		
			
				|  |  | +  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)
 | 
	
		
			
				|  |  | +  fetchSearchedItem(selectedParentAsins.value).then(() => {
 | 
	
		
			
				|  |  | +    // 重新加载完右侧数据后,进行勾选
 | 
	
		
			
				|  |  | +    checkRightTableRows();
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 这个函数用来勾选右侧表格的行
 | 
	
		
			
				|  |  | +function checkRightTableRows() {
 | 
	
		
			
				|  |  | +  const rightData = vxeRefRight.value.getTableData().tableData;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  rightData.forEach(row => {
 | 
	
		
			
				|  |  | +    const concatValue = row.parentAsin + row.sku;
 | 
	
		
			
				|  |  | +    if (parentAsinsSet.value.has(concatValue)) {
 | 
	
		
			
				|  |  | +      vxeRefRight.value.setCheckboxRow(row, true);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 右侧表格单选事件
 | 
	
		
			
				|  |  | -function selectChangeRight(table: any) {
 | 
	
		
			
				|  |  | +async function selectChangeRight(table: any) {
 | 
	
		
			
				|  |  |    if (table.checked) {
 | 
	
		
			
				|  |  |      getRightSelectedItem()
 | 
	
		
			
				|  |  | +    // 新增代码: 查找并选中左侧表格对应的条目
 | 
	
		
			
				|  |  | +    const parentAsin = table.row.parentAsin
 | 
	
		
			
				|  |  | +    const leftTableData = vxeRef.value.getTableData().tableData
 | 
	
		
			
				|  |  | +    const leftRow = leftTableData.find((row) => row.parentAsin === parentAsin)
 | 
	
		
			
				|  |  | +    if (leftRow) {
 | 
	
		
			
				|  |  | +      await vxeRef.value.setCheckboxRow(leftRow, true)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    } else {
 | 
	
		
			
				|  |  |      emitter.emit('PopoverFilterTable-needDeleteBySku', table.row.sku)
 | 
	
		
			
				|  |  | +    // 新增代码: 查找并取消选中左侧表格对应的条目
 | 
	
		
			
				|  |  | +    const parentAsin = table.row.parentAsin
 | 
	
		
			
				|  |  | +    const leftTableData = vxeRef.value.getTableData().tableData
 | 
	
		
			
				|  |  | +    const leftRow = leftTableData.find((row) => row.parentAsin === parentAsin)
 | 
	
		
			
				|  |  | +    if (leftRow && table.records.length === 0) {
 | 
	
		
			
				|  |  | +      await vxeRef.value.setCheckboxRow(leftRow, false)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 右侧表格全选事件
 | 
	
		
			
				|  |  | +async function selectAllChangeRight(table: any) {
 | 
	
		
			
				|  |  | +  if (table.checked) {
 | 
	
		
			
				|  |  | +    getRightSelectedItem()
 | 
	
		
			
				|  |  | +    const rightTableData = vxeRefRight.value.getTableData().tableData
 | 
	
		
			
				|  |  | +    for (const data of rightTableData) {
 | 
	
		
			
				|  |  | +      const leftTableData = vxeRef.value.getTableData().tableData
 | 
	
		
			
				|  |  | +      const leftRow = leftTableData.find((row) => row.parentAsin === data.parentAsin)
 | 
	
		
			
				|  |  | +      if (leftRow) {
 | 
	
		
			
				|  |  | +        await vxeRef.value.setCheckboxRow(leftRow, true)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  } else {
 | 
	
		
			
				|  |  | +    // console.log('table.tableData', vxeRefRight.value.getTableData().tableData[0].parentAsin)
 | 
	
		
			
				|  |  | +    emitter.emit('PopoverFilterTable-needDelete', vxeRefRight.value.getTableData().tableData[0].parentAsin)
 | 
	
		
			
				|  |  | +    const rightTableData = vxeRefRight.value.getTableData().tableData
 | 
	
		
			
				|  |  | +    for (const data of rightTableData) {
 | 
	
		
			
				|  |  | +      const leftTableData = vxeRef.value.getTableData().tableData
 | 
	
		
			
				|  |  | +      const leftRow = leftTableData.find((row) => row.parentAsin === data.parentAsin)
 | 
	
		
			
				|  |  | +      if (leftRow) {
 | 
	
		
			
				|  |  | +        await vxeRef.value.setCheckboxRow(leftRow, false)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 获取右侧表格选中的数据
 | 
	
		
			
				|  |  |  function getRightSelectedItem() {
 | 
	
		
			
				|  |  | -  const selectedData = vxeRefRight.value.getCheckboxRecords() // 获取右侧表格选中的数据
 | 
	
		
			
				|  |  | +  const selectedData = vxeRefRight.value.getCheckboxRecords()
 | 
	
		
			
				|  |  |    // console.log('selectedData', selectedData)
 | 
	
		
			
				|  |  |    emitter.emit('PopoverFilterTable-tableData', selectedData)
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -272,6 +332,7 @@ onBeforeUnmount(() => {
 | 
	
		
			
				|  |  |        v-loading="rightLoading"
 | 
	
		
			
				|  |  |        v-bind="gridOptionsRight"
 | 
	
		
			
				|  |  |        :header-cell-style="changeHeaderCellStyle"
 | 
	
		
			
				|  |  | +      @checkbox-all="selectAllChangeRight"
 | 
	
		
			
				|  |  |        @checkbox-change="selectChangeRight"
 | 
	
		
			
				|  |  |        class="mr-2 mb-2 mt-0 border rounded-br-md rounded-tr-md overflow-hidden w-0"
 | 
	
		
			
				|  |  |        style="flex: 2 1 0; overflow: auto"
 |