36
36
</div >
37
37
</div >
38
38
</el-form-item >
39
- <!-- TODO 疯狂:要不把 productSpuIds 改成 productScopeValues,更通用?另外,改完后,涉及到优惠劵的匹配逻辑,要补充分类相关的逻辑,例如说获得匹配的优惠劵列表之类的,包括使用卷的时候; -->
40
39
<el-form-item
41
40
label =" 分类"
42
41
v-if =" formData.productScope === PromotionProductScopeEnum.CATEGORY.scope"
153
152
<el-date-picker
154
153
v-model =" formData.validTimes"
155
154
style =" width : 240px "
156
- value-format =" YYYY-MM-DD HH:mm:ss "
155
+ value-format =" x "
157
156
type =" datetimerange"
158
157
:default-time =" [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]"
159
158
/>
@@ -228,8 +227,9 @@ const formData = ref({
228
227
fixedStartTerm: undefined ,
229
228
fixedEndTerm: undefined ,
230
229
productScope: PromotionProductScopeEnum .ALL .scope ,
231
- productSpuIds: [],
232
- productCategoryIds: []
230
+ productScopeValues: [], // 商品范围:值为 品类编号列表 或 商品编号列表 ,用于提交
231
+ productCategoryIds: [], // 仅用于表单,不提交
232
+ productSpuIds: [] // 仅用于表单,不提交
233
233
})
234
234
const formRules = reactive ({
235
235
name: [{ required: true , message: ' 优惠券名称不能为空' , trigger: ' blur' }],
@@ -246,8 +246,8 @@ const formRules = reactive({
246
246
fixedStartTerm: [{ required: true , message: ' 开始领取天数不能为空' , trigger: ' blur' }],
247
247
fixedEndTerm: [{ required: true , message: ' 开始领取天数不能为空' , trigger: ' blur' }],
248
248
productScope: [{ required: true , message: ' 商品范围不能为空' , trigger: ' blur' }],
249
- productSpuIds: [{ required: true , message: ' 商品范围不能为空 ' , trigger: ' blur' }],
250
- productCategoryIds: [{ required: true , message: ' 分类范围不能为空 ' , trigger: ' blur' }]
249
+ productSpuIds: [{ required: true , message: ' 商品不能为空 ' , trigger: ' blur' }],
250
+ productCategoryIds: [{ required: true , message: ' 分类不能为空 ' , trigger: ' blur' }]
251
251
})
252
252
const formRef = ref () // 表单 Ref
253
253
const productSpus = ref <ProductSpuApi .Spu []>([]) // 商品列表
@@ -313,12 +313,10 @@ const submitForm = async () => {
313
313
formData .value .validTimes && formData .value .validTimes .length === 2
314
314
? formData .value .validTimes [1 ]
315
315
: undefined
316
- } as CouponTemplateApi .CouponTemplateVO
316
+ } as unknown as CouponTemplateApi .CouponTemplateVO
317
317
318
- if (formData .value .productCategoryIds ?.length > 0 ) {
319
- // 改个名字?加个字段?
320
- data .productSpuIds = formData .value .productCategoryIds
321
- }
318
+ // 设置商品范围
319
+ setProductScopeValues (data )
322
320
323
321
if (formType .value === ' create' ) {
324
322
await CouponTemplateApi .createCouponTemplate (data )
@@ -355,6 +353,7 @@ const resetForm = () => {
355
353
fixedStartTerm: undefined ,
356
354
fixedEndTerm: undefined ,
357
355
productScope: PromotionProductScopeEnum .ALL .scope ,
356
+ productScopeValues: [],
358
357
productSpuIds: [],
359
358
productCategoryIds: []
360
359
}
@@ -366,13 +365,36 @@ const resetForm = () => {
366
365
const getProductScope = async () => {
367
366
switch (formData .value .productScope ) {
368
367
case PromotionProductScopeEnum .SPU .scope :
368
+ // 设置商品编号
369
+ formData .value .productSpuIds = formData .value .productScopeValues
369
370
// 获得商品列表
370
- productSpus .value = await ProductSpuApi .getSpuDetailList (formData .value .productSpuIds )
371
+ productSpus .value = await ProductSpuApi .getSpuDetailList (formData .value .productScopeValues )
372
+ break
373
+ case PromotionProductScopeEnum .CATEGORY .scope :
374
+ await nextTick (() => {
375
+ let productCategoryIds = formData .value .productScopeValues
376
+ if (Array .isArray (productCategoryIds ) && productCategoryIds .length > 0 ) {
377
+ // 单选时使用数组不能反显
378
+ productCategoryIds = productCategoryIds [0 ]
379
+ }
380
+ // 设置品类编号
381
+ formData .value .productCategoryIds = productCategoryIds
382
+ })
383
+ break
384
+ default :
385
+ break
386
+ }
387
+ }
388
+ /** 设置商品范围 */
389
+ function setProductScopeValues(data : CouponTemplateApi .CouponTemplateVO ) {
390
+ switch (formData .value .productScope ) {
391
+ case PromotionProductScopeEnum .SPU .scope :
392
+ data .productScopeValues = formData .value .productSpuIds
371
393
break
372
394
case PromotionProductScopeEnum .CATEGORY .scope :
373
- // TODO @疯狂:貌似分类不会选中。
374
- formData . value . productCategoryIds = formData .value .productSpuIds
375
- formData .value .productSpuIds = [ ]
395
+ data . productScopeValues = Array . isArray ( formData . value . productCategoryIds )
396
+ ? formData .value .productCategoryIds
397
+ : [ formData .value .productCategoryIds ]
376
398
break
377
399
default :
378
400
break
0 commit comments