Skip to content

Commit

Permalink
Merge pull request #75 from GoldenZqqq/GoldenZqqq/Bug-Fix
Browse files Browse the repository at this point in the history
添加商品属性项重复选择校验
  • Loading branch information
YunaiV authored Aug 14, 2024
2 parents bcb4fc3 + 9475ded commit 879870e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 22 deletions.
15 changes: 6 additions & 9 deletions src/views/mall/product/spu/form/ProductAttributes.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
v-for="item2 in item.propertyOpts"
:key="item2.id"
:label="item2.name"
:value="item2.id"
:value="item2.name"
/>
</el-select>
<el-button
Expand All @@ -57,7 +57,6 @@
import * as PropertyApi from '@/api/mall/product/property'
import { PropertyAndValues } from '@/views/mall/product/spu/components'
import { propTypes } from '@/utils/propTypes'
import { isNumber } from '@/utils/is'

defineOptions({ name: 'ProductAttributes' })

Expand Down Expand Up @@ -123,13 +122,11 @@ const handleInputConfirm = async (index: number, propertyId: number) => {
if (inputValue.value) {
// 重复添加校验
// TODO @芋艿:需要测试下
if (isNumber(inputValue.value)) {
if (attributeList.value[index].values?.some((item) => item.id === inputValue.value)) {
message.warning('已存在相同属性值,请重试')
attributeIndex.value = null
inputValue.value = ''
return
}
if (attributeList.value[index].values.find((item) => item.name === inputValue.value)) {
message.warning('已存在相同属性值,请重试')
attributeIndex.value = null
inputValue.value = ''
return
}
// 保存属性值
try {
Expand Down
25 changes: 12 additions & 13 deletions src/views/mall/product/spu/form/ProductPropertyAddForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -85,19 +85,9 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const submitForm = async () => {
// 情况一:如果是已存在的属性,直接结束,不提交表单新增
for (const option of attributeOptions.value) {
if (option.name === formData.value.name) {
// 添加到属性列表
attributeList.value.push({
id: option.id,
...formData.value,
values: []
})
// 触发属性列表的加载
emit('success', option.id, option.id)
// 关闭弹窗
dialogVisible.value = false
return
for (const attrItem of attributeList.value) {
if (attrItem.name === formData.value.name) {
return message.error('该属性已存在,请勿重复添加')
}
}

Expand All @@ -117,6 +107,15 @@ const submitForm = async () => {
...formData.value,
values: []
})
// 判断最终提交的属性名称是否是用户下拉选择的 自己手动输入的属性名称就不执行emit获取该属性名下属性值列表
for (const element of attributeOptions.value) {
if (element.name === formData.value.name) {
emit('success', propertyId, element.id)
message.success(t('common.createSuccess'))
dialogVisible.value = false
return
}
}
// 关闭弹窗
message.success(t('common.createSuccess'))
dialogVisible.value = false
Expand Down

0 comments on commit 879870e

Please sign in to comment.