web,app,后端更改二维码唯一

This commit is contained in:
2025-11-05 22:18:09 +08:00
parent 5749c5becf
commit 90e7933622
3 changed files with 86 additions and 142 deletions

View File

@@ -248,57 +248,38 @@
throw new Error('未找到二维码记录'); throw new Error('未找到二维码记录');
} }
// 2. 解析content获取enter_coil_no、current_coil_no和coil_id // 2. 解析content获取current_coil_id
const qrcodeRecord = qrcodeRes.data; const qrcodeRecord = qrcodeRes.data;
const content = JSON.parse(qrcodeRecord.content); const content = JSON.parse(qrcodeRecord.content);
const enterCoilNo = content.enter_coil_no;
const currentCoilNo = content.current_coil_no;
const coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
if (!enterCoilNo) { // 优先使用current_coil_id当前有效的钢卷ID如果没有则使用coil_id兼容旧数据
throw new Error('二维码中未包含有效的入场钢卷号'); let coilId = content.current_coil_id && content.current_coil_id !== 'null' ? content.current_coil_id : null;
if (!coilId) {
coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
} }
// 3. 通过追溯接口获取钢卷信息 // 检查二维码状态
const traceRes = await getMaterialCoilTrace(enterCoilNo, currentCoilNo); if (qrcodeRecord.status === 0) {
if (traceRes.code !== 200 || !traceRes.data || !traceRes.data.records || traceRes.data.records
.length === 0) {
throw new Error('未找到钢卷信息');
}
// 4. 根据二维码内容匹配对应的钢卷数据
let coilData = null;
const records = traceRes.data.records;
// 优先使用coil_id精确匹配
if (coilId) {
coilData = records.find(record => String(record.coilId) === String(coilId));
}
// 如果没找到使用currentCoilNo匹配
if (!coilData && currentCoilNo) {
coilData = records.find(record => record.currentCoilNo === currentCoilNo);
}
// 如果还是没找到,取第一条记录
if (!coilData && records.length > 0) {
coilData = records[0];
}
if (!coilData) {
throw new Error('未找到对应的钢卷数据');
}
// 5. 检查是否为历史数据
if (coilData.dataType === 0) {
uni.showModal({ uni.showModal({
title: '历史数据', title: '提示',
content: '此为历史记录,不允许进行分卷操作', content: '该二维码已失效,无法进行分卷操作',
showCancel: false showCancel: false
}); });
return; return;
} }
if (!coilId) {
throw new Error('二维码中未包含有效的钢卷ID');
}
// 3. 直接通过钢卷ID获取钢卷详情
const coilRes = await getMaterialCoil(coilId);
if (coilRes.code !== 200 || !coilRes.data) {
throw new Error('未找到钢卷信息');
}
const coilData = coilRes.data;
this.coilDetail = coilData; this.coilDetail = coilData;
this.form.coilId = coilData.coilId; this.form.coilId = coilData.coilId;

View File

@@ -188,56 +188,38 @@ export default {
throw new Error('未找到二维码记录'); throw new Error('未找到二维码记录');
} }
// 2. 解析content获取enter_coil_no、current_coil_no和coil_id // 2. 解析content获取current_coil_id
const qrcodeRecord = qrcodeRes.data; const qrcodeRecord = qrcodeRes.data;
const content = JSON.parse(qrcodeRecord.content); const content = JSON.parse(qrcodeRecord.content);
const enterCoilNo = content.enter_coil_no;
const currentCoilNo = content.current_coil_no;
const coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
if (!enterCoilNo) { // 优先使用current_coil_id当前有效的钢卷ID如果没有则使用coil_id兼容旧数据
throw new Error('二维码中未包含有效的入场钢卷号'); let coilId = content.current_coil_id && content.current_coil_id !== 'null' ? content.current_coil_id : null;
if (!coilId) {
coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
} }
// 3. 通过追溯接口获取钢卷信息 // 检查二维码状态
const traceRes = await getMaterialCoilTrace(enterCoilNo, currentCoilNo); if (qrcodeRecord.status === 0) {
if (traceRes.code !== 200 || !traceRes.data || !traceRes.data.records || traceRes.data.records.length === 0) {
throw new Error('未找到钢卷信息');
}
// 4. 根据二维码内容匹配对应的钢卷数据
let coilData = null;
const records = traceRes.data.records;
// 优先使用coil_id精确匹配
if (coilId) {
coilData = records.find(record => String(record.coilId) === String(coilId));
}
// 如果没找到使用currentCoilNo匹配
if (!coilData && currentCoilNo) {
coilData = records.find(record => record.currentCoilNo === currentCoilNo);
}
// 如果还是没找到,取第一条记录
if (!coilData && records.length > 0) {
coilData = records[0];
}
if (!coilData) {
throw new Error('未找到对应的钢卷数据');
}
// 5. 检查是否为历史数据
if (coilData.dataType === 0) {
uni.showModal({ uni.showModal({
title: '历史数据', title: '提示',
content: '此为历史记录,不允许进行合卷操作', content: '该二维码已失效,无法进行合卷操作',
showCancel: false showCancel: false
}); });
return; return;
} }
if (!coilId) {
throw new Error('二维码中未包含有效的钢卷ID');
}
// 3. 直接通过钢卷ID获取钢卷详情
const coilRes = await getMaterialCoil(coilId);
if (coilRes.code !== 200 || !coilRes.data) {
throw new Error('未找到钢卷信息');
}
const coilData = coilRes.data;
// 6. 检查是否已扫描过 // 6. 检查是否已扫描过
const exists = this.scannedCoils.some(coil => coil.coilId === coilData.coilId); const exists = this.scannedCoils.some(coil => coil.coilId === coilData.coilId);
if (exists) { if (exists) {

View File

@@ -223,58 +223,39 @@
throw new Error('未找到二维码记录'); throw new Error('未找到二维码记录');
} }
// 2. 解析二维码的content获取enter_coil_no、current_coil_no和coil_id // 2. 解析二维码的content获取current_coil_id
const qrcodeRecord = qrcodeRes.data; const qrcodeRecord = qrcodeRes.data;
const content = JSON.parse(qrcodeRecord.content); const content = JSON.parse(qrcodeRecord.content);
const enterCoilNo = content.enter_coil_no;
const currentCoilNo = content.current_coil_no;
const coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
// 保存二维码状态0=历史码1=当前有效码 // 优先使用current_coil_id当前有效的钢卷ID如果没有则使用coil_id兼容旧数据
this.qrcodeStatus = qrcodeRecord.status || 1; let coilId = content.current_coil_id && content.current_coil_id !== 'null' ? content.current_coil_id : null;
if (!coilId) {
if (!enterCoilNo) { coilId = content.coil_id && content.coil_id !== 'null' ? content.coil_id : null;
throw new Error('二维码中未包含有效的入场钢卷号');
} }
// 3. 如果是历史码,提示用户 // 保存二维码状态0=失效1=有效)
this.qrcodeStatus = qrcodeRecord.status || 1;
// 3. 如果是失效码,提示用户
if (this.qrcodeStatus === 0) { if (this.qrcodeStatus === 0) {
uni.showToast({ uni.showToast({
title: '历史二维码,仅供查看', title: '二维码已失效',
icon: 'none', icon: 'none',
duration: 2000 duration: 2000
}); });
} }
// 4. 通过入场钢卷号查询钢卷追溯信息 if (!coilId) {
const traceRes = await getMaterialCoilTrace(enterCoilNo, currentCoilNo); throw new Error('二维码中未包含有效的钢卷ID');
if (traceRes.code !== 200 || !traceRes.data || !traceRes.data.records || traceRes.data.records }
.length === 0) {
// 4. 直接通过钢卷ID获取钢卷详情
const coilRes = await getMaterialCoil(coilId);
if (coilRes.code !== 200 || !coilRes.data) {
throw new Error('未找到钢卷信息'); throw new Error('未找到钢卷信息');
} }
// 5. 根据二维码内容匹配对应的钢卷数据 const coilData = coilRes.data;
let coilData = null;
const records = traceRes.data.records;
// 优先使用coil_id精确匹配
if (coilId) {
coilData = records.find(record => String(record.coilId) === String(coilId));
}
// 如果没找到使用currentCoilNo匹配
if (!coilData && currentCoilNo) {
coilData = records.find(record => record.currentCoilNo === currentCoilNo);
}
// 如果还是没找到,取第一条记录
if (!coilData && records.length > 0) {
coilData = records[0];
}
if (!coilData) {
throw new Error('未找到对应的钢卷数据');
}
// 保存钢卷详情 // 保存钢卷详情
this.coilDetail = coilData; this.coilDetail = coilData;