This commit is contained in:
2025-10-31 16:50:25 +08:00
parent e62a2b3635
commit cb1cea512a

View File

@@ -154,12 +154,15 @@
<el-form-item label="商品链接/SKU" prop="materialUrl">
<el-input
v-model="createForm.materialUrl"
placeholder="请输入商品链接或SKU ID回车或点击查询按钮查询商品信息"
placeholder="请输入商品链接或SKU ID必须先点击查询按钮获取商品信息"
@keyup.enter.native="queryProductInfo"
>
<el-button slot="append" icon="el-icon-search" @click="queryProductInfo" :loading="queryLoading">查询</el-button>
</el-input>
<div style="color: #909399; font-size: 12px; margin-top: 5px;">支持京东商品链接或SKU ID输入后点击查询自动获取商品信息</div>
<div style="color: #E6A23C; font-size: 12px; margin-top: 5px;">
<i class="el-icon-warning"></i>
<strong>重要</strong>请先点击"查询"按钮获取商品信息特别是SKU ID然后再创建礼金直接使用短链可能创建失败
</div>
</el-form-item>
<el-form-item label="商品名称" prop="skuName">
<el-input v-model="createForm.skuName" placeholder="查询商品信息后自动填充" :disabled="true" />
@@ -548,38 +551,80 @@ export default {
}
// 根据提取结果设置skuId或materialUrl
// 参考JD项目idOrUrl = skuId != null && !skuId.trim().isEmpty() ? skuId : materialUrl
// 优先使用查询商品信息时获取的数据
if (this.createForm.queryResult) {
// 如果查询过商品信息优先使用查询结果中的materialUrl或spuid
// 如果查询过商品信息,优先使用查询结果中的spuidSKU IDmaterialUrl
const queryResult = this.createForm.queryResult
if (queryResult.materialUrl) {
// 优先使用jingfen链接
// 1. 优先使用spuid纯数字SKU ID- 这是最准确的
if (queryResult.spuid && /^\d+$/.test(String(queryResult.spuid))) {
params.skuId = String(queryResult.spuid)
console.log('使用查询到的spuidSKU ID', queryResult.spuid)
}
// 2. 如果没有spuid使用materialUrljingfen链接
else if (queryResult.materialUrl) {
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
}
// 3. 降级从用户输入的URL中提取SKU ID
else if (isUrl && skuId && /^\d+$/.test(skuId)) {
params.skuId = skuId
} else {
console.log('使用从URL提取的SKU ID', skuId)
}
// 4. 最后降级使用用户输入的原始URL但短链可能不行
else {
params.materialUrl = materialUrl
console.log('使用用户输入的原始URL可能是短链可能不工作', materialUrl)
}
} else {
// 没有查询过商品信息,使用用户输入的
if (isUrl && skuId && /^\d+$/.test(skuId)) {
// 如果从URL中提取到了纯数字SKU ID优先使用skuId
params.skuId = skuId
console.log('使用从URL提取的SKU ID', skuId)
} else if (isUrl) {
// 如果提取不到纯数字SKU ID使用原始URL作为materialUrl
// 注意短链u.jd.com可能无法用于创建礼金
params.materialUrl = materialUrl
console.log('使用用户输入的URL可能是短链可能不工作', materialUrl)
} else if (/^\d+$/.test(skuId)) {
// 纯数字作为SKU ID
params.skuId = skuId
console.log('使用纯数字SKU ID', skuId)
} else {
// 其他情况作为materialUrl
params.materialUrl = materialUrl
console.log('使用其他格式的URL', materialUrl)
}
}
// 确保必须有skuId或materialUrl之一
if (!params.skuId && !params.materialUrl) {
this.$modal.msgError('无法确定商品标识请先查询商品信息或输入有效的SKU ID')
this.createLoading = false
return
}
// 如果使用的是短链u.jd.com提示必须查询
if (params.materialUrl && params.materialUrl.includes('u.jd.com')) {
this.$modal.msgError('不能直接使用短链创建礼金!请先点击"查询"按钮获取商品信息SKU ID或jingfen链接然后再创建。')
this.createLoading = false
return
}
// 如果没有查询过且使用的是普通链接而不是SKU ID也提示
if (!this.createForm.queryResult && params.materialUrl && !params.skuId) {
const confirmMsg = '检测到您未查询商品信息。建议先点击"查询"按钮获取准确的商品信息SKU ID这样可以提高创建成功率。是否继续使用当前链接创建'
try {
await this.$confirm(confirmMsg, '提示', {
confirmButtonText: '继续创建',
cancelButtonText: '取消',
type: 'warning'
})
} catch {
this.createLoading = false
return
}
}