From 6618b608dec0912b39b7e877eef0b2170507811d Mon Sep 17 00:00:00 2001
From: cshaptx4869 <994774638@qq.com>
Date: Wed, 8 May 2024 21:46:35 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20=E5=8A=A0=E5=BC=BA?=
=?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86=E8=A1=A8=E5=8D=95=E7=BB=84=E4=BB=B6?=
=?UTF-8?q?=E5=92=8C=E5=88=97=E8=A1=A8=E9=80=89=E6=8B=A9=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/PageModal/index.vue | 202 ++++++++++++++++-----------
src/components/TableSelect/index.vue | 39 ++++--
src/views/demo/curd/config/add.ts | 1 -
src/views/demo/curd/config/edit.ts | 2 +-
4 files changed, 149 insertions(+), 95 deletions(-)
diff --git a/src/components/PageModal/index.vue b/src/components/PageModal/index.vue
index 0cd56514..6f49e969 100644
--- a/src/components/PageModal/index.vue
+++ b/src/components/PageModal/index.vue
@@ -1,102 +1,124 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
-
@@ -182,6 +184,8 @@ const emit = defineEmits<{
// 主键
const pk = props.selectConfig.pk ?? "id";
+// 是否多选
+const isMultiple = props.selectConfig.multiple === true;
// 是否显示弹出框
const popoverVisible = ref(false);
// 加载状态
@@ -246,16 +250,26 @@ for (const item of props.selectConfig.tableColumns) {
}
}
// 选择
-let selectedItems: IObject[] = [];
+const selectedItems = ref([]);
+const confirmText = computed(() => {
+ return selectedItems.value.length > 0
+ ? `已选(${selectedItems.value.length})`
+ : "确 定";
+});
function handleSelect(selection: any[], row: any) {
- if (props.selectConfig.multiple || selection.length === 0) {
+ if (isMultiple || selection.length === 0) {
// 多选
- selectedItems = selection;
+ selectedItems.value = selection;
} else {
// 单选
- selectedItems = [selection[selection.length - 1]];
+ selectedItems.value = [selection[selection.length - 1]];
tableRef.value?.clearSelection();
- tableRef.value?.toggleRowSelection(selectedItems[0], true);
+ tableRef.value?.toggleRowSelection(selectedItems.value[0], true);
+ }
+}
+function handleSelectAll(selection: any[]) {
+ if (isMultiple) {
+ selectedItems.value = selection;
}
}
// 分页
@@ -274,15 +288,22 @@ function handleShow() {
}
// 确定
function handleConfirm() {
+ if (selectedItems.value.length === 0) {
+ ElMessage.error("请选择数据");
+ return;
+ }
popoverVisible.value = false;
- emit("confirmClick", selectedItems);
+ emit("confirmClick", selectedItems.value);
}
// 清空
function handleClear() {
tableRef.value?.clearSelection();
- selectedItems = [];
+ selectedItems.value = [];
}
// 关闭
+function handleClose() {
+ popoverVisible.value = false;
+}
const tableSelectRef = ref();
const popoverContentRef = ref();
/* onClickOutside(tableSelectRef, () => (popoverVisible.value = false), {
diff --git a/src/views/demo/curd/config/add.ts b/src/views/demo/curd/config/add.ts
index ca09e121..1400b748 100644
--- a/src/views/demo/curd/config/add.ts
+++ b/src/views/demo/curd/config/add.ts
@@ -7,7 +7,6 @@ const modalConfig: IModalConfig = {
dialog: {
title: "新增用户",
width: 800,
- appendToBody: true,
draggable: true,
},
form: {
diff --git a/src/views/demo/curd/config/edit.ts b/src/views/demo/curd/config/edit.ts
index b517f625..63664d68 100644
--- a/src/views/demo/curd/config/edit.ts
+++ b/src/views/demo/curd/config/edit.ts
@@ -8,7 +8,7 @@ const modalConfig: IModalConfig = {
dialog: {
title: "修改用户",
width: 800,
- appendToBody: true,
+ draggable: true,
},
formAction: function (data) {
return UserAPI.update(data.id as number, data);