From 2cde04720d802f873630d7df2443c5a3d1124bb8 Mon Sep 17 00:00:00 2001 From: YeMingfei666 <1619116647@qq.com> Date: Tue, 6 May 2025 16:10:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=86=E7=BB=84=E9=80=89=E6=8B=A9=E5=95=86=E5=93=81=E6=9C=AA?= =?UTF-8?q?=E5=9B=9E=E6=98=BE=E5=B7=B2=E9=80=89=E4=B8=AD=E5=95=86=E5=93=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BB=A5=E5=8F=8A=E9=87=8D=E7=BD=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CURD/PageContent.vue | 83 +++++++- src/components/mycomponents/myDialog.vue | 35 ++-- src/views/online-shop/goods-group.vue | 238 ++++++++++++++--------- 3 files changed, 242 insertions(+), 114 deletions(-) diff --git a/src/components/CURD/PageContent.vue b/src/components/CURD/PageContent.vue index 2a81b02..01a9cc0 100644 --- a/src/components/CURD/PageContent.vue +++ b/src/components/CURD/PageContent.vue @@ -515,6 +515,7 @@ import { import ExcelJS from "exceljs"; import { reactive, ref } from "vue"; import type { IContentConfig, IObject, IOperatData } from "./types"; +import { el } from "element-plus/es/locale"; // 定义接收的属性 const props = defineProps<{ @@ -592,6 +593,45 @@ const selectionData = ref([]); // 删除ID集合 用于批量删除 const removeIds = ref<(number | string)[]>([]); function handleSelectionChange(selection: any[]) { + console.log("selectionData.value", selectionData.value); + + // if(selection.length==0){ + // selectionData.value=selectionData.value.filter((item) => { + // return pageData.value.find(v=>v[pk]===item[pk])!=undefined + // }); + // }else{ + // selectionData.value=selectionData.value.filter((item) => { + // return pageData.value.find(v=>v[pk]===item[pk])==undefined + // }); + // } + + //之前有选中,现在置空 + if (selection.length == 0 && selectionData.value.length > 0) { + defaultSelData.value = defaultSelData.value.filter((item) => { + return pageData.value.find((v) => v[pk] === item[pk]) != undefined; + }); + } + //之前没有选中,现在有 + if (selection.length > 0 && selectionData.value.length == 0) { + defaultSelData.value = selection; + } + //之前有选中,现在有 + if (selection.length > 0 && selectionData.value.length > 0) { + defaultSelData.value = defaultSelData.value.filter((item) => { + const isNowPageData = pageData.value.find((v) => v[pk] === item[pk]); + if (isNowPageData) { + return selection.find((v) => v[pk] === item[pk]) != undefined; + } else { + return true; + } + }); + for (let i of selection) { + if (defaultSelData.value.find((v) => v[pk] === i[pk]) == undefined) { + defaultSelData.value.push(i); + } + } + } + console.log("defaultSelData.value", defaultSelData.value); selectionData.value = selection; removeIds.value = selection.map((item) => item[pk]); } @@ -990,6 +1030,9 @@ function fetchPageData(formData: IObject = {}, isRestart = false) { } else { pageData.value = data; } + nextTick(() => { + setSelectTable(defaultSelData.value); + }); }) .finally(() => { loading.value = false; @@ -1030,14 +1073,42 @@ function saveXlsx(fileData: BlobPart, fileName: string) { document.body.removeChild(downloadLink); window.URL.revokeObjectURL(downloadUrl); } -function test(rows: any[]) { - console.log(tableRef, "tioshi222222222222222222222"); - // rows.forEach((row) => { - // tableRef.value!.toggleRowSelection(row, undefined) - // }) +function test(rows: any[]) {} + +const defaultSelData = ref([]); +// 设置默认选择 +function setSelectTable(rows: any[]) { + selectionData.value = rows; + defaultSelData.value = rows; + pageData.value.forEach((element: IObject) => { + rows.forEach((row) => { + if (element.id == row.id) { + console.log("selected", element); + tableRef.value!.toggleRowSelection(element, true); + } + }); + }); } +//清除选中 +function clearSelectTable() { + selectionData.value = []; + defaultSelData.value = []; + pageData.value.forEach((element: IObject) => { + tableRef.value!.toggleRowSelection(element, false); + }); +} + // 暴露的属性和方法 -defineExpose({ fetchPageData, exportPageData, getFilterParams, getselectTable, pagination, test }); +defineExpose({ + clearSelectTable, + fetchPageData, + exportPageData, + getFilterParams, + getselectTable, + pagination, + test, + setSelectTable, +});