fix: 代客下单可选套餐确定无法点击,优惠价格计算

This commit is contained in:
2025-03-11 11:30:02 +08:00
parent 8bec7f1f6c
commit 4e956987d5
8 changed files with 258 additions and 105 deletions

View File

@@ -6,8 +6,8 @@
@close="reset"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px" label-position="left">
<el-form-item label="券名称" prop="couponId">
<el-select v-model="form.couponId" placeholder="请选择优惠券">
<el-form-item label="券名称" prop="id">
<el-select v-model="form.id" placeholder="请选择优惠券">
<el-option
:label="item.title"
:value="item.id"
@@ -17,7 +17,7 @@
</el-select>
</el-form-item>
<el-form-item label="数量">
<el-input-number v-model="form.couponNum" :min="1"></el-input-number>
<el-input-number v-model="form.num" :min="1"></el-input-number>
</el-form-item>
</el-form>
<template #footer>
@@ -30,6 +30,7 @@
</template>
<script>
import couponApi from "@/api/account/coupon";
export default {
data() {
return {
@@ -38,13 +39,13 @@ export default {
coupons: [],
type: 1,
form: {
couponId: "",
couponName: "",
couponNum: "",
id: "",
name: "",
num: "",
},
resetForm: {},
rules: {
couponId: [
id: [
{
required: true,
message: "请选择优惠券",
@@ -64,7 +65,7 @@ export default {
this.$refs.form.validate(async (valid) => {
if (valid) {
try {
this.form.couponName = this.coupons.find((item) => item.id == this.form.couponId).title;
this.form.name = this.coupons.find((item) => item.id == this.form.id).title;
this.$emit("success", { ...this.form });
this.close();
} catch (error) {
@@ -76,13 +77,12 @@ export default {
// 获取优惠券列表
async getTbShopCoupon() {
try {
const res = await getTbShopCoupon({
shopId: localStorage.getItem("shopId"),
const res = await couponApi.getList({
type: 1,
page: 1,
size: 100,
});
this.coupons = res.content;
this.coupons = res;
} catch (error) {
console.log(error);
}
@@ -94,7 +94,7 @@ export default {
this.dialogVisible = false;
},
show(row) {
if (row && row.couponId) {
if (row && row.id) {
this.type = 1;
this.form = { ...row };
} else {

View File

@@ -34,42 +34,46 @@
<div class="tips u-m-l-14">建议尺寸750*622</div>
</el-form-item>
<el-form-item label="活动日期" prop="startTime">
<el-date-picker
v-model="createdAt"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
value-format="yyyy-MM-dd HH:mm:ss"
@change="timeChange"
></el-date-picker>
</el-form-item>
<el-form-item label="新用户获得券" prop="newCoupons">
<div>
<el-button type="primary" @click="addRewardHandle('newCoupons')">添加券</el-button>
<el-date-picker
style="width: 300px"
v-model="createdAt"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD"
@change="timeChange"
></el-date-picker>
</div>
</el-form-item>
<el-form-item label="新用户获得券" prop="newCouponList">
<div>
<el-button type="primary" @click="addRewardHandle('newCouponList')">添加券</el-button>
<div class="tips">
新用户的定义没领过该活动券的都属于新用户不管有没有下过单和是否第一次登录小程序
</div>
<div>
<el-table :data="form.newCouponList" border style="width: 600px">
<el-table-column label="券ID" prop="id"></el-table-column>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="数量" prop="num"></el-table-column>
<el-table-column label="操作">
<template v-slot="scope">
<el-button
type="text"
@click="addRewardHandle('newCouponList', 2, scope.row, scope.$index)"
>
编辑
</el-button>
<el-button type="text" @click="form.newCouponList.splice(scope.$index, 1)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-table :data="form.newCoupons" border style="width: 600px">
<el-table-column label="券ID" prop="couponId"></el-table-column>
<el-table-column label="名称" prop="couponName"></el-table-column>
<el-table-column label="数量" prop="couponNum"></el-table-column>
<el-table-column label="操作">
<template v-slot="scope">
<el-button
type="text"
@click="addRewardHandle('newCoupons', 2, scope.row, scope.$index)"
>
编辑
</el-button>
<el-button type="text" @click="form.newCoupons.splice(scope.$index, 1)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="奖励券" prop="invitedNum">
<el-input
@@ -80,30 +84,30 @@
<template #prepend>用户每邀请</template>
<template #append>可获得奖励券</template>
</el-input>
<el-button type="primary" @click="addRewardHandle('rewardCoupons')">添加券</el-button>
<el-button type="primary" @click="addRewardHandle('rewardCouponList')">添加券</el-button>
</el-form-item>
<el-form-item prop="rewardCoupons">
<el-form-item prop="rewardCouponList">
<div>
<div class="tips">奖励券不受优惠券发放数量影响</div>
<el-table :data="form.rewardCouponList" border style="width: 600px">
<el-table-column label="券ID" prop="id"></el-table-column>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="数量" prop="num"></el-table-column>
<el-table-column label="操作">
<template v-slot="scope">
<el-button
type="text"
@click="addRewardHandle('rewardCouponList', 2, scope.row, scope.$index)"
>
编辑
</el-button>
<el-button type="text" @click="form.rewardCouponList.splice(scope.$index, 1)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<el-table :data="form.rewardCoupons" border style="width: 600px">
<el-table-column label="券ID" prop="couponId"></el-table-column>
<el-table-column label="名称" prop="couponName"></el-table-column>
<el-table-column label="数量" prop="couponNum"></el-table-column>
<el-table-column label="操作">
<template v-slot="scope">
<el-button
type="text"
@click="addRewardHandle('rewardCoupons', 2, scope.row, scope.$index)"
>
编辑
</el-button>
<el-button type="text" @click="form.rewardCoupons.splice(scope.$index, 1)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="奖励获得方法">
<el-radio-group v-model="form.getMethod">
@@ -123,6 +127,7 @@
<script>
import shopShareApi from "@/api/account/shopShare";
import AddCoupon from "./addCoupon.vue";
import { ElMessage } from "element-plus";
export default {
components: { AddCoupon },
data() {
@@ -154,15 +159,15 @@ export default {
callback();
}
};
const newCouponsValidate = (rule, value, callback) => {
if (!this.form.newCoupons.length) {
const newCouponListValidate = (rule, value, callback) => {
if (!this.form.newCouponList.length) {
callback(new Error("请添加新用户获得券"));
} else {
callback();
}
};
const rewardCouponsValidate = (rule, value, callback) => {
if (!this.form.rewardCoupons.length) {
const rewardCouponListValidate = (rule, value, callback) => {
if (!this.form.rewardCouponList.length) {
callback(new Error("请添加奖励券"));
} else {
callback();
@@ -183,9 +188,9 @@ export default {
beInvitedImg: "",
startTime: "",
endTime: "",
newCoupons: [],
newCouponList: [],
invitedNum: "1",
rewardCoupons: [],
rewardCouponList: [],
getMethod: "get",
},
rules: {
@@ -224,10 +229,10 @@ export default {
trigger: "change",
},
],
newCoupons: [
newCouponList: [
{
required: true,
validator: newCouponsValidate,
validator: newCouponListValidate,
trigger: "change",
},
],
@@ -238,10 +243,10 @@ export default {
trigger: "blur",
},
],
rewardCoupons: [
rewardCouponList: [
{
required: true,
validator: rewardCouponsValidate,
validator: rewardCouponListValidate,
trigger: "change",
},
],
@@ -255,11 +260,13 @@ export default {
methods: {
// 添加完成优惠券
addCouponSuccess(e) {
console.log(this.form);
console.log(this.form.newCouponList);
console.log(this.couponKey);
if (this.tableType == 1) {
this.form[this.couponKey].push({ ...e });
} else {
// this.form[this.couponKey][this.tableEditorIndex] = { ...e }
this.$set(this.form[this.couponKey], this.tableEditorIndex, { ...e });
this.form[this.couponKey][this.tableEditorIndex] = { ...e };
}
},
// 添加奖励券
@@ -267,7 +274,7 @@ export default {
this.tableEditorIndex = index;
this.tableType = type;
this.couponKey = key;
if (key == "rewardCoupons" && !this.form.invitedNum) {
if (key == "rewardCouponList" && !this.form.invitedNum) {
this.$refs.form.validateField("invitedNum");
return;
}
@@ -294,7 +301,7 @@ export default {
this.form.shopId = localStorage.getItem("shopId");
await shopShareApi.update(this.form);
this.loading = false;
this.$notify({
ElMessage({
title: "成功",
message: `保存成功`,
type: "success",
@@ -312,6 +319,8 @@ export default {
const res = await shopShareApi.get();
if (res.id) {
this.form = res;
this.form.newCouponList = res.newCouponList || [];
this.form.rewardCouponList = res.rewardCouponList || [];
this.createdAt = [res.startTime, res.endTime];
this.urlList = [res.shareImg, res.invitedImg, res.beInvitedImg];
}