Skip to content

Commit 3c4a39d

Browse files
author
puhui999
committed
fix: 修复 OtherSettingsForm TODO 优化相关算法,解决上一版本遗留的bug
1 parent 9c06832 commit 3c4a39d

File tree

1 file changed

+52
-57
lines changed

1 file changed

+52
-57
lines changed
Lines changed: 52 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,34 @@
11
<template>
22
<el-form ref="OtherSettingsFormRef" :model="formData" :rules="rules" label-width="120px">
33
<el-row>
4-
<!-- TODO @puhui999:横着三个哈 -->
4+
<!-- TODO @puhui999:横着三个哈 fix-->
55
<el-col :span="24">
6-
<el-col :span="8">
7-
<el-form-item label="商品排序" prop="sort">
8-
<el-input-number v-model="formData.sort" :min="0" />
9-
</el-form-item>
10-
</el-col>
11-
<el-col :span="8">
12-
<el-form-item label="赠送积分" prop="giveIntegral">
13-
<el-input-number v-model="formData.giveIntegral" :min="0" />
14-
</el-form-item>
15-
</el-col>
16-
<el-col :span="8">
17-
<el-form-item label="虚拟销量" prop="virtualSalesCount">
18-
<el-input-number
19-
v-model="formData.virtualSalesCount"
20-
:min="0"
21-
placeholder="请输入虚拟销量"
22-
/>
23-
</el-form-item>
24-
</el-col>
6+
<el-row :gutter="20">
7+
<el-col :span="8">
8+
<el-form-item label="商品排序" prop="sort">
9+
<el-input-number v-model="formData.sort" :min="0" />
10+
</el-form-item>
11+
</el-col>
12+
<el-col :span="8">
13+
<el-form-item label="赠送积分" prop="giveIntegral">
14+
<el-input-number v-model="formData.giveIntegral" :min="0" />
15+
</el-form-item>
16+
</el-col>
17+
<el-col :span="8">
18+
<el-form-item label="虚拟销量" prop="virtualSalesCount">
19+
<el-input-number
20+
v-model="formData.virtualSalesCount"
21+
:min="0"
22+
placeholder="请输入虚拟销量"
23+
/>
24+
</el-form-item>
25+
</el-col>
26+
</el-row>
2527
</el-col>
2628
<el-col :span="24">
2729
<el-form-item label="商品推荐">
2830
<el-checkbox-group v-model="checkboxGroup" @change="onChangeGroup">
29-
<el-checkbox v-for="(item, index) in recommend" :key="index" :label="item.value">
31+
<el-checkbox v-for="(item, index) in recommendOptions" :key="index" :label="item.value">
3032
{{ item.name }}
3133
</el-checkbox>
3234
</el-checkbox-group>
@@ -51,7 +53,7 @@
5153
</el-form>
5254
</template>
5355
<script lang="ts" name="OtherSettingsForm" setup>
54-
import type { SpuType } from '@/api/mall/product/management/type/spuType'
56+
import type { SpuType } from '@/api/mall/product/spu'
5557
import { PropType } from 'vue'
5658
import { copyValueToTarget } from '@/utils'
5759
import { propTypes } from '@/utils/propTypes'
@@ -65,34 +67,7 @@ const props = defineProps({
6567
},
6668
activeName: propTypes.string.def('')
6769
})
68-
// 商品推荐选项 TODO @puhui999:这种叫 recommendOptions 会更合适哈
69-
const recommend = [
70-
{ name: '是否热卖', value: 'recommendHot' },
71-
{ name: '是否优惠', value: 'recommendBenefit' },
72-
{ name: '是否精品', value: 'recommendBest' },
73-
{ name: '是否新品', value: 'recommendNew' },
74-
{ name: '是否优品', value: 'recommendGood' }
75-
]
76-
const checkboxGroup = ref<string[]>(['recommendHot']) // 选中推荐选项
77-
/** 选择商品后赋值 */
78-
const onChangeGroup = () => {
79-
// TODO @puhui999:是不是可以遍历 recommend,然后进行是否选中;
80-
checkboxGroup.value.includes('recommendHot')
81-
? (formData.value.recommendHot = true)
82-
: (formData.value.recommendHot = false)
83-
checkboxGroup.value.includes('recommendBenefit')
84-
? (formData.value.recommendBenefit = true)
85-
: (formData.value.recommendBenefit = false)
86-
checkboxGroup.value.includes('recommendBest')
87-
? (formData.value.recommendBest = true)
88-
: (formData.value.recommendBest = false)
89-
checkboxGroup.value.includes('recommendNew')
90-
? (formData.value.recommendNew = true)
91-
: (formData.value.recommendNew = false)
92-
checkboxGroup.value.includes('recommendGood')
93-
? (formData.value.recommendGood = true)
94-
: (formData.value.recommendGood = false)
95-
}
70+
9671
const OtherSettingsFormRef = ref() // 表单Ref
9772
// 表单数据
9873
const formData = ref<SpuType>({
@@ -111,6 +86,23 @@ const rules = reactive({
11186
giveIntegral: [required],
11287
virtualSalesCount: [required]
11388
})
89+
// TODO @puhui999:这种叫 recommendOptions 会更合适哈 fix
90+
const recommendOptions = [
91+
{ name: '是否热卖', value: 'recommendHot' },
92+
{ name: '是否优惠', value: 'recommendBenefit' },
93+
{ name: '是否精品', value: 'recommendBest' },
94+
{ name: '是否新品', value: 'recommendNew' },
95+
{ name: '是否优品', value: 'recommendGood' }
96+
] // 商品推荐选项
97+
const checkboxGroup = ref<string[]>([]) // 选中的推荐选项
98+
99+
/** 选择商品后赋值 */
100+
const onChangeGroup = () => {
101+
// TODO @puhui999:是不是可以遍历 recommend,然后进行是否选中;fix
102+
recommendOptions.forEach(({ value }) => {
103+
formData.value[value] = checkboxGroup.value.includes(value) ? true : false
104+
})
105+
}
114106
115107
/**
116108
* 将传进来的值赋值给formData
@@ -120,13 +112,6 @@ watch(
120112
(data) => {
121113
if (!data) return
122114
copyValueToTarget(formData.value, data)
123-
// TODO 如果先修改其他设置的值,再改变商品详情或是商品信息会重置其他设置页面中的相关值 下一个版本修复
124-
checkboxGroup.value = []
125-
formData.value.recommendHot ? checkboxGroup.value.push('recommendHot') : ''
126-
formData.value.recommendBenefit ? checkboxGroup.value.push('recommendBenefit') : ''
127-
formData.value.recommendBest ? checkboxGroup.value.push('recommendBest') : ''
128-
formData.value.recommendNew ? checkboxGroup.value.push('recommendNew') : ''
129-
formData.value.recommendGood ? checkboxGroup.value.push('recommendGood') : ''
130115
},
131116
{
132117
deep: true,
@@ -154,4 +139,14 @@ const validate = async () => {
154139
})
155140
}
156141
defineExpose({ validate })
142+
onMounted(async () => {
143+
await nextTick()
144+
// TODO 如果先修改其他设置的值,再改变商品详情或是商品信息会重置其他设置页面中的相关值 fix:已修复,改为组件初始化时赋值
145+
checkboxGroup.value = []
146+
recommendOptions.forEach(({ value }) => {
147+
if (formData.value[value]) {
148+
checkboxGroup.value.push(value)
149+
}
150+
})
151+
})
157152
</script>

0 commit comments

Comments
 (0)