会员等级管理

This commit is contained in:
余同学 2024-12-12 20:42:06 +08:00
parent 6a8dd263de
commit bf99a60269
3 changed files with 119 additions and 65 deletions

View File

@ -39,7 +39,7 @@
</div>
<div class="tipsLevel">
<div>
<span style="margin-right: 30px">全部等级({{list.length}})</span
<span style="margin-right: 30px">全部等级({{ list.length }})</span
><el-button @click="add(null)" type="primary">+新增套餐</el-button>
</div>
<div>
@ -74,10 +74,16 @@
>
<template slot-scope="scope">
<div>
<span>{{scope.row.enableMemberDiscount ? '会员折扣,' :''}}</span>
<span>{{scope.row.enablePointsRedemption ? '积分兑换,' : ''}}</span>
<span>{{scope.row.enableBirthdayCoupons ? '生日优惠卷,' : ''}}</span>
<span>{{scope.row.enableBirthdayReward ? '生日双倍积分' : ''}}</span>
<span>{{ scope.row.enableMemberDiscount ? "会员折扣," : "" }}</span>
<span>{{
scope.row.enablePointsRedemption ? "积分兑换," : ""
}}</span>
<span>{{
scope.row.enableBirthdayCoupons ? "生日优惠卷," : ""
}}</span>
<span>{{
scope.row.enableBirthdayReward ? "生日双倍积分" : ""
}}</span>
</div>
</template>
</el-table-column>
@ -102,7 +108,7 @@
<!-- </el-table-column> -->
</el-table>
<!-- 添加 -->
<addOrUpdate ref="addOrUpdate"></addOrUpdate>
<addOrUpdate @getList="getList" ref="addOrUpdate"></addOrUpdate>
</div>
</template>
@ -127,7 +133,7 @@ export default {
this.formInline = {
unitType: JSON.parse(sessionStorage.getItem("userInfo")).unitType,
marketId: this.marketId,
shopId: "",
shopId: this.shopId,
};
this.getList();
},

View File

@ -26,10 +26,24 @@ export default {
show: false,
width: "60%",
},
modalData: {},
value1: [],
modalData: {
couponsName: "",
couponsThreshold: 0,
couponsMinus: 0,
couponsEffectiveTimeType: "1",
},
};
},
watch: {
"modalConfig.show"(newVal) {
if (newVal) {
//
setTimeout(() => {
this.$refs.modal.resetFields();
});
}
},
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
@ -37,43 +51,33 @@ export default {
this.modalConfig.show = true;
} else {
this.modalConfig.show = false;
this.$refs.modal.resetFields();
}
if (e) {
this.init(cloneDeep(e));
}
return {
add: (row) => {
this.modalConfig.title = "添加优惠卷";
this.$nextTick(() => {
this.$refs.modal?.resetFields();
});
this.isAdd = true;
if (row) {
console.log(row);
if (row.length > 0) {
this.modalData = row[0];
} else {
console.log("111");
return;
this.modalData = {
couponsName: "",
couponsThreshold: 0,
couponsMinus: 0,
couponsEffectiveTimeType: "1",
};
}
this.modalData = {
couponsName: "",
couponsThreshold: 0,
couponsMinus: 0,
couponsEffectiveTimeType: "1",
};
console.log("qqw");
this.modalConfig.title = "添加优惠卷";
this.isAdd = true;
},
update: () => {
this.isAdd = false;
},
};
},
init(row) {
if (row) {
this.modalData = row;
return;
}
console.log("123");
},
init(row) {},
},
computed: {
modalCols() {
@ -146,7 +150,7 @@ export default {
},
{
label: "当月",
value: "2",
value: "3",
},
].map((item) => {
return (
@ -176,8 +180,11 @@ export default {
loading: this.isLoading,
submit: true,
handle: () => {
console.log(this.modalData);
this.$emit("addCouponData", this.modalData);
console.log(JSON.parse(JSON.stringify(this.modalData)));
this.$emit(
"addCouponData",
JSON.parse(JSON.stringify(this.modalData))
);
this.toggle();
},
},

View File

@ -13,7 +13,7 @@
<obj-table-plus
style="height: 70vh"
ref="oTableThree"
v-model="modalData.tableData"
v-model="modalData.levelList"
:tableCols="tableCols"
:tableProp="tableProp"
:toolbarProp="toolbarProp"
@ -28,6 +28,7 @@
</div>
</template>
<script>
import { mapState } from "vuex";
import addCoupon from "./add-coupon.vue";
import { debounce, cloneDeep } from "lodash";
export default {
@ -41,6 +42,7 @@ export default {
tableProp: {
height: "auto",
border: true,
"show-overflow": false,
"auto-resize": false,
"print-config": {},
},
@ -58,7 +60,7 @@ export default {
marketId: "",
shopId: "",
unitType: "",
tableData: [
levelList: [
{
levelName: "",
requiredGrowthValue: 0,
@ -90,7 +92,7 @@ export default {
enableBirthdayReward: false,
discountRate: "",
rewardEffectiveTimeType: "",
memberLevelCouponsList: "",
memberLevelCouponsList: [],
},
]);
});
@ -125,7 +127,8 @@ export default {
addCouponData(data) {
console.log(data);
let row = JSON.parse(JSON.stringify(data));
this.modalData.tableData[this.couponIndex].memberLevelCouponsList = [row];
this.modalData.levelList[this.couponIndex].memberLevelCouponsList = [row];
this.$refs.modalForm.validate();
},
},
computed: {
@ -147,7 +150,7 @@ export default {
let row = e.row;
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.levelName`}
prop={`levelList.${e.$rowIndex}.levelName`}
rules={{
required: true,
message: "请输入等级名称",
@ -168,15 +171,26 @@ export default {
width: "170px",
type: "jsx",
render: (e) => {
let changUpperLimit = () => {
console.log(
e.$rowIndex,
e,
e.data[e.$rowIndex - 1].growthValueUpperLimit,
e.data[e.$rowIndex].requiredGrowthValue
);
e.data[e.$rowIndex - 1].growthValueUpperLimit =
e.data[e.$rowIndex].requiredGrowthValue - 1;
};
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.requiredGrowthValue`}
prop={`levelList.${e.$rowIndex}.requiredGrowthValue`}
rules={{
required: true,
message: "请输入所需成长值",
}}
>
<el-input-number
onChange={changUpperLimit}
disabled={e.$rowIndex == 0}
style="width:150px"
controls-position="right"
@ -199,14 +213,14 @@ export default {
render: (e) => {
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.requiredGrowthValue`}
prop={`levelList.${e.$rowIndex}.requiredGrowthValue`}
rules={{
required: true,
message: "请输入所需成长值",
}}
>
<el-input-number
disabled={this.modalData.tableData.length == e.$rowIndex + 1}
disabled={this.modalData.levelList.length == e.$rowIndex + 1}
style="width:150px"
controls-position="right"
precision={0}
@ -232,10 +246,12 @@ export default {
}
};
return (
<el-switch
onchange={changeDiscountRate}
v-model={row.enableMemberDiscount}
></el-switch>
<el-form-item>
<el-switch
onchange={changeDiscountRate}
v-model={row.enableMemberDiscount}
></el-switch>
</el-form-item>
);
},
},
@ -249,7 +265,7 @@ export default {
if (e.row.enableMemberDiscount) {
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.discountRate`}
prop={`levelList.${e.$rowIndex}.discountRate`}
rules={{
required: true,
message: "请输入所需成长值",
@ -278,7 +294,14 @@ export default {
width: "120px",
type: "jsx",
render: ({ row }) => {
return <el-switch v-model={row.enablePointsRedemption}></el-switch>;
return (
<el-form-item>
{" "}
<el-switch
v-model={row.enablePointsRedemption}
></el-switch>{" "}
</el-form-item>
);
},
},
{
@ -290,14 +313,16 @@ export default {
render: ({ row }) => {
let changeCouponsList = () => {
if (!row.enableBirthdayCoupons) {
row.memberLevelCouponsList = "";
row.memberLevelCouponsList = [];
}
};
return (
<el-switch
onchange={changeCouponsList}
v-model={row.enableBirthdayCoupons}
></el-switch>
<el-form-item>
<el-switch
onchange={changeCouponsList}
v-model={row.enableBirthdayCoupons}
></el-switch>
</el-form-item>
);
},
},
@ -316,7 +341,7 @@ export default {
if (e.row.enableBirthdayCoupons) {
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.memberLevelCouponsList`}
prop={`levelList.${e.$rowIndex}.memberLevelCouponsList`}
rules={{
required: true,
message: "请添加优惠卷",
@ -349,10 +374,12 @@ export default {
}
};
return (
<el-switch
onchange={changeReward}
v-model={row.enableBirthdayReward}
></el-switch>
<el-form-item>
<el-switch
onchange={changeReward}
v-model={row.enableBirthdayReward}
></el-switch>
</el-form-item>
);
},
},
@ -366,7 +393,7 @@ export default {
if (e.row.enableBirthdayReward) {
return (
<el-form-item
prop={`tableData.${e.$rowIndex}.rewardEffectiveTimeType`}
prop={`levelList.${e.$rowIndex}.rewardEffectiveTimeType`}
rules={{
required: true,
message: "请输入所需成长值",
@ -408,7 +435,7 @@ export default {
render: (e) => {
let add = () => {
console.log(e);
this.modalData.tableData.splice(e.$rowIndex + 1, 0, {
this.modalData.levelList.splice(e.$rowIndex + 1, 0, {
levelName: "",
requiredGrowthValue: "0",
growthValueUpperLimit: "999999999",
@ -418,16 +445,16 @@ export default {
enableBirthdayReward: false,
discountRate: "",
rewardEffectiveTimeType: "",
memberLevelCouponsList: "",
memberLevelCouponsList: [],
});
};
let remove = () => {
this.modalData.tableData.splice(e.$rowIndex, 1);
this.modalData.levelList.splice(e.$rowIndex, 1);
};
return (
<div>
<el-button
v-show={this.modalData.tableData.length == e.$rowIndex + 1}
v-show={this.modalData.levelList.length == e.$rowIndex + 1}
style="margin-right: 10px"
type="primary"
size="mini"
@ -436,7 +463,7 @@ export default {
>
添加
</el-button>
{this.modalData.tableData.length > 1 && e.$rowIndex != 0 ? (
{this.modalData.levelList.length > 1 && e.$rowIndex != 0 ? (
<el-popconfirm title="确认要删除吗?" onConfirm={remove}>
<el-button
class="ml-1"
@ -473,12 +500,26 @@ export default {
).unitType;
console.log(this.modalData);
this.$refs.modalForm.validate((valid) => {
console.log(valid);
if (valid) {
this.$api.marketing
.addMarketingLevel(this.modalData)
.then((res) => {
this.$emit("getList");
this.toggle();
});
}
});
}, 300),
},
];
},
...mapState("userData", [
"isMerchant",
"marketList",
"storeList",
"marketId",
"shopId",
]),
},
asyncComputed: {},
};