From 12291ad4d542bfbda2698bc756536f00cdcb8e06 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=94=B0=E9=A6=99=E7=90=AA?= <624506849@qq.com>
Date: Tue, 21 Jul 2026 17:01:38 +0800
Subject: [PATCH] =?UTF-8?q?feat(invoiceModal):=20=E5=8F=91=E7=A5=A8?=
=?UTF-8?q?=E5=BC=B9=E7=AA=97=E7=BB=84=E4=BB=B6=E6=96=B0=E5=A2=9E=20change?=
=?UTF-8?q?=20=E4=BA=8B=E4=BB=B6=20-=20=E5=9C=A8=E5=8F=91=E7=A5=A8?=
=?UTF-8?q?=E5=BC=B9=E7=AA=97=E4=B8=AD=E5=A2=9E=E5=8A=A0=20change=20?=
=?UTF-8?q?=E4=BA=8B=E4=BB=B6=20emit=EF=BC=8C=E4=BE=BF=E4=BA=8E=E7=88=B6?=
=?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9B=91=E5=90=AC=E6=95=B0=E6=8D=AE=E5=8F=98?=
=?UTF-8?q?=E5=8C=96=20-=20=E4=BC=98=E5=8C=96=20coupon-publish=20=E7=BB=84?=
=?UTF-8?q?=E4=BB=B6=E7=9A=84=20selectedMember=E3=80=81selectedList=20?=
=?UTF-8?q?=E7=BB=91=E5=AE=9A=EF=BC=8C=E5=AE=8C=E5=96=84=E4=BC=9A=E5=91=98?=
=?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
buyer/src/components/invoiceModal/index.vue | 1 +
manager/src/views/member/list/index.vue | 43 +++++++++++++++++--
.../coupon-activity/coupon-publish.vue | 34 +++++++--------
3 files changed, 57 insertions(+), 21 deletions(-)
diff --git a/buyer/src/components/invoiceModal/index.vue b/buyer/src/components/invoiceModal/index.vue
index c497e913..633b0ff8 100644
--- a/buyer/src/components/invoiceModal/index.vue
+++ b/buyer/src/components/invoiceModal/index.vue
@@ -92,6 +92,7 @@ import { mobile, email } from '@/plugins/RegExp.js';
export default {
name: 'invoiceModal',
+ emits: ['change'],
data () {
return {
invoice: 1, // 1 电子普通发票 2 增值税专用发票
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index 10e36df0..8c40975b 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -68,7 +68,13 @@
row-key="id"
@selection-change="onSelectionChange"
>
-
+
@@ -109,10 +115,16 @@
-
+
-
+
{{ row.___selected ? "已选择" : "选择" }}
@@ -320,6 +332,10 @@ export default {
type: null,
default: () => [],
},
+ checkboxSelect: {
+ type: Boolean,
+ default: false,
+ },
},
data() {
return {
@@ -432,8 +448,28 @@ export default {
if (name === "updatePoint") this.openMemberPoint(row);
},
onSelectionChange(selection) {
+ if (this.selectedMember && this.checkboxSelect) {
+ this.selectMember = selection || [];
+ return;
+ }
this.selectedRows = selection || [];
},
+ getSelection() {
+ return this.selectMember || [];
+ },
+ syncTableSelection() {
+ if (!this.selectedMember || !this.checkboxSelect) {
+ return;
+ }
+ this.$nextTick(() => {
+ this.clearSelection();
+ this.data.forEach((row) => {
+ if (this.selectMember.some((member) => member.id === row.id)) {
+ this.$refs.table?.toggleRowSelection(row, true);
+ }
+ });
+ });
+ },
openSetMemberGroup() {
this.memberGroupFlag = true;
this.memberGroupLoading = false;
@@ -569,6 +605,7 @@ export default {
this.loading = false;
this.init(res.result.records);
this.total = res.result.total;
+ this.syncTableSelection();
}
});
},
diff --git a/manager/src/views/promotions/coupon-activity/coupon-publish.vue b/manager/src/views/promotions/coupon-activity/coupon-publish.vue
index 10d218c7..3d8a70af 100644
--- a/manager/src/views/promotions/coupon-activity/coupon-publish.vue
+++ b/manager/src/views/promotions/coupon-activity/coupon-publish.vue
@@ -156,10 +156,15 @@
+
+ 取消
+ 确定
+
@@ -185,6 +190,7 @@ export default {
showCouponSelect: false,
tempCouponList: [],
checkUserList: false,
+ memberSelectSnapshot: [],
selectedMember: [],
form: {
promotionName: "",
@@ -237,20 +243,14 @@ export default {
};
return map[type] || "danger";
},
- callbackSelectUser(val) {
- let findUser = this.selectedMember.find((item) => {
- return item.id === val.id;
- });
- if (!findUser) {
- this.selectedMember.push(val);
- } else {
- this.selectedMember.map((item, index) => {
- if (item.id === findUser.id) {
- this.selectedMember.splice(index, 1);
- }
- });
- }
+ cancelMemberSelect() {
+ this.checkUserList = false;
+ },
+ confirmMemberSelect() {
+ const list = this.$refs.memberLayout?.getSelection?.() || [];
+ this.selectedMember = list;
this.reSelectMember();
+ this.checkUserList = false;
},
delUser(index) {
this.selectedMember.splice(index, 1);
@@ -293,10 +293,8 @@ export default {
});
},
addVip() {
+ this.memberSelectSnapshot = JSON.parse(JSON.stringify(this.selectedMember));
this.checkUserList = true;
- this.$nextTick(() => {
- this.$refs.memberLayout.selectedMember = true;
- });
},
showSelector() {
this.tempCouponList = [...this.selectCouponList];