会员等级管理

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

View File

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

View File

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