【代码优化】】商城: 满减送活动

This commit is contained in:
puhui999
2024-09-02 16:53:55 +08:00
parent a13e8b77c9
commit 9aa7706722
5 changed files with 37 additions and 83 deletions

View File

@ -1,6 +1,8 @@
<template>
<el-button class="ml-10px" type="text" @click="selectCoupon">添加优惠卷</el-button>
<el-col :span="24">
<el-tag type="warning"> 当没有选择优惠券时表示不赠送优惠券</el-tag>
</el-col>
<div
v-for="(item, index) in list"
:key="item.id"
@ -27,7 +29,11 @@
</div>
<!-- 优惠券选择 -->
<CouponSelect ref="couponSelectRef" @change="handleCouponChange" />
<CouponSelect
ref="couponSelectRef"
:take-type="CouponTemplateTakeTypeEnum.ADMIN.type"
@change="handleCouponChange"
/>
</template>
<script lang="ts" setup>
@ -35,10 +41,10 @@ import { CouponSelect } from '@/views/mall/promotion/coupon/components'
import * as CouponTemplateApi from '@/api/mall/promotion/coupon/couponTemplate'
import { RewardRule } from '@/api/mall/promotion/reward/rewardActivity'
import { DICT_TYPE } from '@/utils/dict'
import { CouponTemplateTakeTypeEnum } from '@/utils/constants'
import { discountFormat } from '@/views/mall/promotion/coupon/formatter'
import { isEmpty } from '@/utils/is'
import { useVModel } from '@vueuse/core'
import { findIndex } from '@/utils'
defineOptions({ name: 'RewardRuleCouponSelect' })
@ -81,19 +87,20 @@ const deleteCoupon = (index: number) => {
/** 初始化赠送的优惠券列表 */
const initGiveCouponList = async () => {
// 朝赵优惠劵
if (isEmpty(rewardRule.value) || isEmpty(rewardRule.value.couponIds)) {
// 校验优惠券存在
if (isEmpty(rewardRule.value) || isEmpty(rewardRule.value.giveCoupons)) {
return
}
const data = await CouponTemplateApi.getCouponTemplateList(rewardRule.value.couponIds!)
const tempLateIds = Object.keys(rewardRule.value.giveCoupons!).map((item) => parseInt(item))
const data = await CouponTemplateApi.getCouponTemplateList(tempLateIds)
if (!data) {
return
}
// 回显
data.forEach((coupon) => {
const index = findIndex(rewardRule.value.couponIds!, (couponId) => couponId === coupon.id)
list.value.push({
...coupon,
giveCount: rewardRule.value.couponCounts![index]
giveCount: rewardRule.value.giveCoupons![coupon.id]
})
})
}
@ -104,8 +111,13 @@ const setGiveCouponList = () => {
return
}
rewardRule.value.couponIds = list.value.map((rule) => rule.id)
rewardRule.value.couponCounts = list.value.map((rule) => rule.giveCount || 0)
// 设置优惠券和其数量的对应
list.value.forEach((rule) => {
if (!rewardRule.value.giveCoupons) {
rewardRule.value.giveCoupons = {}
}
rewardRule.value.giveCoupons[rule.id] = rule.giveCount!
})
}
defineExpose({ setGiveCouponList })