19
19
:rule-config =" ruleConfig"
20
20
:spu-list =" spuList"
21
21
:spu-property-list-p =" spuPropertyList"
22
+ :isDelete =" true"
23
+ @delete =" deleteSpu"
22
24
>
23
25
<el-table-column align =" center" label =" 优惠金额" min-width =" 168" >
24
26
<template #default =" { row: sku } " >
@@ -47,6 +49,7 @@ import { cloneDeep } from 'lodash-es'
47
49
import * as DiscountActivityApi from ' @/api/mall/promotion/discount/discountActivity'
48
50
import * as ProductSpuApi from ' @/api/mall/product/spu'
49
51
import { getPropertyList , RuleConfig } from ' @/views/mall/product/spu/components'
52
+ import {formatToFraction } from " @/utils" ;
50
53
51
54
defineOptions ({ name: ' PromotionDiscountActivityForm' })
52
55
@@ -65,8 +68,8 @@ const spuAndSkuListRef = ref() // sku 限时折扣 配置组件Ref
65
68
const ruleConfig: RuleConfig [] = []
66
69
const spuList = ref <DiscountActivityApi .SpuExtension []>([]) // 选择的 spu
67
70
const spuPropertyList = ref <SpuProperty <DiscountActivityApi .SpuExtension >[]>([])
71
+ const spuIds = ref <number []>([]);
68
72
const selectSpu = (spuId : number , skuIds : number []) => {
69
- formRef .value .setValues ({ spuId })
70
73
getSpuDetails (spuId , skuIds )
71
74
}
72
75
/**
@@ -75,14 +78,22 @@ const selectSpu = (spuId: number, skuIds: number[]) => {
75
78
const getSpuDetails = async (
76
79
spuId : number ,
77
80
skuIds : number [] | undefined ,
78
- products ? : DiscountActivityApi .DiscountProductVO []
81
+ products ? : DiscountActivityApi .DiscountProductVO [],
82
+ type ? : string
79
83
) => {
80
- const spuProperties: SpuProperty <DiscountActivityApi .SpuExtension >[] = []
84
+ // 如果已经包含spu则跳过
85
+ if (spuIds .value .includes (spuId )){
86
+ if (type !== " load" ){
87
+ message .error (" 数据重复选择!" )
88
+ }
89
+ return ;
90
+ }
91
+ spuIds .value .push (spuId )
81
92
const res = (await ProductSpuApi .getSpuDetailList ([spuId ])) as DiscountActivityApi .SpuExtension []
82
93
if (res .length == 0 ) {
83
94
return
84
95
}
85
- spuList .value = []
96
+ // spuList.value = []
86
97
// 因为只能选择一个
87
98
const spu = res [0 ]
88
99
const selectSkus =
@@ -100,15 +111,19 @@ const getSpuDetails = async (
100
111
config = product || config
101
112
}
102
113
sku .productConfig = config
114
+ sku .price = formatToFraction (sku .price )
115
+ sku .marketPrice = formatToFraction (sku .marketPrice )
116
+ sku .costPrice = formatToFraction (sku .costPrice )
117
+ sku .firstBrokeragePrice = formatToFraction (sku .firstBrokeragePrice )
118
+ sku .secondBrokeragePrice = formatToFraction (sku .secondBrokeragePrice )
103
119
})
104
120
spu .skus = selectSkus as DiscountActivityApi .SkuExtension []
105
- spuProperties .push ({
121
+ spuPropertyList . value .push ({
106
122
spuId: spu .id ! ,
107
123
spuDetail: spu ,
108
124
propertyList: getPropertyList (spu )
109
125
})
110
126
spuList .value .push (spu )
111
- spuPropertyList .value = spuProperties
112
127
}
113
128
114
129
// ================= end =================
@@ -126,8 +141,10 @@ const open = async (type: string, id?: number) => {
126
141
const data = (await DiscountActivityApi .getDiscountActivity (
127
142
id
128
143
)) as DiscountActivityApi .DiscountActivityVO
129
- const supId = data .products [0 ].spuId
130
- await getSpuDetails (supId ! , data .products ?.map ((sku ) => sku .skuId ), data .products )
144
+ for (let productsKey in data .products ) {
145
+ const supId = data .products [productsKey ].spuId
146
+ await getSpuDetails (supId ! , data .products ?.map ((sku ) => sku .skuId ), data .products ," load" )
147
+ }
131
148
formRef .value .setValues (data )
132
149
} finally {
133
150
formLoading .value = false
@@ -149,9 +166,20 @@ const submitForm = async () => {
149
166
const data = formRef .value .formModel as DiscountActivityApi .DiscountActivityVO
150
167
// 获取 折扣商品配置
151
168
const products = cloneDeep (spuAndSkuListRef .value .getSkuConfigs (' productConfig' ))
169
+ let timp = false ;
152
170
products .forEach ((item : DiscountActivityApi .DiscountProductVO ) => {
153
- item .discountType = data [' discountType' ]
171
+ if (item .discountPrice != null && item .discountPrice > 0 ){
172
+ item .discountType = 1
173
+ }else if (item .discountPercent != null && item .discountPercent > 0 ){
174
+ item .discountType = 2
175
+ }else {
176
+ timp = true
177
+ }
154
178
})
179
+ if (timp ){
180
+ message .error (" 优惠金额和折扣百分比需要填写一个" );
181
+ return ;
182
+ }
155
183
data .products = products
156
184
// 真正提交
157
185
if (formType .value === ' create' ) {
@@ -173,7 +201,16 @@ const submitForm = async () => {
173
201
const resetForm = async () => {
174
202
spuList .value = []
175
203
spuPropertyList .value = []
204
+ spuIds .value = []
176
205
await nextTick ()
177
206
formRef .value .getElFormRef ().resetFields ()
178
207
}
208
+
209
+ /**
210
+ * 删除spu
211
+ */
212
+ const deleteSpu = (spuId : number ) => {
213
+ spuIds .value .splice (spuIds .value .findIndex ((item ) => item == spuId ), 1 )
214
+ spuPropertyList .value .splice (spuPropertyList .value .findIndex ((item ) => item .spuId == spuId ), 1 )
215
+ }
179
216
</script >
0 commit comments