This commit is contained in:
2025-10-31 16:07:55 +08:00
parent 5a32bdf544
commit 83ffdc1f2d

View File

@@ -409,12 +409,16 @@ export default {
try {
// 调用转链接口查询商品信息
const res = await generatePromotionContent({ promotionContent: materialUrl })
console.log('查询商品信息返回:', res)
if (res && res.code === 200) {
let productInfo = null
// 解析返回结果参考xbmessage中的处理
try {
const resultStr = res.data
// 优先使用data如果没有则使用msg根据实际返回格式
let resultStr = res.data || res.msg
// 如果是字符串,需要解析
let parsed = null
if (typeof resultStr === 'string') {
parsed = JSON.parse(resultStr)
@@ -422,34 +426,50 @@ export default {
parsed = resultStr
}
// 提取第一个商品信息
console.log('解析后的数据:', parsed)
// 提取第一个商品信息(支持多种返回格式)
if (Array.isArray(parsed) && parsed.length > 0) {
// 格式1直接是数组
productInfo = parsed[0]
} else if (parsed.list && Array.isArray(parsed.list) && parsed.list.length > 0) {
productInfo = parsed.list[0]
} else if (parsed.data && Array.isArray(parsed.data) && parsed.data.length > 0) {
productInfo = parsed.data[0]
} else if (parsed.materialUrl || parsed.owner) {
productInfo = parsed
} else if (parsed && typeof parsed === 'object') {
// 格式2对象中包含list数组
if (parsed.list && Array.isArray(parsed.list) && parsed.list.length > 0) {
productInfo = parsed.list[0]
}
// 格式3对象中包含data数组
else if (parsed.data && Array.isArray(parsed.data) && parsed.data.length > 0) {
productInfo = parsed.data[0]
}
// 格式4对象本身包含商品信息
else if (parsed.materialUrl || parsed.owner || parsed.skuName) {
productInfo = parsed
}
}
console.log('提取的商品信息:', productInfo)
if (productInfo) {
// 自动填充商品信息
this.createForm.skuName = productInfo.skuName || productInfo.title || productInfo.productName || ''
this.createForm.owner = productInfo.owner || (productInfo.popId ? 'pop' : 'g') || 'g'
this.createForm.skuName = productInfo.skuName || productInfo.title || productInfo.productName || productInfo.cleanSkuName || ''
// owner字段'p'表示POP'g'表示自营,其他默认'g'
const ownerValue = productInfo.owner || (productInfo.popId ? 'pop' : 'g') || 'g'
this.createForm.owner = ownerValue === 'p' ? 'pop' : (ownerValue === 'pop' ? 'pop' : 'g')
// 如果有materialUrl更新它可能是提取后的SKU ID
if (productInfo.materialUrl || productInfo.url) {
// 不覆盖用户输入的,但如果用户输入的是完整链接,可以使用查询到的
// 如果有materialUrl可以用于后续创建礼金
if (productInfo.materialUrl && !this.createForm.materialUrl.includes('jingfen.jd.com')) {
// 如果用户输入的是普通链接,可以使用查询到的materialUrljingfen链接
// 但为了不丢失用户输入,这里先不更新
}
this.$modal.msgSuccess('商品信息查询成功')
this.$modal.msgSuccess('商品信息查询成功' + (this.createForm.owner === 'g' ? '自营' : 'POP'))
} else {
console.warn('未找到商品信息,完整返回:', parsed)
this.$modal.msgWarning('未找到商品信息,请检查链接是否正确')
}
} catch (e) {
console.error('解析商品信息失败', e)
this.$modal.msgWarning('返回数据格式异常,请手动填写商品信息')
console.error('解析商品信息失败', e, '原始数据:', res)
this.$modal.msgWarning('返回数据格式异常' + e.message + ',请手动填写商品信息')
}
} else {
this.$modal.msgError('查询商品信息失败:' + (res.msg || '未知错误'))