提交 1927fdf2 authored 作者: 刘旭's avatar 刘旭

修复添加规格属性顺序错误问题

上级 1b4a0bcb
......@@ -178,7 +178,6 @@ let partsChange = (type: string, data: any, index: any) => {
// 每组只可以取一个
let radioChange = (e: any, item: any) => {
// console.log(e, item);
item.values.forEach((res: any) => {
if (specList.value.indexOf(res.value) != -1) {
let s = specList.value.indexOf(res.value)
......@@ -190,9 +189,72 @@ let radioChange = (e: any, item: any) => {
if (specList.value.indexOf(e) == -1) specList.value.push(e)
}
// 把配件数据整合,让数据选择规格时顺序从上到下
let handleSpecData = () => {
let data = [] as any // specification, value
// 深拷贝,避免影响原数组
let newarr = JSON.parse((JSON.stringify(props.specData)))
newarr.map((item: any) => {
let flag = true
// 如果已经存储了相同的specification,则下面就不在循环
data.map((res: any) => {
if (item.specification === res.specification) flag = false
})
newarr.map((item1: any) => {
if (flag) {
if (item.specification === item1.specification) {
let flag1 = true
// 如果已经存储了相同的specification,就只添加value
data.map((res: any) => {
if (item.specification === res.specification) flag1 = false
})
if (flag1) {
data.push({
specification: item.specification,
value: [item1.value]
})
} else {
data.forEach((res: any) => {
if (item1.specification === res.specification) {
res.value.push(item1.value)
}
})
}
}
}
})
})
return data
}
// 判断规格属性的顺序是否正确,错误需要排序
let handleSequence = (data: any) => {
let specListCopy = [...specList.value] // 浅拷贝
// 双重循环判断对应索引值是否对应
specList.value.map((arrVal: any, arr: number) => {
data.map((item: any, i: number) => {
if (arr === i) {
let index = item.value.indexOf(arrVal)
// 如果对应索引中没有对应关系,则取当前索引在拷贝数组找到对应值,直接赋值
if (index === -1) {
data[arr].value.map((element: any) => {
let index1 = specListCopy.indexOf(element)
if (index1 !== -1) {
specList.value[arr] = specListCopy[index1]
}
})
}
}
})
})
}
// 打开添加规格属性框
let showAddSpec = () => {
if (specList.value.length === 0) return ElMessage({ type: 'warning', message: '请先选择规格属性' })
let resultSpecData = handleSpecData()
if (specList.value.length !== resultSpecData.length) return ElMessage({ type: 'warning', message: '请选择所有规格属性' })
handleSequence(resultSpecData)
specificationsRef.value.formData = {
bomCode: '',
model: '',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论