refactor: 全链路统一将物料编码改称图号,优化入库流程
1. 统一全系统UI与文档中的"物料编码"为客户口径"图号",覆盖前端页面、后端导出表头与帮助文档
2. 优化入库模块:
- 新增归属类型"其他"并完善注释
- 入库时自动回写入库单批次号
- 优化库位选择为三级联动下拉选择,替换原手动输入
- 新增入库归属编号录入功能
3. 更新需求文档,同步完成图号全链路改造的验收标记
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
export const helpProductType = {
|
||||
title: '产品型号(档案维护)',
|
||||
overview:
|
||||
'产品型号 = 企业要生产哪些产品的分类档案,是整条产线的源头基础数据。\n\n主数据链条:产品型号 → 工单(选产品型号+物料清单) → 物料清单(给该产品编号配料) → 日排产 → 备料单 → 库房出库 → 产线生产 → 完工成品自动回流 WMS 入库。\n\n关系说明(几对几):\n· 产品型号 ↔ 工单:1 对 N。一个产品型号可以建多个工单(同一型号今天做一批、明天做一批,工单号不同、产品编号相同)。\n· 产品型号 ↔ 物料清单:1 对多(选用制)。同一型号可并存多份物料清单(不同厂家供货/含半成品结构),用「物料清单名称」区分,工单建单时选定一份,备料/装机都按工单锁定的那份算。\n· 产品型号 ↔ 备料单:间接。备料单由「日排产 × 工单锁定的物料清单」算出,与产品型号无直接约束。\n· 强约束:工单/物料清单都挂在产品编号下,产品型号编码变了,下游关联会断,建议建好后不要改。\n· 与 WMS 的关系:两套系统解耦。产品/物料编码主数据以 WMS 为单一来源,MES 实时拉取(WMS 不可达时允许手填、仅提示不强校验);成品完工后由系统自动生成 SN 回流 WMS 入库,无需人工对账。',
|
||||
'产品型号 = 企业要生产哪些产品的分类档案,是整条产线的源头基础数据。\n\n主数据链条:产品型号 → 工单(选产品型号+物料清单) → 物料清单(给该产品编号配料) → 日排产 → 备料单 → 库房出库 → 产线生产 → 完工成品自动回流 WMS 入库。\n\n关系说明(几对几):\n· 产品型号 ↔ 工单:1 对 N。一个产品型号可以建多个工单(同一型号今天做一批、明天做一批,工单号不同、产品编号相同)。\n· 产品型号 ↔ 物料清单:1 对多(选用制)。同一型号可并存多份物料清单(不同厂家供货/含半成品结构),用「物料清单名称」区分,工单建单时选定一份,备料/装机都按工单锁定的那份算。\n· 产品型号 ↔ 备料单:间接。备料单由「日排产 × 工单锁定的物料清单」算出,与产品型号无直接约束。\n· 强约束:工单/物料清单都挂在产品编号下,产品型号编码变了,下游关联会断,建议建好后不要改。\n· 与 WMS 的关系:两套系统解耦。产品/图号主数据以 WMS 为单一来源,MES 实时拉取(WMS 不可达时允许手填、仅提示不强校验);成品完工后由系统自动生成 SN 回流 WMS 入库,无需人工对账。',
|
||||
fields: [
|
||||
{ name: '名称', source: '手工填写。用户自定义,无上游来源。', purpose: '产品型号的中文名,用于识别与下拉展示', fill: '如:智能电表、断路器、配电柜' },
|
||||
{
|
||||
@@ -81,11 +81,11 @@ export const helpDailyPlan = {
|
||||
export const helpBom = {
|
||||
title: '物料清单',
|
||||
overview:
|
||||
'物料清单 = 生产 1 台该产品需要哪些物料、各用多少。\n按「产品编号 + 物料清单名称」维护:同一产品编号可并存多份物料清单(选用制)——不同厂家供货、含半成品的结构差异,都用不同的物料清单名称区分(缺省叫「默认」,不用 V1/V2 版本号)。\n工单建单时选定其中一份,之后该工单的备料算料、装机绑定校验都锁定这份物料清单,不同厂家的料单互不串。\n\n与 WMS 的关系:本页(MES)只维护「产品由哪几种料、各用几个」;每种物料叫什么、规格、是电气件(SN)还是结构件(批次)、库存有多少,统一在 WMS(库房)的「物料档案」里维护,两套系统互相解耦、通过物料编码对齐。\n\n编码对应规则:本页的「物料编码」必须与 WMS 物料档案里的「编码」完全一致;「管理方式」也要对应(电气件=SN 逐件,结构件=批次)。编码对不上,WMS 将无法为对应工单备料/出库。\n\n保护规则:某份物料清单一旦被工单选用过,就不允许再从中移除物料(防止历史工单追溯断链);新建/改名的物料清单名称在本页「物料清单名称」下拉直接输入即可创建。\n\n数据链路:先建「产品型号」→ 到本页选产品编号 + 命名物料清单,逐条添加物料 → 建工单时选定物料清单 → 仓库才能为对应工单领料。',
|
||||
'物料清单 = 生产 1 台该产品需要哪些物料、各用多少。\n按「产品编号 + 物料清单名称」维护:同一产品编号可并存多份物料清单(选用制)——不同厂家供货、含半成品的结构差异,都用不同的物料清单名称区分(缺省叫「默认」,不用 V1/V2 版本号)。\n工单建单时选定其中一份,之后该工单的备料算料、装机绑定校验都锁定这份物料清单,不同厂家的料单互不串。\n\n与 WMS 的关系:本页(MES)只维护「产品由哪几种料、各用几个」;每种物料叫什么、规格、是电气件(SN)还是结构件(批次)、库存有多少,统一在 WMS(库房)的「物料档案」里维护,两套系统互相解耦、通过图号对齐。\n\n编码对应规则:本页的「图号」必须与 WMS 物料档案里的「图号」完全一致;「管理方式」也要对应(电气件=SN 逐件,结构件=批次)。编码对不上,WMS 将无法为对应工单备料/出库。\n\n保护规则:某份物料清单一旦被工单选用过,就不允许再从中移除物料(防止历史工单追溯断链);新建/改名的物料清单名称在本页「物料清单名称」下拉直接输入即可创建。\n\n数据链路:先建「产品型号」→ 到本页选产品编号 + 命名物料清单,逐条添加物料 → 建工单时选定物料清单 → 仓库才能为对应工单领料。',
|
||||
fields: [
|
||||
{ name: '物料清单名称', source: '下拉选择/输入(可搜索,输入新名即创建)。缺省「默认」。', purpose: '同一产品编号下多份物料清单的区分名,工单建单时按此选定', fill: '如「默认」「A厂料单」「含半成品」;同一型号下名称唯一' },
|
||||
{ name: '产品编号', source: '下拉选择。来自「产品型号」里建的编码。', purpose: '要为哪个产品配置物料清单', fill: '在查询区或「添加物料」弹窗里选择产品编号' },
|
||||
{ name: '物料编码', source: '手工填写。必须与 WMS(库房) 物料档案的编码一致。', purpose: '该物料在库房的全库唯一编码,两系统靠它关联', fill: '如 螺丝=GJ-LUOSI-M16;编码对不上 WMS 将无法备料' },
|
||||
{ name: '图号', source: '手工填写。必须与 WMS(库房) 物料档案的图号一致。', purpose: '该物料在库房的全库唯一编码,两系统靠它关联', fill: '如 螺丝=GJ-LUOSI-M16;图号对不上 WMS 将无法备料' },
|
||||
{ name: '物料名称', source: '手工填写。', purpose: '物料中文名,便于识别', fill: '如 十字螺丝、主控芯片' },
|
||||
{ name: '规格', source: '手工填写。', purpose: '物料规格型号', fill: '如 M16×80 / SMT-48脚' },
|
||||
{ name: '单位', source: '手工填写。', purpose: '计量单位,用于算量', fill: '个 / 件 / 套 / kg' },
|
||||
@@ -389,7 +389,7 @@ export const helpInspect = {
|
||||
export const helpProcessCard = {
|
||||
title: '生产流程卡(产品型号级全景流程卡)',
|
||||
overview:
|
||||
'这个菜单做什么用:按**产品型号**全方位展示该型号的完整制造定义,用于工艺交底、审核与客户查阅;与「工件追溯」页里按单个 SN 打印的流程卡互补——后者记的是“这一件实际怎么做的”,本页讲的是“这个型号应该怎么做”。\n\n内容构成(页面按页签展示,打印时全部输出):①工位流程总览——工位组合、每工位绑定的工艺流程、流程状态、步骤数、检验点数、拧紧步骤数、工艺图纸、该型号的历史作业时间;②工艺流程与步骤——逐工位列出每条步骤的采集方式(手工录入/自动采集/无需采集)、是否需检测确认、是否拧紧采集、考核标准(含上下限);③物料清单——该型号的 BOM 明细,按 BOM 名称分组,含物料编码/名称/规格/单位/管理方式/装配工位/单台用量/损耗率/需求总量;④检验卡项——把所有「需要检测确认」的步骤汇总成检验项清单,含判定标准。\n\n工位组合从哪来:优先取该产品编号最近一张工单的「工位组合」;若该型号还没有工单,则按全产线工位顺序(升序)展示,页面顶部会标注来源。\n\n打印/导出:点「打印 / 导出 PDF」,系统会在新窗口打开排版好的 A4 卡片版式,用浏览器打印即可(选择“另存为 PDF”即导出电子档)。',
|
||||
'这个菜单做什么用:按**产品型号**全方位展示该型号的完整制造定义,用于工艺交底、审核与客户查阅;与「工件追溯」页里按单个 SN 打印的流程卡互补——后者记的是“这一件实际怎么做的”,本页讲的是“这个型号应该怎么做”。\n\n内容构成(页面按页签展示,打印时全部输出):①工位流程总览——工位组合、每工位绑定的工艺流程、流程状态、步骤数、检验点数、拧紧步骤数、工艺图纸、该型号的历史作业时间;②工艺流程与步骤——逐工位列出每条步骤的采集方式(手工录入/自动采集/无需采集)、是否需检测确认、是否拧紧采集、考核标准(含上下限);③物料清单——该型号的 BOM 明细,按 BOM 名称分组,含图号/名称/规格/单位/管理方式/装配工位/单台用量/损耗率/需求总量;④检验卡项——把所有「需要检测确认」的步骤汇总成检验项清单,含判定标准。\n\n工位组合从哪来:优先取该产品编号最近一张工单的「工位组合」;若该型号还没有工单,则按全产线工位顺序(升序)展示,页面顶部会标注来源。\n\n打印/导出:点「打印 / 导出 PDF」,系统会在新窗口打开排版好的 A4 卡片版式,用浏览器打印即可(选择“另存为 PDF”即导出电子档)。',
|
||||
fields: [
|
||||
{ name: '产品型号', source: '下拉选择,来自「产品型号」页。', purpose: '要查看哪个型号的全景流程', fill: '选定后自动带出产品编号' },
|
||||
{ name: '产品编号', source: '自动带出(也可手工填写,直接按编号生成)。', purpose: '匹配工单、物料清单的关键字', fill: '一般无需手填' },
|
||||
@@ -409,7 +409,7 @@ export const helpQtyReport = {
|
||||
{ name: '工位', source: '工位终端上报自动带入;本页手录时手动选择(工位数以数据库为准)。', purpose: '差异发生在哪个工位', fill: '选工位号' },
|
||||
{ name: '工单号', source: '工位终端上报自动带入;来自【工单管理】。', purpose: '定位是哪张工单的物料', fill: '搜索/输入工单号' },
|
||||
{ name: '产品序列号', source: '工位终端上报自动带入(当前作业件)。', purpose: '追溯到具体那一件', fill: '扫描/输入 SN' },
|
||||
{ name: '物料编码/名称', source: '工位终端上报自动带入(当前收料物料)。', purpose: '是哪一种物料数量不符', fill: '选择/输入物料' },
|
||||
{ name: '图号/名称', source: '工位终端上报自动带入(当前收料物料)。', purpose: '是哪一种物料数量不符', fill: '选择/输入物料' },
|
||||
{ name: '应发数量', source: '手动/自动带入备料单应发数。', purpose: '作为差异计算基准', fill: '填应发数' },
|
||||
{ name: '实收数量', source: '手动填写(现场实际清点结果)。', purpose: '作为差异计算基准', fill: '填实收数' },
|
||||
{ name: '差异', source: '系统自动计算(实收−应发)。', purpose: '一眼看出多收/少收', fill: '只读' },
|
||||
@@ -423,7 +423,7 @@ export const helpQuality = {
|
||||
overview:
|
||||
'质量检验 = 对物料/产品做检验判定并留痕,分「过程检」与「完工检」两个 Tab。来料检在 WMS 库房侧完成,本页不重复。\n\n录入流程:选图号(输入图号或名称远程检索 BOM 料,自动带出物料名称)→ 填报检单号/生产厂家/检验单号 → 上传附件 → 判定合格/不合格 → 保存。\n\n不合格闭环:结论为「不合格」时可当场选择处置方式(退货/返修/退换)并写处置说明;也可在列表操作列「处置」补录,或点「不合格单」一键导出《不合格单.xlsx》(预填本次检验数据)。\n\n查询:图号 / 物料名称 / 报检单号 / 记录日期范围组合筛选,每个框内模糊匹配、多框取交集;记录按时间倒序,后端真分页。',
|
||||
fields: [
|
||||
{ name: '图号', source: '远程检索 BOM 料(/quality/bom-material),也可手填。', purpose: '被检物料的图号(即物料编码)', fill: '输入图号或名称关键字选择' },
|
||||
{ name: '图号', source: '远程检索 BOM 料(/quality/bom-material),也可手填。', purpose: '被检物料的图号(即 WMS 物料档案的图号)', fill: '输入图号或名称关键字选择' },
|
||||
{ name: '物料名称', source: '选图号后自动带出,可手改。', purpose: '被检物料名称', fill: '一般无需手填' },
|
||||
{ name: '报检单号', source: '系统自动生成(RQ+时间戳),可改。', purpose: '本次报检的唯一编号,也是附件挂靠键', fill: '一般无需改,须唯一' },
|
||||
{ name: '生产厂家', source: '手工填写。', purpose: '该物料的生产/供货厂家', fill: '如 XX电气有限公司' },
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务ID">
|
||||
<el-input v-model="form.bizId" placeholder="如 工单号 / 物料编码" style="width:220px" />
|
||||
<el-input v-model="form.bizId" placeholder="如 工单号 / 图号" style="width:220px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-upload action="#" :show-file-list="false" :http-request="doUpload">
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<el-button type="primary" @click="load">查询</el-button>
|
||||
<el-button v-if="can('produce.bom:edit')" @click="openAdd">添加物料</el-button>
|
||||
<el-tooltip v-if="can('produce.bom:edit')" placement="bottom"
|
||||
content="模板列(首行表头):产品编号 | 物料清单名称 | 物料编码 | 名称 | 规格 | 单位 | 单台用量 | 损耗率 | 装配工位 | 相关标准 | 备注。按(产品编号+物料清单名称)分组覆盖式导入。">
|
||||
content="模板列(首行表头):产品编号 | 物料清单名称 | 图号 | 名称 | 规格 | 单位 | 单台用量 | 损耗率 | 装配工位 | 相关标准 | 备注。按(产品编号+物料清单名称)分组覆盖式导入。">
|
||||
<el-upload action="#" :show-file-list="false" :http-request="doImport" accept=".xlsx,.xls" style="display:inline-block;margin-left:10px">
|
||||
<el-button type="warning">导入 Excel</el-button>
|
||||
</el-upload>
|
||||
@@ -32,7 +32,7 @@
|
||||
<el-tag size="small" effect="plain">{{ row.bomName }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="120" />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="120" />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="120" />
|
||||
<el-table-column prop="spec" label="规格" />
|
||||
<el-table-column prop="unit" label="单位" width="70" />
|
||||
@@ -65,14 +65,14 @@
|
||||
|
||||
<el-dialog v-model="add.show" title="添加物料清单" width="520px">
|
||||
<el-alert type="info" :closable="false" style="margin-bottom:12px"
|
||||
title="物料编码须与 WMS(库房)「物料档案」的编码完全一致,才能备料/出库。管理方式:电气件按 SN 逐件、结构件按批次。" />
|
||||
title="图号须与 WMS(库房)「物料档案」的图号完全一致,才能备料/出库。管理方式:电气件按 SN 逐件、结构件按批次。" />
|
||||
<el-form :model="add" label-width="90px">
|
||||
<el-form-item label="产品编号" required>
|
||||
<el-select v-model="add.productCode" filterable placeholder="选择产品编号" style="width:100%">
|
||||
<el-option v-for="p in products" :key="p.code" :label="`${p.code} ${p.name || ''}`" :value="p.code" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" required><el-input v-model="add.materialCode" placeholder="须与 WMS 物料档案编码一致" /></el-form-item>
|
||||
<el-form-item label="图号" required><el-input v-model="add.materialCode" placeholder="须与 WMS 物料档案图号一致" /></el-form-item>
|
||||
<el-form-item label="物料名称"><el-input v-model="add.materialName" /></el-form-item>
|
||||
<el-form-item label="规格"><el-input v-model="add.spec" /></el-form-item>
|
||||
<el-form-item label="单位"><el-input v-model="add.unit" /></el-form-item>
|
||||
@@ -149,7 +149,7 @@ function openAdd() {
|
||||
}
|
||||
async function save() {
|
||||
if (!add.productCode) return ElMessage.warning('请选择产品编号')
|
||||
if (!add.materialCode) return ElMessage.warning('请填写物料编码')
|
||||
if (!add.materialCode) return ElMessage.warning('请填写图号')
|
||||
const { requiredQty, ...item } = add
|
||||
if (!item.processCode) item.processCode = 0
|
||||
await request.put('/bom', { productCode: add.productCode, bomName: bomName.value, items: [{ ...item }] })
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<el-date-picker v-model="query.planDate" type="date" value-format="YYYY-MM-DD" @change="load" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工单号"><el-input v-model="query.orderNo" clearable style="width:160px" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="物料编码"><el-input v-model="query.materialCode" clearable style="width:150px" placeholder="不区分大小写" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="图号"><el-input v-model="query.materialCode" clearable style="width:150px" placeholder="不区分大小写" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="物料名称"><el-input v-model="query.materialName" clearable style="width:150px" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="接驳台"><el-input v-model="query.targetDock" clearable style="width:120px" placeholder="如 DOCK05" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="状态">
|
||||
@@ -27,7 +27,7 @@
|
||||
<el-table-column prop="requestNo" label="备料单号" min-width="180" />
|
||||
<el-table-column prop="orderNo" label="工单号" min-width="130" />
|
||||
<el-table-column prop="planDate" label="排产日期" width="110" />
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="110" />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="110" />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="110" />
|
||||
<el-table-column prop="unit" label="单位" width="70" />
|
||||
<el-table-column prop="manageMode" label="管理方式" width="110">
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
<div v-for="g in card.bomGroups" :key="g.bomName" class="blk">
|
||||
<div class="blk-t">BOM:{{ g.bomName }}</div>
|
||||
<el-table :data="g.items" border size="small">
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="150" show-overflow-tooltip />
|
||||
<el-table-column prop="spec" label="规格" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="unit" label="单位" width="70" align="center" />
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工单号"><el-input v-model="query.orderNo" clearable style="width:160px" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="物料编码"><el-input v-model="query.materialCode" clearable style="width:150px" placeholder="不区分大小写" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item label="图号"><el-input v-model="query.materialCode" clearable style="width:150px" placeholder="不区分大小写" @keyup.enter="load" /></el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="load">查询</el-button>
|
||||
</el-form-item>
|
||||
@@ -21,7 +21,7 @@
|
||||
<el-table-column prop="stationNo" label="工位" width="70" align="center" />
|
||||
<el-table-column prop="orderNo" label="工单号" min-width="130" />
|
||||
<el-table-column prop="sn" label="产品序列号" min-width="140" />
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="110" />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="110" />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="110" />
|
||||
<el-table-column prop="planQty" label="应发" width="70" align="center" />
|
||||
<el-table-column prop="actualQty" label="实收" width="70" align="center" />
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
title="该产品未在当前装配工位配置需绑定物料(物料清单「装配工位」为空),不校验" />
|
||||
</div>
|
||||
<el-table v-if="bindPanel.required && bindPanel.required.length" :data="bindPanel.required" border size="small">
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="110" />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="110" />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="120" />
|
||||
<el-table-column prop="manageMode" label="管理方式" width="120">
|
||||
<template #default="{row}">{{ row.manageMode === '2' ? '电气件(SN)' : '结构件(批次)' }}</template>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
:title="data.bindTrace?.complete ? '装配物料已全部绑齐 ✓' : ('装配物料未绑齐:' + (data.bindTrace?.missing || ''))" show-icon />
|
||||
<el-table :data="data.bindTrace?.binds||[]" border size="small">
|
||||
<el-table-column prop="processCode" label="工序" width="70" />
|
||||
<el-table-column prop="materialCode" label="物料编码" min-width="110" />
|
||||
<el-table-column prop="materialCode" label="图号" min-width="110" />
|
||||
<el-table-column prop="materialName" label="物料名称" min-width="110" />
|
||||
<el-table-column prop="spec" label="规格" min-width="90" />
|
||||
<el-table-column prop="bindType" label="类型" width="70">
|
||||
|
||||
@@ -135,7 +135,7 @@ func UnqualifiedReportHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
f := excelize.NewFile()
|
||||
sheet := "不合格单"
|
||||
f.SetSheetName("Sheet1", sheet)
|
||||
headers := []string{"报检单号", "物料编码(图号)", "物料名称", "生产厂家", "检验单号", "结论", "处置方式", "处置说明", "记录时间"}
|
||||
headers := []string{"报检单号", "图号", "物料名称", "生产厂家", "检验单号", "结论", "处置方式", "处置说明", "记录时间"}
|
||||
for c, h := range headers {
|
||||
cell, _ := excelize.CoordinatesToCellName(c+1, 1)
|
||||
_ = f.SetCellValue(sheet, cell, h)
|
||||
|
||||
@@ -531,7 +531,7 @@ func renderModelCard(c *modelCard) (string, error) {
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th colspan="9" class="st-name">BOM:{{.BomName}}</th></tr>
|
||||
<tr><th>物料编码</th><th>物料名称</th><th>规格</th><th>单位</th><th>管理方式</th><th>装配工位</th><th>单台用量</th><th>损耗率(%)</th><th>需求总量</th></tr>
|
||||
<tr><th>图号</th><th>物料名称</th><th>规格</th><th>单位</th><th>管理方式</th><th>装配工位</th><th>单台用量</th><th>损耗率(%)</th><th>需求总量</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range .Items}}
|
||||
|
||||
Reference in New Issue
Block a user