feat: 设置会员明细

This commit is contained in:
lzhizhao 2025-08-09 22:01:34 +08:00
parent 7e8cbdb6dd
commit 1a9c11f4ca
1 changed files with 218 additions and 94 deletions

View File

@ -108,7 +108,9 @@
<el-table-column label="会员权益" align="left">
<template slot-scope="scope">
<span style="color: #666; line-height: 1.5;">
{{ generateMemberBenefits(scope.row) }}
{{
scope.row.benefitsInfo || generateMemberBenefits(scope.row)
}}
</span>
</template>
</el-table-column>
@ -184,16 +186,25 @@
<el-switch v-model="scope.row.enableBirthdayCoupons"></el-switch>
</template>
</el-table-column>
<el-table-column label="生日优惠券操作" width="130" align="center">
<el-table-column label="生日优惠券操作" width="150" align="center">
<template slot-scope="scope">
<el-button
v-if="scope.row.enableBirthdayCoupons"
type="primary"
size="mini"
@click="handleAddCoupon(scope.row)"
>
添加优惠券
</el-button>
<div v-if="scope.row.enableBirthdayCoupons">
<el-button
type="primary"
size="mini"
@click="handleAddCoupon(scope.row)"
>
{{
scope.row.birthdayCouponsName ? "编辑优惠券" : "添加优惠券"
}}
</el-button>
<div
v-if="scope.row.birthdayCouponsName"
style="margin-top: 5px; font-size: 12px; color: #666;"
>
{{ scope.row.birthdayCouponsName }}
</div>
</div>
</template>
</el-table-column>
<el-table-column label="开启生日双倍积分" align="center">
@ -203,22 +214,25 @@
</el-table-column>
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<el-button
type="primary"
size="mini"
@click="handleAddLevel(scope.$index)"
style="margin-right: 5px;"
>
新增
</el-button>
<el-button
type="danger"
size="mini"
@click="handleDeleteLevel(scope.$index)"
:disabled="editLevelData.length <= 1"
>
删除
</el-button>
<!-- 只有最后一条记录显示操作按钮 -->
<div v-if="scope.$index === editLevelData.length - 1">
<el-button
type="primary"
size="mini"
@click="handleAddLevel()"
style="margin-right: 5px;"
>
新增
</el-button>
<el-button
type="danger"
size="mini"
@click="handleDeleteLevel(scope.$index)"
:disabled="editLevelData.length <= 1"
>
删除
</el-button>
</div>
</template>
</el-table-column>
</el-table>
@ -284,32 +298,36 @@
<el-form :model="couponForm" label-width="120px">
<el-form-item label="优惠券名称" required>
<el-input
v-model="couponForm.name"
v-model="couponForm.birthdayCouponsName"
placeholder="生日优惠券"
></el-input>
</el-form-item>
<el-form-item label="优惠券门槛金额" required>
<el-select v-model="couponForm.discountAmount" style="width: 100%">
<el-option label="10元" value="10元"></el-option>
<el-option label="20元" value="20元"></el-option>
<el-option label="50元" value="50元"></el-option>
<el-option label="100元" value="100元"></el-option>
</el-select>
<el-input-number
v-model="couponForm.birthdayCouponsThreshold"
:min="0"
:precision="2"
style="width: 100%"
placeholder="请输入门槛金额"
></el-input-number>
</el-form-item>
<el-form-item label="优惠券减免金额" required>
<el-select v-model="couponForm.minAmount" style="width: 100%">
<el-option label="1元" value="1元"></el-option>
<el-option label="2元" value="2元"></el-option>
<el-option label="5元" value="5元"></el-option>
<el-option label="10元" value="10元"></el-option>
</el-select>
<el-input-number
v-model="couponForm.birthdayCouponsMinus"
:min="0"
:precision="2"
style="width: 100%"
placeholder="请输入减免金额"
></el-input-number>
</el-form-item>
<el-form-item label="优惠券有效时间" required>
<el-select v-model="couponForm.validityPeriod" style="width: 100%">
<el-option label="7天" value="7天"></el-option>
<el-option label="15天" value="15天"></el-option>
<el-option label="30天" value="30天"></el-option>
<el-option label="60天" value="60天"></el-option>
<el-select
v-model="couponForm.couponsEffectiveTimeType"
style="width: 100%"
>
<el-option label="当天" :value="1"></el-option>
<el-option label="7天" :value="2"></el-option>
<el-option label="本月" :value="3"></el-option>
</el-select>
</el-form-item>
</el-form>
@ -590,11 +608,12 @@ export default {
showReviewDialog: false,
//
couponForm: {
name: "",
discountAmount: "",
minAmount: "",
validityPeriod: ""
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1
},
currentEditingLevel: null, //
//
dailySignSettings: {
taskEnable: false,
@ -649,60 +668,84 @@ export default {
editPointsValidityDays: 365,
levelDetailData: [
{
level: "LV1",
levelName: "LV1",
levelDisplayName: "铜牌会员",
minGrowthValue: 0,
maxGrowthValue: 100,
startGrowthValue: 0,
endGrowthValue: 100,
requiredGrowthValue: "100",
memberCount: "1,250",
membershipCount: 1250,
memberBenefits: "新会员双倍积分,享受基础会员价格优惠",
enableDiscount: true,
discountRate: 5,
enableExchange: false,
enableBirthdayCoupon: true,
enableBirthdayPoints: false
enablePointsRedemption: false,
enableBirthdayCoupons: true,
enableBirthdayReward: false,
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
benefitsInfo: ""
},
{
level: "LV2",
levelName: "LV2",
levelDisplayName: "银牌会员",
minGrowthValue: 101,
maxGrowthValue: 500,
startGrowthValue: 101,
endGrowthValue: 500,
requiredGrowthValue: "500",
memberCount: "850",
membershipCount: 850,
memberBenefits: "享受9.5折优惠,每月专属优惠券,生日礼品",
enableDiscount: true,
discountRate: 10,
enableExchange: true,
enableBirthdayCoupon: true,
enableBirthdayPoints: true
enablePointsRedemption: true,
enableBirthdayCoupons: true,
enableBirthdayReward: true,
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
benefitsInfo: ""
},
{
level: "LV3",
levelName: "LV3",
levelDisplayName: "金牌会员",
minGrowthValue: 501,
maxGrowthValue: 1200,
startGrowthValue: 501,
endGrowthValue: 1200,
requiredGrowthValue: "1,200",
memberCount: "450",
membershipCount: 450,
memberBenefits: "享受9折优惠免费配送服务专属客服支持",
enableDiscount: true,
discountRate: 15,
enableExchange: true,
enableBirthdayCoupon: true,
enableBirthdayPoints: true
enablePointsRedemption: true,
enableBirthdayCoupons: true,
enableBirthdayReward: true,
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
benefitsInfo: ""
},
{
level: "LV4",
levelName: "LV4",
levelDisplayName: "钻石会员",
minGrowthValue: 1201,
maxGrowthValue: 9999,
startGrowthValue: 1201,
endGrowthValue: 9999,
requiredGrowthValue: "2,500",
memberCount: "180",
membershipCount: 180,
memberBenefits: "享受8.5折优惠,优先配送,专属活动邀请,年度礼品",
enableDiscount: true,
discountRate: 20,
enableExchange: true,
enableBirthdayCoupon: true,
enableBirthdayPoints: true
enablePointsRedemption: true,
enableBirthdayCoupons: true,
enableBirthdayReward: true,
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
benefitsInfo: ""
}
],
editLevelData: [],
@ -725,6 +768,12 @@ export default {
if (this.shopId && this.shopName && !this.isBatchMode) {
this.isEditMode = false; //
}
//
this.levelDetailData = this.levelDetailData.map(level => ({
...level,
benefitsInfo: level.benefitsInfo || this.generateMemberBenefits(level)
}));
},
mounted() {
if (this.isBatchMode) {
@ -759,7 +808,8 @@ export default {
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
enableBirthdayReward: false,
membershipCount: 0
membershipCount: 0,
benefitsInfo: ""
}
];
},
@ -794,11 +844,12 @@ export default {
//
this.couponForm = {
name: "",
discountAmount: "",
minAmount: "",
validityPeriod: ""
birthdayCouponsName: "",
birthdayCouponsThreshold: 0,
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1
};
this.currentEditingLevel = null;
//
this.dailySignSettings = {
@ -915,7 +966,8 @@ export default {
birthdayCouponsMinus: level.birthdayCouponsMinus || 0,
couponsEffectiveTimeType: level.couponsEffectiveTimeType || 1,
enableBirthdayReward: level.enableBirthdayReward,
membershipCount: level.membershipCount || 0
membershipCount: level.membershipCount || 0,
benefitsInfo: level.benefitsInfo || ""
}));
} else {
//
@ -950,19 +1002,23 @@ export default {
generateMemberBenefits(level) {
const benefits = [];
//
if (level.enableDiscount && level.discountRate) {
const discount = (100 - level.discountRate) / 10;
benefits.push(`享受${discount}折优惠`);
}
//
if (level.enablePointsRedemption) {
benefits.push("积分兑换商品");
}
//
if (level.enableBirthdayCoupons) {
benefits.push("生日专属优惠券");
benefits.push("生日优惠券");
}
//
if (level.enableBirthdayReward) {
benefits.push("生日双倍积分");
}
@ -990,7 +1046,8 @@ export default {
birthdayCouponsMinus: level.birthdayCouponsMinus,
couponsEffectiveTimeType: level.couponsEffectiveTimeType,
enableBirthdayReward: level.enableBirthdayReward,
membershipCount: level.membershipCount
membershipCount: level.membershipCount,
benefitsInfo: this.generateMemberBenefits(level)
})),
dailySignSettings: {
...this.dailySignSettings,
@ -1136,18 +1193,51 @@ export default {
},
handleSaveEdit() {
//
this.levelDetailData = JSON.parse(JSON.stringify(this.editLevelData));
//
this.levelDetailData = JSON.parse(JSON.stringify(this.editLevelData)).map(
level => ({
...level,
benefitsInfo: this.generateMemberBenefits(level)
})
);
this.pointsValidityDays = this.editPointsValidityDays;
// isEnabled taskEnable
this.updateTaskEnableStatus();
this.isEditMode = false;
//
this.saveSettingsData();
},
// isEnabled taskEnable
updateTaskEnableStatus() {
if (this.editPointsTaskData && this.editPointsTaskData.length > 0) {
this.editPointsTaskData.forEach(task => {
switch (task.taskName) {
case "每日签到":
this.dailySignSettings.taskEnable = task.isEnabled;
break;
case "浏览商品":
this.viewGoodsSettings.taskEnable = task.isEnabled;
break;
case "购买商品":
this.buyGoodsSettings.taskEnable = task.isEnabled;
break;
case "分享商品":
this.shareGoodsSettings.taskEnable = task.isEnabled;
break;
case "评价商品":
this.commentGoodsSettings.taskEnable = task.isEnabled;
break;
}
});
}
},
//
handleAddLevel(index) {
handleAddLevel() {
//
const newLevel = {
level: `LV${this.editLevelData.length + 1}`,
@ -1163,12 +1253,12 @@ export default {
birthdayCouponsMinus: 0,
couponsEffectiveTimeType: 1,
enableBirthdayReward: false,
membershipCount: 0
membershipCount: 0,
benefitsInfo: ""
};
//
this.editLevelData.splice(index + 1, 0, newLevel);
this.$message.success("新增等级成功");
//
this.editLevelData.push(newLevel);
},
//
@ -1185,20 +1275,22 @@ export default {
})
.then(() => {
this.editLevelData.splice(index, 1);
this.$message.success("删除等级成功");
})
.catch(() => {
//
});
},
handleAddCoupon() {
handleAddCoupon(level) {
this.currentEditingLevel = level;
this.showCouponDialog = true;
//
this.couponForm = {
name: "生日优惠券",
discountAmount: "10元",
minAmount: "1元",
validityPeriod: "请选择有效时间"
birthdayCouponsName: level.birthdayCouponsName || "生日优惠券",
birthdayCouponsThreshold: level.birthdayCouponsThreshold || 0,
birthdayCouponsMinus: level.birthdayCouponsMinus || 0,
couponsEffectiveTimeType: level.couponsEffectiveTimeType || 1
};
},
@ -1270,8 +1362,40 @@ export default {
//
saveCouponForm() {
// this.$message.success("");
//
if (!this.couponForm.birthdayCouponsName) {
this.$message.error("请输入优惠券名称");
return;
}
if (
!this.couponForm.birthdayCouponsThreshold &&
this.couponForm.birthdayCouponsThreshold !== 0
) {
this.$message.error("请输入优惠券门槛金额");
return;
}
if (
!this.couponForm.birthdayCouponsMinus &&
this.couponForm.birthdayCouponsMinus !== 0
) {
this.$message.error("请输入优惠券减免金额");
return;
}
if (!this.couponForm.couponsEffectiveTimeType) {
this.$message.error("请选择优惠券有效时间");
return;
}
//
if (this.currentEditingLevel) {
this.currentEditingLevel.birthdayCouponsName = this.couponForm.birthdayCouponsName;
this.currentEditingLevel.birthdayCouponsThreshold = this.couponForm.birthdayCouponsThreshold;
this.currentEditingLevel.birthdayCouponsMinus = this.couponForm.birthdayCouponsMinus;
this.currentEditingLevel.couponsEffectiveTimeType = this.couponForm.couponsEffectiveTimeType;
}
this.showCouponDialog = false;
this.currentEditingLevel = null;
},
saveSignInForm() {