Merge remote-tracking branch 'origin/master'

master
suixy 4 months ago
commit b500da3a5b

@ -241,6 +241,71 @@ export const constantRoutes: RouteRecordRaw[] = [
meta: { title: '配方明细信息', activeMenu: '/mes/recipeInfo', noCache: true }
}
]
},
{
path: '/mes/mixTrace/show/backward1',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/mes/mixTrace/show/backward1.vue'),
name: 'MixTraceBackward1',
meta: { title: '反向追溯列表', activeMenu: '/mes/mixTrace/show', noCache: true }
}
]
},
{
path: '/mes/mixTrace/show/backward2',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/mes/mixTrace/show/backward2.vue'),
name: 'MixTraceBackward2',
meta: { title: '反向追溯详情', activeMenu: '/mes/mixTrace/show/backward1', noCache: true }
}
]
},
{
path: '/mes/mixTrace/show/tire1',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/mes/mixTrace/show/tire1.vue'),
name: 'MixTraceTire1',
meta: { title: '轮胎全程追溯', activeMenu: '/mes/mixTrace/show', noCache: true }
}
]
},
{
path: '/mes/mixTrace/show/tire2',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/mes/mixTrace/show/tire2.vue'),
name: 'MixTraceTire2',
meta: { title: '轮胎详情', activeMenu: '/mes/mixTrace/show/tire1', noCache: true }
}
]
},
{
path: '/mes/mixTrace/show/forward1',
component: Layout,
hidden: true,
children: [
{
path: '',
component: () => import('@/views/mes/mixTrace/show/forward1.vue'),
name: 'MixTraceForward1',
meta: { title: '正向追溯', activeMenu: '/mes/mixTrace/show', noCache: true }
}
]
}
];

@ -0,0 +1,110 @@
# mixTrace/show 假数据演示改造点与实现方案
## 1. 目标
仅使用本地假数据(不依赖后端 API`hwmom-ui/src/views/mes/mixTrace/show` 目录内完成演示页,页面效果对齐以下截图:
- `C:\D\WORK\NewP\MOM\show\backward1.png`
- `C:\D\WORK\NewP\MOM\show\backward2.png`
- `C:\D\WORK\NewP\MOM\show\forward1.png`
- `C:\D\WORK\NewP\MOM\show\forward2.png`
- `C:\D\WORK\NewP\MOM\show\tire1.png`
- `C:\D\WORK\NewP\MOM\show\tire2.jpg`
## 2. 当前目录逻辑梳理(仅 show 目录)
### 2.1 页面文件职责
| 文件 | 当前职责 | 数据来源 |
|---|---|---|
| `backward1.vue` | 反向追溯入口查询页,按条码类型切表头,行点击跳转详情 | `data/backward1.json` |
| `backward2.vue` | 反向追溯详情页,左树 + 生产/质检/称量/混炼 + 右侧可收起曲线 | `data/backward2.json``detailMap` |
| `forward1-new.vue` | 正向追溯主界面(与截图风格最接近),含查询区、树、信息区、曲线侧栏 | `data/forward.json` |
| `forward1.vue` | 旧版正向页面(图表放大模式),数据字段与 `forward.json` 当前结构不一致 | `data/forward.json` |
| `tire1.vue` | 轮胎全程追溯流程图 + 产品信息列表 | `data/tire1.json` |
| `tire2.vue` | 轮胎详情页,左树 + 生产/质检 + 工艺占位 + 右侧曲线侧栏 | `data/tire2.json` |
### 2.2 关键交互链路
- `backward1.vue` 行点击通过 `router.push('/mes/mixTrace/show/backward2', { id, barcodeType })` 跳到 `backward2.vue`
- `backward2.vue` 通过路由参数 `id/barcodeType``detailMap` 取当前详情数据,曲线区域默认收起。
- `forward1-new.vue``backward2.vue` 交互模型一致(右侧曲线抽屉),更符合 `forward1.png/forward2.png` 两张截图“收起/展开”态。
- `tire1.vue` 目前是静态演示模型。
- `tire2.vue` 与截图匹配度高,当前“工艺”区域为占位空态。
## 3. 截图与页面映射结论
- `backward1.png` -> `backward1.vue`
- `backward2.png` -> `backward2.vue`(曲线收起态)
- `forward1.png` -> `forward1-new.vue`(曲线收起态)
- `forward2.png` -> `forward1-new.vue`(曲线展开态)
- `tire1.png` -> `tire1.vue`
- `tire2.jpg` -> `tire2.vue`(曲线收起态)
说明:`forward1.vue` 更像早期版本,建议演示方案以 `forward1-new.vue` 为主。
## 4. 需要修改的点(后续实施时)
### 4.1 页面选择与路由统一
1. 明确正向演示入口只使用 `forward1-new.vue`
2. `forward1.vue` 处理方式二选一:
- 保留但不走路由;
- 或改为壳组件,直接复用 `forward1-new.vue`
### 4.2 假数据模型统一
1. 将当前分散 JSON 统一成“列表 + 详情映射”结构,避免字段割裂。
2. 建议保持以下模式:
- 查询列表数据:用于首屏表格/树。
- 详情字典:`{ id: detail }`,用于点击节点后切换右侧信息区。
3. 统一字段命名(如 `materialName/materialCode`、`weight/actualWeight`、`curveData` 结构)。
### 4.3 查询与筛选逻辑补齐(前端本地过滤)
1. `backward1.vue`:按条码号、时间区间、班次、班组、机台本地过滤后分页。
2. `forward1-new.vue`:条码类型 + 条码号触发树与详情切换(不是仅弹消息)。
3. `tire2.vue`:左树点击时可切换 `productionInfo/qualityInfo/curveData`(目前仅提示)。
### 4.4 视觉对齐截图
1. 蓝色标题条、分栏比例、表格密度、滚动条行为按截图统一。
2. 右侧曲线栏默认收起,点击展开后初始化图表。
3. `tire1.vue` 流程图建议使用本地素材替代当前内嵌占位图,增强与截图一致性。
### 4.5 稳定性与可维护性
1. 抽离重复 ECharts 配置为公共函数(`temperature/power/energy/pressure/speed/position` 六曲线)。
2. 抽离“加载模拟延迟 + loading”公共方法避免每页重复 `setTimeout`
3. 检查 `*.vue/*.json` 编码统一为 UTF-8避免中文显示异常。
## 5. 实现方案(纯假数据演示)
### 阶段 A数据层整理
1. 保留 `data/` 目录,新增规范化 mock 文件(可按页面分:`backward.mock.json`、`forward.mock.json`、`tire.mock.json`)。
2. 每个 mock 至少包含:
- `list`(查询页/树页入口数据)
- `detailMap`(点击后详情)
- `curveData`(与截图趋势接近)
### 阶段 B页面接线
1. `backward1.vue`:查询表格绑定 `list`,行点击携带 `id`
2. `backward2.vue`:根据 `id` 渲染详情模块,树节点可切换明细。
3. `forward1-new.vue`:作为正向主页面,支持 `forward1/forward2` 两种视觉态(曲线收起/展开)。
4. `tire1.vue`:固定展示全流程链路 + 轮胎关联清单。
5. `tire2.vue`:左树切换不同轮胎实例,右侧信息联动更新。
### 阶段 C演示校验
1. 进入页面即有默认数据,不出现空白。
2. 所有查询按钮至少能触发本地过滤与刷新。
3. 所有树节点点击可见联动变化(不只 toast
4. 曲线展开/收起稳定,不出现尺寸错乱。
5. 六张截图对应页面可一键复现核心布局与信息密度。
## 6. 交付建议
先完成“可演示优先”版本:保证流程可点、数据可切、布局接近截图;后续再补 API 接入层(将 mock 替换为真实接口)。

@ -0,0 +1,328 @@
<template>
<div class="backward1-container">
<el-card class="query-card" shadow="never">
<el-form :model="queryParams" :inline="true" label-width="80px">
<el-form-item label="条码类型">
<el-select v-model="queryParams.barcodeType" placeholder="请选择" style="width: 150px" @change="handleBarcodeTypeChange">
<el-option label="架子号" value="1" />
<el-option label="半制品卡号" value="2" />
<el-option label="成型号" value="3" />
<el-option label="硫化号" value="4" />
</el-select>
</el-form-item>
<el-form-item label="条码号">
<el-input v-model="queryParams.barcodeNo" placeholder="请输入条码号" clearable style="width: 220px" />
</el-form-item>
<el-form-item label="开始时间">
<el-date-picker
v-model="queryParams.startTime"
type="datetime"
placeholder="开始时间"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 200px"
/>
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker
v-model="queryParams.endTime"
type="datetime"
placeholder="结束时间"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 200px"
/>
</el-form-item>
<el-form-item label="班次">
<el-select v-model="queryParams.shift" placeholder="全部" clearable style="width: 120px">
<el-option label="早" value="早" />
<el-option label="中" value="中" />
<el-option label="夜" value="夜" />
</el-select>
</el-form-item>
<el-form-item label="班组">
<el-select v-model="queryParams.team" placeholder="全部" clearable style="width: 120px">
<el-option label="甲班" value="甲班" />
<el-option label="乙班" value="乙班" />
<el-option label="丙班" value="丙班" />
</el-select>
</el-form-item>
<el-form-item label="机台">
<el-input v-model="queryParams.machine" placeholder="请输入机台" clearable style="width: 150px" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="table-card" shadow="never">
<div class="table-scroll">
<el-table
:data="tableData"
border
stripe
:fit="false"
:scrollbar-always-on="true"
height="520"
@row-click="handleRowClick"
:row-style="{ cursor: 'pointer' }"
>
<el-table-column type="index" label="序号" width="60" align="center" />
<template v-if="queryParams.barcodeType === '1'">
<el-table-column prop="vulcanizationNo" label="硫化号" min-width="150" align="center" show-overflow-tooltip />
<el-table-column prop="planDate" label="计划日期" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="shift" label="班次" min-width="80" align="center" />
<el-table-column prop="team" label="班组" min-width="90" align="center" />
<el-table-column prop="machineNo" label="机台号" min-width="110" align="center" show-overflow-tooltip />
<el-table-column prop="materialSpec" label="物料规格" min-width="260" align="center" show-overflow-tooltip />
</template>
<template v-else-if="queryParams.barcodeType === '2'">
<el-table-column prop="cardNo" label="流转卡号" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="toolingNo" label="工装号" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="shift" label="班次" min-width="80" align="center" />
<el-table-column prop="team" label="班组" min-width="90" align="center" />
<el-table-column prop="recorder" label="记录人" min-width="90" align="center" />
<el-table-column prop="startTime" label="开始时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="endTime" label="结束时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="machineNo" label="机台号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="qty" label="数量" min-width="90" align="right" />
<el-table-column prop="leftQty" label="剩余数量" min-width="100" align="right" />
</template>
<template v-else-if="queryParams.barcodeType === '3'">
<el-table-column prop="greenTyreNo" label="成型号" min-width="170" align="center" show-overflow-tooltip />
<el-table-column prop="materialSpec" label="物料规格" min-width="260" align="center" show-overflow-tooltip />
<el-table-column prop="shift" label="班次" min-width="80" align="center" />
<el-table-column prop="team" label="班组" min-width="90" align="center" />
<el-table-column prop="recorder" label="记录人" min-width="90" align="center" />
<el-table-column prop="startTime" label="开始时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="endTime" label="结束时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="machineNo" label="机台号" min-width="120" align="center" show-overflow-tooltip />
</template>
<template v-else>
<el-table-column prop="vulcanizationNo" label="硫化号" min-width="150" align="center" show-overflow-tooltip />
<el-table-column prop="moldingNo" label="成型号" min-width="150" align="center" show-overflow-tooltip />
<el-table-column prop="materialSpec" label="物料规格" min-width="260" align="center" show-overflow-tooltip />
<el-table-column prop="shift" label="班次" min-width="80" align="center" />
<el-table-column prop="team" label="班组" min-width="90" align="center" />
<el-table-column prop="startTime" label="开始时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="endTime" label="结束时间" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="machineNo" label="机台号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="moldPosition" label="左右模" min-width="90" align="center" />
</template>
</el-table>
</div>
<el-pagination
v-model:current-page="queryParams.pageNum"
v-model:page-size="queryParams.pageSize"
:total="total"
:page-sizes="[10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
style="margin-top: 16px; text-align: right"
/>
</el-card>
</div>
</template>
<script setup lang="ts" name="MixTraceBackward1">
import { onMounted, reactive, ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { ElMessage } from 'element-plus';
import backwardData from './data/backward1.json';
import backwardDetailData from './data/backward2.json';
type BarcodeType = '1' | '2' | '3' | '4';
interface BackwardRow {
id: string;
detailId?: string;
barcodeType: BarcodeType;
vulcanizationNo?: string;
cardNo?: string;
greenTyreNo?: string;
planDate?: string;
startTime?: string;
endTime?: string;
shift?: string;
team?: string;
machineNo?: string;
}
const router = useRouter();
const route = useRoute();
const detailMap = (backwardDetailData as any).detailMap || {};
const queryParams = reactive({
startTime: '',
endTime: '',
shift: '',
barcodeType: '4' as BarcodeType,
barcodeNo: '',
team: '',
machine: '',
pageNum: 1,
pageSize: 10
});
const initFromRoute = () => {
// (4)
const typeFromRoute = String(route.query.barcodeType || '').trim();
const noFromRoute = String(route.query.barcodeNo || '').trim();
queryParams.barcodeType = (typeFromRoute || '4') as BarcodeType;
if (noFromRoute) {
queryParams.barcodeNo = noFromRoute;
}
};
const tableData = ref<BackwardRow[]>([]);
const total = ref(0);
const getDataByType = (type: BarcodeType): BackwardRow[] => {
const data = backwardData as any;
if (type === '1') return data.shelfData || [];
if (type === '2') return data.semiCardData || [];
if (type === '3') return data.moldingData || [];
return data.curingData || [];
};
const getRowBarcode = (row: BackwardRow): string => {
return String(row.vulcanizationNo || row.cardNo || row.greenTyreNo || '');
};
const toTimestamp = (timeStr?: string): number | null => {
if (!timeStr) return null;
const ms = Date.parse(timeStr.replace(/\//g, '-'));
return Number.isNaN(ms) ? null : ms;
};
const getRowTime = (row: BackwardRow): number | null => {
if (row.startTime) return toTimestamp(row.startTime);
if (row.planDate) return toTimestamp(`${row.planDate} 00:00:00`);
return null;
};
const refreshTable = () => {
const all = getDataByType(queryParams.barcodeType);
const barcodeKeyword = queryParams.barcodeNo.trim().toLowerCase();
const machineKeyword = queryParams.machine.trim().toLowerCase();
const startTs = toTimestamp(queryParams.startTime);
const endTs = toTimestamp(queryParams.endTime);
const filtered = all.filter((row) => {
const rowBarcode = getRowBarcode(row).toLowerCase();
const machine = String(row.machineNo || '').toLowerCase();
const rowTs = getRowTime(row);
if (barcodeKeyword && !rowBarcode.includes(barcodeKeyword)) return false;
if (queryParams.shift && row.shift !== queryParams.shift) return false;
if (queryParams.team && row.team !== queryParams.team) return false;
if (machineKeyword && !machine.includes(machineKeyword)) return false;
if (startTs !== null && rowTs !== null && rowTs < startTs) return false;
if (endTs !== null && rowTs !== null && rowTs > endTs) return false;
return true;
});
total.value = filtered.length;
const start = (queryParams.pageNum - 1) * queryParams.pageSize;
tableData.value = filtered.slice(start, start + queryParams.pageSize);
};
const handleQuery = () => {
queryParams.pageNum = 1;
refreshTable();
};
const handleBarcodeTypeChange = () => {
handleQuery();
};
const resetQuery = () => {
queryParams.startTime = '';
queryParams.endTime = '';
queryParams.shift = '';
queryParams.barcodeType = '4';
queryParams.barcodeNo = '';
queryParams.team = '';
queryParams.machine = '';
queryParams.pageNum = 1;
queryParams.pageSize = 10;
refreshTable();
};
const handleSizeChange = () => {
queryParams.pageNum = 1;
refreshTable();
};
const handleCurrentChange = () => {
refreshTable();
};
const handleRowClick = (row: BackwardRow) => {
const detailId = String(row.detailId || row.id || '');
if (!detailId) {
ElMessage.error('当前行缺少 detailId无法跳转详情');
return;
}
const detail = detailMap[detailId];
if (!detail) {
ElMessage.error(`未找到详情数据: ${detailId}`);
return;
}
const rowType = String(row.barcodeType || queryParams.barcodeType || '4');
const detailType = String(detail.barcodeType || rowType || '4');
if (rowType !== detailType) {
ElMessage.warning(`条码类型已按详情修正: ${rowType} -> ${detailType}`);
}
router.push({
path: '/mes/mixTrace/show/backward2',
query: {
id: detailId,
barcodeType: detailType
}
});
};
onMounted(() => {
initFromRoute();
refreshTable();
});
</script>
<style scoped lang="scss">
.backward1-container {
padding: 20px;
.query-card {
margin-bottom: 16px;
:deep(.el-card__body) {
padding: 16px;
}
}
.table-card {
:deep(.el-card__body) {
padding: 16px;
}
}
.table-scroll {
width: 100%;
min-width: 0;
}
:deep(.el-table__body td) {
padding: 8px 0;
}
}
</style>

@ -0,0 +1,658 @@
<template>
<div class="backward2-container">
<el-card class="tree-card" shadow="never" v-loading="loading">
<template #header>
<div class="card-header">
<span class="header-title">追溯结构</span>
<el-button type="primary" link icon="ArrowLeft" @click="goBack"></el-button>
</div>
</template>
<el-tree
ref="treeRef"
:data="treeData"
:props="treeProps"
node-key="id"
default-expand-all
:expand-on-click-node="false"
highlight-current
@node-click="handleNodeClick"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<el-icon v-if="!data.children"><Document /></el-icon>
<el-icon v-else><Folder /></el-icon>
<span class="label-text">{{ node.label }}</span>
</span>
</template>
</el-tree>
</el-card>
<div class="content-area">
<div class="main-area">
<div class="top-section">
<el-card class="production-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header">
<span class="header-title">生产信息</span>
</div>
</template>
<el-descriptions v-if="barcodeType === '1'" :column="1" border size="small" class="production-desc">
<el-descriptions-item label="条码">{{ productionInfo.barcode }}</el-descriptions-item>
<el-descriptions-item label="生产日期">{{ productionInfo.productionDate }}</el-descriptions-item>
<el-descriptions-item label="机台">{{ productionInfo.machine }}</el-descriptions-item>
<el-descriptions-item label="班次">{{ productionInfo.shift }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ productionInfo.team }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ productionInfo.materialName }}</el-descriptions-item>
<el-descriptions-item label="车次">{{ productionInfo.trainNo }}</el-descriptions-item>
<el-descriptions-item label="重量">{{ productionInfo.weight }}</el-descriptions-item>
<el-descriptions-item label="操作人">{{ productionInfo.operator }}</el-descriptions-item>
</el-descriptions>
<el-descriptions v-else-if="barcodeType === '2'" :column="1" border size="small" class="production-desc">
<el-descriptions-item label="流转卡号">{{ productionInfo.cardNo }}</el-descriptions-item>
<el-descriptions-item label="接班编号">{{ productionInfo.shiftNo }}</el-descriptions-item>
<el-descriptions-item label="架子号">{{ productionInfo.shelfNo }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ productionInfo.materialName }}</el-descriptions-item>
<el-descriptions-item label="数量">{{ productionInfo.qty }}</el-descriptions-item>
<el-descriptions-item label="单位">{{ productionInfo.unitName }}</el-descriptions-item>
<el-descriptions-item label="宽度">{{ productionInfo.width }}</el-descriptions-item>
<el-descriptions-item label="计划号">{{ productionInfo.orderNumber }}</el-descriptions-item>
<el-descriptions-item label="重量">{{ productionInfo.weight }}</el-descriptions-item>
</el-descriptions>
<el-descriptions v-else-if="barcodeType === '3'" :column="1" border size="small" class="production-desc">
<el-descriptions-item label="成型号">{{ productionInfo.greenTyreNo }}</el-descriptions-item>
<el-descriptions-item label="成型时间">{{ productionInfo.beginTime }}</el-descriptions-item>
<el-descriptions-item label="机台">{{ productionInfo.equipId }}</el-descriptions-item>
<el-descriptions-item label="操作人">{{ productionInfo.operator }}</el-descriptions-item>
<el-descriptions-item label="班次">{{ productionInfo.shift }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ productionInfo.team }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ productionInfo.materialName }}</el-descriptions-item>
<el-descriptions-item label="重量">{{ productionInfo.weight }}</el-descriptions-item>
</el-descriptions>
<el-descriptions v-else :column="1" border size="small" class="production-desc">
<el-descriptions-item label="条码">{{ productionInfo.barcode }}</el-descriptions-item>
<el-descriptions-item label="生产日期">{{ productionInfo.productionDate }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ productionInfo.materialName }}</el-descriptions-item>
<el-descriptions-item label="机台">{{ productionInfo.machine }}</el-descriptions-item>
<el-descriptions-item label="班次">{{ productionInfo.shift }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ productionInfo.team }}</el-descriptions-item>
<el-descriptions-item label="车次">{{ productionInfo.trainNo }}</el-descriptions-item>
<el-descriptions-item label="设定重量">{{ productionInfo.setWeight }}</el-descriptions-item>
<el-descriptions-item label="实际重量">{{ productionInfo.actualWeight }}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="quality-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header">
<span class="header-title">质检信息</span>
</div>
</template>
<div class="table-scroll">
<el-table :data="qualityData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="reportNo" label="报告单号" min-width="130" align="center" show-overflow-tooltip />
<el-table-column prop="times" label="检验次数" min-width="90" align="center" />
<el-table-column prop="item" label="检验项目" min-width="140" align="center" show-overflow-tooltip />
<el-table-column prop="standard" label="标准" min-width="130" align="center" show-overflow-tooltip />
<el-table-column prop="value" label="检验值" min-width="100" align="center" show-overflow-tooltip />
<el-table-column prop="deviation" label="偏差" min-width="90" align="center" />
<el-table-column prop="result" label="结果" min-width="90" align="center" />
</el-table>
</div>
</el-card>
</div>
<el-card v-if="selectedNodeLevel <= 2" class="weighing-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header">
<span class="header-title">称量信息</span>
</div>
</template>
<div class="table-scroll">
<el-table :data="weighingData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="carBarcode" label="车条码" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="order" label="称量次序" min-width="90" align="center" />
<el-table-column label="物料编码" min-width="170" align="center" show-overflow-tooltip>
<template #default="{ row }">{{ row.materialName || row.materialCode || '-' }}</template>
</el-table-column>
<el-table-column prop="machine" label="机台" min-width="100" align="center" />
<el-table-column prop="setWeight" label="设定重量" min-width="100" align="right" />
<el-table-column prop="actualWeight" label="实际重量" min-width="100" align="right" />
<el-table-column prop="tolerance" label="允许误差" min-width="100" align="center" />
<el-table-column prop="actualDeviation" label="实际误差" min-width="100" align="center" />
<el-table-column prop="weighTime" label="称量时间" min-width="170" align="center" show-overflow-tooltip />
<el-table-column prop="trainNo" label="车次" min-width="90" align="center" />
<el-table-column prop="planDate" label="计划日期" min-width="120" align="center" />
</el-table>
</div>
</el-card>
<el-card v-if="selectedNodeLevel <= 2" class="mixing-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header">
<span class="header-title">混炼信息</span>
</div>
</template>
<div class="table-scroll">
<el-table :data="mixingProcessData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="carBarcode" label="车条码" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="step" label="混炼步骤" min-width="90" align="center" />
<el-table-column prop="condition" label="条件" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="duration" label="时间" min-width="90" align="center" />
<el-table-column prop="temperature" label="温度(℃)" min-width="100" align="right" />
<el-table-column prop="energy" label="能量" min-width="90" align="right" />
<el-table-column prop="power" label="功率" min-width="90" align="right" />
<el-table-column prop="pressure" label="压力" min-width="90" align="right" />
<el-table-column prop="rpm" label="转速" min-width="90" align="right" />
<el-table-column prop="action" label="动作" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="recordTime" label="保存时间" min-width="180" align="center" show-overflow-tooltip />
</el-table>
</div>
</el-card>
</div>
<div class="curve-area" :class="{ collapsed: curveCollapsed }">
<div class="curve-toggle" @click="toggleCurve">
<span class="toggle-text">曲线信息</span>
<el-icon class="toggle-icon" :class="{ rotated: !curveCollapsed }"><ArrowRight /></el-icon>
</div>
<el-card class="curve-card" shadow="never" v-show="!curveCollapsed">
<template #header>
<div class="blue-header">
<span class="header-title">曲线信息</span>
<div class="legend-group">
<span class="legend-item"><i class="legend-dot" style="background: #ff4d4f"></i>温度</span>
<span class="legend-item"><i class="legend-dot" style="background: #40a9ff"></i>功率</span>
<span class="legend-item"><i class="legend-dot" style="background: #36cfc9"></i>能量</span>
<span class="legend-item"><i class="legend-dot" style="background: #95de64"></i>压力</span>
<span class="legend-item"><i class="legend-dot" style="background: #f7d13d"></i>转速</span>
<span class="legend-item"><i class="legend-dot" style="background: #ffa07a"></i>上顶栓</span>
</div>
<el-button size="small" text type="primary" style="color: #fff" @click="toggleCurve"></el-button>
</div>
</template>
<div ref="chartRef" class="chart-container"></div>
</el-card>
</div>
</div>
</div>
</template>
<script setup lang="ts" name="MixTraceBackward2">
import { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { ArrowRight, Document, Folder } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import * as echarts from 'echarts';
import backwardData from './data/backward2.json';
type BarcodeType = '1' | '2' | '3' | '4';
const route = useRoute();
const router = useRouter();
const detailMap = (backwardData as any).detailMap || {};
const detailKeys = Object.keys(detailMap);
const loading = ref(false);
const detailId = ref<string>('');
const barcodeType = ref<BarcodeType>('4');
const treeData = ref<any[]>([]);
const qualityData = ref<any[]>([]);
const weighingData = ref<any[]>([]);
const mixingProcessData = ref<any[]>([]);
const curveCollapsed = ref(true);
/** 当前选中节点的树层级1-2级显示全部3级+只显示生产和质检 */
const selectedNodeLevel = ref<number>(1);
const treeProps = { children: 'children', label: 'label' };
const treeRef = ref();
const chartRef = ref<HTMLDivElement>();
let chartInstance: echarts.ECharts | null = null;
const goBack = () => {
if (window.history.length > 1) {
router.back();
return;
}
router.push('/mes/mixTrace/show/backward1');
};
const productionInfo = computed(() => {
return detailMap[detailId.value]?.production || {};
});
const curveDataSource = computed(() => {
return detailMap[detailId.value]?.curveData || {};
});
const resolveDetailId = (routeId: string, routeType: string): string => {
if (routeId && detailMap[routeId]) return routeId;
if (routeType) {
const match = detailKeys.find((key) => String(detailMap[key]?.barcodeType) === routeType);
if (match) return match;
}
return detailKeys[0] || '';
};
const syncByRoute = () => {
const routeId = String(route.query.id || '');
const routeType = String(route.query.barcodeType || '');
const resolved = resolveDetailId(routeId, routeType);
if (!resolved) return;
detailId.value = resolved;
barcodeType.value = String(detailMap[resolved]?.barcodeType || routeType || '4') as BarcodeType;
};
const loadData = () => {
loading.value = true;
syncByRoute();
const detail = detailMap[detailId.value] || {};
treeData.value = detail.treeData || [];
qualityData.value = detail.qualityData || [];
weighingData.value = detail.weighingData || [];
mixingProcessData.value = detail.mixingProcessData || [];
nextTick(() => {
const defaultKey = treeData.value?.[0]?.id;
if (defaultKey && treeRef.value) {
treeRef.value.setCurrentKey(defaultKey);
}
});
loading.value = false;
};
const initChart = () => {
if (!chartRef.value) return;
const cd = curveDataSource.value;
const mixingRows = Array.isArray(mixingProcessData.value) ? mixingProcessData.value : [];
const toNumberOrNull = (value: any): number | null => {
const num = Number(value);
return Number.isFinite(num) ? num : null;
};
const listLength = (value: any): number => {
return Array.isArray(value) ? value.length : 0;
};
const buildPositionFromAction = (row: any): number | null => {
const actionText = String(row?.action || row?.condition || '');
if (actionText.includes('压上顶栓')) return 1;
if (actionText.includes('升上顶栓')) return 0;
return null;
};
let xAxisData: Array<string | number> = [];
let temperatureData: Array<number | null> = [];
let powerData: Array<number | null> = [];
let energyData: Array<number | null> = [];
let pressureData: Array<number | null> = [];
let speedData: Array<number | null> = [];
let positionData: Array<number | null> = [];
if (mixingRows.length > 0) {
xAxisData = mixingRows.map((row: any, idx: number) => row.step ?? idx + 1);
temperatureData = mixingRows.map((row: any) => toNumberOrNull(row.temperature));
powerData = mixingRows.map((row: any) => toNumberOrNull(row.power));
energyData = mixingRows.map((row: any) => toNumberOrNull(row.energy));
pressureData = mixingRows.map((row: any) => toNumberOrNull(row.pressure));
speedData = mixingRows.map((row: any) => toNumberOrNull(row.rpm));
positionData = mixingRows.map((row: any) => buildPositionFromAction(row));
} else {
const maxLen = Math.max(
listLength(cd.mixingTime),
listLength(cd.temperature),
listLength(cd.power),
listLength(cd.energy),
listLength(cd.pressure),
listLength(cd.speed),
listLength(cd.position)
);
xAxisData =
Array.isArray(cd.mixingTime) && cd.mixingTime.length > 0
? cd.mixingTime.map((v: any, i: number) => {
const num = Number(v);
return Number.isFinite(num) ? num : i + 1;
})
: Array.from({ length: maxLen }, (_, i) => i + 1);
const buildSeriesData = (source: any): Array<number | null> => {
const arr = Array.isArray(source) ? source : [];
return xAxisData.map((_, idx) => toNumberOrNull(arr[idx]));
};
temperatureData = buildSeriesData(cd.temperature);
powerData = buildSeriesData(cd.power);
energyData = buildSeriesData(cd.energy);
pressureData = buildSeriesData(cd.pressure);
speedData = buildSeriesData(cd.speed);
positionData = buildSeriesData(cd.position);
}
const calcRange = (arr: Array<number | null>) => {
const nums = arr.filter((n): n is number => typeof n === 'number');
if (!nums.length) return {};
const min = Math.min(...nums);
const max = Math.max(...nums);
const pad = min === max ? Math.max(Math.abs(min) * 0.1, 1) : (max - min) * 0.1;
return {
min: Number((min - pad).toFixed(2)),
max: Number((max + pad).toFixed(2))
};
};
const leftAxisRange = calcRange(temperatureData);
const rightAxisRange = calcRange([...powerData, ...energyData, ...pressureData, ...speedData, ...positionData]);
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
chartInstance = echarts.init(chartRef.value);
if (xAxisData.length === 0) {
chartInstance.setOption({
graphic: {
type: 'text',
left: 'center',
top: 'middle',
style: { text: '暂无曲线数据', fill: '#909399', fontSize: 14 }
}
});
return;
}
chartInstance.setOption({
animation: false,
grid: { left: '5%', right: '5%', top: '10%', bottom: '10%', containLabel: true },
tooltip: { trigger: 'axis' },
xAxis: {
type: 'category',
data: xAxisData,
boundaryGap: false,
name: mixingRows.length > 0 ? '混炼步骤' : '时间(s)'
},
yAxis: [
{ type: 'value', name: '温度(℃)', position: 'left', axisLine: { show: true }, ...leftAxisRange },
{ type: 'value', name: '其他参数', position: 'right', axisLine: { show: true }, ...rightAxisRange }
],
series: [
{ name: '温度', type: 'line', yAxisIndex: 0, data: temperatureData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#ff4d4f' } },
{ name: '功率', type: 'line', yAxisIndex: 1, data: powerData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#40a9ff' } },
{ name: '能量', type: 'line', yAxisIndex: 1, data: energyData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#36cfc9' } },
{ name: '压力', type: 'line', yAxisIndex: 1, data: pressureData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#95de64' } },
{ name: '转速', type: 'line', yAxisIndex: 1, data: speedData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#f7d13d' } },
{
name: '上顶栓',
type: 'line',
yAxisIndex: 1,
data: positionData,
smooth: false,
connectNulls: false,
showSymbol: true,
lineStyle: { type: 'dashed' },
itemStyle: { color: '#ffa07a' }
}
]
});
};
const resizeChart = () => {
chartInstance?.resize();
};
const renderChartWithDelay = () => {
nextTick(() => {
setTimeout(() => {
initChart();
resizeChart();
}, 180);
});
};
const toggleCurve = () => {
curveCollapsed.value = !curveCollapsed.value;
if (!curveCollapsed.value) {
renderChartWithDelay();
}
};
const handleNodeClick = (nodeData: any, node: any) => {
selectedNodeLevel.value = node?.level ?? 1;
if (nodeData?.detailId && detailMap[nodeData.detailId]) {
detailId.value = nodeData.detailId;
barcodeType.value = String(detailMap[detailId.value]?.barcodeType || '4') as BarcodeType;
loadData();
if (!curveCollapsed.value) {
renderChartWithDelay();
}
return;
}
ElMessage.info(`当前节点: ${nodeData?.label || '-'}`);
};
watch(
() => [route.query.id, route.query.barcodeType],
() => {
loadData();
if (!curveCollapsed.value) {
renderChartWithDelay();
}
}
);
watch(detailId, () => {
if (!curveCollapsed.value) {
renderChartWithDelay();
}
});
onMounted(() => {
loadData();
window.addEventListener('resize', resizeChart);
});
onUnmounted(() => {
window.removeEventListener('resize', resizeChart);
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
});
</script>
<style scoped lang="scss">
.backward2-container {
display: flex;
gap: 16px;
padding: 16px;
height: calc(100vh - 90px);
.tree-card {
width: 310px;
flex-shrink: 0;
overflow-y: auto;
:deep(.el-card__header) {
padding: 0;
}
.card-header {
background-color: #2f6ea5;
color: #fff;
padding: 12px 14px;
.header-title {
font-size: 14px;
font-weight: 600;
}
}
:deep(.el-tree-node__content) {
height: 32px;
}
.custom-tree-node {
display: flex;
align-items: center;
font-size: 13px;
.label-text {
margin-left: 6px;
}
}
}
.content-area {
flex: 1;
min-width: 0;
display: flex;
overflow: hidden;
.main-area {
flex: 1;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
gap: 16px;
overflow-y: auto;
> * {
flex-shrink: 0;
}
}
.top-section {
display: flex;
gap: 16px;
flex-shrink: 0;
.production-card {
flex: 0 0 420px;
}
.quality-card {
flex: 1;
min-width: 0;
}
}
.table-scroll {
width: 100%;
min-width: 0;
}
.blue-header {
background-color: #2f6ea5;
color: #fff;
padding: 10px 14px;
margin: -20px -20px 16px -20px;
display: flex;
align-items: center;
justify-content: space-between;
.header-title {
font-size: 14px;
font-weight: 600;
}
}
.production-desc {
:deep(.el-descriptions__label) {
width: 90px;
font-weight: 600;
background: #fafafa;
}
}
:deep(.weighing-card .el-card__body),
:deep(.mixing-card .el-card__body),
:deep(.quality-card .el-card__body) {
overflow: visible;
}
.curve-area {
flex: 0 0 50%;
display: flex;
height: 100%;
flex-shrink: 0;
transition: flex-basis 0.3s ease;
&.collapsed {
flex-basis: 30px;
width: 30px;
}
.curve-toggle {
width: 30px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
background-color: #2f6ea5;
cursor: pointer;
user-select: none;
.toggle-text {
writing-mode: vertical-rl;
letter-spacing: 3px;
font-size: 13px;
font-weight: 600;
}
.toggle-icon {
margin-top: 8px;
transition: transform 0.3s ease;
&.rotated {
transform: rotate(180deg);
}
}
}
.curve-card {
flex: 1;
min-width: 0;
overflow: hidden;
:deep(.el-card__header) {
padding: 0;
}
:deep(.el-card__body) {
height: calc(100% - 48px);
padding: 10px;
}
.legend-group {
display: flex;
gap: 10px;
flex-wrap: nowrap;
align-items: center;
.legend-item {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 12px;
white-space: nowrap;
}
.legend-dot {
width: 8px;
height: 8px;
border-radius: 50%;
display: inline-block;
}
}
.chart-container {
width: 100%;
height: 100%;
min-height: 300px;
}
}
}
}
}
</style>

File diff suppressed because one or more lines are too long

@ -0,0 +1,580 @@
# XKTrace SQL 与 mixTrace/show 页面映射总说明
本文基于 `XKTrace.sql``hwmom-ui/src/views/mes/mixTrace/show/data/XKTrace.sql`)整理,覆盖:
1. 全部表结构(字段级)
2. 全部视图与存储过程
3. 与前端页面(`backward1/backward2/forward1/tire1/tire2`)字段和功能映射
4. 追溯业务链路与条码类型规则
## 1. 数据库对象总览
## 1.1 表CREATE TABLE
1. `SSB_UNIT`
2. `SSP_DEPT_ACTION`
3. `SSP_ROLE`
4. `SSP_ROLE_ACTION`
5. `SSP_USER_ACTION`
6. `SSP_USER_ROLE`
7. `BPM_MOLDING_LOT_DETAIL`
8. `CPP_CURING_LOT_DETAIL`
9. `GREEN_TYRENO_PARAMS_TRACE`
10. `HPP_SEMI_LOT_DETAIL`
11. `PptBarbom`
12. `SPP_TRACE_RECORD`
13. `SSB_FACTORY`
14. `SSB_SEX`
15. `SSB_WORKSHOP`
16. `SSB_YES_NO`
17. `SSL_LOGIN_LOG`
18. `SSL_WEB_LOG`
19. `SSP_DEPT_ROLE`
20. `SSP_PAGE_ACTION`
21. `SSP_PAGE_MENU`
22. `SSP_PAGE_METHOD`
23. `SST_TASK_REMIND`
## 1.2 视图CREATE VIEW
1. `HPP_SEMIS_PRODUCTION`
2. `SSB_USER`
3. `V_SSP_USER_ALL_ACTION`
4. `BPM_MOLDING_PRODUCTION`
5. `BPM_MOLDINGTK_PRODUCTION`
6. `CPP_CURING_PRODUCTION`
7. `FQF_QUALITY_INFO`
8. `Pmt_material`
9. `Ppt_Lot`
10. `ppt_MixData`
11. `Ppt_ShiftConfig`
12. `ppt_Weigh`
13. `PstStorage`
14. `SBE_EQUIP`
15. `SBM_MATERIAL`
16. `SBM_MATERIAL_MINOR_TYPE`
17. `SSB_CLASS`
18. `SSB_SHIFT`
## 1.3 存储过程CREATE PROCEDURE
1. `PROC_BACK_GET_MIX`
2. `PROC_BACK_GET_MIXCURVE`
3. `PROC_BACK_GET_PRODUCTION`
4. `PROC_BACK_GET_QUALITY`
5. `PROC_BACK_GET_TECH`
6. `PROC_FORWARD_GET_BARCODE`
7. `PROC_FORWARD_GET_F_BARCODE`
## 2. 条码类型与业务链路
## 2.1 条码类型(核心)
| code | 类型 | 主要生产视图 |
|---|---|---|
| `1` | 原材料 | `PstStorage` |
| `2` | 胶料 | `Ppt_ShiftConfig` / `Ppt_Lot` |
| `3` | 半制品 | `HPP_SEMIS_PRODUCTION` |
| `4` | 胎胚 | `BPM_MOLDING_PRODUCTION` |
| `5` | 成品胎 | `CPP_CURING_PRODUCTION` |
| `6` | 小料 | `Ppt_ShiftConfig` / `Ppt_Lot` |
| `9` | 胎壳(兼容) | `BPM_MOLDINGTK_PRODUCTION` |
| `10` | 钢丝帘线(正向过程内部类型) | 由 `PROC_FORWARD_GET_BARCODE` 推导 |
| `20` | 段胶(正向过程内部类型) | 由 `PROC_FORWARD_GET_BARCODE` 推导 |
## 2.2 追溯链路(逻辑)
`原材料/小料 -> 胶料 -> 半制品 -> 胎胚 -> 成品胎`
主关系表:
1. `PptBarbom`(胶料投料关系)
2. `HPP_SEMI_LOT_DETAIL`(半制品关系)
3. `BPM_MOLDING_LOT_DETAIL`(成型关系)
4. `CPP_CURING_LOT_DETAIL`(硫化关系)
## 3. 表结构(字段级)
说明:以下字段名和类型来自 `XKTrace.sql`,业务含义按追溯场景补充。
## 3.1 追溯主关系表
### `BPM_MOLDING_LOT_DETAIL`
| 字段 | 类型 | 说明 | 前端用途 |
|---|---|---|---|
| `F_BARCODE` | `varchar(50)` | 父条码 | 正向/反向树 |
| `F_MATERIAL_CODE` | `varchar(50)` | 父物料 | 节点物料信息 |
| `F_NUM` | `decimal(10,2)` | 父数量 | 可扩展显示 |
| `S_BARCODE` | `varchar(50)` | 子条码 | 正向/反向树 |
| `S_MATERIAL_CODE` | `varchar(50)` | 子物料 | 节点物料信息 |
| `S_NUM` | `decimal(10,2)` | 子数量 | 可扩展显示 |
| `POSITION` | `varchar(10)` | 工位/位置 | 可扩展显示 |
| `SYNC_TIME` | `datetime` | 同步时间 | 数据追踪 |
### `CPP_CURING_LOT_DETAIL`
| 字段 | 类型 | 说明 | 前端用途 |
|---|---|---|---|
| `F_BARCODE` | `varchar(50)` | 父条码 | 树结构 |
| `F_MATERIAL_CODE` | `varchar(50)` | 父物料 | 树结构 |
| `F_NUM` | `decimal(10,2)` | 父数量 | 可扩展 |
| `S_BARCODE` | `varchar(50)` | 子条码 | 树结构 |
| `S_MATERIAL_CODE` | `varchar(50)` | 子物料 | 树结构 |
| `S_NUM` | `decimal(10,2)` | 子数量 | 可扩展 |
| `SYNC_TIME` | `datetime` | 同步时间 | 数据追踪 |
### `HPP_SEMI_LOT_DETAIL`
| 字段 | 类型 | 说明 | 前端用途 |
|---|---|---|---|
| `F_BARCODE` | `varchar(50)` | 父条码 | 树结构 |
| `F_MATERIAL_CODE` | `varchar(50)` | 父物料编码 | 树结构 |
| `F_NUM` | `decimal(10,2)` | 父数量 | 可扩展 |
| `S_BARCODE` | `varchar(50)` | 子条码 | 树结构 |
| `S_MATERIAL_CODE` | `varchar(50)` | 子物料编码 | 树结构 |
| `S_NUM` | `decimal(10,2)` | 子数量 | 可扩展 |
| `POSITION` | `varchar(10)` | 位置 | 可扩展 |
| `SYNC_TIME` | `datetime` | 同步时间 | 数据追踪 |
### `PptBarbom`
| 字段 | 类型 | 说明 | 前端用途 |
|---|---|---|---|
| `F_barcode` | `char(18)` | 父条码(架子码) | 正向/反向树 |
| `S_barcode` | `varchar(30)` | 子条码(车条码) | 正向/反向树 |
| `Scan_barcode` | `varchar(25)` | 扫描码 | 正向段胶链路 |
| `F_materCode` | `char(13)` | 父物料编码 | 物料显示 |
| `S_MaterCode` | `char(13)` | 子物料编码 | 物料显示 |
| `MaterCode` | `char(13)` | 物料编码 | 兼容 |
| `used_time` | `varchar(20)` | 使用时间 | 追溯时间线 |
### `SPP_TRACE_RECORD`
| 字段 | 类型 | 说明 |
|---|---|---|
| `PROCEDURE_TYPE` | `nvarchar(10)` | 工序类型 |
| `F_BARCODE` | `nvarchar(30)` | 父条码 |
| `S_BARCODE` | `nvarchar(30)` | 子条码 |
| `SCAN_BARCODE` | `nvarchar(30)` | 扫描条码 |
### `GREEN_TYRENO_PARAMS_TRACE`
| 字段 | 类型 | 说明 | 前端用途 |
|---|---|---|---|
| `green_tyre_no` | `char(12)` | 胎胚号(主键) | 胎胚查询 |
| `begin_time` | `datetime` | 开始时间 | 工艺时间 |
| `equip_code` | `nvarchar(50)` | 设备编码 | 工艺信息 |
| `plc_tech_json` | `text` | PLC 工艺 JSON | `tire2` 工艺区域预留 |
| `plc_tech_text` | `nvarchar(max)` | 工艺文本 | `tire2` 工艺区域预留 |
## 3.2 基础字典与主数据表
### `SSB_UNIT`
`OBJID, UNIT_CODE, UNIT_NAME, DELETE_FLAG, REMARK, RECORD_USER_ID, RECORD_TIME, BAKUP_FLAG, BAKUP_TIME, UNIT_NAME_EN`
用于单位字典,服务 `HPP_SEMIS_PRODUCTION.UNIT_NAME`
### `SSB_FACTORY`
`OBJID, FACTORY_CODE, FACTORY_NAME, FACTORY_TYPE, DESCRIPTION, REMARK, SEQ_IDX, DELETE_FLAG, RECORD_USER_ID, RECORD_TIME, BAKUP_FLAG, BAKUP_TIME, IS_EXT`
工厂维度,当前页面未直接展示。
### `SSB_SEX`
`OBJID, SEX_CODE, SEX_NAME, DELETE_FLAG, REMARK, RECORD_USER_ID, RECORD_TIME, BAKUP_FLAG, BAKUP_TIME`
性别字典,当前页面未直接展示。
### `SSB_WORKSHOP`
`OBJID, WORKSHOP_CODE, WORKSHOP_NAME, RECORD_USER_ID, RECORD_TIME, BACKUP_FLAG, BACKUP_TIME, DELETE_FLAG, REMARK`
车间字典,当前页面未直接展示。
### `SSB_YES_NO`
`OBJID, YES_NO_NAME, DELETE_FLAG, REMARK, RECORD_USER_ID, RECORD_TIME, BAKUP_FLAG, BAKUP_TIME`
是否字典,当前页面未直接展示。
## 3.3 权限与菜单表
### `SSP_DEPT_ACTION`
`objid, dept_id, action_id, record_user_id, record_time, bakup_flag, bakup_time`
### `SSP_ROLE`
`objid, role_name, remark, record_user_id, record_time, seq_idx, delete_flag, bakup_flag, bakup_time`
### `SSP_ROLE_ACTION`
`objid, role_id, action_id, record_user_id, record_time, bakup_flag, bakup_time`
### `SSP_USER_ACTION`
`objid, user_id, action_id, record_user_id, record_time, bakup_flag, bakup_time`
### `SSP_USER_ROLE`
`objid, user_id, role_id, record_user_id, record_time, bakup_flag, bakup_time`
### `SSP_DEPT_ROLE`
`objid, dept_id, role_id, record_user_id, record_time, bakup_flag, bakup_time`
### `SSP_PAGE_ACTION`
`objid, page_menu_id, action_id, action_name, action_url, show_name, remark, ico_name, record_user_id, record_time, seq_idx, delete_flag, bakup_flag, bakup_time`
### `SSP_PAGE_MENU`
`objid, menu_level, show_name, remark, page_url, ico_name, is_show, record_user_id, record_time, seq_idx, delete_flag, bakup_flag, bakup_time, http_url, help`
### `SSP_PAGE_METHOD`
`objid, page_id, method_name, show_name, remark, record_user_id, record_time, seq_idx, bakup_flag, bakup_time`
## 3.4 日志与提醒表
### `SSL_LOGIN_LOG`
`objid, user_id, login_time, login_ip, logout_time, logout_ip, remark, bakup_flag, bakup_time`
### `SSL_WEB_LOG`
`objid, user_id, page_id, method_id, user_ip, show_name, method_result, page_request, remark, record_user_id, record_time, bakup_flag, bakup_time`
### `SST_TASK_REMIND`
`objid, event_name, event_time, event_content, create_user_id, receive_user_id, receive_role_id, receive_url, important_level, delete_flag, record_user_id, record_time, bakup_flag, bakup_time`
## 4. 视图说明与页面映射
## 4.1 生产类视图
### `PstStorage`
来源:`klmens..Pst_Minstock`
输出:`Mater_barcode, mater_Code, Stock_date`
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=1`
2. `backward1` 原材料入口场景(扩展)
### `Ppt_ShiftConfig`
来源:`klmens..Ppt_ShiftConfig`
输出:胶料架子码相关生产字段(含班次、班组、车次范围、重量、操作人编码)
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=2 且 len(barcode)=18`
2. `PROC_FORWARD_GET_BARCODE @barcodeType=2/6`
### `Ppt_Lot`
来源:`klmens..Ppt_Lot`
输出:胶料车条码生产字段
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=2/6 且 len=15/16`
2. `PROC_FORWARD_GET_BARCODE @barcodeType=2/6`
### `HPP_SEMIS_PRODUCTION`
来源:`FTPC..UDA_Unit` + `unit/equipment/app_user` + `SSB_UNIT`
输出:半制品卡号、机台、班次、班组、数量、宽度、重量、剩余量等
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=3`
2. `backward1` 半制品卡号列表列
3. `backward2` 半制品生产信息块
### `BPM_MOLDING_PRODUCTION`
来源:`FTPC..uda_unit`
输出:`GREEN_TYRE_NO, MATERIAL_CODE, SHIFT_CODE, CLASS_CODE, OPER, BEGIN_TIME, END_TIME, EQUIP_ID`
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=4`
2. `PROC_BACK_GET_PRODUCTION @barcodeType=5`(与硫化视图联查)
3. `tire2` 成型段信息
### `BPM_MOLDINGTK_PRODUCTION`
来源:`FTPC..AT_MOD_PP_TREADWINDING`
页面映射:`PROC_BACK_GET_PRODUCTION @barcodeType=9`(扩展)
### `CPP_CURING_PRODUCTION`
来源:`ftpc_his..uda_unit` 等跨库
输出:硫化号、胎胚号、机台、左右模、标准重量、实际重量、操作人、状态
页面映射:
1. `PROC_BACK_GET_PRODUCTION @barcodeType=5`
2. `backward1`/`backward2` 硫化场景
3. `tire2` 硫化段信息
## 4.2 质量类视图
### `FQF_QUALITY_INFO`
来源:`FTPC..UDA_Unit` + 多个 QA 检测表
输出:外观/X 光/均匀性/动平衡/散斑/最终品级及人员时间
页面映射:
1. `PROC_BACK_GET_QUALITY @barcodeType=5`
2. `tire2` 质检信息模块
## 4.3 称量与混炼视图
### `ppt_Weigh`
来源:`klmens..ppt_Weigh` + `Pmt_material`
输出:`barcode, Weight_id, MATERIAL_NAME, Equip_code, Set_weight, Real_weight, Error_allow, Error_out, Weigh_time, plan_date, serial_id`
页面映射:
1. `PROC_BACK_GET_TECH @barcodeType=2`
2. `forward1` 称量信息表
3. `backward2` 称量信息表
### `ppt_MixData`
来源:`klmens..ppt_MixData` + `pmt_act` + `pmt_term`
输出:`barcode, Mix_id, term_name, Set_time, Set_temp, Set_ener, Set_power, Set_pres, Set_rota, act_name, Save_Time`
页面映射:
1. `PROC_BACK_GET_MIX @barcodeType=2`
2. `forward1` 混炼信息表
3. `backward2` 混炼信息表
### `PptCurveData`(过程内直接引用)
来源:`KLMENS.KLMENSCurve.dbo.PptCurveData`
输出:`MixingTime, MixingTemp, MixingSpeed, MixingEnergy, MixingPower, MixingPress, MixingPosition`
页面映射:
1. `PROC_BACK_GET_MIXCURVE`
2. `forward1/backward2/tire2` 曲线信息模块
## 4.4 物料与设备视图
### `SBM_MATERIAL`
统一 FTPC + KLMENS 物料主数据(编码、名称、单位、标准重量)
### `SBM_MATERIAL_MINOR_TYPE`
物料小类映射,核心用途是把 MES 物料类型映射到条码业务类型1/2/3/4/5/6
### `Pmt_material`
KLMENS 物料字典标准化映射(`MATERIAL_CODE` 等字段)
### `SBE_EQUIP`
设备字典FTPC + KLMENS
### `SSB_CLASS`, `SSB_SHIFT`, `SSB_USER`
班组、班次、用户字典,服务生产信息展示。
## 5. 存储过程与页面功能对应
## 5.1 反向追溯过程
### `PROC_BACK_GET_PRODUCTION(@barcodeType, @barcode)`
分支:
1. `1` 原材料 -> `PstStorage`
2. `2` 胶料18 位架子码)-> `Ppt_ShiftConfig`
3. `2` 胶料15/16 位车码)-> `Ppt_Lot`
4. `3` 半制品 -> `HPP_SEMIS_PRODUCTION`
5. `4` 胎胚 -> `BPM_MOLDING_PRODUCTION`
6. `5` 成品胎 -> `CPP_CURING_PRODUCTION` + `BPM_MOLDING_PRODUCTION` + WMS 表
7. `6` 小料 -> 同胶料逻辑
8. `9` 胎壳 -> `BPM_MOLDINGTK_PRODUCTION`
页面:
1. `backward1` 列表字段基础来源
2. `backward2` 生产信息模块
3. `tire2` 生产信息模块
### `PROC_BACK_GET_QUALITY(@barcodeType, @barcode)`
分支:
1. `1` 原材料 -> `Qmt_matchkhead/detl/stand/item`
2. `2` 胶料 -> `Trace_procGetQAinfo`
3. `3` 半制品 -> 锁卡/解锁记录
4. `5` 成品胎 -> `FQF_QUALITY_INFO`
页面:
1. `forward1` 质检信息
2. `backward2` 质检信息
3. `tire2` 质检信息
### `PROC_BACK_GET_TECH(@barcodeType, @barcode)`
`barcodeType=2` 返回称量记录(`ppt_Weigh`),其它类型以 return code 为主。
页面:
1. `forward1` 称量信息
2. `backward2` 称量信息
### `PROC_BACK_GET_MIX(@barcodeType, @barcode)`
`barcodeType=2` 返回混炼记录(`ppt_MixData`)。
页面:
1. `forward1` 混炼信息
2. `backward2` 混炼信息
### `PROC_BACK_GET_MIXCURVE(@barcode)`
返回混炼曲线。
页面:
1. `forward1` 曲线信息
2. `backward2` 曲线信息
3. `tire2` 曲线信息
## 5.2 正向追溯过程
### `PROC_FORWARD_GET_BARCODE(@barcodeType, @barcode)`
作用:查询当前条码节点并计算下一层数量、下一层类型(含 `10`、`20` 内部类型)。
页面:
1. `forward1` 左侧树(从当前节点向下)
2. `backward2` 左侧追溯树(演示层可复用)
3. `tire1/tire2` 树结构
### `PROC_FORWARD_GET_F_BARCODE(@barcodeType, @barcode)`
作用:向上查父条码节点,构建完整父链。
页面:
1. `forward1`/`tire2` 的“向上”追溯场景
## 6. 页面字段映射(前端字段 <-> SQL 字段)
## 6.1 `backward1.vue`(列表页)
| 前端列 | 主要 SQL 来源 | 说明 |
|---|---|---|
| `vulcanizationNo` | `CPP_CURING_PRODUCTION.TYRE_NO` | 硫化号 |
| `moldingNo` | `CPP_CURING_PRODUCTION.GREEN_TYRE_NO` | 成型号 |
| `cardNo` | `HPP_SEMIS_PRODUCTION.CARD_NO` | 半制品卡号 |
| `greenTyreNo` | `BPM_MOLDING_PRODUCTION.GREEN_TYRE_NO` | 成型号 |
| `shift/team` | `SSB_SHIFT/SSB_CLASS` 映射 | 班次班组 |
| `machineNo` | `EQUIP_ID/Equip_code` | 机台 |
## 6.2 `backward2.vue`(详情页)
### 生产信息区
`PROC_BACK_GET_PRODUCTION` 的不同分支字段组成,按 `barcodeType` 切换显示。
### 质检信息区
`PROC_BACK_GET_QUALITY` 结果映射:
`reportNo/times/item/standard/value/deviation/result`
### 称量信息区
`ppt_Weigh` 字段映射:
`carBarcode/order/materialName(machine)/setWeight/actualWeight/tolerance/actualDeviation/weighTime/trainNo/planDate`
### 混炼信息区
`ppt_MixData` 字段映射:
`carBarcode/step/condition/duration/temperature/energy/power/pressure/rpm/action/recordTime`
### 曲线信息区
`PptCurveData` 字段映射:
`mixingTime/temperature/power/energy/pressure/speed/position`
## 6.3 `forward1.vue`(正向追溯)
`backward2` 的三个明细区(质检/称量/混炼)和曲线区映射规则相同;差异是树方向与查询入口:
1. 查询输入条码 -> 定位树节点
2. 树节点切换 -> 更新生产、质检、称量、混炼、曲线五块数据
## 6.4 `tire1.vue``tire2.vue`
### `tire1.vue`
1. 用于全流程可视化(流程图)
2. 下方列表是条码关联链(可由正向追溯过程构建)
### `tire2.vue`
1. 生产信息:来自 `PROC_BACK_GET_PRODUCTION @barcodeType=5`
2. 质量信息:来自 `PROC_BACK_GET_QUALITY @barcodeType=5` -> `FQF_QUALITY_INFO`
3. 曲线信息:来自 `PROC_BACK_GET_MIXCURVE`
4. 工艺区域:可接 `GREEN_TYRENO_PARAMS_TRACE.plc_tech_json`
## 7. 关键实现约束(页面侧)
## 7.1 backward1 -> backward2 跳转约束
1. 列表行必须携带 `id/detailId/barcodeType`
2. 跳转前要校验 `detailId``detailMap` 中存在
3. 若行 `barcodeType` 与详情 `barcodeType` 不一致,以详情为准并给出提示
## 7.2 滚动容器约束
所有大表(质检/称量/混炼)统一:
1. `el-table :fit="false"`
2. 固定 `height`,保证纵向滚动
3. 外层 `table-scroll` 使用 `overflow:auto`
4. `el-table` 宽度 `width:max-content; min-width:100%`,保证横向滚动
## 7.3 曲线区域约束
1. 收起态固定 `30px` 竖条
2. 展开态固定占内容区 `50%`
3. 展开后 `nextTick + 延迟` 初始化图表
4. 节点切换时若曲线展开,必须重新渲染
## 8. 本次演示数据show/data/*.json约定
1. 所有页面均由本地 JSON 驱动
2. `backward1.json` 每行的 `detailId``backward2.json.detailMap` 一一对应
3. `forward.json` 通过 `barcodeIndex` 建立查询条码 -> 树节点的映射
4. 各页面曲线字段统一为:
`mixingTime, temperature, power, energy, pressure, speed, position`
---
如果后续接入真实后端,只需把 JSON 结构保持不变,将数据源从本地文件替换为接口返回即可。

@ -0,0 +1,228 @@
{
"shelfData": [
{
"id": "S1",
"detailId": "S1",
"barcodeType": "1",
"vulcanizationNo": "260101J83N03300091",
"planDate": "2026-01-01",
"shift": "早",
"team": "丙班",
"machineNo": "01008",
"materialSpec": "KB110-F"
}
],
"semiCardData": [
{
"id": "C1",
"detailId": "C1",
"barcodeType": "2",
"cardNo": "01130052601040025",
"toolingNo": "TL841-格栅车",
"shift": "早",
"team": "甲班",
"recorder": "阿希木·沙吾提",
"startTime": "2026-01-05 00:30:53",
"endTime": "2026-01-10 20:30:53",
"machineNo": "YC4",
"qty": 60,
"leftQty": 0
},
{
"id": "C2",
"detailId": "C2",
"barcodeType": "2",
"cardNo": "01130052601040026",
"toolingNo": "TL841-格栅车",
"shift": "早",
"team": "甲班",
"recorder": "阿希木·沙吾提",
"startTime": "2026-01-05 00:46:36",
"endTime": "2026-01-10 20:46:36",
"machineNo": "YC4",
"qty": 60,
"leftQty": 0
},
{
"id": "C3",
"detailId": "C3",
"barcodeType": "2",
"cardNo": "01130052601040027",
"toolingNo": "TL841-格栅车",
"shift": "早",
"team": "甲班",
"recorder": "阿希木·沙吾提",
"startTime": "2026-01-05 01:02:36",
"endTime": "2026-01-10 21:02:36",
"machineNo": "YC4",
"qty": 60,
"leftQty": 0
}
],
"moldingData": [
{
"id": "M1",
"detailId": "M1",
"barcodeType": "3",
"greenTyreNo": "226402001270",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-05 23:00:55",
"endTime": "",
"machineNo": "CX402"
},
{
"id": "M2",
"detailId": "M2",
"barcodeType": "3",
"greenTyreNo": "226402001271",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-05 23:04:38",
"endTime": "",
"machineNo": "CX402"
},
{
"id": "M3",
"detailId": "M3",
"barcodeType": "3",
"greenTyreNo": "226402001283",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-05 23:39:15",
"endTime": "",
"machineNo": "CX402"
},
{
"id": "M4",
"detailId": "M4",
"barcodeType": "3",
"greenTyreNo": "226402001298",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-06 00:37:50",
"endTime": "",
"machineNo": "CX402"
},
{
"id": "M5",
"detailId": "M5",
"barcodeType": "3",
"greenTyreNo": "226402001299",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-06 00:40:09",
"endTime": "",
"machineNo": "CX402"
},
{
"id": "M6",
"detailId": "M6",
"barcodeType": "3",
"greenTyreNo": "226402001290",
"materialSpec": "12R22.518PRPT67",
"shift": "夜",
"team": "乙班",
"recorder": "克一赛尔·克然木",
"startTime": "2026-01-05 23:55:46",
"endTime": "",
"machineNo": "CX402"
}
],
"curingData": [
{
"id": "V1",
"detailId": "V1",
"barcodeType": "4",
"vulcanizationNo": "0G0AB38390",
"moldingNo": "226402001270",
"materialSpec": "昆仑12R22.512PR★★PT67",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 01:08:52",
"endTime": "2026-01-06 01:56:20",
"machineNo": "LH615",
"moldPosition": "右模"
},
{
"id": "V2",
"detailId": "V2",
"barcodeType": "4",
"vulcanizationNo": "0G0AB38389",
"moldingNo": "226402001271",
"materialSpec": "昆仑12R22.512PR★★PT67",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 01:08:52",
"endTime": "2026-01-06 01:56:20",
"machineNo": "LH615",
"moldPosition": "右模"
},
{
"id": "V3",
"detailId": "V3",
"barcodeType": "4",
"vulcanizationNo": "0G0AB33400",
"moldingNo": "226402001283",
"materialSpec": "昆仑12R22.518PRKT858 N1",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 04:48:56",
"endTime": "2026-01-06 05:35:04",
"machineNo": "LH906",
"moldPosition": "右模"
},
{
"id": "V4",
"detailId": "V4",
"barcodeType": "4",
"vulcanizationNo": "0G0AB36803",
"moldingNo": "226402001298",
"materialSpec": "胡杨12R22.518PRKT127",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 02:22:40",
"endTime": "2026-01-06 03:10:02",
"machineNo": "LH614",
"moldPosition": "右模"
},
{
"id": "V5",
"detailId": "V5",
"barcodeType": "4",
"vulcanizationNo": "0G0AB36811",
"moldingNo": "226402001299",
"materialSpec": "胡杨12R22.518PRKT127",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 03:16:35",
"endTime": "2026-01-06 04:03:47",
"machineNo": "LH614",
"moldPosition": "右模"
},
{
"id": "V6",
"detailId": "V6",
"barcodeType": "4",
"vulcanizationNo": "0G0AB36806",
"moldingNo": "226402001290",
"materialSpec": "亚心12R22.518PRKT127",
"shift": "夜",
"team": "乙班",
"startTime": "2026-01-06 02:29:00",
"endTime": "2026-01-06 03:16:19",
"machineNo": "LH611",
"moldPosition": "右模"
}
]
}

@ -0,0 +1,513 @@
{
"detailMap": {
"S1": {
"barcodeType": "1",
"treeData": [
{
"id": "S1-0",
"label": "260101J83N03300091 | KB110-F",
"children": [
{ "id": "S1-1", "label": "01130052601040025 | 胎面TL841-格栅车" },
{ "id": "S1-2", "label": "226402001270 | 胎胚12R22.518PRPT67" },
{ "id": "S1-3", "label": "0G0AB38390 | 成品胎昆仑12R22.512PR★★PT67" }
]
}
],
"production": {
"barcode": "260101J83N03300091",
"productionDate": "2026-01-01",
"machine": "01008",
"shift": "早",
"team": "丙班",
"materialName": "KB110-F",
"trainNo": "91-92",
"weight": 686.0,
"operator": "马寿福"
},
"qualityData": [
{ "reportNo": "2026010100045", "times": 1, "item": "门尼粘度 ML(1+4)", "standard": "59.0-67.0", "value": "62.1", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "ML", "standard": "1.0-5.0", "value": "2.2", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "MH", "standard": "13.3-17.3", "value": "14.8", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "T30", "standard": "37.0-53.0", "value": "43", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "T90", "standard": "60.0-84.0", "value": "71", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [96, 110, 108, 106, 105, 104, 103, 104, 105, 106, 112, 104],
"power": [320, 700, 650, 880, 900, 640, 660, 220, 240, 260, 250, 30],
"energy": [0, 5, 12, 20, 30, 40, 55, 70, 88, 100, 112, 130],
"pressure": [0, 1, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 235, 220, 220, 200, 160, 150, 150, 180],
"position": [38, 38, 38, 38, 38, 30, 30, 30, 24, 16, 16, 28]
}
},
"C1": {
"barcodeType": "2",
"treeData": [
{
"id": "C1-0",
"label": "01130052601040025 | 胎面TL841-格栅车",
"children": [
{ "id": "C1-1", "label": "260101J83N03300091 | KB110-F" }
]
}
],
"production": {
"cardNo": "01130052601040025",
"shiftNo": "0113005260104010",
"shelfNo": "1110069",
"materialName": "TL841-格栅车",
"qty": 60,
"unitName": "",
"width": 0,
"orderNumber": "2601040113005011",
"weight": 0
},
"qualityData": [
{ "reportNo": "QC20260105001", "times": 1, "item": "质检状态", "standard": "合格", "value": "合格", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [95, 107, 107, 105, 105, 104, 103, 104, 104, 105, 108, 103],
"power": [310, 670, 640, 860, 900, 640, 630, 240, 155, 230, 230, 18],
"energy": [0, 5, 10, 18, 27, 38, 51, 66, 82, 93, 106, 123],
"pressure": [0, 2, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 236, 220, 220, 200, 162, 150, 150, 170],
"position": [36, 36, 36, 36, 36, 30, 30, 30, 24, 16, 16, 24]
}
},
"C2": {
"barcodeType": "2",
"treeData": [
{
"id": "C2-0",
"label": "01130052601040026 | 胎面TL841-格栅车",
"children": [
{ "id": "C2-1", "label": "260101J83N03300091 | KB110-F" }
]
}
],
"production": {
"cardNo": "01130052601040026",
"shiftNo": "0113005260104010",
"shelfNo": "1110083",
"materialName": "TL841-格栅车",
"qty": 60,
"unitName": "",
"width": 0,
"orderNumber": "2601040113005011",
"weight": 0
},
"qualityData": [
{ "reportNo": "QC20260105002", "times": 1, "item": "质检状态", "standard": "合格", "value": "合格", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "±0.2", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "±0.5", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "±0.2", "actualDeviation": "+0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "±0.2", "actualDeviation": "+0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [96, 106, 108, 104, 104, 104, 102, 103, 104, 105, 109, 103],
"power": [300, 660, 630, 850, 890, 620, 620, 240, 150, 220, 220, 20],
"energy": [0, 4, 9, 17, 26, 36, 50, 64, 81, 92, 105, 122],
"pressure": [0, 1, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 236, 220, 220, 200, 162, 150, 150, 170],
"position": [35, 35, 35, 35, 35, 30, 30, 30, 24, 16, 16, 24]
}
},
"C3": {
"barcodeType": "2",
"treeData": [
{
"id": "C3-0",
"label": "01130052601040027 | 胎面TL841-格栅车",
"children": [
{ "id": "C3-1", "label": "260101J83N03300091 | KB110-F" }
]
}
],
"production": {
"cardNo": "01130052601040027",
"shiftNo": "0113005260104010",
"shelfNo": "1110030",
"materialName": "TL841-格栅车",
"qty": 60,
"unitName": "",
"width": 0,
"orderNumber": "2601040113005011",
"weight": 0
},
"qualityData": [
{ "reportNo": "QC20260105003", "times": 1, "item": "质检状态", "standard": "合格", "value": "合格", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "±0.2", "actualDeviation": "-0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "±0.5", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "±0.2", "actualDeviation": "+0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "±0.2", "actualDeviation": "+0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [97, 108, 107, 105, 105, 104, 103, 104, 104, 106, 110, 104],
"power": [315, 680, 640, 870, 905, 635, 640, 230, 150, 240, 240, 22],
"energy": [0, 5, 11, 19, 28, 39, 52, 67, 84, 96, 108, 126],
"pressure": [0, 2, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 236, 220, 220, 200, 162, 150, 150, 172],
"position": [36, 36, 36, 36, 36, 30, 30, 30, 24, 16, 16, 25]
}
},
"M1": {
"barcodeType": "3",
"treeData": [
{
"id": "M1-0",
"label": "226402001270 | 胎胚12R22.518PRPT67",
"children": [
{ "id": "M1-1", "label": "01130052601040025 | 胎面TL841-格栅车" },
{ "id": "M1-2", "label": "0G0AB38390 | 成品胎昆仑12R22.512PR★★PT67" }
]
}
],
"production": {
"greenTyreNo": "226402001270",
"beginTime": "2026-01-05 23:00:55",
"equipId": "CX402",
"operator": "克一赛尔·克然木",
"shift": "夜",
"team": "乙班",
"materialName": "12R22.518PRPT67",
"weight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105001", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"M2": {
"barcodeType": "3",
"treeData": [
{
"id": "M2-0",
"label": "226402001271 | 胎胚12R22.518PRPT67",
"children": [
{ "id": "M2-1", "label": "01130052601040025 | 胎面TL841-格栅车" },
{ "id": "M2-2", "label": "0G0AB38389 | 成品胎昆仑12R22.512PR★★PT67" }
]
}
],
"production": {
"greenTyreNo": "226402001271",
"beginTime": "2026-01-05 23:04:38",
"equipId": "CX402",
"operator": "克一赛尔·克然木",
"shift": "夜",
"team": "乙班",
"materialName": "12R22.518PRPT67",
"weight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105002", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "±0.2", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "±0.5", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "±0.2", "actualDeviation": "+0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "±0.2", "actualDeviation": "+0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"M3": {
"barcodeType": "3",
"treeData": [
{
"id": "M3-0",
"label": "226402001283 | 胎胚12R22.518PRPT67",
"children": [
{ "id": "M3-1", "label": "01130052601040025 | 胎面TL841-格栅车" },
{ "id": "M3-2", "label": "0G0AB33400 | 成品胎昆仑12R22.518PRKT858 N1" }
]
}
],
"production": {
"greenTyreNo": "226402001283",
"beginTime": "2026-01-05 23:39:15",
"equipId": "CX402",
"operator": "克一赛尔·克然木",
"shift": "夜",
"team": "乙班",
"materialName": "12R22.518PRPT67",
"weight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105003", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "±0.2", "actualDeviation": "-0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "±0.5", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "±0.2", "actualDeviation": "+0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "±0.2", "actualDeviation": "+0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"M4": {
"barcodeType": "3",
"treeData": [{ "id": "M4-0", "label": "226402001298 | 胎胚12R22.518PRPT67", "children": [{ "id": "M4-1", "label": "0G0AB36803 | 成品胎胡杨12R22.518PRKT127" }] }],
"production": { "greenTyreNo": "226402001298", "beginTime": "2026-01-06 00:37:50", "equipId": "CX402", "operator": "克一赛尔·克然木", "shift": "夜", "team": "乙班", "materialName": "12R22.518PRPT67", "weight": 55.26 },
"qualityData": [{ "reportNo": "MO20260106004", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"M5": {
"barcodeType": "3",
"treeData": [{ "id": "M5-0", "label": "226402001299 | 胎胚12R22.518PRPT67", "children": [{ "id": "M5-1", "label": "0G0AB36811 | 成品胎胡杨12R22.518PRKT127" }] }],
"production": { "greenTyreNo": "226402001299", "beginTime": "2026-01-06 00:40:09", "equipId": "CX402", "operator": "克一赛尔·克然木", "shift": "夜", "team": "乙班", "materialName": "12R22.518PRPT67", "weight": 55.26 },
"qualityData": [{ "reportNo": "MO20260106005", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "±0.2", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "±0.5", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "±0.2", "actualDeviation": "+0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "±0.2", "actualDeviation": "+0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"M6": {
"barcodeType": "3",
"treeData": [{ "id": "M6-0", "label": "226402001290 | 胎胚12R22.518PRPT67", "children": [{ "id": "M6-1", "label": "0G0AB36806 | 成品胎亚心12R22.518PRKT127" }] }],
"production": { "greenTyreNo": "226402001290", "beginTime": "2026-01-05 23:55:46", "equipId": "CX402", "operator": "克一赛尔·克然木", "shift": "夜", "team": "乙班", "materialName": "12R22.518PRPT67", "weight": 55.26 },
"qualityData": [{ "reportNo": "MO20260105006", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "±0.2", "actualDeviation": "-0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "±0.5", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "±0.2", "actualDeviation": "+0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "±0.2", "actualDeviation": "+0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0.0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0.0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0.0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0.0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0.0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V1": {
"barcodeType": "4",
"treeData": [
{
"id": "V1-0",
"label": "0G0AB38390 | 成品胎昆仑12R22.512PR★★PT67",
"children": [
{ "id": "V1-1", "label": "226402001270 | 胎胚12R22.518PRPT67" },
{ "id": "V1-2", "label": "01130052601040025 | 胎面TL841-格栅车" },
{ "id": "V1-3", "label": "260101J83N03300091 | KB110-F" }
]
}
],
"production": {
"barcode": "0G0AB38390",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.512PR★★PT67",
"machine": "LH615",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.21
},
"qualityData": [
{ "reportNo": "FQ20260106001", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106001", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 02:32:44", "result": "合格" },
{ "reportNo": "FQ20260106001", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 02:33:55", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB38390", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 01:56:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V2": {
"barcodeType": "4",
"treeData": [{ "id": "V2-0", "label": "0G0AB38389 | 成品胎昆仑12R22.512PR★★PT67", "children": [{ "id": "V2-1", "label": "226402001271 | 胎胚12R22.518PRPT67" }] }],
"production": { "barcode": "0G0AB38389", "productionDate": "2026-01-06", "materialName": "昆仑12R22.512PR★★PT67", "machine": "LH615", "shift": "夜", "team": "乙班", "trainNo": "", "setWeight": 55.22, "actualWeight": 55.12 },
"qualityData": [
{ "reportNo": "FQ20260106002", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106002", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "姜浩 2026-01-06 03:15:23", "result": "合格" },
{ "reportNo": "FQ20260106002", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 03:51:30", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "±0.2", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "±0.5", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "±0.2", "actualDeviation": "+0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "±0.2", "actualDeviation": "+0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [{ "carBarcode": "0G0AB38389", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 01:56:20" }],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V3": {
"barcodeType": "4",
"treeData": [{ "id": "V3-0", "label": "0G0AB33400 | 成品胎昆仑12R22.518PRKT858 N1", "children": [{ "id": "V3-1", "label": "226402001283 | 胎胚12R22.518PRPT67" }] }],
"production": { "barcode": "0G0AB33400", "productionDate": "2026-01-06", "materialName": "昆仑12R22.518PRKT858 N1", "machine": "LH906", "shift": "夜", "team": "乙班", "trainNo": "", "setWeight": 55.22, "actualWeight": 55.09 },
"qualityData": [
{ "reportNo": "FQ20260106003", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 06:41:21", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 06:55:47", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "动平衡品级", "standard": "A", "value": "A", "deviation": "党旭文", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "±0.2", "actualDeviation": "-0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "±0.5", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "±0.2", "actualDeviation": "+0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "±0.2", "actualDeviation": "+0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [{ "carBarcode": "0G0AB33400", "step": 1, "condition": "硫化", "duration": "00:46", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 05:35:04" }],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V4": {
"barcodeType": "4",
"treeData": [{ "id": "V4-0", "label": "0G0AB36803 | 成品胎胡杨12R22.518PRKT127", "children": [{ "id": "V4-1", "label": "226402001298 | 胎胚12R22.518PRPT67" }] }],
"production": { "barcode": "0G0AB36803", "productionDate": "2026-01-06", "materialName": "胡杨12R22.518PRKT127", "machine": "LH614", "shift": "夜", "team": "乙班", "trainNo": "", "setWeight": 55.22, "actualWeight": 55.2 },
"qualityData": [
{ "reportNo": "FQ20260106004", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106004", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:27:19", "result": "合格" },
{ "reportNo": "FQ20260106004", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:29:16", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "±0.2", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "±0.5", "actualDeviation": "+0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "±0.2", "actualDeviation": "+0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "±0.2", "actualDeviation": "+0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [{ "carBarcode": "0G0AB36803", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 03:10:02" }],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V5": {
"barcodeType": "4",
"treeData": [{ "id": "V5-0", "label": "0G0AB36811 | 成品胎胡杨12R22.518PRKT127", "children": [{ "id": "V5-1", "label": "226402001299 | 胎胚12R22.518PRPT67" }] }],
"production": { "barcode": "0G0AB36811", "productionDate": "2026-01-06", "materialName": "胡杨12R22.518PRKT127", "machine": "LH614", "shift": "夜", "team": "乙班", "trainNo": "", "setWeight": 55.22, "actualWeight": 55.16 },
"qualityData": [
{ "reportNo": "FQ20260106005", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106005", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:06:00", "result": "合格" },
{ "reportNo": "FQ20260106005", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:30:19", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "±0.2", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "±0.5", "actualDeviation": "+0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "±0.2", "actualDeviation": "+0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "±0.2", "actualDeviation": "+0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [{ "carBarcode": "0G0AB36811", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 04:03:47" }],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"V6": {
"barcodeType": "4",
"treeData": [{ "id": "V6-0", "label": "0G0AB36806 | 成品胎亚心12R22.518PRKT127", "children": [{ "id": "V6-1", "label": "226402001290 | 胎胚12R22.518PRPT67" }] }],
"production": { "barcode": "0G0AB36806", "productionDate": "2026-01-06", "materialName": "亚心12R22.518PRKT127", "machine": "LH611", "shift": "夜", "team": "乙班", "trainNo": "", "setWeight": 55.22, "actualWeight": 55.14 },
"qualityData": [
{ "reportNo": "FQ20260106006", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106006", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:29:40", "result": "合格" },
{ "reportNo": "FQ20260106006", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:31:27", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialName": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "±0.2", "actualDeviation": "-0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialName": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "±0.5", "actualDeviation": "+0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialName": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "±0.2", "actualDeviation": "+0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialName": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "±0.2", "actualDeviation": "+0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [{ "carBarcode": "0G0AB36806", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 03:16:19" }],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
}
}
}

@ -0,0 +1,893 @@
{
"defaultBarcodeType": "2",
"defaultBarcode": "260101J83N03300091",
"defaultNodeId": "1",
"barcodeIndex": {
"260101J83N03300091": "1",
"01130052601040025": "1-1",
"226402001270": "1-1-1",
"0G0AB38390": "1-1-1-1",
"226402001271": "1-1-2",
"0G0AB38389": "1-1-2-1",
"226402001283": "1-1-3",
"0G0AB33400": "1-1-3-1",
"226402001298": "1-1-4",
"0G0AB36803": "1-1-4-1",
"226402001299": "1-1-5",
"0G0AB36811": "1-1-5-1",
"226402001290": "1-1-6",
"0G0AB36806": "1-1-6-1",
"226402001269": "1-1-7",
"0G0AB38382": "1-1-7-1",
"226402001264": "1-1-8",
"0G0AB57339": "1-1-8-1",
"226402001300": "1-1-9",
"0G0AB36821": "1-1-9-1",
"226402001392": "1-1-10",
"0G0AB36871": "1-1-10-1",
"226402001395": "1-1-11",
"0G0AB36858": "1-1-11-1",
"226402001435": "1-1-12",
"0G0AC56485": "1-1-12-1"
},
"treeData": [
{
"id": "1",
"label": "260101J83N03300091 | KB110-F",
"children": [
{
"id": "1-1",
"label": "01130052601040025 | 胎面TL841-格栅车",
"children": [
{ "id": "1-1-1", "label": "226402001270 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-1-1", "label": "0G0AB38390 | 成品胎昆仑12R22.512PR★★PT67" }
]},
{ "id": "1-1-2", "label": "226402001271 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-2-1", "label": "0G0AB38389 | 成品胎昆仑12R22.512PR★★PT67" }
]},
{ "id": "1-1-3", "label": "226402001283 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-3-1", "label": "0G0AB33400 | 成品胎昆仑12R22.518PRKT858 N1" }
]},
{ "id": "1-1-4", "label": "226402001298 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-4-1", "label": "0G0AB36803 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-5", "label": "226402001299 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-5-1", "label": "0G0AB36811 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-6", "label": "226402001290 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-6-1", "label": "0G0AB36806 | 成品胎亚心12R22.518PRKT127" }
]},
{ "id": "1-1-7", "label": "226402001269 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-7-1", "label": "0G0AB38382 | 成品胎昆仑12R22.512PR★★PT67" }
]},
{ "id": "1-1-8", "label": "226402001264 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-8-1", "label": "0G0AB57339 | 成品胎亚克西12R22.518PRKT127" }
]},
{ "id": "1-1-9", "label": "226402001300 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-9-1", "label": "0G0AB36821 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-10", "label": "226402001392 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-10-1", "label": "0G0AB36871 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-11", "label": "226402001395 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-11-1", "label": "0G0AB36858 | 成品胎亚心12R22.518PRKT127" }
]},
{ "id": "1-1-12", "label": "226402001435 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-12-1", "label": "0G0AC56485 | 成品胎昆仑12R22.518PRKT858 N1" }
]}
]
}
]
}
],
"detailMap": {
"1": {
"barcodeType": "2",
"productionInfo": {
"barcode": "260101J83N03300091",
"productionDate": "2026-01-01",
"materialName": "KB110-F",
"machine": "01008",
"shift": "早",
"team": "丙班",
"trainNo": "91-92",
"setWeight": 343.0,
"actualWeight": 686.0
},
"qualityData": [
{ "reportNo": "2026010100045", "times": 1, "item": "门尼粘度 ML(1+4)", "standard": "59.0-67.0", "value": "62.1", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "ML", "standard": "1.0-5.0", "value": "2.2", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "MH", "standard": "13.3-17.3", "value": "14.8", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "T30", "standard": "37.0-53.0", "value": "43", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "T60", "standard": "46.0-66.0", "value": "53", "deviation": "正常", "result": "合格" },
{ "reportNo": "2026010100045", "times": 1, "item": "T90", "standard": "60.0-84.0", "value": "71", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" },
{ "carBarcode": "260101J83N03300091", "step": 6, "condition": "压上顶栓", "duration": "00:05", "temperature": 102.4, "energy": 11.1, "power": 370, "pressure": 0, "rpm": 35, "action": "压上顶栓", "recordTime": "2026-01-01 17:21:40" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [96, 110, 108, 106, 105, 104, 103, 104, 105, 106, 112, 104],
"power": [320, 700, 650, 880, 900, 640, 660, 220, 240, 260, 250, 30],
"energy": [0, 5, 12, 20, 30, 40, 55, 70, 88, 100, 112, 130],
"pressure": [0, 1, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 235, 220, 220, 200, 160, 150, 150, 180],
"position": [38, 38, 38, 38, 38, 30, 30, 30, 24, 16, 16, 28]
}
},
"1-1": {
"barcodeType": "3",
"productionInfo": {
"barcode": "01130052601040025",
"productionDate": "2026-01-04",
"materialName": "TL841-格栅车",
"machine": "YC4",
"shift": "早",
"team": "甲班",
"trainNo": "60",
"setWeight": 0,
"actualWeight": 0
},
"qualityData": [
{ "reportNo": "QC202601050001", "times": 1, "item": "质检状态", "standard": "合格", "value": "合格", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [95, 107, 107, 105, 105, 104, 103, 104, 104, 105, 108, 103],
"power": [310, 670, 640, 860, 900, 640, 630, 240, 155, 230, 230, 18],
"energy": [0, 5, 10, 18, 27, 38, 51, 66, 82, 93, 106, 123],
"pressure": [0, 2, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 236, 220, 220, 200, 162, 150, 150, 170],
"position": [36, 36, 36, 36, 36, 30, 30, 30, 24, 16, 16, 24]
}
},
"1-1-1": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001270",
"productionDate": "2026-01-05 23:00:55",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105001", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-1-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB38390",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.512PR★★PT67",
"machine": "LH615",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.21
},
"qualityData": [
{ "reportNo": "FQ20260106001", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106001", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 02:32:44", "result": "合格" },
{ "reportNo": "FQ20260106001", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 02:33:55", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB38390", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 01:56:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-2": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001271",
"productionDate": "2026-01-05 23:04:38",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105002", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-2-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB38389",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.512PR★★PT67",
"machine": "LH615",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.12
},
"qualityData": [
{ "reportNo": "FQ20260106002", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106002", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "姜浩 2026-01-06 03:15:23", "result": "合格" },
{ "reportNo": "FQ20260106002", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 03:51:30", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB38389", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 01:56:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-3": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001283",
"productionDate": "2026-01-05 23:39:15",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105003", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-3-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB33400",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.518PRKT858 N1",
"machine": "LH906",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.09
},
"qualityData": [
{ "reportNo": "FQ20260106003", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 06:41:21", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 06:55:47", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "动平衡品级", "standard": "A", "value": "A", "deviation": "党旭文", "result": "合格" },
{ "reportNo": "FQ20260106003", "times": 1, "item": "均匀性品级", "standard": "B", "value": "B", "deviation": "", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB33400", "step": 1, "condition": "硫化", "duration": "00:46", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 05:35:04" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-4": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001298",
"productionDate": "2026-01-06 00:37:50",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106004", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-4-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36803",
"productionDate": "2026-01-06",
"materialName": "胡杨12R22.518PRKT127",
"machine": "LH614",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.2
},
"qualityData": [
{ "reportNo": "FQ20260106004", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106004", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:27:19", "result": "合格" },
{ "reportNo": "FQ20260106004", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:29:16", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36803", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 03:10:02" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-5": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001299",
"productionDate": "2026-01-06 00:40:09",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106005", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-5-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36811",
"productionDate": "2026-01-06",
"materialName": "胡杨12R22.518PRKT127",
"machine": "LH614",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.16
},
"qualityData": [
{ "reportNo": "FQ20260106005", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106005", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:06:00", "result": "合格" },
{ "reportNo": "FQ20260106005", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:30:19", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36811", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 04:03:47" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-6": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001290",
"productionDate": "2026-01-05 23:55:46",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105006", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-6-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36806",
"productionDate": "2026-01-06",
"materialName": "亚心12R22.518PRKT127",
"machine": "LH611",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.14
},
"qualityData": [
{ "reportNo": "FQ20260106006", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106006", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 05:29:40", "result": "合格" },
{ "reportNo": "FQ20260106006", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:31:27", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36806", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 03:16:19" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-7": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001269",
"productionDate": "2026-01-05 22:56:33",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105007", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-7-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB38382",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.512PR★★PT67",
"machine": "LH615",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.25
},
"qualityData": [
{ "reportNo": "FQ20260106007", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106007", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 02:27:54", "result": "合格" },
{ "reportNo": "FQ20260106007", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "候甜甜 2026-01-06 02:29:00", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB38382", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 00:57:29" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-8": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001264",
"productionDate": "2026-01-05 22:42:46",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260105008", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-8-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB57339",
"productionDate": "2026-01-06",
"materialName": "亚克西12R22.518PRKT127",
"machine": "LH115",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.23
},
"qualityData": [
{ "reportNo": "FQ20260106008", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106008", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "聂晗臻 2026-01-06 06:46:01", "result": "合格" },
{ "reportNo": "FQ20260106008", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 06:47:09", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB57339", "step": 1, "condition": "硫化", "duration": "01:44", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 04:04:46" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-9": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001300",
"productionDate": "2026-01-06 00:42:42",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106009", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-9-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36821",
"productionDate": "2026-01-06",
"materialName": "胡杨12R22.518PRKT127",
"machine": "LH614",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 55.14
},
"qualityData": [
{ "reportNo": "FQ20260106009", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106009", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "姜浩 2026-01-06 05:57:30", "result": "合格" },
{ "reportNo": "FQ20260106009", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 05:58:27", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36821", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 04:57:44" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-10": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001392",
"productionDate": "2026-01-06 05:52:46",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106010", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.7, "energy": 19.6, "power": 13, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:20:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.6, "energy": 0.0, "power": 322, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:20:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.6, "energy": 0.7, "power": 379, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:20:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.3, "energy": 1.1, "power": 441, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:21:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.8, "energy": 10.0, "power": 902, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:21:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-10-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36871",
"productionDate": "2026-01-06",
"materialName": "胡杨12R22.518PRKT127",
"machine": "LH614",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 54.62
},
"qualityData": [
{ "reportNo": "FQ20260106010", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106010", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "阿地里·玉斯音 2026-01-06 10:58:42", "result": "合格" },
{ "reportNo": "FQ20260106010", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "李腊梅 2026-01-06 11:01:41", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.9, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:19:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.2, "tolerance": "0.5", "actualDeviation": "0.2", "weighTime": "2026-01-01 17:19:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.9, "tolerance": "0.2", "actualDeviation": "0.12", "weighTime": "2026-01-01 17:19:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.9, "tolerance": "0.2", "actualDeviation": "0.091", "weighTime": "2026-01-01 17:19:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36871", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 10:24:15" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-11": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001395",
"productionDate": "2026-01-06 06:08:30",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106011", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 101.2, "energy": 20.1, "power": 15, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:26:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 101.0, "energy": 0.0, "power": 318, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:26:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 109.1, "energy": 0.8, "power": 385, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:26:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 107.8, "energy": 1.2, "power": 445, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:27:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 105.3, "energy": 10.5, "power": 910, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:27:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-11-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AB36858",
"productionDate": "2026-01-06",
"materialName": "亚心12R22.518PRKT127",
"machine": "LH611",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 54.76
},
"qualityData": [
{ "reportNo": "FQ20260106011", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106011", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "张昕宇 2026-01-06 09:19:19", "result": "合格" },
{ "reportNo": "FQ20260106011", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "周明宣 2026-01-06 09:21:10", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 300.1, "tolerance": "0.2", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:25:03", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.1, "tolerance": "0.5", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:25:18", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.85, "tolerance": "0.2", "actualDeviation": "0.07", "weighTime": "2026-01-01 17:25:27", "trainNo": "92", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.85, "tolerance": "0.2", "actualDeviation": "0.041", "weighTime": "2026-01-01 17:25:39", "trainNo": "92", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AB36858", "step": 1, "condition": "硫化", "duration": "00:47", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 08:45:31" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-12": {
"barcodeType": "4",
"productionInfo": {
"barcode": "226402001435",
"productionDate": "2026-01-06 08:37:05",
"materialName": "12R22.518PRPT67",
"machine": "CX402",
"shift": "夜",
"team": "乙班",
"trainNo": "",
"setWeight": 55.26,
"actualWeight": 55.26
},
"qualityData": [
{ "reportNo": "MO20260106012", "times": 1, "item": "成型外观", "standard": "无缺陷", "value": "正常", "deviation": "正常", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "260101J83N03300091", "step": 1, "condition": "加胶料", "duration": "00:12", "temperature": 100.3, "energy": 19.2, "power": 12, "pressure": 0, "rpm": 29, "action": "加胶料", "recordTime": "2026-01-01 17:32:00" },
{ "carBarcode": "260101J83N03300091", "step": 2, "condition": "保持", "duration": "00:09", "temperature": 100.2, "energy": 0.0, "power": 325, "pressure": 0, "rpm": 38, "action": "保持", "recordTime": "2026-01-01 17:32:20" },
{ "carBarcode": "260101J83N03300091", "step": 3, "condition": "压上顶栓", "duration": "00:08", "temperature": 108.2, "energy": 0.6, "power": 375, "pressure": 0, "rpm": 39, "action": "压上顶栓", "recordTime": "2026-01-01 17:32:40" },
{ "carBarcode": "260101J83N03300091", "step": 4, "condition": "保持", "duration": "00:06", "temperature": 106.9, "energy": 1.0, "power": 438, "pressure": 0, "rpm": 39, "action": "保持", "recordTime": "2026-01-01 17:33:00" },
{ "carBarcode": "260101J83N03300091", "step": 5, "condition": "升上顶栓", "duration": "00:05", "temperature": 104.5, "energy": 9.8, "power": 895, "pressure": 0, "rpm": 39, "action": "升上顶栓", "recordTime": "2026-01-01 17:33:20" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
},
"1-1-12-1": {
"barcodeType": "5",
"productionInfo": {
"barcode": "0G0AC56485",
"productionDate": "2026-01-06",
"materialName": "昆仑12R22.518PRKT858 N1",
"machine": "LH906",
"shift": "早",
"team": "丙班",
"trainNo": "",
"setWeight": 55.22,
"actualWeight": 54.79
},
"qualityData": [
{ "reportNo": "FQ20260106012", "times": 1, "item": "最终品级", "standard": "合格品", "value": "合格品", "deviation": "正常", "result": "合格" },
{ "reportNo": "FQ20260106012", "times": 1, "item": "外观品级", "standard": "合格品", "value": "合格品", "deviation": "贾玉明 2026-01-06 18:43:10", "result": "合格" },
{ "reportNo": "FQ20260106012", "times": 1, "item": "X光品级", "standard": "合格品", "value": "合格品", "deviation": "李腊梅 2026-01-06 18:48:41", "result": "合格" },
{ "reportNo": "FQ20260106012", "times": 1, "item": "动平衡品级", "standard": "A", "value": "A", "deviation": "党旭文", "result": "合格" },
{ "reportNo": "FQ20260106012", "times": 1, "item": "均匀性品级", "standard": "B", "value": "B", "deviation": "", "result": "合格" }
],
"weighingData": [
{ "carBarcode": "260101J83N03300091", "order": 1, "materialCode": "M1KB110", "machine": "01008", "setWeight": 299.8, "actualWeight": 299.7, "tolerance": "0.2", "actualDeviation": "0.1", "weighTime": "2026-01-01 17:31:03", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 2, "materialCode": "KB110-H", "machine": "01008", "setWeight": 35.0, "actualWeight": 35.3, "tolerance": "0.5", "actualDeviation": "0.3", "weighTime": "2026-01-01 17:31:18", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 3, "materialCode": "人工 KB110-F-ML8", "machine": "01008", "setWeight": 5.78, "actualWeight": 5.82, "tolerance": "0.2", "actualDeviation": "0.04", "weighTime": "2026-01-01 17:31:27", "trainNo": "91", "planDate": "2026-01-01" },
{ "carBarcode": "260101J83N03300091", "order": 4, "materialCode": "自动 KB110-F-ML8", "machine": "01008", "setWeight": 3.809, "actualWeight": 3.88, "tolerance": "0.2", "actualDeviation": "0.071", "weighTime": "2026-01-01 17:31:39", "trainNo": "91", "planDate": "2026-01-01" }
],
"mixingProcessData": [
{ "carBarcode": "0G0AC56485", "step": 1, "condition": "硫化", "duration": "00:46", "temperature": 165.0, "energy": 0.0, "power": 0.0, "pressure": 2.1, "rpm": 0, "action": "完成", "recordTime": "2026-01-06 17:23:33" }
],
"curveData": { "mixingTime": [], "temperature": [], "power": [], "energy": [], "pressure": [], "speed": [], "position": [] }
}
}
}

@ -0,0 +1,40 @@
{
"tireNo": "0G0AB38390",
"tireInfoList": [
{ "label": "成品胎(硫化号)", "value": "0G0AB38390" },
{ "label": "成品物料", "value": "昆仑12R22.512PR★★PT67" },
{ "label": "胎胚(成型号)", "value": "226402001270" },
{ "label": "胎胚物料", "value": "12R22.518PRPT67" },
{ "label": "半制品(流转卡号)", "value": "01130052601040025" },
{ "label": "半制品物料", "value": "TL841-格栅车" },
{ "label": "胶料(架子号)", "value": "260101J83N03300091" },
{ "label": "胶料物料", "value": "KB110-F" },
{ "label": "硫化机台", "value": "LH615" },
{ "label": "成型机台", "value": "CX402" },
{ "label": "硫化操作人", "value": "马小平" },
{ "label": "成型操作人", "value": "克一赛尔·克然木" }
],
"treeData": [
{
"id": "T1",
"label": "轮胎条码: 0G0AB38390",
"children": [
{
"id": "T1-1",
"label": "胎胚条码: 226402001270",
"children": [
{ "id": "T1-1-1", "label": "KB110-F 胎面 01130052601040025" },
{ "id": "T1-1-2", "label": "N465A1005A 内衬层 260101N4600125" },
{ "id": "T1-1-3", "label": "RW032 胎侧 260101RW00010360" },
{ "id": "T1-1-4", "label": "K2A182K26 2#带束层 260101K2A00010195" },
{ "id": "T1-1-5", "label": "K1A190A26 1#带束层 260101K1A00010224" },
{ "id": "T1-1-6", "label": "E1D62090 1#胎体帘布 260101E1D00010087" },
{ "id": "T1-1-7", "label": "E2D50090 2#胎体帘布 260101E2D00010062" },
{ "id": "T1-1-8", "label": "RS001 冠带条 260101RS000010068" },
{ "id": "T1-1-9", "label": "GA4106D25AA 胎圈 260101GA400070003" }
]
}
]
}
]
}

@ -0,0 +1,83 @@
{
"treeData": [
{
"id": "1",
"label": "260101J83N03300091 | KB110-F",
"children": [
{
"id": "1-1",
"label": "01130052601040025 | 胎面TL841-格栅车",
"children": [
{ "id": "1-1-1", "label": "226402001270 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-1-1", "label": "0G0AB38390 | 成品胎昆仑12R22.512PR★★PT67" }
]},
{ "id": "1-1-2", "label": "226402001271 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-2-1", "label": "0G0AB38389 | 成品胎昆仑12R22.512PR★★PT67" }
]},
{ "id": "1-1-3", "label": "226402001283 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-3-1", "label": "0G0AB33400 | 成品胎昆仑12R22.518PRKT858 N1" }
]},
{ "id": "1-1-4", "label": "226402001298 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-4-1", "label": "0G0AB36803 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-5", "label": "226402001299 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-5-1", "label": "0G0AB36811 | 成品胎胡杨12R22.518PRKT127" }
]},
{ "id": "1-1-6", "label": "226402001290 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-6-1", "label": "0G0AB36806 | 成品胎亚心12R22.518PRKT127" }
]},
{ "id": "1-1-7", "label": "226402001269 | 胎胚12R22.518PRPT67", "children": [
{ "id": "1-1-7-1", "label": "0G0AB38382 | 成品胎昆仑12R22.512PR★★PT67" }
]}
]
}
]
}
],
"productionInfo": {
"greenTyreNo": "226402001270",
"tyreNo": "0G0AB38390",
"moldingTime": "2026-01-05 23:00:55",
"moldingMachine": "CX402",
"moldingOperator": "克一赛尔·克然木",
"moldingShift": "夜",
"moldingTeam": "乙班",
"curingStartTime": "2026-01-06 01:08:52",
"curingEndTime": "2026-01-06 01:56:20",
"curingOperator": "马小平",
"curingShift": "夜",
"curingTeam": "乙班",
"actualWeight": 55.21,
"standardWeight": 55.22,
"materialName": "昆仑12R22.512PR★★PT67",
"curingMachine": "LH615",
"moldPosition": "右模",
"tireStatus": "已入库",
"storageTime": "2026-01-06 02:36:46"
},
"qualityInfo": {
"finalGrade": "合格品",
"faceGrade": "合格品",
"faceOper": "张昕宇",
"faceDatetime": "2026-01-06 02:32:44",
"xrayGrade": "合格品",
"xrayOper": "候甜甜",
"xrayDatetime": "2026-01-06 02:33:55",
"dbGrade": "",
"dbOper": "",
"dbDatetime": "",
"ufGrade": "",
"ufOper": "",
"qpGrade": "",
"qpOper": ""
},
"curveData": {
"mixingTime": [2, 17, 33, 48, 64, 79, 95, 110, 126, 141, 157, 172],
"temperature": [96, 110, 108, 106, 105, 104, 103, 104, 105, 106, 112, 104],
"power": [320, 700, 650, 880, 900, 640, 660, 220, 240, 260, 250, 30],
"energy": [0, 5, 12, 20, 30, 40, 55, 70, 88, 100, 112, 130],
"pressure": [0, 1, 2, 3, 3, 2, 2, 0, 0, 3, 3, 0],
"speed": [240, 240, 238, 238, 235, 220, 220, 200, 160, 150, 150, 180],
"position": [38, 38, 38, 38, 38, 30, 30, 30, 24, 16, 16, 28]
}
}

@ -0,0 +1,7 @@
<template>
<MixTraceForward />
</template>
<script setup lang="ts" name="MixTraceForwardNew">
import MixTraceForward from './forward1.vue';
</script>

@ -0,0 +1,644 @@
<template>
<div class="forward-page">
<div class="top-bar">
<div class="query-form">
<el-select v-model="barcodeType" size="small" style="width: 120px">
<el-option label="原材料" value="1" />
<el-option label="胶料" value="2" />
<el-option label="半制品" value="3" />
<el-option label="胎胚" value="4" />
<el-option label="成品胎" value="5" />
<el-option label="小料" value="6" />
</el-select>
<el-input v-model="barcodeNo" size="small" style="width: 220px" placeholder="请输入条码号" clearable />
<el-button type="primary" size="small" icon="Search" @click="handleSearch"></el-button>
</div>
</div>
<div class="forward-container">
<el-card class="tree-card" shadow="never" v-loading="loading">
<template #header>
<div class="card-header">
<span class="header-title">批次列表</span>
<el-input v-model="searchText" placeholder="筛选" size="small" clearable style="width: 130px" />
</div>
</template>
<el-tree
ref="treeRef"
:data="treeData"
:props="treeProps"
node-key="id"
default-expand-all
:expand-on-click-node="false"
highlight-current
:filter-node-method="filterTreeNode"
@node-click="handleNodeClick"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<el-icon v-if="!data.children"><Document /></el-icon>
<el-icon v-else><Folder /></el-icon>
<span class="label-text">{{ node.label }}</span>
</span>
</template>
</el-tree>
</el-card>
<div class="content-area">
<div class="main-area">
<div class="top-section">
<el-card class="production-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">生产信息</span></div>
</template>
<el-descriptions :column="1" border size="small" class="production-desc">
<el-descriptions-item label="条码">{{ productionInfo.barcode }}</el-descriptions-item>
<el-descriptions-item label="生产日期">{{ productionInfo.productionDate }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ productionInfo.materialName }}</el-descriptions-item>
<el-descriptions-item label="机台">{{ productionInfo.machine }}</el-descriptions-item>
<el-descriptions-item label="班次">{{ productionInfo.shift }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ productionInfo.team }}</el-descriptions-item>
<el-descriptions-item label="车次">{{ productionInfo.trainNo }}</el-descriptions-item>
<el-descriptions-item label="设定重量">{{ productionInfo.setWeight }}</el-descriptions-item>
<el-descriptions-item label="实际重量">{{ productionInfo.actualWeight }}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="quality-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">质检信息</span></div>
</template>
<div class="table-scroll">
<el-table :data="qualityData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="reportNo" label="报告单号" min-width="130" align="center" show-overflow-tooltip />
<el-table-column prop="times" label="检验次数" min-width="90" align="center" />
<el-table-column prop="item" label="检验项目" min-width="140" align="center" show-overflow-tooltip />
<el-table-column prop="standard" label="标准" min-width="130" align="center" show-overflow-tooltip />
<el-table-column prop="value" label="检验值" min-width="90" align="center" show-overflow-tooltip />
<el-table-column prop="deviation" label="偏差" min-width="90" align="center" />
<el-table-column prop="result" label="结果" min-width="90" align="center" />
</el-table>
</div>
</el-card>
</div>
<el-card v-if="selectedNodeLevel <= 2" class="weighing-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">称量信息</span></div>
</template>
<div class="table-scroll">
<el-table :data="weighingData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="carBarcode" label="车条码" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="order" label="称量次序" min-width="90" align="center" />
<el-table-column label="物料编码" min-width="170" align="center" show-overflow-tooltip>
<template #default="{ row }">{{ row.materialCode || row.materialName || '-' }}</template>
</el-table-column>
<el-table-column prop="machine" label="机台" min-width="100" align="center" />
<el-table-column prop="setWeight" label="设定重量" min-width="100" align="right" />
<el-table-column prop="actualWeight" label="实际重量" min-width="100" align="right" />
<el-table-column prop="tolerance" label="允许误差" min-width="100" align="center" />
<el-table-column prop="actualDeviation" label="实际误差" min-width="100" align="center" />
<el-table-column prop="weighTime" label="称量时间" min-width="170" align="center" show-overflow-tooltip />
<el-table-column prop="trainNo" label="车次" min-width="90" align="center" />
<el-table-column prop="planDate" label="计划日期" min-width="120" align="center" />
</el-table>
</div>
</el-card>
<el-card v-if="selectedNodeLevel <= 2" class="mixing-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">混炼信息</span></div>
</template>
<div class="table-scroll">
<el-table :data="mixingProcessData" border stripe size="small" :fit="false" :scrollbar-always-on="true" height="240">
<el-table-column prop="carBarcode" label="车条码" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="step" label="混炼步骤" min-width="90" align="center" />
<el-table-column prop="condition" label="条件" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="duration" label="时间" min-width="90" align="center" />
<el-table-column prop="temperature" label="温度(℃)" min-width="100" align="right" />
<el-table-column prop="energy" label="能量" min-width="90" align="right" />
<el-table-column prop="power" label="功率" min-width="90" align="right" />
<el-table-column prop="pressure" label="压力" min-width="90" align="right" />
<el-table-column prop="rpm" label="转速" min-width="90" align="right" />
<el-table-column prop="action" label="动作" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="recordTime" label="保存时间" min-width="180" align="center" show-overflow-tooltip />
</el-table>
</div>
</el-card>
</div>
<div class="curve-area" :class="{ collapsed: curveCollapsed }">
<div class="curve-toggle" @click="toggleCurve">
<span class="toggle-text">曲线信息</span>
<el-icon class="toggle-icon" :class="{ rotated: !curveCollapsed }"><ArrowRight /></el-icon>
</div>
<el-card class="curve-card" shadow="never" v-show="!curveCollapsed">
<template #header>
<div class="blue-header">
<span class="header-title">曲线信息</span>
<div class="legend-group">
<span class="legend-item"><i class="legend-dot" style="background: #ff4d4f"></i>温度</span>
<span class="legend-item"><i class="legend-dot" style="background: #40a9ff"></i>功率</span>
<span class="legend-item"><i class="legend-dot" style="background: #36cfc9"></i>能量</span>
<span class="legend-item"><i class="legend-dot" style="background: #95de64"></i>压力</span>
<span class="legend-item"><i class="legend-dot" style="background: #f7d13d"></i>转速</span>
<span class="legend-item"><i class="legend-dot" style="background: #ffa07a"></i>上顶栓</span>
</div>
<el-button size="small" text type="primary" style="color: #fff" @click="toggleCurve"></el-button>
</div>
</template>
<div ref="chartRef" class="chart-container"></div>
</el-card>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts" name="MixTraceForward">
import { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue';
import { useRoute } from 'vue-router';
import { ArrowRight, Document, Folder } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import * as echarts from 'echarts';
import forwardData from './data/forward.json';
const source = forwardData as any;
const detailMap = source.detailMap || {};
const detailKeys: string[] = Object.keys(detailMap);
const barcodeIndex = source.barcodeIndex || {};
const treeProps = { children: 'children', label: 'label' };
const treeData = ref<any[]>(source.treeData || []);
const treeRef = ref();
const route = useRoute();
const loading = ref(false);
const searchText = ref('');
const barcodeType = ref(String(route.query.barcodeType || source.defaultBarcodeType || '2'));
const barcodeNo = ref(String(route.query.barcodeNo || source.defaultBarcode || ''));
const selectedNodeId = ref<string>('');
/** 当前选中节点的树层级1-2级显示全部3级+只显示生产和质检 */
const selectedNodeLevel = ref<number>(1);
const curveCollapsed = ref(true);
const chartRef = ref<HTMLDivElement>();
let chartInstance: echarts.ECharts | null = null;
const currentDetail = computed(() => {
const id = selectedNodeId.value || detailKeys[0];
return detailMap[id] || {};
});
const productionInfo = computed(() => currentDetail.value.productionInfo || {});
const qualityData = computed(() => currentDetail.value.qualityData || []);
const weighingData = computed(() => currentDetail.value.weighingData || []);
const mixingProcessData = computed(() => currentDetail.value.mixingProcessData || []);
const curveDataSource = computed(() => currentDetail.value.curveData || {});
const filterTreeNode = (value: string, data: any) => {
if (!value) return true;
return String(data.label || '').toLowerCase().includes(value.toLowerCase());
};
const setCurrentNode = (nodeId: string) => {
if (!nodeId || !detailMap[nodeId]) return;
selectedNodeId.value = nodeId;
nextTick(() => {
treeRef.value?.setCurrentKey(nodeId);
});
};
const handleNodeClick = (nodeData: any, node: any) => {
const nodeId = String(nodeData?.id || '');
if (!detailMap[nodeId]) {
ElMessage.info(`节点无详情映射: ${nodeData?.label || '-'}`);
return;
}
selectedNodeLevel.value = node?.level ?? 1;
setCurrentNode(nodeId);
};
const handleSearch = () => {
const barcode = barcodeNo.value.trim();
if (!barcode) {
ElMessage.warning('请输入条码号');
return;
}
const nodeId = String(barcodeIndex[barcode] || '');
if (!nodeId || !detailMap[nodeId]) {
ElMessage.warning(`未找到条码对应节点: ${barcode}`);
return;
}
setCurrentNode(nodeId);
ElMessage.success(`已定位条码: ${barcode}`);
};
const initFromRoute = () => {
// 使(5)
const typeFromRoute = String(route.query.barcodeType || '').trim();
const noFromRoute = String(route.query.barcodeNo || '').trim();
if (typeFromRoute) {
barcodeType.value = typeFromRoute;
} else {
barcodeType.value = '5';
}
if (noFromRoute) {
barcodeNo.value = noFromRoute;
handleSearch();
}
};
const initChart = () => {
if (!chartRef.value) return;
const cd = curveDataSource.value;
const mixingRows = Array.isArray(mixingProcessData.value) ? mixingProcessData.value : [];
const toNumberOrNull = (value: any): number | null => {
const num = Number(value);
return Number.isFinite(num) ? num : null;
};
const listLength = (value: any): number => {
return Array.isArray(value) ? value.length : 0;
};
const buildPositionFromAction = (row: any): number | null => {
const actionText = String(row?.action || row?.condition || '');
if (actionText.includes('压上顶栓')) return 1;
if (actionText.includes('升上顶栓')) return 0;
return null;
};
let xAxisData: Array<string | number> = [];
let temperatureData: Array<number | null> = [];
let powerData: Array<number | null> = [];
let energyData: Array<number | null> = [];
let pressureData: Array<number | null> = [];
let speedData: Array<number | null> = [];
let positionData: Array<number | null> = [];
if (mixingRows.length > 0) {
xAxisData = mixingRows.map((row: any, idx: number) => row.step ?? idx + 1);
temperatureData = mixingRows.map((row: any) => toNumberOrNull(row.temperature));
powerData = mixingRows.map((row: any) => toNumberOrNull(row.power));
energyData = mixingRows.map((row: any) => toNumberOrNull(row.energy));
pressureData = mixingRows.map((row: any) => toNumberOrNull(row.pressure));
speedData = mixingRows.map((row: any) => toNumberOrNull(row.rpm));
positionData = mixingRows.map((row: any) => buildPositionFromAction(row));
} else {
const maxLen = Math.max(
listLength(cd.mixingTime),
listLength(cd.temperature),
listLength(cd.power),
listLength(cd.energy),
listLength(cd.pressure),
listLength(cd.speed),
listLength(cd.position)
);
xAxisData =
Array.isArray(cd.mixingTime) && cd.mixingTime.length > 0
? cd.mixingTime.map((v: any, i: number) => {
const num = Number(v);
return Number.isFinite(num) ? num : i + 1;
})
: Array.from({ length: maxLen }, (_, i) => i + 1);
const buildSeriesData = (source: any): Array<number | null> => {
const arr = Array.isArray(source) ? source : [];
return xAxisData.map((_, idx) => toNumberOrNull(arr[idx]));
};
temperatureData = buildSeriesData(cd.temperature);
powerData = buildSeriesData(cd.power);
energyData = buildSeriesData(cd.energy);
pressureData = buildSeriesData(cd.pressure);
speedData = buildSeriesData(cd.speed);
positionData = buildSeriesData(cd.position);
}
const calcRange = (arr: Array<number | null>) => {
const nums = arr.filter((n): n is number => typeof n === 'number');
if (!nums.length) return {};
const min = Math.min(...nums);
const max = Math.max(...nums);
const pad = min === max ? Math.max(Math.abs(min) * 0.1, 1) : (max - min) * 0.1;
return {
min: Number((min - pad).toFixed(2)),
max: Number((max + pad).toFixed(2))
};
};
const leftAxisRange = calcRange(temperatureData);
const rightAxisRange = calcRange([...powerData, ...energyData, ...pressureData, ...speedData, ...positionData]);
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
chartInstance = echarts.init(chartRef.value);
if (xAxisData.length === 0) {
chartInstance.setOption({
graphic: {
type: 'text',
left: 'center',
top: 'middle',
style: { text: '暂无曲线数据', fill: '#909399', fontSize: 14 }
}
});
return;
}
chartInstance.setOption({
animation: false,
grid: { left: '5%', right: '5%', top: '10%', bottom: '10%', containLabel: true },
tooltip: { trigger: 'axis' },
xAxis: {
type: 'category',
data: xAxisData,
boundaryGap: false,
name: mixingRows.length > 0 ? '混炼步骤' : '时间(s)'
},
yAxis: [
{ type: 'value', name: '温度(℃)', position: 'left', axisLine: { show: true }, ...leftAxisRange },
{ type: 'value', name: '其他参数', position: 'right', axisLine: { show: true }, ...rightAxisRange }
],
series: [
{ name: '温度', type: 'line', yAxisIndex: 0, data: temperatureData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#ff4d4f' } },
{ name: '功率', type: 'line', yAxisIndex: 1, data: powerData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#40a9ff' } },
{ name: '能量', type: 'line', yAxisIndex: 1, data: energyData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#36cfc9' } },
{ name: '压力', type: 'line', yAxisIndex: 1, data: pressureData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#95de64' } },
{ name: '转速', type: 'line', yAxisIndex: 1, data: speedData, smooth: false, connectNulls: false, showSymbol: true, itemStyle: { color: '#f7d13d' } },
{
name: '上顶栓',
type: 'line',
yAxisIndex: 1,
data: positionData,
smooth: false,
connectNulls: false,
showSymbol: true,
lineStyle: { type: 'dashed' },
itemStyle: { color: '#ffa07a' }
}
]
});
};
const resizeChart = () => {
chartInstance?.resize();
};
const renderChartWithDelay = () => {
nextTick(() => {
setTimeout(() => {
initChart();
resizeChart();
}, 180);
});
};
const toggleCurve = () => {
curveCollapsed.value = !curveCollapsed.value;
if (!curveCollapsed.value) {
nextTick(() => initChart());
}
};
watch(searchText, (value) => {
treeRef.value?.filter(value);
});
watch(selectedNodeId, () => {
if (!curveCollapsed.value) {
renderChartWithDelay();
}
});
onMounted(() => {
const initNodeId = String(source.defaultNodeId || detailKeys[0] || '');
setCurrentNode(initNodeId);
window.addEventListener('resize', resizeChart);
});
onUnmounted(() => {
window.removeEventListener('resize', resizeChart);
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
});
</script>
<style scoped lang="scss">
.forward-page {
display: flex;
flex-direction: column;
height: 100vh;
background-color: #f5f7fa;
.top-bar {
background-color: #fff;
padding: 10px 16px;
border-bottom: 1px solid #e5e7eb;
.query-form {
display: flex;
align-items: center;
gap: 8px;
}
}
.forward-container {
flex: 1;
display: flex;
gap: 16px;
padding: 16px;
height: calc(100vh - 60px);
.tree-card {
width: 300px;
flex-shrink: 0;
overflow-y: auto;
:deep(.el-card__header) {
padding: 0;
}
.card-header {
background-color: #2f6ea5;
color: #fff;
padding: 10px 14px;
display: flex;
align-items: center;
justify-content: space-between;
.header-title {
font-size: 14px;
font-weight: 600;
}
}
.custom-tree-node {
display: flex;
align-items: center;
font-size: 13px;
}
.label-text {
margin-left: 6px;
}
}
.content-area {
flex: 1;
min-width: 0;
display: flex;
overflow: hidden;
.main-area {
flex: 1;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
gap: 16px;
overflow-y: auto;
> * {
flex-shrink: 0;
}
}
.top-section {
display: flex;
gap: 16px;
flex-shrink: 0;
.production-card {
flex: 0 0 420px;
}
.quality-card {
flex: 1;
min-width: 0;
}
}
.table-scroll {
width: 100%;
min-width: 0;
}
.blue-header {
background-color: #2f6ea5;
color: #fff;
padding: 10px 14px;
margin: -20px -20px 16px -20px;
display: flex;
justify-content: space-between;
align-items: center;
.header-title {
font-size: 14px;
font-weight: 600;
}
}
.production-desc {
:deep(.el-descriptions__label) {
width: 90px;
font-weight: 600;
background: #fafafa;
}
}
:deep(.weighing-card .el-card__body),
:deep(.mixing-card .el-card__body),
:deep(.quality-card .el-card__body) {
overflow: visible;
}
.curve-area {
flex: 0 0 50%;
display: flex;
height: 100%;
flex-shrink: 0;
transition: flex-basis 0.3s ease;
&.collapsed {
flex-basis: 30px;
width: 30px;
}
.curve-toggle {
width: 30px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
background-color: #2f6ea5;
cursor: pointer;
user-select: none;
.toggle-text {
writing-mode: vertical-rl;
letter-spacing: 3px;
font-size: 13px;
font-weight: 600;
}
.toggle-icon {
margin-top: 8px;
transition: transform 0.3s ease;
&.rotated {
transform: rotate(180deg);
}
}
}
.curve-card {
flex: 1;
min-width: 0;
overflow: hidden;
:deep(.el-card__header) {
padding: 0;
}
:deep(.el-card__body) {
height: calc(100% - 48px);
padding: 10px;
}
.legend-group {
display: flex;
gap: 10px;
align-items: center;
flex-wrap: nowrap;
.legend-item {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 12px;
white-space: nowrap;
}
.legend-dot {
width: 8px;
height: 8px;
border-radius: 50%;
display: inline-block;
}
}
.chart-container {
width: 100%;
height: 100%;
min-height: 300px;
}
}
}
}
}
}
</style>

@ -0,0 +1,276 @@
<template>
<div class="tire1-container">
<el-card class="header-card" shadow="never">
<div class="header-row">
<span class="label">胎号:</span>
<el-input v-model="queryTireNo" style="width: 220px" clearable @keyup.enter="handleQuery" />
<el-button type="primary" @click="handleQuery"></el-button>
<el-button @click="handleClear"></el-button>
</div>
</el-card>
<el-card class="process-card" shadow="never">
<div class="process-wrapper" @click="handleProcessClick">
<img class="process-img" :src="mixTireFull" alt="轮胎工艺流程" />
</div>
</el-card>
<!-- 批次列表默认展示 -->
<el-card v-if="displayMode === 'tree'" class="tree-card" shadow="never">
<template #header>
<div class="blue-header">
<span class="header-title">批次列表</span>
</div>
</template>
<el-tree
ref="treeRef"
:data="treeData"
:props="treeProps"
node-key="id"
default-expand-all
:expand-on-click-node="false"
highlight-current
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<el-icon v-if="!data.children"><Document /></el-icon>
<el-icon v-else><Folder /></el-icon>
<span class="label-text">{{ node.label }}</span>
</span>
</template>
</el-tree>
</el-card>
<!-- 生产信息点击成型后展示 -->
<el-card v-if="displayMode === 'production'" class="detail-card" shadow="never">
<template #header>
<div class="blue-header">
<span class="header-title">生产信息 - {{ tireNo }}</span>
<el-button type="primary" link @click="displayMode = 'tree'">返回批次列表</el-button>
</div>
</template>
<el-descriptions :column="2" border size="small" class="production-desc">
<el-descriptions-item label="条码">{{ currentProduction.barcode }}</el-descriptions-item>
<el-descriptions-item label="生产日期">{{ currentProduction.productionDate }}</el-descriptions-item>
<el-descriptions-item label="物料名称">{{ currentProduction.materialName }}</el-descriptions-item>
<el-descriptions-item label="机台">{{ currentProduction.machine }}</el-descriptions-item>
<el-descriptions-item label="班次">{{ currentProduction.shift }}</el-descriptions-item>
<el-descriptions-item label="班组">{{ currentProduction.team }}</el-descriptions-item>
<el-descriptions-item label="车次">{{ currentProduction.trainNo }}</el-descriptions-item>
<el-descriptions-item label="设定重量">{{ currentProduction.setWeight }}</el-descriptions-item>
<el-descriptions-item label="实际重量">{{ currentProduction.actualWeight }}</el-descriptions-item>
</el-descriptions>
</el-card>
<!-- 质检信息点击质检区后展示 -->
<el-card v-if="displayMode === 'quality'" class="detail-card" shadow="never">
<template #header>
<div class="blue-header">
<span class="header-title">质检信息 - {{ tireNo }}</span>
<el-button type="primary" link @click="displayMode = 'tree'">返回批次列表</el-button>
</div>
</template>
<el-table :data="currentQuality" border stripe size="small">
<el-table-column prop="reportNo" label="报告单号" min-width="140" align="center" show-overflow-tooltip />
<el-table-column prop="times" label="检验次数" min-width="90" align="center" />
<el-table-column prop="item" label="检验项目" min-width="140" align="center" show-overflow-tooltip />
<el-table-column prop="standard" label="标准" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="value" label="检验值" min-width="100" align="center" show-overflow-tooltip />
<el-table-column prop="deviation" label="偏差" min-width="180" align="center" show-overflow-tooltip />
<el-table-column prop="result" label="结果" min-width="80" align="center" />
</el-table>
</el-card>
</div>
</template>
<script setup lang="ts" name="MixTraceTire1">
import { computed, ref } from 'vue';
import { Document, Folder } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import tireData from './data/tire1.json';
import backwardDetailData from './data/backward2.json';
import mixTireFull from './mixTire.png';
const source = tireData as any;
const detailMap = (backwardDetailData as any).detailMap || {};
const tireNo = ref(source.tireNo || '');
const queryTireNo = ref(tireNo.value);
const treeData = ref<any[]>(source.treeData || []);
const treeProps = { children: 'children', label: 'label' };
const treeRef = ref();
/** 页面下方展示模式tree=批次列表(默认) | production=生产信息 | quality=质检信息 */
type DisplayMode = 'tree' | 'production' | 'quality';
const displayMode = ref<DisplayMode>('tree');
/**
* 流程图各节点在图片中的水平位置比例基于 mixTire.png 实际布局
* 半制品(~8%) 半制品质检(~20%) 成型(~31%) 成型质检(~39%) 硫化(~47%)
* 质检区[外观/X光/动平衡/均匀性](~62%) 成品入库(~80%) 成品出库(~92%)
*
* 硫化左侧 = 反向追溯上游工序硫化右侧 = 正向追溯下游质检/入库/出库
*/
const REGIONS = {
//
molding: { left: 0.25, right: 0.37 },
// /X//
qualityCheck: { left: 0.52, right: 0.73 }
};
/** 根据胎号(硫化号)从 backward2.json 的 detailMap 中查找对应数据 */
const findDetailByTireNo = (no: string) => {
for (const key of Object.keys(detailMap)) {
const detail = detailMap[key];
if (detail.barcodeType === '4' && detail.production?.barcode === no) {
return detail;
}
}
return null;
};
const currentProduction = computed(() => {
const detail = findDetailByTireNo(tireNo.value);
return detail?.production || {};
});
const currentQuality = computed(() => {
const detail = findDetailByTireNo(tireNo.value);
return detail?.qualityData || [];
});
const handleQuery = () => {
if (!queryTireNo.value.trim()) {
ElMessage.warning('请输入胎号');
return;
}
tireNo.value = queryTireNo.value.trim();
displayMode.value = 'tree';
ElMessage.success(`已定位胎号: ${tireNo.value}`);
};
const handleClear = () => {
queryTireNo.value = '';
displayMode.value = 'tree';
};
/**
* 点击流程图节点根据坐标判断所属区域在页面内切换展示内容
* 点击"成型"展示生产信息 | 点击"质检区"展示质检信息
*/
const handleProcessClick = (event: MouseEvent) => {
if (!tireNo.value) {
ElMessage.warning('请先输入胎号并查询');
return;
}
const target = event.currentTarget as HTMLElement;
const rect = target.getBoundingClientRect();
const x = event.clientX - rect.left;
const ratio = x / rect.width;
if (ratio >= REGIONS.molding.left && ratio <= REGIONS.molding.right) {
// ""
if (!currentProduction.value?.barcode) {
ElMessage.warning(`未找到胎号 ${tireNo.value} 的生产数据`);
return;
}
displayMode.value = 'production';
} else if (ratio >= REGIONS.qualityCheck.left && ratio <= REGIONS.qualityCheck.right) {
// ""/X//
if (!currentQuality.value?.length) {
ElMessage.warning(`未找到胎号 ${tireNo.value} 的质检数据`);
return;
}
displayMode.value = 'quality';
}
};
</script>
<style scoped lang="scss">
.tire1-container {
padding: 16px;
.header-card {
margin-bottom: 16px;
}
.header-row {
display: flex;
align-items: center;
gap: 10px;
.label {
font-size: 16px;
font-weight: 600;
color: #303133;
}
}
.process-card {
margin-bottom: 16px;
background: white;
:deep(.el-card__body) {
padding: 24px 16px;
}
}
.process-wrapper {
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.process-img {
display: block;
width: 100%;
height: 50vh;
user-select: none;
object-fit: contain;
}
.tree-card,
.detail-card {
:deep(.el-card__header) {
padding: 0;
}
}
.blue-header {
background-color: #2f6ea5;
color: #fff;
padding: 12px 16px;
display: flex;
align-items: center;
justify-content: space-between;
.header-title {
font-size: 14px;
font-weight: 600;
}
.el-button {
color: #fff !important;
}
}
.production-desc {
:deep(.el-descriptions__label) {
width: 100px;
font-weight: 600;
}
}
.custom-tree-node {
display: flex;
align-items: center;
gap: 6px;
font-size: 13px;
.el-icon {
color: #2f6ea5;
}
.label-text {
color: #303133;
}
}
}
</style>

@ -0,0 +1,408 @@
<template>
<div class="tire2-container">
<el-card class="tree-card" shadow="never" v-loading="loading">
<template #header>
<div class="card-header">
<span class="header-title">批次列表</span>
<el-input v-model="searchText" placeholder="筛选" size="small" clearable style="width: 110px" />
</div>
</template>
<el-tree
ref="treeRef"
:data="treeData"
:props="treeProps"
node-key="id"
default-expand-all
:expand-on-click-node="false"
highlight-current
:filter-node-method="filterTreeNode"
@node-click="handleNodeClick"
>
<template #default="{ node, data }">
<span class="custom-tree-node">
<el-icon v-if="!data.children"><Document /></el-icon>
<el-icon v-else><Folder /></el-icon>
<span class="label-text">{{ node.label }}</span>
</span>
</template>
</el-tree>
</el-card>
<div class="content-area">
<div class="main-area">
<div class="top-section">
<el-card class="production-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">生产信息</span></div>
</template>
<el-descriptions :column="1" border size="small" class="desc">
<el-descriptions-item label="成型号">{{ productionInfo.greenTyreNo }}</el-descriptions-item>
<el-descriptions-item label="硫化号"><span class="highlight">{{ productionInfo.tyreNo }}</span></el-descriptions-item>
<el-descriptions-item label="成型时间">{{ productionInfo.moldingTime }}</el-descriptions-item>
<el-descriptions-item label="成型机台">{{ productionInfo.moldingMachine }}</el-descriptions-item>
<el-descriptions-item label="主手">{{ productionInfo.moldingOperator }}</el-descriptions-item>
<el-descriptions-item label="成型班次">{{ productionInfo.moldingShift }}</el-descriptions-item>
<el-descriptions-item label="成型班组">{{ productionInfo.moldingTeam }}</el-descriptions-item>
<el-descriptions-item label="硫化开始时间">{{ productionInfo.curingStartTime }}</el-descriptions-item>
<el-descriptions-item label="硫化结束时间">{{ productionInfo.curingEndTime }}</el-descriptions-item>
<el-descriptions-item label="硫化操作人">{{ productionInfo.curingOperator }}</el-descriptions-item>
<el-descriptions-item label="硫化班次">{{ productionInfo.curingShift }}</el-descriptions-item>
<el-descriptions-item label="硫化班组">{{ productionInfo.curingTeam }}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="quality-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">质检信息</span></div>
</template>
<el-descriptions :column="1" border size="small" class="desc">
<el-descriptions-item label="最终品级">{{ qualityInfo.finalGrade }}</el-descriptions-item>
<el-descriptions-item label="外观品级">{{ qualityInfo.faceGrade }}</el-descriptions-item>
<el-descriptions-item label="外观质检人">{{ qualityInfo.faceOper }}</el-descriptions-item>
<el-descriptions-item label="外观质检时间">{{ qualityInfo.faceDatetime }}</el-descriptions-item>
<el-descriptions-item label="X光品级">{{ qualityInfo.xrayGrade }}</el-descriptions-item>
<el-descriptions-item label="X光质检人">{{ qualityInfo.xrayOper }}</el-descriptions-item>
<el-descriptions-item label="X光质检时间">{{ qualityInfo.xrayDatetime }}</el-descriptions-item>
<el-descriptions-item label="动平衡品级">{{ qualityInfo.dbGrade }}</el-descriptions-item>
<el-descriptions-item label="动平衡质检人">{{ qualityInfo.dbOper }}</el-descriptions-item>
<el-descriptions-item label="动平衡质检时间">{{ qualityInfo.dbDatetime }}</el-descriptions-item>
<el-descriptions-item label="均匀性品级">{{ qualityInfo.ufGrade }}</el-descriptions-item>
<el-descriptions-item label="均匀性质检人">{{ qualityInfo.ufOper }}</el-descriptions-item>
</el-descriptions>
</el-card>
</div>
<el-card class="process-card" shadow="never" v-loading="loading">
<template #header>
<div class="blue-header"><span class="header-title">工艺</span></div>
</template>
<div class="empty-block">
<el-empty description="暂无工艺数据(可接 GREEN_TYRENO_PARAMS_TRACE.plc_tech_json" :image-size="88" />
</div>
</el-card>
</div>
<div class="curve-area" :class="{ collapsed: curveCollapsed }">
<div class="curve-toggle" @click="toggleCurve">
<span class="toggle-text">曲线信息</span>
<el-icon class="toggle-icon" :class="{ rotated: !curveCollapsed }"><ArrowRight /></el-icon>
</div>
<el-card class="curve-card" shadow="never" v-show="!curveCollapsed">
<template #header>
<div class="blue-header">
<span class="header-title">曲线信息</span>
<div class="legend-group">
<span class="legend-item"><i class="legend-dot" style="background: #ff4d4f"></i>温度</span>
<span class="legend-item"><i class="legend-dot" style="background: #40a9ff"></i>功率</span>
<span class="legend-item"><i class="legend-dot" style="background: #36cfc9"></i>能量</span>
<span class="legend-item"><i class="legend-dot" style="background: #95de64"></i>压力</span>
<span class="legend-item"><i class="legend-dot" style="background: #f7d13d"></i>转速</span>
<span class="legend-item"><i class="legend-dot" style="background: #ffa07a"></i>上顶栓</span>
</div>
<el-button size="small" text type="primary" style="color: #fff" @click="toggleCurve"></el-button>
</div>
</template>
<div ref="chartRef" class="chart-container"></div>
</el-card>
</div>
</div>
</div>
</template>
<script setup lang="ts" name="MixTraceTire2">
import { nextTick, onMounted, onUnmounted, ref, watch } from 'vue';
import { ArrowRight, Document, Folder } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import * as echarts from 'echarts';
import tireData from './data/tire2.json';
const source = tireData as any;
const treeProps = { children: 'children', label: 'label' };
const searchText = ref('');
const loading = ref(false);
const curveCollapsed = ref(true);
const treeData = ref<any[]>(source.treeData || []);
const productionInfo = ref(source.productionInfo || {});
const qualityInfo = ref(source.qualityInfo || {});
const curveDataSource = ref(source.curveData || {});
const treeRef = ref();
const chartRef = ref<HTMLDivElement>();
let chartInstance: echarts.ECharts | null = null;
const filterTreeNode = (value: string, data: any) => {
if (!value) return true;
return String(data.label || '').toLowerCase().includes(value.toLowerCase());
};
const initChart = () => {
if (!chartRef.value) return;
const cd = curveDataSource.value || {};
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
chartInstance = echarts.init(chartRef.value);
chartInstance.setOption({
grid: { left: '5%', right: '5%', top: '10%', bottom: '10%', containLabel: true },
tooltip: { trigger: 'axis' },
xAxis: { type: 'category', data: cd.mixingTime || [], boundaryGap: false, name: '时间(s)' },
yAxis: [
{ type: 'value', name: '温度(℃)', position: 'left', axisLine: { show: true } },
{ type: 'value', name: '其他参数', position: 'right', axisLine: { show: true } }
],
series: [
{ name: '温度', type: 'line', yAxisIndex: 0, data: cd.temperature || [], smooth: true, itemStyle: { color: '#ff4d4f' } },
{ name: '功率', type: 'line', yAxisIndex: 1, data: cd.power || [], smooth: true, itemStyle: { color: '#40a9ff' } },
{ name: '能量', type: 'line', yAxisIndex: 1, data: cd.energy || [], smooth: true, itemStyle: { color: '#36cfc9' } },
{ name: '压力', type: 'line', yAxisIndex: 1, data: cd.pressure || [], smooth: true, itemStyle: { color: '#95de64' } },
{ name: '转速', type: 'line', yAxisIndex: 1, data: cd.speed || [], smooth: true, itemStyle: { color: '#f7d13d' } },
{
name: '上顶栓',
type: 'line',
yAxisIndex: 1,
data: cd.position || [],
smooth: false,
lineStyle: { type: 'dashed' },
itemStyle: { color: '#ffa07a' }
}
]
});
};
const resizeChart = () => {
chartInstance?.resize();
};
const renderChartWithDelay = () => {
nextTick(() => {
setTimeout(() => {
initChart();
resizeChart();
}, 180);
});
};
const toggleCurve = () => {
curveCollapsed.value = !curveCollapsed.value;
if (!curveCollapsed.value) {
renderChartWithDelay();
}
};
const handleNodeClick = (nodeData: any) => {
ElMessage.info(`当前节点: ${nodeData?.label || '-'}`);
};
watch(searchText, (value) => {
treeRef.value?.filter(value);
});
onMounted(() => {
loading.value = true;
setTimeout(() => {
loading.value = false;
const defaultKey = treeData.value?.[0]?.id;
if (defaultKey && treeRef.value) {
treeRef.value.setCurrentKey(defaultKey);
}
}, 120);
window.addEventListener('resize', resizeChart);
});
onUnmounted(() => {
window.removeEventListener('resize', resizeChart);
if (chartInstance) {
chartInstance.dispose();
chartInstance = null;
}
});
</script>
<style scoped lang="scss">
.tire2-container {
display: flex;
gap: 16px;
padding: 16px;
height: calc(100vh - 90px);
.tree-card {
width: 300px;
flex-shrink: 0;
overflow-y: auto;
:deep(.el-card__header) {
padding: 0;
}
.card-header {
background-color: #2f6ea5;
color: #fff;
padding: 10px 14px;
display: flex;
align-items: center;
justify-content: space-between;
.header-title {
font-weight: 600;
font-size: 14px;
}
}
.custom-tree-node {
display: flex;
align-items: center;
font-size: 13px;
}
.label-text {
margin-left: 6px;
}
}
.content-area {
flex: 1;
min-width: 0;
display: flex;
overflow: hidden;
.main-area {
flex: 1;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
gap: 16px;
overflow-y: auto;
}
.top-section {
display: flex;
gap: 16px;
.production-card {
flex: 0 0 420px;
}
.quality-card {
flex: 1;
min-width: 0;
}
}
.blue-header {
background-color: #2f6ea5;
color: #fff;
padding: 10px 14px;
margin: -20px -20px 16px -20px;
display: flex;
justify-content: space-between;
align-items: center;
.header-title {
font-size: 14px;
font-weight: 600;
}
}
.desc {
:deep(.el-descriptions__label) {
width: 108px;
font-weight: 600;
background: #fafafa;
}
}
.highlight {
color: #eab308;
font-weight: 700;
}
.process-card {
.empty-block {
min-height: 190px;
display: flex;
align-items: center;
justify-content: center;
}
}
.curve-area {
flex: 0 0 50%;
display: flex;
height: 100%;
flex-shrink: 0;
transition: flex-basis 0.3s ease;
&.collapsed {
flex-basis: 30px;
width: 30px;
}
.curve-toggle {
width: 30px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
background-color: #2f6ea5;
cursor: pointer;
user-select: none;
.toggle-text {
writing-mode: vertical-rl;
letter-spacing: 3px;
font-size: 13px;
font-weight: 600;
}
.toggle-icon {
margin-top: 8px;
transition: transform 0.3s ease;
&.rotated {
transform: rotate(180deg);
}
}
}
.curve-card {
flex: 1;
min-width: 0;
overflow: hidden;
:deep(.el-card__header) {
padding: 0;
}
:deep(.el-card__body) {
height: calc(100% - 48px);
padding: 10px;
}
.legend-group {
display: flex;
gap: 10px;
flex-wrap: nowrap;
.legend-item {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 12px;
white-space: nowrap;
}
.legend-dot {
width: 8px;
height: 8px;
border-radius: 50%;
display: inline-block;
}
}
.chart-container {
width: 100%;
height: 100%;
min-height: 300px;
}
}
}
}
}
</style>
Loading…
Cancel
Save