|
|
@ -762,20 +762,45 @@ Page({ |
|
|
|
|
|
|
|
|
// 打开编辑弹窗(实际执行打开操作的内部方法)
|
|
|
// 打开编辑弹窗(实际执行打开操作的内部方法)
|
|
|
openEditModal: function(goodsDetail) { |
|
|
openEditModal: function(goodsDetail) { |
|
|
|
|
|
const spec = goodsDetail.spec || ''; |
|
|
|
|
|
let specArray = []; |
|
|
|
|
|
let priceArray = []; |
|
|
|
|
|
|
|
|
|
|
|
// 分割规格字符串,支持多种逗号分隔符:英文逗号、中文逗号、全角逗号
|
|
|
|
|
|
if (spec) { |
|
|
|
|
|
specArray = spec.split(/[,,、]/).map(item => item.trim()).filter(item => item); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 处理价格字段
|
|
|
|
|
|
const price = goodsDetail.price || ''; |
|
|
|
|
|
if (price) { |
|
|
|
|
|
if (typeof price === 'string' && price.includes(',')) { |
|
|
|
|
|
// 如果价格是字符串且包含逗号,分割成数组
|
|
|
|
|
|
priceArray = price.split(',').map(item => item.trim()).filter(item => item); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 如果只有一个价格,为所有规格设置相同的价格
|
|
|
|
|
|
priceArray = Array(specArray.length).fill(String(price)); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 创建editSupply对象
|
|
|
|
|
|
const editSupply = { |
|
|
|
|
|
id: goodsDetail.id || goodsDetail.productId, |
|
|
|
|
|
imageUrls: goodsDetail.imageUrls || [], |
|
|
|
|
|
name: goodsDetail.name || '', |
|
|
|
|
|
spec: spec, |
|
|
|
|
|
specArray: specArray, // 新增:规格数组
|
|
|
|
|
|
priceArray: priceArray, // 新增:价格数组
|
|
|
|
|
|
minOrder: goodsDetail.minOrder || '', |
|
|
|
|
|
yolk: goodsDetail.yolk || '', |
|
|
|
|
|
region: goodsDetail.region || '', |
|
|
|
|
|
grossWeight: goodsDetail.grossWeight || '', |
|
|
|
|
|
product_contact: goodsDetail.product_contact || '', |
|
|
|
|
|
contact_phone: goodsDetail.contact_phone || '' |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
this.setData({ |
|
|
this.setData({ |
|
|
editSupply: { |
|
|
editSupply: editSupply, |
|
|
id: goodsDetail.id || goodsDetail.productId, |
|
|
|
|
|
imageUrls: goodsDetail.imageUrls || [], |
|
|
|
|
|
name: goodsDetail.name || '', |
|
|
|
|
|
price: goodsDetail.price || '', |
|
|
|
|
|
minOrder: goodsDetail.minOrder || '', |
|
|
|
|
|
yolk: goodsDetail.yolk || '', |
|
|
|
|
|
spec: goodsDetail.spec || '', |
|
|
|
|
|
region: goodsDetail.region || '', |
|
|
|
|
|
grossWeight: goodsDetail.grossWeight || '', |
|
|
|
|
|
product_contact: goodsDetail.product_contact || '', |
|
|
|
|
|
contact_phone: goodsDetail.contact_phone || '' |
|
|
|
|
|
}, |
|
|
|
|
|
showEditModal: true |
|
|
showEditModal: true |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
@ -792,8 +817,51 @@ Page({ |
|
|
console.log('保存编辑'); |
|
|
console.log('保存编辑'); |
|
|
const editSupply = this.data.editSupply; |
|
|
const editSupply = this.data.editSupply; |
|
|
|
|
|
|
|
|
// 验证必填字段
|
|
|
// 处理价格字段,将价格数组合并成字符串
|
|
|
if (!editSupply.price) { |
|
|
let priceStr = ''; |
|
|
|
|
|
if (editSupply.priceArray && editSupply.priceArray.length > 0) { |
|
|
|
|
|
// 移除空值
|
|
|
|
|
|
const validPrices = editSupply.priceArray.filter(price => price && price.trim() !== ''); |
|
|
|
|
|
|
|
|
|
|
|
// 验证必填字段
|
|
|
|
|
|
if (validPrices.length === 0) { |
|
|
|
|
|
wx.showToast({ |
|
|
|
|
|
title: '请填写销售价格', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
duration: 2000 |
|
|
|
|
|
}); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 验证价格是否为有效数字
|
|
|
|
|
|
for (const price of validPrices) { |
|
|
|
|
|
const priceNum = parseFloat(price); |
|
|
|
|
|
if (isNaN(priceNum) || priceNum < 0) { |
|
|
|
|
|
wx.showToast({ |
|
|
|
|
|
title: '请填写有效的价格', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
duration: 2000 |
|
|
|
|
|
}); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 合并价格数组为字符串
|
|
|
|
|
|
priceStr = validPrices.join(','); |
|
|
|
|
|
} else if (editSupply.price) { |
|
|
|
|
|
// 兼容旧的单个价格字段
|
|
|
|
|
|
const priceNum = parseFloat(editSupply.price); |
|
|
|
|
|
if (isNaN(priceNum) || priceNum < 0) { |
|
|
|
|
|
wx.showToast({ |
|
|
|
|
|
title: '请填写有效的价格', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
duration: 2000 |
|
|
|
|
|
}); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
priceStr = editSupply.price; |
|
|
|
|
|
} else { |
|
|
|
|
|
// 没有价格
|
|
|
wx.showToast({ |
|
|
wx.showToast({ |
|
|
title: '请填写销售价格', |
|
|
title: '请填写销售价格', |
|
|
icon: 'none', |
|
|
icon: 'none', |
|
|
@ -802,17 +870,6 @@ Page({ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 验证价格是否为有效数字
|
|
|
|
|
|
const priceNum = parseFloat(editSupply.price); |
|
|
|
|
|
if (isNaN(priceNum) || priceNum < 0) { |
|
|
|
|
|
wx.showToast({ |
|
|
|
|
|
title: '请填写有效的价格', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
duration: 2000 |
|
|
|
|
|
}); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 验证联系人
|
|
|
// 验证联系人
|
|
|
if (!editSupply.product_contact || editSupply.product_contact === '联系人信息暂不可用') { |
|
|
if (!editSupply.product_contact || editSupply.product_contact === '联系人信息暂不可用') { |
|
|
wx.showToast({ |
|
|
wx.showToast({ |
|
|
@ -850,7 +907,7 @@ Page({ |
|
|
// 使用新的快速更新接口,只更新价格、联系人和电话
|
|
|
// 使用新的快速更新接口,只更新价格、联系人和电话
|
|
|
const updateData = { |
|
|
const updateData = { |
|
|
productId: productId, |
|
|
productId: productId, |
|
|
price: editSupply.price, |
|
|
price: priceStr, |
|
|
product_contact: editSupply.product_contact || '', |
|
|
product_contact: editSupply.product_contact || '', |
|
|
contact_phone: editSupply.contact_phone || '', |
|
|
contact_phone: editSupply.contact_phone || '', |
|
|
}; |
|
|
}; |
|
|
@ -1104,6 +1161,17 @@ Page({ |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 价格输入处理(用于动态生成的价格输入框)
|
|
|
|
|
|
onEditPriceInput: function(e) { |
|
|
|
|
|
const index = e.currentTarget.dataset.index; |
|
|
|
|
|
const value = e.detail.value; |
|
|
|
|
|
|
|
|
|
|
|
// 更新价格数组中的对应元素
|
|
|
|
|
|
this.setData({ |
|
|
|
|
|
[`editSupply.priceArray[${index}]`]: value |
|
|
|
|
|
}); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
// 打开规格选择弹窗(编辑模式)
|
|
|
// 打开规格选择弹窗(编辑模式)
|
|
|
onEditSpecChange: function() { |
|
|
onEditSpecChange: function() { |
|
|
console.log('打开规格选择弹窗(编辑模式)'); |
|
|
console.log('打开规格选择弹窗(编辑模式)'); |
|
|
|