From 83ffdc1f2d644b8c4b7ab640e3bf3363d6ecdbcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92?= Date: Fri, 31 Oct 2025 16:07:55 +0800 Subject: [PATCH] 1 --- src/views/system/giftcoupon/index.vue | 52 ++++++++++++++++++--------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/views/system/giftcoupon/index.vue b/src/views/system/giftcoupon/index.vue index ada5420..cb5c4d3 100644 --- a/src/views/system/giftcoupon/index.vue +++ b/src/views/system/giftcoupon/index.vue @@ -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')) { + // 如果用户输入的是普通链接,可以使用查询到的materialUrl(jingfen链接) + // 但为了不丢失用户输入,这里先不更新 } - 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 || '未知错误'))