You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1318 lines
44 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!--<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:pro:workorder:add']"
>上传SAP生产</el-button>
</el-col>-->
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-printer"
size="mini"
:disabled="single"
@click="printIdCard"
v-hasPermi="['mes:pro:workorder:edit']"
>打印标识卡
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="workorderList" @selection-change="handleSelectionChange"
row-key="workorderCode"
lazy
:load="treeLoad"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column type="selection" align="center" />
<el-table-column label="工单ID" align="center" prop="storageId" v-if="false"/>
<el-table-column width="130" label="产品编码" align="center" prop="productCode" />
<el-table-column width="300" label="产品名称" align="center" prop="productName" :show-overflow-tooltip="true"/>
<el-table-column width="130" label="批次" align="center" prop="batchNumber"/>
<el-table-column width="120" label="数量" align="center" prop="amount"/>
<!-- <el-table-column width="50" label="单位" align="center" prop="unit"/>-->
<el-table-column width="130" label="库区" align="center" prop="waCode"/>
<el-table-column width="120" label="生产日期" align="center" prop="userDefined4">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.userDefined4, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column width="120" label="每托数量" align="center" prop="userDefined2"/>
<el-table-column width="120" label="版次" align="center" prop="userDefined3"/>
</el-table>
<!-- 打印预览弹出层 -->
<el-dialog
title="工单信息"
:visible.sync="printDialogVisible"
width="1000px"
>
<div id="printFrom" class="my-print-box">
<el-form :ref="formRef" :model="form" :rules="validateRules">
<!-- 表头-工单信息 -->
<el-row class="my-print-head">
<el-col :offset="10" :span="4">生产工单</el-col>
</el-row>
<!-- 导航栏 -->
<el-row class="my-print-nav">
<el-col :span="4">工厂:{{ printData.factory }}</el-col>
<el-col :span="4">工作中心:{{ printData.workCenter }}</el-col>
<el-col :span="4">生产日期:{{ printData.productDate }}</el-col>
<el-col :span="4">打印日期:{{ printData.printDate }}</el-col>
<el-col :span="4">页次: 1/ 1</el-col>
</el-row>
<!-- 主数据 -->
<el-table
v-if="refreshNewWorkerTable"
v-loading="newWorkerLoading"
class="my-print-table"
:data="printData.workTable"
border
style="width: 100%">
<el-table-column
type="index"
label="序号"
width="50">
</el-table-column>
<el-table-column
prop="workorderCode"
label="生产工单"
width="130">
</el-table-column>
<el-table-column
prop="workorderCodeSap"
width="100" :formatter="orderCodeFormate"
label="生产订单">
</el-table-column>
<el-table-column
prop="productName"
label="物料名称"
width="180">
</el-table-column>
<el-table-column
prop="unit" width="50"
label="单位">
</el-table-column>
<!--
<el-table-column
prop="quantityProduced" width="80"
label="已生产数量">
</el-table-column>-->
<el-table-column
prop="quantitySplit" width="80"
label="拆分数量">
</el-table-column>
<el-table-column
prop="routeCode" width="90"
label="工艺编码">
</el-table-column>
<el-table-column
prop="prodLineCode" width="100"
label="产线设备">
</el-table-column>
<el-table-column label="班次" align="center" prop="shiftId" :formatter="shiftFormat" width="40">
</el-table-column>
<el-table-column label="工单状态" align="center" prop="status" width="50">
<template slot-scope="scope">
<dict-tag :options="dict.type.workorder_type" :value="scope.row.status"/>
</template>
</el-table-column>
<!--
<el-table-column label="产品类型" align="center" prop="prodType">
<template slot-scope="scope">
<dict-tag :options="dict.type.product_type" :value="scope.row.prodType"/>
</template>
</el-table-column>-->
</el-table>
<br/>
<!-- 底部 -->
<el-row class="my-print-foot">
<el-col :offset="1" :span="3">SAP-No:{{ printData.SAPNo }}</el-col>
<el-col :offset="1" :span="3">Z-PM-F-030-A.1</el-col>
</el-row>
<el-row class="my-print-foot">
<el-col :offset="1" :span="3">制单人:{{ printData.manufacture }}</el-col>
<el-col :offset="1" :span="3">审核人:{{ printData.auditor }}</el-col>
</el-row>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrint(printData)">打 印</el-button>
</span>
</el-dialog>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改生产工单对话框 -->
<!-- 工单修改模块 -->
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
<!-- 拆分头pro -->
<el-table
border
v-if="refreshProTable"
v-loading="proLoading"
:data="productData"
row-key="orderCode"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column width="150" label="订单编号" prop="orderCode"/>
<el-table-column width="380" label="产品名称" align="center" prop="prodDesc"/>
<el-table-column width="60" label="单位" align="center" prop="unit"/>
<el-table-column width="130" label="产品数量" align="center" prop="quantity"/>
<el-table-column label="已拆分数量" align="center" prop="quantitySplit"/>
<el-table-column label="拆分数量" align="center" prop="atrr1"/>
<el-table-column label="生产版本" align="center" prop="atrr2"/>
</el-table>
<el-form class="my-margin" :model="splitForm" ref="dynamicForm" label-width="80px">
<!-- 编辑框 -->
<!-- 第一行 -->
<el-row>
<el-col :span="7">
<!-- 选择工艺 -->
<el-form-item size="small" label="选择工艺:" class="my-select my-first">
<el-select @change="routeChange" v-model="splitForm.routeCode" placeholder="请选择工艺">
<el-option v-for="item in routes" :key="item.routeCode" :label="item.routeName"
:value="item.routeCode"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :offset="1" :span="7">
<!-- 工单日期 -->
<el-form-item size="small" label="工单日期: ">
<el-date-picker @change="checkDate" v-model="splitForm.productDate" type="date" placeholder="选择日期"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :offset="1" :span="7">
<!-- 选择班次 -->
<el-form-item size="small" label="选择班次:" class="my-select my-first">
<el-select @change="shiftChange" v-model="splitForm.shiftId" placeholder="请选择班次" clearable>
<el-option v-for="item in workShift" :key="item.shiftId" :label="item.shiftDesc"
:value="item.shiftId"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!-- 第二行 -->
<el-row>
<div v-if="splitForm.prodType == 'white'">
<el-col :span="7">
<!-- 选择物料 -->
<el-form-item size="small" label="投料名称:">
<el-input @focus="selectBPMateriel" readonly v-model="splitForm.materialName" placeholder="点击选择物料"/>
</el-form-item>
<el-form-item size="small" label="投料编码:">
<el-input readonly v-model="splitForm.materialCode" placeholder="点击选择物料" disabled/>
</el-form-item>
</el-col>
<el-col :offset="1" :span="7">
<!-- 拆分数量 -->
<el-form-item size="small" label="拆分数量:">
<el-input required type="number" @input="splitNumChange" v-model="splitForm.splitNum"></el-input>
</el-form-item>
</el-col>
</div>
<div v-else>
<el-col :span="7">
<!-- 拆分数量 -->
<el-form-item size="small" label="拆分数量:">
<el-input required type="number" @input="splitNumChange" v-model="splitForm.splitNum"></el-input>
</el-form-item>
</el-col>
</div>
<el-col :offset="1" :span="7">
<!-- 车数 -->
<el-form-item v-if="checkType" size="small" label="分配车数:">
<el-input disabled type="number" @input="changeCarNum" v-model="splitForm.carNum"></el-input>
</el-form-item>
<el-form-item v-else label="工单排序(插单<=0)" label-width="130px">
<el-input type="number" v-model="splitForm.sortNo" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<el-form-item label="选择设备:">
<div style="height: 130px;overflow-y: auto;">
<el-cascader
:options="eRouteOptions"
:props="eRouteProps"
v-model="splitForm.prodLineCodeArray"
clearable></el-cascader>
</div>
</el-form-item>
</el-col>
</el-row>
<!-- 第三行 -->
<el-row v-for="(item, index) in formFields" :key="index">
<!-- 批次编号 -->
<el-col :span="7">
<el-form-item size="small" label="批次编号">
<el-input @blur="batchCodeChange" v-model="item.batchCode"></el-input>
</el-form-item>
</el-col>
<!-- 批次数量 -->
<el-col :offset="1" :span="7">
<el-form-item size="small" label="批次数量">
<el-input required @input="inBatch" type="number" v-model="item.batchQuantity"></el-input>
</el-form-item>
</el-col>
<!-- 操作 -->
<el-col :offset="1" :span="4">
<el-button size="small" v-if="formFields.length > 1" @click="removeField(index)" type="danger">删除
</el-button>
<el-button size="small" v-if="index === formFields.length - 1" @click="addField" type="primary">添加
</el-button>
</el-col>
</el-row>
</el-form>
<!-- 拆分尾 -->
<el-table
border
:data="splitData"
v-if="refreshWorkerTable"
v-loading="workerLoading"
row-key="workorderCode"
style="width: 100%"
max-height="240"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column width="200" align="center" prop="workorderCode" label="工单号"></el-table-column>
<el-table-column width="100" align="center" prop="productDate" label="工单日期"></el-table-column>
<el-table-column width="150" align="center" label="生产线体设备">
<template slot-scope="scope">
<el-popover width="250" placement="top-start" trigger="hover" :content="scope.row.prodLineCode">
<span slot="reference" class="btn">{{ scope.row.prodLineCode }}</span>
</el-popover>
</template>
</el-table-column>
<el-table-column width="80" align="center" prop="quantitySplit" label="数量"></el-table-column>
<el-table-column width="60" label="单位" align="center" prop="unit"/>
<el-table-column width="90" label="工艺编码" align="center" prop="routeCode"/>
<el-table-column width="90" label="班次" align="center" prop="shiftDesc" :formatter="shiftFormat"/>
<el-table-column align="center" width="230" prop="batchCodeList" label="批次号"></el-table-column>
<el-table-column align="center" width="150" prop="batchNumList" label="批次数量"></el-table-column>
</el-table>
<!-- 测试 -->
<!-- 操作按钮 -->
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" v-if="showDetail">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!--组成白坯物料选择弹窗-->
<el-dialog
width="800px"
title="物料选择"
:visible.sync="innerBPVisible"
append-to-body>
<el-form :model="materielParams" ref="queryBPForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="物料编码" prop="productCode">
<el-input
v-model="materielParams.productCode"
placeholder="请输入物料编码"
clearable
/>
</el-form-item>
<el-form-item label="物料名称" prop="productCode">
<el-input
v-model="materielParams.productDescZh"
placeholder="请输入物料名称"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleMaterielQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 物料列表展示 -->
<el-table v-loading="loading" :data="materielList" @selection-change="selectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column label="物料编码" align="center" prop="productCode"/>
<el-table-column label="物料名称" align="center" prop="productDescZh"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="materielParams.pageNum"
:limit.sync="materielParams.pageSize"
@pagination="getBPMaterielList"
/>
<el-button @click="subMaterielBP" class="my-materiel-btn" type="primary">确定</el-button>
</el-dialog>
<!-- 工单设备修改模块 -->
<el-dialog :title="titleM" :visible.sync="openM" width="1000px" append-to-body>
<el-table
border
v-if="refreshProTable"
v-loading="proLoading"
:data="productData"
row-key="orderCode"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column width="150" label="订单编号" prop="orderCode"/>
<el-table-column width="380" label="产品名称" align="center" prop="prodDesc"/>
<el-table-column width="60" label="单位" align="center" prop="unit"/>
<el-table-column width="130" label="产品数量" align="center" prop="quantity"/>
<el-table-column label="已拆分数量" align="center" prop="quantitySplit"/>
<el-table-column label="拆分数量" align="center" prop="atrr1"/>
<el-table-column label="生产版本" align="center" prop="atrr2"/>
</el-table>
<el-form class="my-margin" :model="splitFormM" ref="dynamicForm" label-width="80px">
<el-row>
<el-col :span="7">
<el-form-item label="选择设备:">
<div style="height: 130px;overflow-y: auto;">
<el-cascader
:options="eRouteOptionsM"
:props="eRouteProps"
v-model="splitFormM.prodLineCodeArray"
clearable></el-cascader>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 拆分尾 -->
<el-table
border
:data="splitData"
v-if="refreshWorkerTable"
v-loading="workerLoading"
row-key="workorderCode"
style="width: 100%"
max-height="240"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column width="200" align="center" prop="workorderCode" label="工单号"></el-table-column>
<el-table-column width="100" align="center" prop="productDate" label="工单日期"></el-table-column>
<el-table-column width="150" align="center" label="生产线体设备">
<template slot-scope="scope">
<el-popover width="250" placement="top-start" trigger="hover" :content="scope.row.prodLineCode">
<span slot="reference" class="btn">{{ scope.row.prodLineCode }}</span>
</el-popover>
</template>
</el-table-column>
<el-table-column width="80" align="center" prop="quantitySplit" label="数量"></el-table-column>
<el-table-column width="60" label="单位" align="center" prop="unit"/>
<el-table-column width="90" label="工艺编码" align="center" prop="routeCode"/>
<el-table-column width="90" label="班次" align="center" prop="shiftDesc" :formatter="shiftFormat"/>
<el-table-column align="center" width="230" prop="batchCodeList" label="批次号"></el-table-column>
<el-table-column align="center" width="150" prop="batchNumList" label="批次数量"></el-table-column>
</el-table>
<!-- 测试 -->
<!-- 操作按钮 -->
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFormM">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 批次编辑 -->
<el-dialog :title="batchTitle" :visible.sync="batchOpen" width="1000px" append-to-body>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-add"
size="mini"
@click="handleAddBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-edit"
size="mini"
:disabled="batchSingle"
@click="handleUpdateBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-remove"
size="mini"
:disabled="batchSingle"
@click="handleRemoveBatch"
v-hasPermi="['mes:pro:workorder:edit']"
>删除
</el-button>
</el-col>
</el-row>
<el-table border v-loading="batchLoading" :data="batchData" @selection-change="batchSelectionChange"
ref="batchTable" row-key="orderCode"
>
<el-table-column type="selection" align="center" />
<el-table-column label="工单编号" align="center" prop="workorderCode" width="150"/>
<el-table-column label="当前批次号" align="center" prop="batchCode"/>
<el-table-column label="当前批次数量" align="center" prop="batchQuantity"/>
<el-table-column label="新批次号" align="center" prop="newBatchCode"/>
<el-table-column label="新批次数量" align="center" prop="newBatchQuantity"/>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="hangleCloseEditBatch">关 闭</el-button>
</div>
</el-dialog>
<!-- 批次编辑新增/修改页面 -->
<el-dialog :title="bEditTitle" :visible.sync="bEditOpen" width="600px" append-to-body>
<el-form :model="batchForm" ref="batchForm" :rules="batchRules" label-width="120px">
<el-form-item label="工单编号" prop="workorderCode">
<el-input v-model="batchForm.workorderCode" placeholder="" disabled></el-input>
</el-form-item>
<el-form-item v-if="editBatchFlag" label="当前批次号" prop="batchCode">
<el-input v-model="batchForm.batchCode" placeholder="请输入当前批次号" disabled></el-input>
</el-form-item>
<el-form-item v-if="editBatchFlag" label="当前批次数量" prop="batchQuantity">
<el-input type="number" v-model.number="batchForm.batchQuantity" placeholder="请输入当前批次数量" disabled></el-input>
</el-form-item>
<el-form-item label="新批次号" prop="newBatchCode">
<el-input v-model="batchForm.newBatchCode" placeholder="请输入新批次号"></el-input>
</el-form-item>
<el-form-item label="新批次数量" prop="newBatchQuantity">
<el-input type="number" v-model.number="batchForm.newBatchQuantity" placeholder="请输入新批次数量"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="batchSubmitForm">确 定</el-button>
<el-button @click="batchCancel"> </el-button>
</div>
</el-dialog>
<!--标识卡打印-->
<ItemPrintID ref="printID" @onSelected="printIdFunc"/>
</div>
</template>
<script>
import {
getWorkOrders,
listWorkorder,listWorkorderLevel0,getNextLevelWorkOrderList,
delWorkorder,
downWorkorder,
getOrderAndWork,getProSortNo,
getWorkBatchList,
subChangeWorkOrderPro,subChangeWorkOrderM,
checkWorkOrder,
getWorkOrderBatch,
getWorkOrderBatchInfo,
insertWorkOrderBatch,
updateWorkOrderBatch,
removeWorkOrderBatch,
getProdLineList
} from '@/api/plan/workorder'
import moment from 'moment';
import ItemPrintID from './printID.vue';
import { getProEquipment, getProRoutes, getProShifts,selectMaterielList} from '@/api/plan/order'
import {prototype} from "clipboard";
import {listDetailed, listDetailedunt,BSKlist} from "../../../api/wms/detailed";
export default {
name: "Workorder",
dicts: ['product_type', 'workorder_type'],
components: {
ItemPrintID
},
data() {
return {
// 拆分车数换算值
converCarNum: null,
// 变更校验车数书否显示
checkType: false,
// 暂存线体code
proLineCode: null,
// 打印
formRef: 'form',
validateRules: [],
materielList:[],
printData: {
printable: 'printFrom',
ignore: ['no-print'],
workCenter: "暂无数据",
SAPNo: null,
manufacture: null,
auditor: null,
printDate: null,
factory: null,
productDate: null,
workTable: [],
},
printDialogVisible: false,
// 工单修改form
workForm: {},
// 首页-多选选中-用于工单变更
selectWork: null,
//工单遮罩层
workerLoading: false,
newWorkerLoading: false,
//工单重新渲染表格
refreshWorkerTable: true,
refreshNewWorkerTable: true,
// 拆分后工单list
splitData: [],
// 批次
formFields: [{
batchCode: '',
batchQuantity: ''
}],
// 工艺list
routes: [],
// 班次list
workShift: [],
// 成型机list
proline: [],
// 订单
productData: [],
// 订单遮罩层
proLoading: false,
// 订单重新渲染表格
refreshProTable: true,
// 拆分form
splitForm: {
prodLineCodeArray: [],
splitNum: null,
productDate: null,
shiftId: null,
routeCode: null,
carNum: 0,
prodType:null,
materialCode:null,
materialName:null
},
splitFormM: {
prodLineCodeArray: []
},
// 遮罩层
loading: true,
batchLoading: true,
// 选中数组
ids: [],
cods: [],
// 批次编辑列表
batchData: [],
// 非单个禁用
single: true,
batchSingle: true,
// 非多个禁用
multiple: true,
batchMultiple: true,
// 下达禁用
statuses: [],
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 生产工单表格数据
workorderList: [],
// 弹出层标题
title: "",
titleM:"",
batchTitle: "",
bEditTitle: "",
// 是否显示弹出层
open: false,
openM:false,
batchOpen: false,
bEditOpen: false,
// 是否禁止修改批次
editBatchFlag: false,
// 查询参数
queryParams: {
productDateArray: [new Date(), new Date()],
pageNum: 1,
pageSize: 10,
workorderCode: null,
workorderName: null,
orderId: null,
orderCode: null,
productId: null,
productCode: null,
productName: null,
productSpc: null,
unit: null,
quantityProduced: null,
quantitySplit: null,
routeCode: null,
prodLineCode: null,
productDate: new Date(),
shiftId: null,
parentOrder: null,
ancestors: null,
status: 'w0',
attr1: null,
attr2: null,
attr3: null,
attr4: null,
prodType: null,
factoryCode: null,
endFlag: null
},
// 表单参数
form: {},
batchForm: {},
// 表单校验
rules: {
workorderCode: [
{required: true, message: "工单编码不能为空", trigger: "blur"}
],
workorderName: [
{required: true, message: "工单名称不能为空", trigger: "blur"}
],
orderId: [
{required: true, message: "订单id不能为空", trigger: "blur"}
],
productCode: [
{required: true, message: "产品编号不能为空", trigger: "blur"}
],
productName: [
{required: true, message: "产品名称不能为空", trigger: "blur"}
],
unit: [
{required: true, message: "单位不能为空", trigger: "blur"}
],
},
batchRules: {
workorderCode: [
{required: true, message: "工单编码不能为空", trigger: "blur"}
],
batchCode: [
{required: true, message: "当前批次编码不能为空", trigger: "blur"}
],
batchQuantity: [
{required: true, message: "当前批次数量不能为空", trigger: "blur"}
]
},
prodLineList:[],
/**********************************/
eRouteProps: {multiple: true},
eRouteOptions: [],
eRouteOptionsM: [],
// 班次
workShift: [],
//组成白坯物料弹窗
innerBPVisible: false,
materielParams: {
mtart: 'material_type1',
productCode: null,
productDescZh: null,
pageNum: 1,
pageSize: 10,
},
materielBP: [],
showDetail:true
};
},
created() {
this.getList();
// 获取班次信息
},
methods: {
//产品编码格式化
productCodeFormate(row, column, cellValue){
if(cellValue !=null){
return cellValue.slice(7,18); //返回值
}
},
//订单编码格式化
orderCodeFormate(row, column, cellValue){
if(cellValue !=null){
return cellValue.slice(3,18); //返回值
}
},
// 新增-物料搜索
handleMaterielQuery() {
this.materielQueryParams.pageNum = 1;
this.getMaterielList();
},
// 变更-车数数量校验
changeCarNum(num) {
// 请先输入订单数量
if (this.splitForm.splitNum == null) {
this.$message({
message: '请先输入拆分数量!',
type: 'warning'
})
this.splitForm.carNum = null;
return
}
// 车数不能超过拆分数量
if (Number(this.splitForm.splitNum) - Number(num) < 0) {
this.$message({
message: '车数不能超过拆分数量!',
type: 'warning'
})
num = this.splitForm.splitNum
this.splitForm.carNum = num;
}
// 不能为负数
if (num <= 0) {
this.$message({
message: '车数数量不能小于0',
type: 'warning'
})
num = 1;
this.splitForm.carNum = num;
}
this.workForm.carNum = num;
},
// 首-查询生产工单列表
getList() {
this.loading = true;
this.queryParams.parentOrder = '0';//第一层只查母单
//第一层
BSKlist(this.queryParams).then(response => {
this.workorderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 工单详情按钮操作
handleDetail(row) {
// 数据初始化
this.reset();
this.splitData = [];
this.productData = [];
this.splitForm = {
prodLineCodeArray: [],
splitNum: null,
productDate: null,
shiftId: null,
routeCode: null,
carNum: null,
prodType:null,
materialCode:null,
materialName:null
}
this.formFields = []
this.converCarNum = null;
// 获取班次信息
getProShifts().then(response => {
this.workShift = response.data
})
// 获取工艺信息
getProRoutes(this.selectWork.productCode).then(response => {
this.routes = response.data
getProEquipment(this.selectWork.routeCode).then(response => {
this.proline = response.data
})
// 设置车数换算值
for (let i = 0; i < this.routes.length; i++) {
if (this.routes[i].routeCode == this.selectWork.routeCode) {
this.converCarNum = this.routes[i].carNumUnit;
}
}
})
// 获取工艺设备信息
getProEquipment(this.selectWork.routeCode).then(response2 => {
this.eRouteOptions = response2.data
})
// 获取批次信息list
getWorkBatchList(this.selectWork).then(response => {
this.formFields = response.data
})
// 获取工单和订单信息
// 在获取到新的数据后执行以下代码
this.proLoading = true // 设置加载状态为true表示正在加载
this.workerLoading = true // 设置加载状态为true表示正在加载
getOrderAndWork(this.selectWork).then(response => {
this.splitData.push(response.data.workOrder)
this.productData.push(response.data.order)
//订单产品类型
this.splitForm.prodType = this.splitData[0].prodType
this.checkType = false
this.refreshProTable = false // 先将refreshProTable设置为false隐藏表格
this.refreshWorkerTable = false // 先将refreshProTable设置为false隐藏表格
this.$nextTick(() => {
// 使用$nextTick来等待DOM更新完成
this.refreshProTable = true // 立即将refreshProTable设置为true显示表格
this.proLoading = false // 设置加载状态为false表示加载完成
})
this.$nextTick(() => {
// 使用$nextTick来等待DOM更新完成
this.refreshWorkerTable = true // 立即将refreshProTable设置为true显示表格
this.workerLoading = false // 设置加载状态为false表示加载完成
})
// 设置拆分数量
this.splitForm.splitNum = this.splitData[0].quantitySplit
// 设置选择机型
this.splitForm.prodLineCodeArray = response.data.workOrder.prodLineCodeArray
// 设置车数
this.splitForm.carNum = this.splitData[0].carNum
// 设置班次
this.splitForm.shiftId = this.splitData[0].shiftDesc
// 设置工艺
this.splitForm.routeCode = this.splitData[0].routeCode
//初始化日期为默认今天
if(this.splitData[0].productDate != null){
this.splitForm.productDate = this.splitData[0].productDate;
}else{
this.splitForm.productDate = new Date();
}
// 订单为成品
if (this.productData[0],prototype != 'white'){
if(this.splitData[0].sortNo != null){
this.splitForm.sortNo = this.splitData[0].sortNo
}
// 递归将拆分数量还原
function setAtrr1(order, work) {
order.quantitySplit = Number(order.quantitySplit) - Number(work.quantitySplit);
order.atrr1 = work.quantitySplit;
if (order.children !== undefined && work.children !== undefined) {
setAtrr1(order.children[0], work.children[0]);
}
}
setAtrr1(this.productData[0], this.splitData[0]);
}
})
this.open = true;
this.title = "生产工单详情";
this.showDetail = false;
},
//工单设备修改开始-----》》》
editMachine(row) {
// 数据初始化
this.reset();
this.splitData = [];
this.productData = [];
this.splitFormM = {
prodLineCodeArray: [],
}
// 获取工艺设备信息
getProEquipment(this.selectWork.routeCode).then(response2 => {
this.eRouteOptionsM = response2.data
})
getOrderAndWork(this.selectWork).then(response => {
// 设置选择机型
this.splitFormM.prodLineCodeArray = response.data.workOrder.prodLineCodeArray
this.splitData.push(response.data.workOrder)
this.productData.push(response.data.order)
this.refreshProTable = false // 先将refreshProTable设置为false隐藏表格
this.refreshWorkerTable = false // 先将refreshProTable设置为false隐藏表格
this.$nextTick(() => {
// 使用$nextTick来等待DOM更新完成
this.refreshProTable = true // 立即将refreshProTable设置为true显示表格
this.proLoading = false // 设置加载状态为false表示加载完成
})
this.$nextTick(() => {
// 使用$nextTick来等待DOM更新完成
this.refreshWorkerTable = true // 立即将refreshProTable设置为true显示表格
this.workerLoading = false // 设置加载状态为false表示加载完成
})
})
this.openM = true;
this.titleM = "生产工单设备修改";
},
//工单设备修改结束-----《《《《《《
// 工单设备变更-变更提交按钮
submitFormM() {
//下面是请求处理
const data = {
proOrderWorkorder: this.selectWork,
prodLineCodeArray: this.splitFormM.prodLineCodeArray
}
subChangeWorkOrderM(data).then(response => {
if (response.code == 500) {
this.$modal.msgError(response.msg)
return
}
this.getList()
this.$modal.msgSuccess('提交成功')
})
// 清除缓存
this.splitFormM = {
prodLineCodeArray: []
}
this.openM = false
},
// 取消按钮
cancel() {
this.open = false;
this.openM = false;
this.showDetail = true;
this.reset();
},
// 首-表单重置
reset() {
this.form = {
workorderId: null,
workorderCode: null,
workorderName: null,
orderId: null,
orderCode: null,
productId: null,
productCode: null,
productName: null,
productSpc: null,
unit: null,
quantityProduced: null,
quantitySplit: null,
routeCode: null,
prodLineCode: null,
prodLineCodeArray: [],
productDate: null,
shiftId: null,
parentOrder: null,
ancestors: null,
status: null,
remark: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
prodType: null,
factoryCode: null,
endFlag: null
};
this.resetForm("form");
},
resetBatchForm() {
this.batchForm = {
workorderCode: null,
batchCode: null,
batchQuantity: null,
newBatchCode: null,
newBatchQuantity: null,
attr1: null,
}
this.resetForm("batchForm");
},
// 首-搜索按钮操作
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
// 首-重置按钮操作
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 首-多选框选中数据
handleSelectionChange(selection) {
// 这里设置选中的工单信息--用于工单变更
this.selectWork = selection[0]
this.ids = selection.map(item => item.workorderId)
this.codes = selection.map(item => item.workorderCode)
this.single = selection.length !== 1
this.multiple = !selection.length
this.statuses = selection.map(item => item.status)
},
batchSelectionChange(selection) {
this.batchids = selection.map(item => item.workorderId)
this.bWorkCodes = selection.map(item => item.workorderCode)
this.batchCodes = selection.map(item => item.batchCode)
this.batchSingle = selection.length !== 1
this.batchMultiple = !selection.length
},
// 首-新增按钮操作
handleAdd() {
alert("待建设")
//this.reset();
//this.open = true;
//this.title = "添加生产工单";
},
shiftFormat(row,column){
let array = this.workShift;
let value = '其他';
array.forEach((item) => {
if (item.shiftId == row.shiftId) {
value = item.shiftDesc
}
})
return value;
},
editBatch() {
if(this.selectWork.status == 'w0'){
this.$modal.msgError("还未派发请到工单变更进行调整!");
return;
}
this.batchLoading = true;
const workOrdercode = this.codes[0];
getWorkOrderBatch(workOrdercode).then(response => {
if(response.code == 200) {
this.batchData = response.rows;
this.batchOpen = true;
this.batchLoading = false;
this.batchTitle = "批次编辑";
}
})
},
hangleCloseEditBatch() {
this.batchOpen = false;
this.getList();
},
// 批次编辑新增
handleAddBatch() {
this.resetBatchForm();
this.batchForm.workorderCode = this.codes[0];
this.bEditOpen = true;
this.bEditTitle = "批次新增";
this.editBatchFlag = false;
},
// 批次编辑修改
handleUpdateBatch() {
this.editBatchFlag = true;
this.resetBatchForm();
const params = {
workorderCode: this.bWorkCodes[0],
batchCode: this.batchCodes[0]
}
getWorkOrderBatchInfo(params).then(response => {
this.batchForm = response.data;
this.bEditOpen = true;
this.bEditTitle = "批次修改";
});
},
// 批次编辑取消
batchCancel() {
this.bEditOpen = false;
this.editBatch();
},
// 批次编辑提交
batchSubmitForm() {
this.$refs["batchForm"].validate(valid => {
if (valid) {
if (this.batchForm.batchCode != null) {
updateWorkOrderBatch(this.batchForm).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("修改成功");
}else{
this.$modal.msgError(response.msg);
}
this.bEditOpen = false;
this.editBatch();
});
} else {
insertWorkOrderBatch(this.batchForm).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("新增成功");
}else{
this.$modal.msgError(response.msg);
}
this.bEditOpen = false;
this.editBatch();
});
}
}
});
},
// 删除批次
handleRemoveBatch() {
const workorderCode = this.bWorkCodes[0];
const batchCode = this.batchCodes[0];
this.$modal.confirm('是否确认删除批次编号为"' + batchCode + '"的数据项?').then(function() {
return removeWorkOrderBatch(batchCode,workorderCode);
}).then(() => {
this.editBatch();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
//新增-打开组成白坯选择物料窗口
selectBPMateriel() {
// 清除搜索缓存
this.materielParams.productCode = null;
this.materielParams.productDescZh = null;
this.innerBPVisible = true;
this.getBPMaterielList();
},
//新增-打开组成白坯选择物料窗口
getBPMaterielList() {
this.loading = true;
selectMaterielList(this.materielParams).then(response => {
this.materielList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
// 新增-打开组成白坯选择物料窗口-选中物料信息
selectionChange(e) {
this.materielBP = e;
},
// 新增-打开组成白坯选择物料窗口-确认选择物料
subMaterielBP() {
if (this.materielBP.length == 0) {
this.$message({
message: '请选择物料!',
type: 'warning'
})
return
}
if (this.materielBP.length > 1) {
this.$message({
message: '物料只能选择一个!',
type: 'warning'
})
return
}
this.splitForm.materialCode = this.materielBP[0].productCode;
this.splitForm.materialName = this.materielBP[0].productDescZh;
this.innerBPVisible = false;
},
/**打印标识卡弹出框**/
printIdCard() {
this.$refs.printID.init(this.selectWork.storageId);
this.$refs.printID.printDialogVisible = true;
},
//标识卡选择确认
printIdFunc(obj) {
this.form.userName = obj.code;
this.form.nickName = obj.name;
},
}
};
</script>
<style>
.el-row {
margin: 0;
padding: 0;
}
.el-col {
border-radius: 4px;
}
.bg-purple-dark {
background: #99a9bf;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #e5e9f2;
}
.grid-content {
border-radius: 4px;
min-height: 36px;
}
.row-bg {
padding: 10px 0;
background-color: #f9fafc;
}
.my-margin {
margin-top: 40px;
margin-bottom: 10px;
}
.my-print-head {
margin-top: 20px;
font-weight: bold;
}
.my-print-nav {
margin-top: 15px;
margin-bottom: 15px;
}
.my-print-table {
}
.my-print-foot {
margin-top: 20px;
}
.btn {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>