This commit is contained in:
2025-10-31 16:45:34 +08:00
parent 83ffdc1f2d
commit 94cb24041a

View File

@@ -299,7 +299,8 @@ export default {
skuName: '',
owner: 'g',
amount: 5, // 默认5元
quantity: 10 // 默认10
quantity: 10, // 默认10
queryResult: null // 保存查询到的商品信息包含materialUrl等
},
queryLoading: false, // 查询商品信息加载状态
createRules: {
@@ -393,7 +394,8 @@ export default {
skuName: '',
owner: 'g',
amount: 5, // 默认5元
quantity: 10 // 默认10
quantity: 10, // 默认10
queryResult: null // 查询结果
}
this.createDialogVisible = true
},
@@ -450,16 +452,24 @@ export default {
console.log('提取的商品信息:', productInfo)
if (productInfo) {
// 保存完整的查询结果
this.createForm.queryResult = productInfo
// 自动填充商品信息
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可以用于后续创建礼金
if (productInfo.materialUrl && !this.createForm.materialUrl.includes('jingfen.jd.com')) {
// 如果用户输入的是普通链接可以使用查询到的materialUrljingfen链接
// 但为了不丢失用户输入,这里先不更新
// 保存查询到的materialUrl或spuid,用于后续创建礼金
// 优先使用jingfen链接的materialUrl如果没有则使用spuid
if (productInfo.materialUrl) {
// 保存materialUrl到查询结果中创建礼金时使用
console.log('查询到的materialUrl', productInfo.materialUrl)
}
if (productInfo.spuid) {
// 保存spuidSKU ID可以用于创建礼金
console.log('查询到的spuid', productInfo.spuid)
}
this.$modal.msgSuccess('商品信息查询成功:' + (this.createForm.owner === 'g' ? '自营' : 'POP'))
@@ -538,15 +548,39 @@ export default {
}
// 根据提取结果设置skuId或materialUrl
if (isUrl && skuId) {
// 如果从URL中提取到了SKU ID优先使用skuId
params.skuId = skuId
} else if (isUrl) {
// 如果提取不到SKU ID使用原始URL
params.materialUrl = materialUrl
// 优先使用查询商品信息时获取的数据
if (this.createForm.queryResult) {
// 如果查询过商品信息优先使用查询结果中的materialUrl或spuid
const queryResult = this.createForm.queryResult
if (queryResult.materialUrl) {
// 优先使用jingfen链接
params.materialUrl = queryResult.materialUrl
console.log('使用查询到的materialUrl', queryResult.materialUrl)
} else if (queryResult.spuid && /^\d+$/.test(queryResult.spuid)) {
// 如果没有materialUrl使用spuidSKU ID
params.skuId = queryResult.spuid
console.log('使用查询到的spuid', queryResult.spuid)
} else if (isUrl && skuId && /^\d+$/.test(skuId)) {
// 从用户输入的URL中提取SKU ID
params.skuId = skuId
} else {
params.materialUrl = materialUrl
}
} else {
// 纯数字作为SKU ID
params.skuId = skuId
// 没有查询过商品信息,使用用户输入的
if (isUrl && skuId && /^\d+$/.test(skuId)) {
// 如果从URL中提取到了纯数字SKU ID优先使用skuId
params.skuId = skuId
} else if (isUrl) {
// 如果提取不到纯数字SKU ID使用原始URL作为materialUrl
params.materialUrl = materialUrl
} else if (/^\d+$/.test(skuId)) {
// 纯数字作为SKU ID
params.skuId = skuId
} else {
// 其他情况作为materialUrl
params.materialUrl = materialUrl
}
}
// 调用创建礼金接口
@@ -566,14 +600,42 @@ export default {
if (isSuccess) {
// 解析返回的giftCouponKey参考xbmessage中的处理方式
let giftKey = null
// 先打印data的详细信息
console.log('返回的data类型', typeof res.data, 'data内容', res.data)
if (typeof res.data === 'string') {
giftKey = res.data
} else if (res.data) {
// 尝试多种可能的字段名
giftKey = res.data.giftCouponKey || res.data.giftKey || (res.data.data && (res.data.data.giftCouponKey || res.data.data.giftKey))
// 如果是字符串,尝试解析
try {
const parsed = JSON.parse(res.data)
console.log('data字符串解析后', parsed)
giftKey = parsed.giftCouponKey || parsed.giftKey
} catch (e) {
// 如果解析失败,可能就是字符串本身
giftKey = res.data
}
} else if (res.data && typeof res.data === 'object') {
// 尝试多种可能的字段名(优先顺序很重要)
// 1. 直接获取 giftCouponKey
if (res.data.giftCouponKey) {
giftKey = res.data.giftCouponKey
}
// 2. 获取 giftKey
else if (res.data.giftKey) {
giftKey = res.data.giftKey
}
// 3. 如果data里面还有data对象嵌套情况
else if (res.data.data && typeof res.data.data === 'object') {
giftKey = res.data.data.giftCouponKey || res.data.data.giftKey
}
// 4. 如果data是数组取第一个
else if (Array.isArray(res.data) && res.data.length > 0) {
const first = res.data[0]
giftKey = first.giftCouponKey || first.giftKey
}
}
console.log('解析到的礼金Key', giftKey)
console.log('解析到的礼金Key', giftKey, '完整data结构', JSON.stringify(res.data, null, 2))
if (giftKey) {
// 可选自动生成短链参考JD项目的完整流程
@@ -619,7 +681,9 @@ export default {
} else {
// 没有礼金Key但接口返回成功可能是其他格式
console.warn('未找到礼金Key完整返回', res)
this.$modal.msgWarning('礼金创建完成但未返回礼金Key。返回数据' + JSON.stringify(res.data).substring(0, 100))
console.warn('data的完整内容', JSON.stringify(res.data, null, 2))
// 即使没有Key也提示成功因为接口返回了code:200
this.$modal.msgWarning('礼金创建完成但未在返回数据中找到礼金Key。请查看控制台日志或联系技术支持。')
}
// 关闭对话框并刷新