|
|
<template> <div class="mod-config" v-highlight-container> <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;" > <el-row :gutter="20"> <el-col :span="18"> <el-form-item label="工艺/Process"> <dict-data-select v-if="searchData.site" :site="searchData.site" v-model="sheetData.process" :use-default-value="false" dict-type="bm_process" style="width: 120px" :disabled="plmTechnicalSpecificationSheetFlag('process') === 'N'||readonly"> </dict-data-select> </el-form-item><!-- <el-form-item> <span slot="label" v-if="plmTechnicalSpecificationSheetFlag('overPrintOperator') === 'N'">热转移打印人员/Technician</span> <span slot="label" v-else @click="getBaseList(1)"><a herf="#">热转移打印人员/Technician</a></span> <el-input v-model="sheetData.overPrintOperatorName" ref="overPrintOperatorName" placeholder="请选择人员" readonly style="width: 160px"></el-input> </el-form-item> <el-form-item> <span slot="label" v-if="plmTechnicalSpecificationSheetFlag('printOperator') === 'N'">印刷人员/Technician</span> <span slot="label" v-else @click="getBaseList(2)"><a herf="#">印刷人员/Technician</a></span> <el-input v-model="sheetData.printOperatorName" ref="printOperatorName" placeholder="请选择人员" readonly style="width: 160px"></el-input> </el-form-item>--> <el-form-item label=" " v-if="!readonly"> <el-button type="primary" @click="searchTable(true)">刷新</el-button> <el-button type="primary" @click="changeRouteRev()" v-if="((!ifDisableFlag && spForm.sp.includes(searchData.username) && baseForm.status === 'spz') || baseForm.status === 'cg' || superAdmin)">变更</el-button> <el-button type="primary" @click="jumpRoute()">跳转至Routing</el-button> </el-form-item> <el-form-item label=" " v-if="!readonly"> <template v-if="isAuth('103002:bmSave')"> <template v-if="baseForm.status === 'cg' || (baseForm.status === 'spz' && ((spForm.sp && spForm.sp.includes(searchData.username)) || superAdmin))"> <el-button type="primary" @click="updateBMProcess()">保存数据</el-button> </template> </template> <template v-if="superAdmin || (spForm.sp && spForm.sp.includes(searchData.username))"> <el-button v-if="baseForm.status === 'spz'" type="primary" :loading="submitLoading" @click="agreeSubmit">同意</el-button> </template> <template v-if="superAdmin || (spForm.sp && spForm.sp.includes(searchData.username))"> <el-button v-if="baseForm.status === 'spz' && baseForm.isReject === 'Y'" type="primary" @click="submitDataModal">驳回</el-button> </template> </el-form-item> </el-col> <el-col :span="3"> <div class="grid-content bg-purple"> <el-form-item label="当前节点/Status" style="width: 100%"> <el-input :readonly="readonly" v-model="spForm.nodeName" disabled></el-input> </el-form-item> </div> </el-col> <el-col :span="3"> <div class="grid-content bg-purple"> <el-form-item label="当前节点审批人/Authorizer" style="width: 100%"> <el-input :readonly="readonly" v-model="spForm.sp" disabled></el-input> </el-form-item> </div> </el-col> </el-row> </el-form>
<el-form label-position="top" style="margin-top: 1px" v-if="searchData.buNo === 'RDC'"> <el-row :gutter="20" > <el-col :span="24"> <div class="grid-content bg-purple"> <el-form-item :label="'过程及过程控制/Process and Production Control'"> <el-input type="textarea" :readonly="readonly" v-model="dataForm.processDetail" :rows="3" resize='none' maxlength="255" show-word-limit :disabled="ifDisableFlag" style="height: 60px" > </el-input> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20" style="margin-top: 60px"> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item :label="'是否提供胶条/Supply Adhesive Tape'"> <el-select clearable v-model="dataForm.supplyAdhesiveTape" :disabled="ifDisableFlag||readonly"> <el-option label="Yes" value="Y"></el-option> <el-option label="No" value="N"></el-option> </el-select> </el-form-item> </div> </el-col> <el-col :span="18"> <div class="grid-content bg-purple"> <el-form-item :label="'图稿/Drawing'"> <el-input :readonly="readonly" v-model="dataForm.routingDrawing" :disabled="ifDisableFlag"></el-input> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20" > <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item :label="'图稿版本/Drawing Revison'"> <el-input :readonly="readonly" v-model="dataForm.drawingRevison" :disabled="ifDisableFlag"></el-input> </el-form-item> </div> </el-col> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item :label="'图稿日期/Drawing Date'"> <el-date-picker v-model="searchData.drawingDate" type="date" value-format="yyyy-MM-dd" :disabled="ifDisableFlag||readonly" placeholder="选择日期"> </el-date-picker> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <div class="grid-content bg-purple"> <el-form-item :label="'作业说明/WI'"> <el-input type="textarea" :readonly="readonly" v-model="dataForm.workInfo" :rows="3" resize='none' maxlength="255" show-word-limit :disabled="ifDisableFlag" style="height: 60px" > </el-input> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20" style="margin-top: 60px"> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item :label="'作业说明版本/WI Revision'"> <el-input :readonly="readonly" v-model="dataForm.wiRevison" :disabled="ifDisableFlag"></el-input> </el-form-item> </div> </el-col> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item :label="'作业说明日期/WI Date'"> <el-date-picker v-model="searchData.wiDate" type="date" value-format="yyyy-MM-dd" :disabled="ifDisableFlag||readonly" placeholder="选择日期"> </el-date-picker> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item> <span slot="label" v-if="readonly" @click="reviewEngineerChooseModal()">选择审查工程师/Select ME Review Engineer</span> <span slot="label" v-else @click="reviewEngineerChooseModal()"><a herf="#">选择审查工程师/Select ME Review Engineer</a></span> <el-input v-model="dataForm.reviewEngineer" readonly @focus="reviewEngineerChooseModal()"></el-input> </el-form-item> </div> </el-col> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item > <span slot="label" v-if="readonly" @click="peEngineerChooseModal()">选择PE工程师/Select PE Engineer</span> <span slot="label" v-else @click="peEngineerChooseModal()"><a herf="#">选择PE工程师/Select PE Engineer</a></span> <el-input v-model="dataForm.peEngineer" readonly @focus="peEngineerChooseModal()"></el-input> </el-form-item> </div> </el-col> <el-col :span="6"> <div class="grid-content bg-purple"> <el-form-item > <span slot="label" v-if="readonly" @click="cqeModal()">选择CQE/Select CQE</span> <span slot="label" v-else @click="cqeModal()"><a herf="#">选择CQE/Select CQE</a></span> <el-input v-model="dataForm.cqe" readonly @focus="cqeModal()"></el-input> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <div class="grid-content bg-purple"> <el-form-item :label="'备注/Remark'"> <el-input type="textarea" :readonly="readonly" v-model="dataForm.routingRemark" :rows="3" resize='none' maxlength="255" show-word-limit :disabled="ifDisableFlag" style="height: 60px" > </el-input> </el-form-item> </div> </el-col> </el-row> <el-row :gutter="20" style="margin-top: 60px"> <el-col :span="24"> <div class="grid-content bg-purple"> <el-form-item :label="'措施/Action'"> <el-input type="textarea" :readonly="readonly" v-model="dataForm.routingAction" :rows="3" resize='none' maxlength="255" show-word-limit :disabled="ifDisableFlag" style="height: 60px" > </el-input> </el-form-item> </div> </el-col> </el-row> <el-form-item style="margin-top: 60px;text-align:center"> <el-button type="primary" @click="saveData()" v-if="!ifDisableFlag&&!readonly">保存</el-button> </el-form-item> </el-form>
<el-form label-position="top" style="margin-top: 1px" v-else> <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;"> <el-form-item label="物料信息/Material"> <el-input :readonly="readonly" v-model="routeData.partNo" disabled style="width: 160px"></el-input> </el-form-item> <el-form-item label="工艺路线类型/Routing Type"> <el-input :readonly="readonly" v-model="routeData.routingType" disabled style="width: 160px"></el-input> </el-form-item> <el-form-item label="工艺路线版本/Routing Rev."> <el-input :readonly="readonly" v-model="routeData.routingRevision" disabled style="width: 160px"></el-input> </el-form-item> <el-form-item label="替代编码/Alternative No."> <el-input :readonly="readonly" v-model="routeData.alternativeNo" disabled style="width: 160px"></el-input> </el-form-item> <el-form-item label="单双面印刷/Simplex/Duplex"> <dict-data-select :site="searchData.site" v-if="searchData.site" clearable v-model="sheetData.simplexDuplex" :use-default-value="false" dict-type="bm_simplex_duplex" style="width: 160px" :disabled="plmTechnicalSpecificationSheetFlag('simplexDuplex') === 'N'||readonly"> </dict-data-select> </el-form-item> <el-form-item label="周长/Repeat"> <dict-data-select :site="searchData.site" v-if="searchData.site" clearable v-model="sheetData.repeat" dict-type="bm_repeat" style="width: 160px" :disabled="plmTechnicalSpecificationSheetFlag('repeat') === 'N'||readonly"> </dict-data-select> </el-form-item> </el-form> <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;" > <el-row :gutter="20"> <el-col :span="24"><!-- <el-form-item label="标签尺寸/Label Size">--><!-- <el-input v-model="sheetData.labelSize" style="width: 120px" ></el-input>--><!-- </el-form-item>--> <el-form-item label="标签长度/Label Length"> <el-input :readonly="readonly" v-model="sheetData.labelLength" :disabled="plmTechnicalSpecificationSheetFlag('labelLength') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="标签宽度/Label Width"> <el-input :readonly="readonly" v-model="sheetData.labelWidth" :disabled="plmTechnicalSpecificationSheetFlag('labelWidth') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="圆角/Radius"> <el-input :readonly="readonly" v-model="sheetData.radius" :disabled="plmTechnicalSpecificationSheetFlag('radius') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="横向跳距/HP"> <el-input :readonly="readonly" v-model="sheetData.hp" :disabled="plmTechnicalSpecificationSheetFlag('hp') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="竖向跳距/VP"> <el-input :readonly="readonly" v-model="sheetData.vp" :disabled="plmTechnicalSpecificationSheetFlag('vp') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="横排数/Across"> <el-input :readonly="readonly" v-model="sheetData.across" :disabled="plmTechnicalSpecificationSheetFlag('across') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="竖排数/Down"> <el-input :readonly="readonly" v-model="sheetData.down" :disabled="plmTechnicalSpecificationSheetFlag('down') === 'N'" style="width: 160px" ></el-input> </el-form-item> </el-col> </el-row> </el-form> <div style="width: 100%;"> <el-form :inline="true" label-position="top" style="margin-top: 1px; margin-left: 0px;"> <el-row :gutter="20"> <el-col :span="24"><!-- <el-form-item label="实际数目/Actual Number">--><!-- <el-input v-model="sheetData.actualNumber" style="width: 160px"></el-input>--><!-- </el-form-item>--> <el-form-item label="印刷出纸方向/Feeding Direction"> <dict-data-select :site="searchData.site" v-if="searchData.site" clearable v-model="sheetData.printCopyPosition" dict-type="bm_print_copy_position" style="width: 160px; margin-right: -10px" :disabled="plmTechnicalSpecificationSheetFlag('printCopyPosition') === 'N'||readonly"> </dict-data-select> </el-form-item> <el-form-item label="片状PCS/Sheet"> <el-input :readonly="readonly" v-model="sheetData.sheet" :disabled="plmTechnicalSpecificationSheetFlag('sheet') === 'N'" style="width: 160px; margin-left: -9px"></el-input> </el-form-item> <el-form-item label="成品卷边宽度/FG Roll Width"> <el-input :readonly="readonly" v-model="sheetData.goodsRollWidth" :disabled="plmTechnicalSpecificationSheetFlag('goodsRollWidth') === 'N'" style="width: 160px"></el-input> </el-form-item> <el-form-item label="新刀具(是/否)/New Cutter(Y/N)"> <dict-data-select :site="searchData.site" v-if="searchData.site" clearable v-model="sheetData.newCutter" dict-type="bm_new_cutter" style="width: 160px" :disabled="plmTechnicalSpecificationSheetFlag('newCutter') === 'N'||readonly"> </dict-data-select> </el-form-item> <el-form-item label="印刷刀模公差/P2C Tolerance"> <el-input :readonly="readonly" v-model="sheetData.p2cTolerance" :disabled="plmTechnicalSpecificationSheetFlag('p2cTolerance') === 'N'" style="width: 160px; margin-left: -2px"></el-input> </el-form-item> <el-form-item label="尺寸公差/Dimension Tolerance"> <el-input :readonly="readonly" v-model="sheetData.dimensionTolerance" :disabled="plmTechnicalSpecificationSheetFlag('dimensionTolerance') === 'N'" style="width: 160px; margin-left: -1px"></el-input> </el-form-item> <el-form-item label="修边公差(+/-)/Slitting Tolerance"> <el-input :readonly="readonly" v-model="sheetData.slittingTolerance" :disabled="plmTechnicalSpecificationSheetFlag('slittingTolerance') === 'N'" style="width: 160px; margin-left: -4px"></el-input> </el-form-item> </el-col> </el-row> </el-form> </div> <el-table :height="'250'" ref="table" :data="tableData" highlight-current-row border @row-click="chooseRoute" style="width: 100%"> <el-table-column fixed="left" header-align="center" align="center" width="60" label="操作"> <template slot-scope="scope"> <a type="text" size="small" @click="bmModel(scope.row)" v-if="!ifDisableFlag && isAuth('103002:bmRoute') && !readonly">填写</a> </template> </el-table-column><!-- <el-table-column--><!-- v-for="(item,index) in columnList1" :key="index"--><!-- :sortable="item.columnSortable"--><!-- :prop="item.columnProp"--><!-- :header-align="item.headerAlign"--><!-- :show-overflow-tooltip="item.showOverflowTooltip"--><!-- :align="item.align"--><!-- :fixed="item.fixed == ''?false:item.fixed"--><!-- :min-width="item.columnWidth"--><!-- :label="item.columnLabel">--><!-- <template slot-scope="scope">--><!-- <span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span>--><!-- <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>--><!-- </template>--><!-- </el-table-column>--> <el-table-column label="工序号" header-align="center"> <el-table-column prop="operationNo" header-align="center" align="center" min-width="80" label="Operation No."> </el-table-column> </el-table-column> <el-table-column label="工序名称" header-align="center"> <el-table-column prop="operationName" header-align="center" align="left" min-width="120" label="Operation Desc"> </el-table-column> </el-table-column> <el-table-column label="加工中心编码" header-align="center"> <el-table-column prop="workCenterNo" header-align="center" align="left" min-width="80" label="Work Center No."> </el-table-column> </el-table-column> <el-table-column label="加工中心名称" header-align="center"> <el-table-column prop="workCenterDesc" header-align="center" align="left" min-width="120" label="Work Center Desc."> </el-table-column> </el-table-column><!-- <el-table-column label="机器调机时间" header-align="center">--><!-- <el-table-column--><!-- prop="machSetupTime"--><!-- header-align="center"--><!-- align="right"--><!-- min-width="80"--><!-- label="Mach Setup Time">--><!-- </el-table-column>--><!-- </el-table-column>--><!-- <el-table-column label="产出单位" header-align="center">--><!-- <el-table-column--><!-- prop="runTimeCode"--><!-- header-align="center"--><!-- align="center"--><!-- min-width="60"--><!-- label="Factor Unit">--><!-- </el-table-column>--><!-- </el-table-column>--><!-- <el-table-column label="人工单位产出" header-align="center">--><!-- <el-table-column--><!-- prop="laborRunFactor"--><!-- header-align="center"--><!-- align="right"--><!-- min-width="80"--><!-- label="Labour Run Factor">--><!-- </el-table-column>--><!-- </el-table-column>--><!-- <el-table-column label="人工调机时间" header-align="center">--><!-- <el-table-column--><!-- prop="laborSetupTime"--><!-- header-align="center"--><!-- align="right"--><!-- min-width="80"--><!-- label="Labour Setup Time">--><!-- </el-table-column>--><!-- </el-table-column>--> </el-table> <component style="margin-top: 5px" :is="selectedComponent" ref="routeRef" :key="componentKey"></component> </el-form>
<!-- <el-dialog append-to-body title="工艺路线" :close-on-click-modal="false" v-drag :visible.sync="routeFlag" width="470px">--><!-- <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">--><!-- <el-form-item :label="'工序编码'">--><!-- <el-input v-model="routingData.itemNo" type="number" onkeyup="value=value.replace(/^(0+)|[^\d]+/g,'')" ></el-input>--><!-- </el-form-item>--><!-- <el-form-item :label="'工序名称'">--><!-- <el-input v-model="routingData.operationDesc" style="width: 440px" ></el-input>--><!-- </el-form-item>--><!-- </el-form>--><!-- <el-footer style="height:40px;margin-top: 10px;text-align:center">--><!-- <el-button type="primary" @click="routeSave()">保存</el-button>--><!-- <el-button type="primary" @click="routeFlag = false">取消</el-button>--><!-- </el-footer>--><!-- </el-dialog>-->
<el-dialog width="530px" title="审查工程师" :close-on-click-modal="false" :visible.sync="reviewEngineerFlag"> <el-transfer v-model="reviewEngineerList" class="rq" filterable :props="{key: 'operatorId',label: 'operatorName'}" :data="operatorList" :titles="['未选择', '已选择']"> </el-transfer> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="savereviewEngineerList()">确定</el-button> <el-button @click="reviewEngineerFlag = false" type="primary">取消</el-button> </div> </span> </el-dialog>
<el-dialog width="530px" title="PE工程师" :close-on-click-modal="false" :visible.sync="peEngineerFlag"> <el-transfer v-model="peEngineerList" class="rq" filterable :props="{key: 'operatorId',label: 'operatorName'}" :data="operatorList" :titles="['未选择', '已选择']"> </el-transfer> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="savepeEngineerList()">确定</el-button> <el-button @click="peEngineerFlag = false" type="primary">取消</el-button> </div> </span> </el-dialog>
<el-dialog width="530px" title="选择CQE" :close-on-click-modal="false" :visible.sync="cqeFlag"> <el-transfer v-model="cqeList" class="rq" filterable :props="{key: 'operatorId',label: 'operatorName'}" :data="operatorList" :titles="['未选择', '已选择']"> </el-transfer> <span slot="footer" class="dialog-footer"> <div style="margin-top: 5px"> <el-button type="primary" @click="savecqeList()">确定</el-button> <el-button @click="cqeFlag = false" type="primary">取消</el-button> </div> </span> </el-dialog>
<el-dialog append-to-body width="900px" title="工序记录" top="10vh" @close="closeItemModel" :close-on-click-modal="false" :visible.sync="routeModelFlag"> <el-form label-position="top" style="margin-top: -5px; margin-left: 0px;" > <el-row :gutter="20"> <el-col :span="6"><div class="grid-content bg-purple"> <el-form-item :label="'工序编码/Operation No.'"> <el-input v-model="currentRow.operationNo" disabled></el-input> </el-form-item> </div></el-col> <el-col :span="6"><div class="grid-content bg-purple"> <el-form-item :label="'工序名称/Operation Desc.'"> <el-input v-model="currentRow.operationName" disabled></el-input> </el-form-item> </div></el-col> </el-row> </el-form> <div v-if="currentRow.itemType === 'prepress'"> <prepress ref="prepress" @closeModel="closeModel"></prepress> </div> <div v-else-if="currentRow.itemType === 'printing'"> <printing ref="printing" @closeModel="closeModel"></printing> </div> <div v-else-if="currentRow.itemType === 'printOther'"> <printOther ref="printOther" @closeModel="closeModel"></printOther> </div> <div v-else-if="currentRow.itemType === 'overprinting'"> <overprinting ref="overprinting" @closeModel="closeModel"></overprinting> </div> <div v-else-if="currentRow.itemType === 'slitting'"> <slitting ref="slitting" @closeModel="closeModel"></slitting> </div> <div v-else-if="currentRow.itemType === 'lamTemperature'"> <lamTemperature ref="lamTemperature" @closeModel="closeModel"></lamTemperature> </div> <div v-else-if="currentRow.itemType === 'cutting'"> <cutting ref="cutting" @closeModel="closeModel"></cutting> </div> <div v-else-if="currentRow.itemType === 'InkMixing'"> <InkMixing ref="InkMixing" @closeModel="closeModel"></InkMixing> </div> <div v-else-if="currentRow.itemType === 'InkFormulation'"> <InkFormulation ref="InkFormulation" @closeModel="closeModel"></InkFormulation> </div> <div v-else-if="currentRow.itemType === 'lamination'"> <lamination ref="lamination" @closeModel="closeModel"></lamination> </div> <div v-else-if="currentRow.itemType === 'CNC'"> <CNC ref="CNC" @closeModel="closeModel"></CNC> </div> <div v-else-if="currentRow.itemType === 'Cut'"> <Cut ref="Cut" @closeModel="closeModel"></Cut> </div> <div v-else-if="currentRow.itemType === 'packagePage'"> <packagePage ref="packagePage" @closeModel="closeModel"></packagePage> </div> <div v-else-if="currentRow.itemType === 'fqc'"> <fqc ref="fqc" @closeModel="closeModel"></fqc> </div> <div v-else-if="currentRow.itemType === 'cqc'"> <cqc ref="cqc" @closeModel="closeModel"></cqc> </div> <div v-else-if="currentRow.itemType === 'printFlexo'"> <printFlexo ref="printFlexo" @closeModel="closeModel"></printFlexo> </div> <div v-else-if="currentRow.itemType === 'printIndigo'"> <printIndigo ref="printIndigo" @closeModel="closeModel"></printIndigo> </div> </el-dialog> <el-dialog title="变更工艺路线" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="750px"> <el-table :data="routeDetailList" height="300" border highlight-current-row onclick="" @row-click="getRow" ref="componentTable" style="width:100%"> <el-table-column prop="partNo" header-align="left" align="left" min-width="80" label="物料编码"> </el-table-column> <el-table-column prop="routingType" header-align="left" align="left" min-width="80" label="Routing类型"> </el-table-column> <el-table-column prop="routingRevision" header-align="left" align="left" min-width="80" label="Routing版本"> </el-table-column> <el-table-column prop="alternativeNo" header-align="left" align="left" min-width="80" label="替代编码"> </el-table-column> <el-table-column prop="alternativeDescription" header-align="left" align="left" min-width="80" label="替代名称"> </el-table-column> <el-table-column prop="status" header-align="left" align="left" min-width="60" label="状态"> </el-table-column> <el-table-column prop="phaseInDate" header-align="left" align="left" min-width="80" label="生效日期"> </el-table-column> <el-table-column prop="phaseOutDate" header-align="left" align="left" min-width="80" label="失效日期"> </el-table-column> </el-table> <el-footer style="height:30px;margin-top:20px;text-align:center"> <el-button type="primary" @click="updateBMRouteRev()">确定</el-button> <el-button type="primary" @click="modalFlag=false">取消</el-button> </el-footer> </el-dialog>
<ChooseUser ref="baseList" @getBaseData="getBaseData"></ChooseUser>
<!-- 提交 --> <el-dialog title="驳回" top="30vh" :close-on-click-modal="false" v-drag :visible.sync="submitModalFlag" width="500px"> <el-form :inline="true" label-position="top"> <el-form-item :label="'驳回意见'"> <el-input type="textarea" v-model="rejectOpinion" :rows="3" resize='none' show-word-limit style="width: 479px;height: 30px"></el-input> </el-form-item> </el-form> <el-footer style="height:30px;margin-top: 50px;text-align:center"> <el-button type="primary" :loading="submitLoading" @click="rejectSubmit">确定</el-button> <el-button type="primary" @click="submitModalFlag = false">取消</el-button> </el-footer> </el-dialog> </div></template>
<script> import { searchBMRoutingDetail, searchTechnicalSpecificationTeamStr, updateBMRoutingDetail, searchBMRoute, searchRouteDetail, updateBMRouteRev, tsdBasicInformationSearch, updateBMProcess, submitChange,getBMStatusDesc, // 提交
getOADetailForBM, } from "@/api/sampleManagement/technicalSpecificationList.js" import { getNodeAuthority, // 获取节点权限
} from '@/api/changeManagement/changeManagement.js' import ChooseUser from '@/views/modules/common/ChooseUser' import { searchOperatorWithSite, } from "@/api/project/project.js" import prepress from "./com_bm_prepress";/*组件*/ import printing from "./com_bm_printing";/*组件*/ import printOther from "./com_bm_printOther";/*组件*/ import overprinting from "./com_bm_demoSlot";/*组件*/ import slitting from "./com_bm_demoSlot";/*组件*/ import lamTemperature from "./com_bm_demoSlot";/*组件*/ import cutting from "./com_bm_demoSlot";/*组件*/ import InkMixing from "./com_bm_inkMixing";/*组件*/ import InkFormulation from "./com_bm_inkFormulation";/*组件*/ import lamination from "./com_bm_lamination";/*组件*/ import CNC from "./com_bm_cnc"; import Cut from "./com_bm_cut"; import packagePage from "./com_bm_demoSlot";/*组件*/ import fqc from "./com_bm_demoSlot";/*组件*/ import cqc from "./com_bm_demoSlot";/*组件*/ import printFlexo from "./com_bm_printingFlexo";/*组件*/ import printIndigo from "./com_bm_printingIndigo"; import DictDataSelect from "../../sys/dict-data-select-highlight"; import {updateBMProcessInfo} from "../../../../api/sampleManagement/technicalSpecificationList"; /*组件*/ export default { components: { DictDataSelect, ChooseUser, prepress, printing, printOther, overprinting, slitting, lamTemperature, cutting, InkMixing, InkFormulation, lamination, CNC, Cut, packagePage, fqc, cqc, printFlexo, printIndigo, }, props: { readonly: { type: Boolean, default: false, }, }, computed: { plmTechnicalSpecificationSheetFlag () { return (value) => { if (!this.plmTechnicalSpecificationSheetArr) { return 'N' } let arr = this.plmTechnicalSpecificationSheetArr.filter(a => a.fieldId === value) if (arr.length > 0) { return arr[0].updateFlag } return 'N' } }, },
data() { return { spForm: { sp: '', nodeName: '', }, nowRoute: {}, //动态组件
selectedComponent: null, routeData: { site: '', partNo: '', alternativeNo: '', routingType: '', routingRevision: '', }, componentKey: 0, routeFlag: false, routeModelFlag: false, height: 200, searchData: { site: '', username: this.$store.state.user.name, codeNo: '', buNo:'', fieldId:'' }, baseForm:{ status:'', isReject:'', }, tableData:'', partList:[], superAdmin:false, ifDisableFlag:false, sheetData: { site: '', codeNo: '', process: '', overPrintOperator: '', overPrintOperatorName: '', printOperator: '', printOperatorName: '', simplexDuplex: '', repeat: '', hp: '', across: null, printCopyPosition: '', labelSize: '', labelLength: '', labelWidth: '', vp: '', down: null, actualNumber: null, goodsRollWidth: '', newCutter: '', dimensionTolerance: '', p2cTolerance: '', slittingTolerance: '', sheet: '', radius: '', }, sheetData2: { process: '', overPrintOperator: '', printOperator: '', simplexDuplex: '', repeat: '', labelLength: '', labelWidth: '', hp: '', vp: '', across: '', down: '', printCopyPosition: '', goodsRollWidth: '', newCutter: '', p2cTolerance: '', dimensionTolerance: '', slittingTolerance: '' }, dataForm: { site: '', codeNo:'', processDetail:'', supplyAdhesiveTape: '', routingDrawing:'', drawingRevison:'', drawingDate:'', workInfo:'', wiRevison:'', wiDate:'', reviewEngineer: '', routingRemark:'', routingAction:'', username:this.$store.state.user.name, peEngineer:'', cqe:'', reviewEngineerList:[], peEngineerList:[], cqeList:[], }, reviewEngineerFlag:false, peEngineerFlag:false, cqeFlag:false, operatorList:[], reviewEngineerList:[], peEngineerList:[], cqeList:[], //工艺路线部分
routingData:{ id:0, site:'', codeNo:'', itemNo:'', operationDesc:'', remark:'', username:'', }, columnList1: [ { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2OperationNo', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'operationNo', headerAlign: 'center', align: 'center', columnLabel: '工序号/Operation No.', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2OperationName', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'operationName', headerAlign: 'center', align: 'left', columnLabel: '工序名称/Operation Desc', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 120 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2EfficiencyFactor', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'efficiencyFactor', headerAlign: 'center', align: 'right', columnLabel: '效率/Efficiency', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2MachRunFactor', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'machRunFactor', headerAlign: 'center', align: 'right', columnLabel: '机器单位产出/Mach Run Factor', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2MachSetupTime', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'machSetupTime', headerAlign: 'center', align: 'right', columnLabel: '机器调机时间/Mach Setup Time', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2RunTimeCode', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'runTimeCode', headerAlign: 'center', align: 'center', columnLabel: '产出单位/Factor Unit', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 60 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2LaborRunFactor', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'laborRunFactor', headerAlign: 'center', align: 'right', columnLabel: '人工单位产出/Labour Run Factor', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2LaborSetupTime', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'laborSetupTime', headerAlign: 'center', align: 'right', columnLabel: '人工调机时间/Labour Setup Time', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2CrewSize', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'crewSize', headerAlign: 'center', align: 'right', columnLabel: '生产参与人数/Crew Size', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2SetupCrewSize', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'setupCrewSize', headerAlign: 'center', align: 'right', columnLabel: '调机人数/Setup Crew Size', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2OutsideOpItem', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'outsideOpItem', headerAlign: 'center', align: 'center', columnLabel: '外协采购料号/Outside OP Item', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 120 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2MachineNo', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'machineNo', headerAlign: 'center', align: 'center', columnLabel: '机台/Machine No.', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2WorkCenterNo', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'workCenterNo', headerAlign: 'center', align: 'center', columnLabel: '加工中心编码/Work Center No.', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 85 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2WorkCenterDesc', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'workCenterDesc', headerAlign: 'center', align: 'center', columnLabel: '加工中心描述/Work Center Desc.', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 100 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2LaborClassNo', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'laborClassDesc', headerAlign: 'center', align: 'center', columnLabel: '雇员分类/Labour Class', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2SetupLaborClassDesc', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'setupLaborClassDesc', headerAlign: 'center', align: 'center', columnLabel: '调机雇员分类/Setup Labour Class', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 80 }, { userId: this.$store.state.user.name, functionId: 104003, serialNumber: '104003Table2NoteText', tableId: '104003Table2', tableName: 'Routing工序表', columnProp: 'noteText', headerAlign: 'center', align: 'left', columnLabel: '备注/Comments', columnHidden: false, columnImage: false, columnSortable: false, sortLv: 0, status: true, fixed: '', columnWidth: 150 }, ], currentRow:{}, //变更工艺路线
modalFlag:false, routeDetailList:[], currentRoute:null, tagNo:'', tagNo1:'', rejectOpinion: '', submitModalFlag: false, submitLoading: false, plmTechnicalSpecificationSheetArr: [] } }, mounted () { this.$nextTick(() => { this.height = window.innerHeight - 100 }) }, methods: { // 获取基础数据列表S
getBaseList (type) { this.tagNo1 = type this.$nextTick(() => { let strVal = '' let roleId = '' if (type === 1) { strVal = this.sheetData.overPrintOperator roleId = 'R018' } if (type===2) { strVal = this.sheetData.printOperator roleId = 'R019' } this.$refs.baseList.init(this.searchData.site,this.searchData.buNo, strVal,roleId) }) },
/* 列表方法的回调 */ getBaseData (val) { if (this.tagNo1 === 1) { this.sheetData.overPrintOperator = val.username this.sheetData.overPrintOperatorName = val.userDisplay this.$nextTick(() => { this.$triggerInputEvent(this.$refs.overPrintOperatorName) }) } if (this.tagNo1 === 2) { this.sheetData.printOperator = val.username this.sheetData.printOperatorName = val.userDisplay this.$nextTick(() => { this.$triggerInputEvent(this.$refs.printOperatorName) }) } },
//初始化组件的参数
init (inData) { // if (this.dataForm.codeNo != null && this.dataForm.codeNo !== '') {
// return false;
// }
//初始化参数
this.searchData = JSON.parse(JSON.stringify(inData)) //刷新表格
this.searchTable() },
searchTable (type) { tsdBasicInformationSearch(this.searchData).then(({data}) => { if (data&& data.code === 0) { this.sheetData = data.row this.baseForm = data.row this.routeData.site = data.row.site this.routeData.partNo = data.row.finalPartNo this.getNodeAuthority(data.row) if (type) { this.$message.success( '操作成功') } } else { this.$message.error(data.msg) } }) getOADetailForBM(this.searchData).then(({data}) => { this.spForm.nodeName = data.row.nodeName this.spForm.sp = data.row.sp == null ? '' : data.row.sp }) if (this.searchData.buNo === 'RDC') { searchBMRoutingDetail(this.searchData).then(({data}) => { if (data&& data.code === 0) { if (data.rows.length > 0) { this.dataForm = data.rows[0] } else { this.dataForm.site = this.searchData.site this.dataForm.codeNo = this.searchData.codeNo } } else { this.$message.error(data.msg) } }) let inData = { site: this.searchData.site, codeNo: this.searchData.codeNo, type: 'reviewEngineer', } searchTechnicalSpecificationTeamStr(inData).then(({data}) => { this.dataForm.reviewEngineerList = data.rows }) let inData2 = { site: this.searchData.site, codeNo: this.searchData.codeNo, type: 'cqe', } searchTechnicalSpecificationTeamStr(inData2).then(({data}) => { this.dataForm.cqeList = data.rows }) let inData3 = { site: this.searchData.site, codeNo: this.searchData.codeNo, type: 'peEngineer', } searchTechnicalSpecificationTeamStr(inData3).then(({data}) => { this.dataForm.peEngineerList = data.rows }) } else { searchBMRoute(this.searchData).then(({data}) => { if (data&& data.code === 0) { this.tableData = data.rows this.routeData = data.row this.$nextTick(() => { if (this.tableData.length > 0) { const firstRow = this.tableData[0]; // 高亮第一行(可选)
this.$refs.table.setCurrentRow(firstRow); // 触发 chooseRoute 方法
this.chooseRoute(firstRow); } }); } else { this.$message.error(data.msg) } }) } },
closeModel () { this.routeModelFlag = false },
// 根据itemType
bmModel (row) { this.currentRow = row this.routeModelFlag = true setTimeout(() => { switch (this.currentRow.itemType) { case 'prepress': this.getPrepress(); break case 'printing': this.getPrinting(); break case 'printOther': this.getPrintOther(); break case 'overprinting': this.getOverprinting(); break case 'slitting': this.getSlitting(); break case 'lamTemperature': this.getLamTemperature(); break case 'cutting': this.getCutting(); break case 'InkMixing': this.getInkMixing(); break case 'InkFormulation': this.getInkFormulation(); break case 'lamination': this.getLamination(); break case 'CNC': this.getCNC(); break case 'Cut': this.getCut(); break case 'packagePage': this.getPackagePage(); break case 'fqc': this.getFqc(); break case 'cqc': this.getCqc(); break case 'printFlexo': this.getPrintFlexo(); break case 'printIndigo': this.getPrintIndigo(); break } }, 500); },
getPrepress () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'prepress' this.$refs.prepress.init(inData) },
getPrinting () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'printing' this.$refs.printing.init(inData) },
getPrintOther () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'printOther' this.$refs.printOther.init(inData) },
getOverprinting () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'overprinting' this.$refs.overprinting.init(inData) },
getSlitting(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='slitting' this.$refs.slitting.init(inData) },
getLamTemperature(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='lamTemperature' this.$refs.lamTemperature.init(inData) },
getCutting(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='cutting' this.$refs.cutting.init(inData) },
getInkMixing(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='InkMixing' this.$refs.InkMixing.init(inData) },
getInkFormulation(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='InkFormulation' this.$refs.InkFormulation.init(inData) },
getLamination(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='lamination' this.$refs.lamination.init(inData) },
getCNC(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='CNC' this.$refs.CNC.init(inData) },
getCut(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='Cut' this.$refs.Cut.init(inData) },
getPackagePage(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='packagePage' this.$refs.packagePage.init(inData) },
getFqc(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='fqc' this.$refs.fqc.init(inData) },
getCqc(){ let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='cqc' this.$refs.cqc.init(inData) },
getPrintFlexo () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'printFlexo' this.$refs.printFlexo.init(inData) },
getPrintIndigo () { let inData = JSON.parse(JSON.stringify(this.searchData)) inData.type = 'printIndigo' this.$refs.printIndigo.init(inData) },
reviewEngineerChooseModal(){ if(this.ifDisableFlag){ return false } let inData={ site:this.searchData.site, } searchOperatorWithSite(inData).then(({data}) => { this.operatorList=data.rows }) this.reviewEngineerList = JSON.parse(JSON.stringify(this.dataForm.reviewEngineerList)); this.reviewEngineerFlag=true },
savereviewEngineerList(){ let reviewEngineerName=''; for (let i = 0; i < this.reviewEngineerList.length; i++) { let select= this.operatorList.filter(item => item.operatorId === this.reviewEngineerList[i]) if(select.length>0){ reviewEngineerName+=select[0].operatorName+';' } } this.dataForm.reviewEngineer=reviewEngineerName this.dataForm.reviewEngineerList=JSON.parse(JSON.stringify(this.reviewEngineerList)); this.reviewEngineerFlag=false },
peEngineerChooseModal(){ if(this.ifDisableFlag){ return false } let inData={ site:this.searchData.site, } searchOperatorWithSite(inData).then(({data}) => { this.operatorList=data.rows }) this.peEngineerList = JSON.parse(JSON.stringify(this.dataForm.peEngineerList)); this.peEngineerFlag=true },
savepeEngineerList(){
let peEngineerName=''; for (let i = 0; i < this.peEngineerList.length; i++) { let select= this.operatorList.filter(item => item.operatorId === this.peEngineerList[i]) if(select.length>0){ peEngineerName+=select[0].operatorName+';' } } this.dataForm.peEngineer=peEngineerName this.dataForm.peEngineerList=JSON.parse(JSON.stringify(this.peEngineerList)); this.peEngineerFlag=false },
cqeModal(){ if(this.ifDisableFlag){ return false } let inData={ site:this.searchData.site, } searchOperatorWithSite(inData).then(({data}) => { this.operatorList=data.rows }) this.cqeList = JSON.parse(JSON.stringify(this.dataForm.cqeList)); this.cqeFlag=true }, savecqeList(){ let cqeName=''; for (let i = 0; i < this.cqeList.length; i++) { let select= this.operatorList.filter(item => item.operatorId === this.cqeList[i]) if(select.length>0){ cqeName+=select[0].operatorName+';' } } this.dataForm.cqe=cqeName this.dataForm.cqeList=JSON.parse(JSON.stringify(this.cqeList)); this.cqeFlag=false }, saveData(){ this.$confirm("是否保存基本信息?", '保存提示', { confirmButtonText: '确定', cancelButtonText: '取消', }).then(() => { updateBMRoutingDetail(this.dataForm).then(({data}) => { if (data && data.code === 0) { this.$message.success( '操作成功') } else { this.$message.error(data.msg) } }) }).catch(() => { return }) },
chooseRoute (row) { this.nowRoute = JSON.parse(JSON.stringify(row)) switch (row.itemType) { case 'prepress': this.selectedComponent = 'prepress' let prepressData = JSON.parse(JSON.stringify(this.searchData)) prepressData.type='prepress' prepressData.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(prepressData)}) break; case 'printing': this.selectedComponent = 'printing'; let printing = JSON.parse(JSON.stringify(this.searchData)) printing.type = 'printing' printing.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(printing)}); break; case 'printOther': this.selectedComponent = 'printOther'; let printOther = JSON.parse(JSON.stringify(this.searchData)) printOther.type = 'printOther' printOther.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(printOther)}); break; case 'overprinting': this.selectedComponent='overprinting'; let overprinting = JSON.parse(JSON.stringify(this.searchData)) overprinting.type = 'overprinting' overprinting.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(overprinting)}); break; case 'slitting': this.selectedComponent = 'slitting'; let slitting=JSON.parse(JSON.stringify(this.searchData)) slitting.type = 'slitting' slitting.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(slitting)}); break; case 'lamTemperature': this.selectedComponent = 'lamTemperature'; let lamTemperature = JSON.parse(JSON.stringify(this.searchData)) lamTemperature.type = 'lamTemperature' lamTemperature.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(lamTemperature)}); break; case 'cutting': this.selectedComponent = 'cutting'; let cutting = JSON.parse(JSON.stringify(this.searchData)) cutting.type = 'cutting' cutting.ifDisableFlag = true this.$nextTick (()=>{this.$refs.routeRef.init(cutting)}); break; case 'InkMixing': this.selectedComponent='InkMixing'; let InkMixing=JSON.parse(JSON.stringify(this.searchData)) InkMixing.type='InkMixing' InkMixing.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(InkMixing)}); break; case 'InkFormulation': this.selectedComponent='InkFormulation'; let InkFormulation=JSON.parse(JSON.stringify(this.searchData)) InkFormulation.type='InkFormulation' InkFormulation.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(InkFormulation)}); break; case 'lamination': this.selectedComponent='lamination'; let lamination=JSON.parse(JSON.stringify(this.searchData)) lamination.type='lamination' lamination.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(lamination)}); break; case 'CNC': this.selectedComponent='CNC'; let CNC=JSON.parse(JSON.stringify(this.searchData)) CNC.type='CNC' CNC.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(CNC)}); break; case 'Cut': this.selectedComponent='Cut'; let inData=JSON.parse(JSON.stringify(this.searchData)) inData.type='Cut' inData.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(inData)}); break; case 'packagePage': this.selectedComponent='packagePage'; let packagePage=JSON.parse(JSON.stringify(this.searchData)) packagePage.type='packagePage' packagePage.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(packagePage)}); break; case 'fqc': this.selectedComponent='fqc'; let fqc=JSON.parse(JSON.stringify(this.searchData)) fqc.type='fqc' fqc.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(fqc)}); break; case 'cqc': this.selectedComponent='cqc'; let cqc=JSON.parse(JSON.stringify(this.searchData)) cqc.type='cqc' cqc.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(cqc)}); break; case 'printFlexo': this.selectedComponent='printFlexo'; let printFlexo=JSON.parse(JSON.stringify(this.searchData)) printFlexo.type='printFlexo' printFlexo.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(printFlexo)}); break; case 'printIndigo': this.selectedComponent='printIndigo'; let printIndigo=JSON.parse(JSON.stringify(this.searchData)) printIndigo.type='printIndigo' printIndigo.ifDisableFlag=true this.$nextTick (()=>{this.$refs.routeRef.init(printIndigo)}); break; default : this.selectedComponent = null; break; } },
searchDetailTable(){ searchRouteDetail(this.routeData).then(({data}) => { this.routeDetailList=data.rows; }); },
changeRouteRev(){ this.searchDetailTable() this.currentRoute=null this.modalFlag=true; },
getRow (row) { this.currentRoute = row },
updateBMProcess () { updateBMProcess(this.sheetData).then(({data}) => { if (data && data.code === 0) { this.$nextTick (()=>{this.$refs.routeRef.saveData(2)}) this.$clearHighLight() tsdBasicInformationSearch(this.searchData).then(({data}) => { if (data.row) { this.sheetData = data.row } }) this.$message.success('操作成功') } else { this.$message.error(data.msg) } }) },
updateBMRouteRev () { if (this.currentRoute == null) { this.$alert('请点击选择Route版本!', '错误', { confirmButtonText: '确定' }) return false; } if (this.currentRoute.status!=='Buildable') { this.$alert('只有Buildable状态的可以保存!', '错误', { confirmButtonText: '确定' }) return false; } let inData = { site: this.routeData.site, codeNo: this.searchData.codeNo, routingType: this.currentRoute.routingType, routingRevision: this.currentRoute.routingRevision, routingAlternativeNo: this.currentRoute.alternativeNo } this.$confirm("更改工艺路线后,之前填写的工艺信息都将覆盖,是否继续?", '保存提示', { confirmButtonText: '确定', cancelButtonText: '取消', }).then(() => { updateBMRouteRev(inData).then(({data}) => { if (data && data.code === 0) { this.searchTable() this.modalFlag = false this.$message.success('操作成功') } else { this.$message.error(data.msg) } }) }) },
jumpRoute () { if (this.routeData.routingRevision != null || this.routeData.routingRevision !== '') { this.$message.error("route明细不存在") } let inData = { site: this.searchData.site, partNo: this.routeData.partNo, routingType: this.routeData.routingType, routingRevision: this.routeData.routingRevision, } localStorage.setItem('routeData', JSON.stringify(inData)) window.open('#/part-routingManagement'); },
// 获取流程的配置权限
getNodeAuthority (row) { getBMStatusDesc(this.searchData).then(({data}) => { this.superAdmin = data.superAdmin if (data.superAdmin) { this.ifDisableFlag = false } else if (data.status === '已完成' || data.status === '已升版' || data.status === 'Dead') { this.ifDisableFlag = true } let tempData = { site: row.site, stepId: row.stepId, menuId: '103002' } getNodeAuthority(tempData).then(({data}) => { if (data && data.code === 0) { this.plmTechnicalSpecificationSheetArr = data.rows.plm_technical_specification_sheet } }) }) }, // 打开提交模态框
submitDataModal () { this.rejectOpinion = '' this.submitModalFlag = true }, // 同意提交
agreeSubmit () { this.$confirm(`是否确认提交?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempData = { site: this.searchData.site, userName: this.$store.state.user.name, codeNo: this.searchData.codeNo, menuId: '103002', nodeConclusion: 'Y' } this.submitData(tempData) }) },
// 驳回提交
rejectSubmit () { this.$confirm(`是否确认驳回?`, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { let tempData = { site: this.searchData.site, userName: this.$store.state.user.name, codeNo: this.searchData.codeNo, menuId: '103002', nodeConclusion: 'N', rejectOpinion : this.rejectOpinion } this.submitData(tempData) }) },
async submitData (tempData) { let map = new Map(Object.entries(this.sheetData2)) if (this.plmTechnicalSpecificationSheetArr) { for (let i = 0; i < this.plmTechnicalSpecificationSheetArr.length; i++) { if (map.has(this.plmTechnicalSpecificationSheetArr[i].fieldId) && !this.sheetData[this.plmTechnicalSpecificationSheetArr[i].fieldId] && this.plmTechnicalSpecificationSheetArr[i].required === 'Y') { this.$message.warning(this.plmTechnicalSpecificationSheetArr[i].fieldName + '不能为空!') return } } } await updateBMProcess(this.sheetData).then(({data}) => { if (data && data.code === 0) { this.$nextTick (()=>{this.$refs.routeRef.saveData(2)}) tsdBasicInformationSearch(this.searchData).then(({data}) => { if (data.row) { this.sheetData = data.row } }) } else { this.$message.error(data.msg) return false } }) // await updateBMRoutingDetail(this.dataForm).then(({data}) => {
// if (data && data.code === 0) {
// } else {
// this.$message.error(data.msg)
// return false
// }
// })
this.submitLoading = true await submitChange(tempData).then(({data}) => { if (data && data.code === 0) { this.searchTable() // 2025-05-31 操作成功才刷新界面,如果报错了则不刷新界面
//window.location.reload();
this.submitModalFlag = false this.submitLoading = false this.$message({message: '操作成功', type: 'success'}) } else { this.submitLoading = false this.$alert(data.msg, '错误', { confirmButtonText: '确定' }) } }).catch(() => { this.submitLoading = false }) },
// 关闭模态框后刷新下方预览 重新加载组件
closeItemModel () { this.componentKey = Number( this.componentKey) + 1 this.chooseRoute(this.nowRoute) }, }, }</script>
<style scoped>input[readonly] { cursor: text;}</style>
|