|
|
@@ -1,1298 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="ele-body">
|
|
|
- <div class="page-title">
|
|
|
- <el-page-header @back="$router.go(-1)">
|
|
|
- <div slot="content" class="pageContent">
|
|
|
- <div>详情</div>
|
|
|
- </div>
|
|
|
- </el-page-header>
|
|
|
- <el-button @click="handlePrint">打印工单</el-button>
|
|
|
- </div>
|
|
|
- <progressBox
|
|
|
- v-if="tabList.length"
|
|
|
- :list="tabList"
|
|
|
- :total="infoData.formingNum"
|
|
|
- />
|
|
|
- <el-card>
|
|
|
- <el-descriptions title="" direction="vertical" :column="7" border>
|
|
|
- <el-descriptions-item label="工单号">{{
|
|
|
- infoData.code
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="生产版本">{{
|
|
|
- infoData.produceVersionName
|
|
|
- }}</el-descriptions-item>
|
|
|
- <!-- <el-descriptions-item label="工单类型">苏州市</el-descriptions-item> -->
|
|
|
- <el-descriptions-item label="产线">{{
|
|
|
- infoData.productLine
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="工艺路线版本">{{
|
|
|
- infoData.routingVersion
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="计划编号">{{
|
|
|
- infoData.productionPlanCode
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="计划类型">{{
|
|
|
- typeList[infoData.planType]
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="产品编码">{{
|
|
|
- infoData.productCode
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="产品名称">{{
|
|
|
- infoData.productName
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="牌号 | 型号"
|
|
|
- >{{ infoData.brandNo }} | {{ infoData.model }}</el-descriptions-item
|
|
|
- >
|
|
|
- <el-descriptions-item label="要求生产数量(PCS)">{{
|
|
|
- infoData.formingNum
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="要求生产重量(KG)">{{
|
|
|
- infoData.formingWeight
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="计划开始时间">{{
|
|
|
- infoData.planStartTime
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="实际开始时间">{{
|
|
|
- infoData.startTime
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="已生产数量(PCS)">{{
|
|
|
- infoData.formedNum
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="已生产重量(KG)">{{
|
|
|
- infoData.formedWeight
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="已交付数量(PCS)">{{
|
|
|
- infoData.deliveredQuantity
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="已交付重量(KG)">{{
|
|
|
- infoData.deliveredWeight
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="工单状态">{{
|
|
|
- statusList[infoData.status]
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="完成时间">{{
|
|
|
- infoData.completeTime
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="生产周期">{{
|
|
|
- infoData.productionCycle
|
|
|
- }}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- </el-card>
|
|
|
-
|
|
|
- <el-card v-if="tabList.length">
|
|
|
- <el-tabs v-model="activeName" type="card" @tab-click="handleTabClick">
|
|
|
- <el-tab-pane
|
|
|
- :label="item.taskTypeName"
|
|
|
- :name="JSON.stringify(index)"
|
|
|
- v-for="(item, index) in tabList"
|
|
|
- :key="item.taskCode"
|
|
|
- ></el-tab-pane>
|
|
|
- <!-- <el-tab-pane label="挤压生产" name="1"> </el-tab-pane>
|
|
|
- <el-tab-pane label="自然干燥" name="2"></el-tab-pane>
|
|
|
- <el-tab-pane label="升温干燥" name="3"></el-tab-pane>
|
|
|
- <el-tab-pane label="半加定长" name="4"></el-tab-pane>
|
|
|
- <el-tab-pane label="备炉" name="5"></el-tab-pane>
|
|
|
- <el-tab-pane label="烧结" name="6"></el-tab-pane>
|
|
|
- <el-tab-pane label="深加工" name="7"></el-tab-pane>
|
|
|
- <el-tab-pane label="包装" name="8"></el-tab-pane>
|
|
|
- <el-tab-pane label="入库" name="9"></el-tab-pane> -->
|
|
|
- </el-tabs>
|
|
|
- <ele-pro-table
|
|
|
- :columns="columns"
|
|
|
- :datasource="datasource"
|
|
|
- :key="activeName"
|
|
|
- :cache-key="`produceDetal${activeName}`"
|
|
|
- :initLoad="false"
|
|
|
- ref="table"
|
|
|
- >
|
|
|
- <template v-slot:toolbar>
|
|
|
- <div class="tips-box">
|
|
|
- <ul
|
|
|
- v-if="
|
|
|
- chooseItem == '挤压生产' ||
|
|
|
- chooseItem.includes('模压') ||
|
|
|
- chooseItem.includes('挤压') ||
|
|
|
- (chooseItem.includes('等静压') && activeName == 0)
|
|
|
- "
|
|
|
- >
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品数量</span>
|
|
|
- {{ countMsg.standardTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品重量</span>
|
|
|
- {{ countMsg.standardTotalWeight }}KG
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计投料重量</span>
|
|
|
- {{ countMsg.feedMaterielWeight }}KG
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <ul
|
|
|
- v-else-if="
|
|
|
- ['自然干燥', '升温干燥', '半加定长'].includes(chooseItem) ||
|
|
|
- chooseItem.includes('半加')
|
|
|
- "
|
|
|
- >
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品数量</span>
|
|
|
- {{ countMsg.standardTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品重量</span>
|
|
|
- {{ countMsg.standardTotalWeight }}KG
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计投料产品重量</span>
|
|
|
- {{ countMsg.feedProductWeight }}KG
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <ul v-else-if="['备炉'].includes(chooseItem)">
|
|
|
- <li>
|
|
|
- <span class="label">累计交接数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计实际数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <ul v-else-if="['烧结', '质检'].includes(chooseItem)">
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品数量</span>
|
|
|
- {{ countMsg.standardTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品重量</span>
|
|
|
- {{ countMsg.standardTotalWeight }}KG
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计投料数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <ul v-else-if="['包装'].includes(chooseItem)">
|
|
|
- <li>
|
|
|
- <span class="label">累计交接数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计实际数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计包装数量</span>
|
|
|
- {{ countMsg.packTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计包装产品数量</span>
|
|
|
- {{ countMsg.packProductTotalNum }}PCS
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <ul v-else-if="['入库'].includes(chooseItem)">
|
|
|
- <li>
|
|
|
- <span class="label">报工次数</span> {{ countMsg.reportNum }}</li
|
|
|
- >
|
|
|
- <li>
|
|
|
- <span class="label">批次数量</span> {{ countMsg.reportNum }}</li
|
|
|
- >
|
|
|
- <li>
|
|
|
- <span class="label">累计入库数量</span
|
|
|
- >{{ countMsg.inStoreNum }}PCS</li
|
|
|
- >
|
|
|
- </ul>
|
|
|
- <ul v-else>
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品数量</span>
|
|
|
- {{ countMsg.standardTotalNum }}PCS
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计合格品重量</span>
|
|
|
- {{ countMsg.standardTotalWeight }}KG
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <span class="label">累计投料数量</span>
|
|
|
- {{ countMsg.joinTotalNum }}PCS
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <!-- <el-link type="primary" v-if="activeName == 1" @click="openOther"
|
|
|
- >其他任务记录</el-link
|
|
|
- > -->
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <template v-slot:bom="{ row }">
|
|
|
- <el-link type="primary" @click="check(row)">查看</el-link>
|
|
|
- </template>
|
|
|
- <template v-slot:action="{ row }">
|
|
|
- <el-link type="primary" @click="writeOff(row)">冲销</el-link>
|
|
|
- </template>
|
|
|
- </ele-pro-table>
|
|
|
- </el-card>
|
|
|
- <otherMission ref="otherMissionRef" />
|
|
|
- <bomList ref="bomListRef" />
|
|
|
- <OrderPrint
|
|
|
- ref="orderPrintRef"
|
|
|
- :workOrderId="workOrderId"
|
|
|
- :infoData="infoData"
|
|
|
- :processList="tabList"
|
|
|
- />
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
- import progressBox from './components/progressBox';
|
|
|
- import otherMission from './components/otherMission';
|
|
|
- import OrderPrint from '@/components/print/OrderPrint';
|
|
|
- import bomList from './components/bomList';
|
|
|
- import dictMixins from '@/mixins/dictMixins';
|
|
|
- import {
|
|
|
- reportPage,
|
|
|
- getInfoById,
|
|
|
- reportCount,
|
|
|
- writeOffWork
|
|
|
- } from '@/api/produceOrder/index.js';
|
|
|
- export default {
|
|
|
- mixins: [dictMixins],
|
|
|
- components: {
|
|
|
- OrderPrint,
|
|
|
- otherMission,
|
|
|
- progressBox,
|
|
|
- bomList
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- infoData: {},
|
|
|
- descriptionsShow: true,
|
|
|
- activeName: '0',
|
|
|
- tabList: [],
|
|
|
- columnOpt: {
|
|
|
- 挤压生产: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料时间',
|
|
|
- prop: 'feedingTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料重量',
|
|
|
- prop: 'feedingWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料执行人',
|
|
|
- prop: 'feedingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备编码',
|
|
|
- prop: 'deviceCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备名称',
|
|
|
- prop: 'deviceName',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '周转车编码',
|
|
|
- // prop: 'transferCarCode'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 自然干燥: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料时间',
|
|
|
- prop: 'feedingTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料执行人',
|
|
|
- prop: 'feedingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '产品数量',
|
|
|
- prop: 'productNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '周转车编码',
|
|
|
- // prop: 'transferCarCode'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '区域编码',
|
|
|
- prop: 'areaCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '干燥时长',
|
|
|
- prop: 'dryingDuration',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 升温干燥: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料时间',
|
|
|
- prop: 'feedingTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料执行人',
|
|
|
- prop: 'feedingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '产品数量',
|
|
|
- prop: 'productNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '周转车编码',
|
|
|
- // prop: 'transferCarCode'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '设备编码',
|
|
|
- prop: 'deviceCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备名称',
|
|
|
- prop: 'deviceName',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '升温曲线',
|
|
|
- prop: 'temperatureRamp',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 半加定长: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料时间',
|
|
|
- prop: 'feedingTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料执行人',
|
|
|
- prop: 'feedingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '产品数量',
|
|
|
- prop: 'productNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '周转车编码',
|
|
|
- // prop: 'transferCarCode'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '设备编码',
|
|
|
- prop: 'deviceCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备名称',
|
|
|
- prop: 'deviceName',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 备炉: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接时间',
|
|
|
- prop: 'handoverTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接执行人',
|
|
|
- prop: 'handoverOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '交接数量',
|
|
|
- // prop: 'handoverQuantity',
|
|
|
- // minWidth: 100,
|
|
|
- // align: 'center'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '实际数量',
|
|
|
- prop: 'billOfMaterials',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '执行时间',
|
|
|
- prop: 'executionTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '执行人',
|
|
|
- prop: 'executor',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备编码',
|
|
|
- prop: 'deviceCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备名称',
|
|
|
- prop: 'deviceName',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '烧结曲线',
|
|
|
- prop: 'sinteringCurve',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 烧结: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 质检: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 深加工: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接时间',
|
|
|
- prop: 'handoverTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接执行人',
|
|
|
- prop: 'handoverOperator',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '交接数量',
|
|
|
- // prop: 'handoverQuantity'
|
|
|
- // },
|
|
|
- // {
|
|
|
- // label: '实际数量',
|
|
|
- // prop: 'billOfMaterials'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '投料时间',
|
|
|
- prop: 'feedingTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '投料执行人',
|
|
|
- prop: 'feedingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备编码',
|
|
|
- prop: 'deviceCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '设备名称',
|
|
|
- prop: 'deviceName',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品数量',
|
|
|
- prop: 'standardNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '合格品重量',
|
|
|
- prop: 'standardWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品数量',
|
|
|
- prop: 'noStandardNum',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '不合格品重量',
|
|
|
- prop: 'noStandardWeight',
|
|
|
- minWidth: 120,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '副产品重量',
|
|
|
- prop: 'secondaryProductWeight',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 包装: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接时间',
|
|
|
- prop: 'handoverTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接执行人',
|
|
|
- prop: 'handoverOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '交接数量',
|
|
|
- // prop: 'handoverQuantity',
|
|
|
- // minWidth: 100,
|
|
|
- // align: 'center'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '实际数量',
|
|
|
- prop: 'billOfMaterials',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '包装数量',
|
|
|
- prop: 'packNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '包装产品数量',
|
|
|
- prop: 'packagedProductQuantity',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '尾料数量',
|
|
|
- prop: 'surplusNum',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '物料清单',
|
|
|
- prop: 'materialList',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center',
|
|
|
- slot: 'bom'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ],
|
|
|
- 入库: [
|
|
|
- {
|
|
|
- label: '序号',
|
|
|
- type: 'index',
|
|
|
- width: 55,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接时间',
|
|
|
- prop: 'handoverTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交接执行人',
|
|
|
- prop: 'handoverOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- // {
|
|
|
- // label: '交接数量',
|
|
|
- // prop: 'handoverQuantity',
|
|
|
- // minWidth: 100,
|
|
|
- // align: 'center'
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '实际数量',
|
|
|
- prop: 'billOfMaterials',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工时间',
|
|
|
- prop: 'reportWorkTime',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '报工执行人',
|
|
|
- prop: 'reportingOperator',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '批次数量',
|
|
|
- prop: 'batchQuantity',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '入库数量',
|
|
|
- prop: 'inboundQuantity',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '交货仓库',
|
|
|
- prop: 'storageCode',
|
|
|
- minWidth: 100,
|
|
|
- align: 'center',
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
- return this.getDictValue('仓库', _row.storageCode);
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '操作',
|
|
|
- slot: 'action'
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- workOrderId: '',
|
|
|
- taskCode: '',
|
|
|
- typeList: {
|
|
|
- 1: '内销订单',
|
|
|
- 2: '外销订单',
|
|
|
- 3: '预制订单'
|
|
|
- },
|
|
|
- statusList: {
|
|
|
- 4: '待生产',
|
|
|
- 5: '生产中',
|
|
|
- 6: '已完成',
|
|
|
- 7: '已延期'
|
|
|
- },
|
|
|
- countMsg: {},
|
|
|
- chooseIndex: 0,
|
|
|
- chooseItem: '',
|
|
|
- request: {
|
|
|
- isLast: 0,
|
|
|
- nextCompleteNum: 0,
|
|
|
- completeNum: 0
|
|
|
- }
|
|
|
- };
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.workOrderId = this.$route.params.id;
|
|
|
- this.getInfo(this.workOrderId);
|
|
|
- this.requestDict('仓库');
|
|
|
- },
|
|
|
- computed: {
|
|
|
- columns() {
|
|
|
- const { taskTypeName: name } = this.tabList[this.activeName];
|
|
|
-
|
|
|
- if (name.includes('半加')) {
|
|
|
- return this.columnOpt['半加定长'];
|
|
|
- }
|
|
|
- if (
|
|
|
- (name.includes('模压') ||
|
|
|
- name.includes('挤压') ||
|
|
|
- name.includes('等静压')) &&
|
|
|
- this.activeName == 0
|
|
|
- ) {
|
|
|
- return this.columnOpt['挤压生产'];
|
|
|
- }
|
|
|
- return (
|
|
|
- this.columnOpt[this.tabList[this.activeName].taskTypeName] ||
|
|
|
- this.columnOpt['深加工']
|
|
|
- );
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- handlePrint() {
|
|
|
- this.$refs.orderPrintRef.open();
|
|
|
- },
|
|
|
-
|
|
|
- handleTabClick(tab) {
|
|
|
- if (this.chooseIndex != tab.index) {
|
|
|
- this.chooseIndex = Number(tab.index);
|
|
|
- const chooseItem = this.tabList[this.chooseIndex];
|
|
|
- this.chooseItem = this.tabList[this.chooseIndex].taskTypeName;
|
|
|
- this.activeName = tab.index;
|
|
|
- this.taskCode = chooseItem.taskCode || '';
|
|
|
- this.reload({
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- taskCode: this.taskCode
|
|
|
- });
|
|
|
- this.getReportCount();
|
|
|
- this.setData();
|
|
|
- }
|
|
|
- },
|
|
|
- setData() {
|
|
|
- this.request.completeNum = this.tabList[this.chooseIndex].number;
|
|
|
- if (this.chooseIndex == this.tabList.length - 1) {
|
|
|
- this.request.isLast = 1;
|
|
|
- } else {
|
|
|
- this.request.isLast = 0;
|
|
|
- this.request.nextCompleteNum =
|
|
|
- this.tabList[this.chooseIndex + 1].number;
|
|
|
- }
|
|
|
- },
|
|
|
- async datasource({ page, limit, where }) {
|
|
|
- const res = await reportPage({ ...where, pageNum: page, size: limit });
|
|
|
- if (typeof res.list == 'string') {
|
|
|
- res.list = [];
|
|
|
- }
|
|
|
- return res;
|
|
|
- },
|
|
|
- /* 刷新表格 */
|
|
|
- reload(where) {
|
|
|
- this.$nextTick(() =>
|
|
|
- this.$refs.table.reload({ page: 1, limit: 10, where })
|
|
|
- );
|
|
|
- },
|
|
|
- async getInfo(id) {
|
|
|
- const res = await getInfoById(id);
|
|
|
- this.infoData = res;
|
|
|
- if (typeof res.taskTypeProcessDiagrams == 'string') {
|
|
|
- this.tabList = [];
|
|
|
- } else {
|
|
|
- const list = res.taskTypeProcessDiagrams.filter(
|
|
|
- (i) => !i.taskTypeName?.includes('工具')
|
|
|
- );
|
|
|
-
|
|
|
- const index = list.findIndex((i) =>
|
|
|
- i.taskTypeName.includes('挤压干燥')
|
|
|
- );
|
|
|
- if (index > -1) {
|
|
|
- list[index].taskTypeName = '升温干燥';
|
|
|
- }
|
|
|
-
|
|
|
- this.tabList = list;
|
|
|
- }
|
|
|
- // this.activeName = this.tabList[0]?.taskTypeName || ''
|
|
|
- this.chooseItem = this.tabList[0]?.taskTypeName;
|
|
|
- this.activeName = 0;
|
|
|
- this.taskCode = this.tabList[0]?.taskCode || '';
|
|
|
- this.chooseIndex = 0;
|
|
|
- this.reload({ workOrderId: this.workOrderId, taskCode: this.taskCode });
|
|
|
- this.getReportCount();
|
|
|
- this.setData();
|
|
|
- },
|
|
|
- async getReportCount() {
|
|
|
- const index = this.tabList.findIndex(
|
|
|
- (item) => item.taskCode === this.taskCode
|
|
|
- );
|
|
|
- let lastTaskCode = this.taskCode;
|
|
|
- if (index > 0) {
|
|
|
- lastTaskCode = this.tabList[index - 1].taskCode;
|
|
|
- }
|
|
|
- const res = await reportCount({
|
|
|
- lastTaskCode,
|
|
|
- taskCode: this.taskCode,
|
|
|
- workOrderId: this.workOrderId
|
|
|
- });
|
|
|
- this.countMsg = res;
|
|
|
- },
|
|
|
- openOther() {
|
|
|
- this.$refs.otherMissionRef.open();
|
|
|
- },
|
|
|
-
|
|
|
- // 冲销
|
|
|
- writeOff(row) {
|
|
|
- const h = this.$createElement;
|
|
|
- this.$confirm('', {
|
|
|
- message: h('div', null, [
|
|
|
- h('i', {
|
|
|
- class: 'el-icon-question',
|
|
|
- style: 'color:#f90;font-size:30px;'
|
|
|
- }),
|
|
|
- h(
|
|
|
- 'span',
|
|
|
- {
|
|
|
- style:
|
|
|
- 'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;'
|
|
|
- },
|
|
|
- '提示'
|
|
|
- ),
|
|
|
- h(
|
|
|
- 'p',
|
|
|
- { style: 'margin:10px 0 0 40px;color:red' },
|
|
|
- '是否要撤销本次报工?'
|
|
|
- )
|
|
|
- ]),
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消'
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- const data = {
|
|
|
- taskCode: this.taskCode,
|
|
|
- taskName: this.chooseItem,
|
|
|
- reportId: row.id,
|
|
|
- writeOffNum: row.standardNum
|
|
|
- ? row.standardNum
|
|
|
- : row.actualQuantity,
|
|
|
- ...this.request
|
|
|
- };
|
|
|
- writeOffWork(data).then((res) => {
|
|
|
- if (res == 1) {
|
|
|
- this.$message.success('冲销成功');
|
|
|
- this.reload({
|
|
|
- workOrderId: this.workOrderId,
|
|
|
- taskCode: this.taskCode
|
|
|
- });
|
|
|
- this.refreshData();
|
|
|
- } else if (res == 0) {
|
|
|
- this.$confirm('', {
|
|
|
- message: h('div', null, [
|
|
|
- h('i', {
|
|
|
- class: 'el-icon-question',
|
|
|
- style: 'color:#f90;font-size:30px;'
|
|
|
- }),
|
|
|
- h(
|
|
|
- 'span',
|
|
|
- {
|
|
|
- style:
|
|
|
- 'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;color:red'
|
|
|
- },
|
|
|
- '冲销失败'
|
|
|
- ),
|
|
|
- h(
|
|
|
- 'p',
|
|
|
- { style: 'margin:10px 0 0 40px' },
|
|
|
- '冲销后的总数不可小于下道工序的总数'
|
|
|
- )
|
|
|
- ]),
|
|
|
- confirmButtonText: '确定',
|
|
|
- showCancelButton: false
|
|
|
- })
|
|
|
- .then(() => {})
|
|
|
- .catch(() => {});
|
|
|
- } else {
|
|
|
- this.$message.error('接口异常');
|
|
|
- }
|
|
|
- });
|
|
|
- })
|
|
|
- .catch(() => {});
|
|
|
- },
|
|
|
-
|
|
|
- check(row) {
|
|
|
- this.$refs.bomListRef.open(row);
|
|
|
- },
|
|
|
-
|
|
|
- async refreshData() {
|
|
|
- this.getReportCount();
|
|
|
- const res = await getInfoById(this.workOrderId);
|
|
|
- this.infoData = res;
|
|
|
- if (typeof res.taskTypeProcessDiagrams == 'string') {
|
|
|
- this.tabList = [];
|
|
|
- } else {
|
|
|
- this.tabList = res.taskTypeProcessDiagrams;
|
|
|
- }
|
|
|
- this.setData();
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="scss" scoped>
|
|
|
- .el-tabs {
|
|
|
- margin-top: 20px;
|
|
|
- }
|
|
|
-
|
|
|
- .tips-box {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- padding-right: 20px;
|
|
|
- ul {
|
|
|
- list-style: none;
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
-
|
|
|
- li {
|
|
|
- margin-right: 40px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-</style>
|