|
@@ -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"
|