| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6" v-if="processInspectVo.id != null"> |
| | | <el-form-item label="产品合格库位:" prop="locationId"> |
| | | <el-select @change="changeLocation" clearable style="width:100%" |
| | | v-model="processInspectVo.locationId" placeholder="请选择合格库位" |
| | | :disabled="resultVal!=null && processInspectVo.id!=null" autocomplete="off"> |
| | | <el-option v-for="(item,i) in locationList" :key="i" |
| | | :label="item.locName+'-'+item.locNo" :value="item.id"></el-option> |
| | | </el-select> |
| | | <el-form-item label="产品合格库位:" prop="locName"> |
| | | <el-input v-model="processInspectVo.locName" clearable style="width:100%" placeholder="请选择合格库位" disabled autocomplete="off"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="finishedProduct-detail"> |
| | | <el-row style="width:100%;z-index: 10;height:30px;"> |
| | | <el-col :span="12" class="inspectionProject_span">检验项目</el-col> |
| | | <el-col v-if="resultVal==null" :span="12" class="inspectionProject_span" style="text-align: right;"> |
| | | <el-button size="mini" @click="clickAddInspectionColumn()">添加检测值列</el-button> |
| | | <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检测值列</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width:100%;"> |
| | | <el-col :span="24"> |
| | | <el-table border :data="inspectionItems" height="400" |
| | | :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" |
| | | :cell-style="{textAlign:'center'}" row-key="iid" default-expand-all |
| | | style="width: 100%" ref="table" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
| | | <el-table-column type="index" label="序号" width="60"></el-table-column> |
| | | <el-table-column label="项目" prop="father" width="240" ></el-table-column> |
| | | <el-table-column prop="iname" label="指标" width="240" ></el-table-column> |
| | | <el-table-column prop="iunit" label="单位" width="240" ></el-table-column> |
| | | <el-table-column prop="required" label="标准值" width="240" ></el-table-column> |
| | | <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="检测值" |
| | | width="240" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col v-if="scope.row.itype === '1'"> |
| | | <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" |
| | | @blur="changeState(scope.row)" placeholder="请输入检测值"></el-input> |
| | | <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col v-else> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | <el-select style="width: 100%;" @change="changeState(scope.row)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="请选择"> |
| | | <el-option v-for="item in dataVal" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | <div> |
| | | <el-tabs class="finishedProduct-detail" @tab-click="tabsClick"> |
| | | <el-tab-pane label="检验项目"> |
| | | <el-row> |
| | | <el-col v-if="resultVal==null" :span="24" class="inspectionProject_span" style="text-align: right;"> |
| | | <el-button size="small" |
| | | type="primary" |
| | | @click="saveTable()">保存</el-button> |
| | | <el-button size="mini" @click="clickAddInspectionColumn()">添加检测值列</el-button> |
| | | <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检测值列</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-table border :data="inspectionItems" height="400" |
| | | :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" |
| | | :cell-style="{textAlign:'center'}" row-key="iid" default-expand-all |
| | | style="width: 100%" ref="table" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
| | | <el-table-column type="index" prop="parentIndex" label="序号" width="60"> |
| | | <template scope="scope"> |
| | | <span v-if="scope.row.isIndex">{{scope.row.parentIndex}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="项目" prop="father" show-overflow-tooltip width="140" ></el-table-column> |
| | | <el-table-column prop="iname" label="指标" show-overflow-tooltip width="140" ></el-table-column> |
| | | <el-table-column prop="iunit" label="单位" show-overflow-tooltip width="140" ></el-table-column> |
| | | <el-table-column prop="required" label="标准值" width="140" show-overflow-tooltip ></el-table-column> |
| | | <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="检测值" |
| | | width="140" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col v-if="scope.row.itype === '1'"> |
| | | <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" |
| | | @blur="changeState(scope.row)" placeholder="请输入检测值" |
| | | :id="`detectionValue${index}`+scope.$index" |
| | | @keyup.native="moveFocus($event, scope.$index, `detectionValue${index}`)"></el-input> |
| | | <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col v-else> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | <el-select style="width: 100%;" @change="changeState(scope.row)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="请选择"> |
| | | <el-option v-for="item in dataVal" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.empiricalValueAddss[index]"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="deviceName" label="试验设备" min-width="200"> |
| | | <template slot-scope="scope"> |
| | | <span v-if="resultVal!=null && processInspectVo.id!=null" v-text="scope.row.ename"></span> |
| | | <div v-else> |
| | | <el-select style="width:60%" v-model="scope.row.eId" |
| | | v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row)"> |
| | | <el-option v-for="(item,index) in deviceList" |
| | | :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> |
| | | </el-select> |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.empiricalValueAddss[index]"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-button |
| | | size="small" |
| | | slot="append" |
| | | icon="el-icon-full-screen" |
| | | v-if="scope.row.iname != null" |
| | | @click="codeDevice(scope.row,scope.$index)"></el-button> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionValue" |
| | | label="检验描述" width="140" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col v-if="scope.row.itype === '1'"> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | |
| | | <el-input :disabled="scope.row.eId == null" |
| | | v-model="scope.row.inote" |
| | | @blur="changeState(scope.row)" placeholder="请输入检验描述" |
| | | :id="`remark`+scope.$index" |
| | | @keyup.native="moveFocus($event, scope.$index, `remark`)"></el-input> |
| | | |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.inote"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col v-else> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | <el-input :disabled="scope.row.eId == null" |
| | | v-model="scope.row.inote" |
| | | @blur="changeState(scope.row)" placeholder="请输入检验描述" :id="`remark`+scope.$index" |
| | | @keyup.native="moveFocus($event, scope.$index, `remark`)"></el-input> |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.inote"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="结论" fixed="right" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.iname!=null"> |
| | | <span style="color: #34BD66;" v-if="scope.row.iresult == 1">合格</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">不合格</span> |
| | | <span v-else>暂无结论</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="附件上传" type="card"> |
| | | <div style="display: flex;justify-content:flex-end;"> |
| | | <div></div> |
| | | </div> |
| | | <div |
| | | v-loading="progrecessFileLoading" |
| | | element-loading-text="请稍等,文件上传中" |
| | | > |
| | | <el-upload |
| | | drag |
| | | ref="upload" |
| | | action="/mes/attachment/upload" |
| | | :auto-upload="true" |
| | | :headers="headers" |
| | | :before-upload="submitUpload" |
| | | :on-success="uploadSuccess" |
| | | :data="paramData" |
| | | :with-credentials="true" |
| | | :show-file-list="false" |
| | | > |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text"> |
| | | 将文件拖到此处,或<em>点击上传</em> |
| | | </div> |
| | | </el-upload> |
| | | </div> |
| | | <el-table :data="processConfigFileTableData" height="260px"> |
| | | <el-table-column |
| | | prop="finishedInsNo" |
| | | align="center" |
| | | width="120" |
| | | label="产品检验编号" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="originalFileName" |
| | | align="center" |
| | | label="原文件名" |
| | | width="200" |
| | | ></el-table-column> |
| | | <el-table-column prop="fileName" align="center" label="文件后缀"></el-table-column> |
| | | <el-table-column prop="createUser" align="center" label="上传人"></el-table-column> |
| | | <el-table-column |
| | | prop="createTime" |
| | | align="center" |
| | | label="上传时间" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column prop="updateUser" align="center" label="更新人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="updateTime" |
| | | align="center" |
| | | label="更新时间" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column align="center" label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | @click="delProcessConfigFile(scope.row)" |
| | | type="text" |
| | | size="small" |
| | | :disabled="(resultVal!=null && resultVal!='')" |
| | | >删除</el-button |
| | | > |
| | | <el-button |
| | | @click="downloadProcessConfigFile(scope.row)" |
| | | type="text" |
| | | size="small" |
| | | >下载</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="deviceName" label="试验设备" min-width="250"> |
| | | <template slot-scope="scope"> |
| | | <span v-if="resultVal!=null && processInspectVo.id!=null" v-text="scope.row.ename"></span> |
| | | <div v-else> |
| | | <el-select style="width:80%" v-model="scope.row.eId" |
| | | v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row)"> |
| | | <el-option v-for="(item,index) in deviceList" |
| | | :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> |
| | | </el-select> |
| | | <el-button |
| | | size="small" |
| | | slot="append" |
| | | icon="el-icon-full-screen" |
| | | v-if="scope.row.iname != null" |
| | | @click="codeDevice(scope.row,scope.$index)"></el-button> |
| | | </div> |
| | | </template> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="附件"> |
| | | <el-table :data="configFileTableData" height="400px"> |
| | | <el-table-column |
| | | prop="orderNumber" |
| | | align="center" |
| | | label="订单号" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="inspectionValue" |
| | | label="检验描述" width="240" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col v-if="scope.row.itype === '1'"> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | |
| | | <el-input :disabled="scope.row.eId == null" |
| | | v-model="scope.row.inote" |
| | | @blur="changeState(scope.row)" placeholder="请输入检验描述"></el-input> |
| | | |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.inote"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col v-else> |
| | | <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" |
| | | class="item" effect="dark" content="请先选择设备!" placement="top-start"> |
| | | <el-input :disabled="scope.row.eId == null" |
| | | v-model="scope.row.inote" |
| | | @blur="changeState(scope.row)" placeholder="请输入检测值"></el-input> |
| | | <span v-if="resultVal != null && processInspectVo.id != null" |
| | | v-text="scope.row.inote"></span> |
| | | </el-tooltip> |
| | | </el-col> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="结论" fixed="right" min-width="100"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.iname!=null"> |
| | | <span style="color: #34BD66;" v-if="scope.row.iresult == 1">合格</span> |
| | | <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">不合格</span> |
| | | <span v-else>暂无结论</span> |
| | | </div> |
| | | </template> |
| | | <el-table-column |
| | | prop="originalFileName" |
| | | align="center" |
| | | label="原文件名" |
| | | width="200" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="fileName" align="center" label="文件后缀"> |
| | | </el-table-column> |
| | | <el-table-column prop="createUser" align="center" label="上传人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createTime" |
| | | align="center" |
| | | label="上传时间" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column prop="updateUser" align="center" label="更新人"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="updateTime" |
| | | align="center" |
| | | label="更新时间" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column fixed="right" align="center" label="操作"> |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | @click="downloadProcessConfigFiles(scope.row)" |
| | | type="text" |
| | | size="small" |
| | | >下载</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | </div> |
| | | <div class="finishedProduct-result"> |
| | | <el-row style="width:100%"> |
| | |
| | | <el-col :span="24"> |
| | | <el-table border height="90" :data="inspectionResultForm" |
| | | :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" |
| | | :cell-style="{textAlign:'center'}"> |
| | | <el-table-column prop="materialCode" label="物料编号"></el-table-column> |
| | | <el-table-column prop="material" label="物料名称"></el-table-column> |
| | | :cell-style="{textAlign: 'center'}"> |
| | | <el-table-column prop="materialCode" width="200" label="物料编号" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="material" width="200" label="物料名称" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="userName" label="检验员"></el-table-column> |
| | | <el-table-column prop="result" label="检验结论"> |
| | | <template slot-scope="scope"> |
| | |
| | | queryById, |
| | | updateDeviceById, |
| | | updateFinishedInsProduct, |
| | | updateFinishedInsProduct2, |
| | | updateFinishedInspectById, |
| | | selectDeviceAPI, |
| | | updateLocationIdById, |
| | | } from '@/api/quality/finishedProduct' |
| | | import { |
| | | getProcessConfigFiles, |
| | | deleteProcessConfigFile, |
| | | downloadProcessConfigFile |
| | | } from '@/api/quality/attachment' |
| | | import { getIfsLocationByGroupCopyAll } from '@/api/warehouse/location' |
| | | import { remote } from '@/api/admin/dict' |
| | | import qrCodeApp from '@/views/common/qrCodeApp' |
| | | import { getStore } from '@/util/store' |
| | | import { getProcessConfigFile } from '@/api/plan/manufacturingorder' |
| | | import * as customerorder from '@/api/plan/customerorder' |
| | | export default { |
| | | components:{ |
| | | qrCodeApp |
| | | }, |
| | | data() { |
| | | return { |
| | | dataForm:null, |
| | | progrecessFileLoading: false, |
| | | processConfigFileTableData: [], |
| | | headers: { |
| | | Authorization: 'Bearer ' + getStore({ name: 'access_token' }) |
| | | }, |
| | | paramData: { |
| | | no: '', |
| | | lineNumber: '', |
| | | type: 1, |
| | | }, |
| | | row: null, |
| | | proIndex: 0, |
| | | deviceCode: false, |
| | |
| | | // 编辑时存储最长的列数字,做删除判断 |
| | | empiricalValueAddMaxNumber: 0, |
| | | processInspectRules: { |
| | | locationId: [{required: true,message:'请选择库位号',trigger:'blur'}] |
| | | locName: [{required: true,message:'请选择库位号',trigger:'blur'}] |
| | | }, |
| | | processInspectVo: { |
| | | id: null, |
| | |
| | | mcode: null, |
| | | prname: null, |
| | | sname: null, |
| | | orderNumber: "ZTTIC20230001", |
| | | orderNumber: null, |
| | | qualityTraceability: null, |
| | | quantity: null, |
| | | specificationsModel: null, |
| | |
| | | technologyId: null, |
| | | documentId: null, |
| | | outBatchNo: null, |
| | | locationId: null, |
| | | locName: null, |
| | | }, |
| | | inspectionItems: [], // 新增检验项目表格 |
| | | inspectionResultForm: [], |
| | | configFileTableData:[], |
| | | keyfield:['inspectProject','project','unit','standard','remark'], |
| | | keyfield0:['detectionValue0'] |
| | | } |
| | | }, |
| | | watch: { |
| | | empiricalValueAdd(newVal){ |
| | | if(newVal!=this.keyfield0.length){ |
| | | if(newVal>this.keyfield0.length){ |
| | | this.keyfield0 = [] |
| | | for(let i=0;i<newVal;i++){ |
| | | this.keyfield0.push('detectionValue'+i) |
| | | } |
| | | }else{ |
| | | this.keyfield0.splice(this.keyfield0.length-1,1); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | beforeUpdate(){ |
| | | this.$nextTick(()=>{ |
| | |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | cancelDeviceCodeDialog(){ |
| | | getProcessConfigFile(){ |
| | | getProcessConfigFile({ |
| | | orderNumber: this.dataForm.orderNumber, |
| | | lineNumber: this.dataForm.customerNo |
| | | }).then((res)=>{ |
| | | this.configFileTableData = res.data.data |
| | | }) |
| | | }, |
| | | downloadProcessConfigFiles(row){ |
| | | customerorder.downloadProcessConfigFile( |
| | | row.fileName, |
| | | row.bucketName, |
| | | row.originalFileName |
| | | ) |
| | | }, |
| | | saveTable(){ |
| | | let finishedInsProducts = []; |
| | | if(this.inspectionItems.length>0){ |
| | | this.inspectionItems.forEach(item=>{ |
| | | if(item.children!=null&&item.children.length>0){ |
| | | item.children.forEach(item2=>{ |
| | | let obj = {}; |
| | | obj.id = item2.iid; |
| | | obj.note = item2.inote; |
| | | obj.required = item2.required; |
| | | obj.inspectionValue = item2.empiricalValueAddss.join(','); |
| | | obj.deviceId = item2.eId; |
| | | finishedInsProducts.push(obj); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | if(finishedInsProducts.length>0){ |
| | | updateFinishedInsProduct2(finishedInsProducts).then(res=>{ |
| | | if(res.data.code == 0){ |
| | | this.$message.success("更新成功") |
| | | }else{ |
| | | this.$message.error("更新失败") |
| | | } |
| | | this.init() |
| | | }) |
| | | } |
| | | }, |
| | | delProcessConfigFile(row) { |
| | | this.$confirm('是否删除该附件', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | closeOnClickModal: false |
| | | }).then(function() { |
| | | return deleteProcessConfigFile(row.id) |
| | | }).then((data) => { |
| | | this.getConfigFiles() |
| | | }) |
| | | }, |
| | | getConfigFiles() { |
| | | const param = { |
| | | no: this.processInspectVo.finInsNo, |
| | | lineNumber: this.processInspectVo.id, |
| | | type: 1 |
| | | } |
| | | getProcessConfigFiles(param).then((res) => { |
| | | this.processConfigFileTableData = res.data.data |
| | | }) |
| | | }, |
| | | downloadProcessConfigFile(row) { |
| | | downloadProcessConfigFile({ |
| | | bucket: row.bucketName, |
| | | fileName: row.fileName, |
| | | originalFileName: row.originalFileName |
| | | }) |
| | | }, |
| | | submitUpload() { |
| | | this.paramData.no = this.processInspectVo.finInsNo |
| | | this.paramData.lineNumber = this.processInspectVo.id |
| | | this.progrecessFileLoading = true |
| | | }, |
| | | uploadSuccess() { |
| | | this.progrecessFileLoading = false |
| | | this.getConfigFiles() |
| | | }, |
| | | tabsClick(tab,even){ |
| | | if(tab.index == 1){ |
| | | this.getConfigFiles(); |
| | | } |
| | | }, |
| | | cancelDeviceCodeDialog(){ |
| | | this.deviceCode = false |
| | | }, |
| | | getDeviceResultInfo(val){ |
| | | console.log("扫描后数据",val); |
| | | let id=val.split("id@")[1] |
| | | if(id!=undefined&&id!=''&&id!=null){ |
| | | let filterData=this.deviceList.filter(item=>{ |
| | |
| | | this.updateDevice(this.row) |
| | | }else{ |
| | | this.$message({ |
| | | message: '未识别出二位码计量器具信息!', |
| | | message: '未识别出计量器具信息!', |
| | | type: 'warning' |
| | | }); |
| | | } |
| | | }, |
| | | codeDevice(row,index){ |
| | | this.row=row |
| | | this.row=row |
| | | console.log("row",row); |
| | | this.deviceCode =true |
| | | this.$refs.codeDeviceCompont.openCamera() |
| | | this.proIndex=index |
| | | }, |
| | | changeLocation(val){ |
| | | if(val){ |
| | | let obj = { |
| | | id: this.processInspectVo.id, |
| | | locationId: val |
| | | } |
| | | updateLocationIdById(obj).then(res=>{ |
| | | if(res.status===200){ |
| | | this.$message.success("更新合格库位成功") |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | getIfsLocation(){ |
| | | getIfsLocationByGroupCopyAll({locationGroup: '1'}).then(res=>{ |
| | | if(res.status===200){ |
| | |
| | | }) |
| | | }, |
| | | submitSave(){ |
| | | let locationId = this.processInspectVo.locationId |
| | | if(locationId==null){ |
| | | this.$message.error("请选择产品合格库位") |
| | | return |
| | | } |
| | | let pro = 0 |
| | | this.inspectionItems.forEach(item => { |
| | | if(item.children){ |
| | |
| | | result: this.inspectionResultForm[0].result |
| | | } |
| | | if (pro > 0) { |
| | | this.$prompt('请输入不合格数量', '不合格数量', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | inputPattern: /^\d+$/, |
| | | inputErrorMessage: '请输入正确数字格式' |
| | | }).then(({ value }) => { |
| | | obj.number = value |
| | | updateFinishedInspectById(obj).then(res => { |
| | | if(res.data.data.indexOf("成功") > 0){ |
| | | this.$message.success("上报成功"); |
| | | this.checkTestState() |
| | | }else{ |
| | | this.$message.warning(res.data.data) |
| | | } |
| | | }); |
| | | }).catch(() => {}); |
| | | obj.number = 1; |
| | | updateFinishedInspectById(obj).then(res => { |
| | | if(res.data.data.indexOf("成功") > 0){ |
| | | this.$message.success("上报成功"); |
| | | this.checkTestState() |
| | | }else{ |
| | | this.$message.warning(res.data.data) |
| | | } |
| | | }); |
| | | // this.$prompt('请输入不合格数量', '不合格数量', { |
| | | // confirmButtonText: '确定', |
| | | // cancelButtonText: '取消', |
| | | // inputPattern: /^\d+$/, |
| | | // inputErrorMessage: '请输入正确数字格式' |
| | | // }).then(({ value }) => { |
| | | // obj.number = value |
| | | // updateFinishedInspectById(obj).then(res => { |
| | | // if(res.data.data.indexOf("成功") > 0){ |
| | | // this.$message.success("上报成功"); |
| | | // this.checkTestState() |
| | | // }else{ |
| | | // this.$message.warning(res.data.data) |
| | | // } |
| | | // }); |
| | | // }).catch(() => {}); |
| | | }else{ |
| | | updateFinishedInspectById(obj).then(res => { |
| | | if(res.data.data.indexOf("成功") > 0){ |
| | |
| | | if(id != null){ |
| | | queryById(id).then(res=>{ |
| | | let result = res.data.data |
| | | this.dataForm = result |
| | | this.processInspectVo.finInsNo = result.finInsNo |
| | | this.processInspectVo.orderNumber = result.orderNumber |
| | | this.processInspectVo.mcode = result.materialCode |
| | |
| | | this.processInspectVo.quantity = result.quantity |
| | | this.processInspectVo.documentId = result.documentId |
| | | this.processInspectVo.outBatchNo = result.outBatchNo |
| | | this.processInspectVo.locationId = result.locationId |
| | | this.processInspectVo.locName = result.locName |
| | | this.processInspectVo.productNo = result.productNo |
| | | let userList = [] |
| | | result.children.forEach(item=>{ |
| | | result.children.forEach((item,index)=>{ |
| | | item.iid = Math.random() |
| | | item.isIndex = true; |
| | | item.parentIndex = index + 1; |
| | | if(item.children != undefined){ |
| | | item.children.forEach(obj=>{ |
| | | let arr = [] |
| | |
| | | if(obj.inspectionValue){ |
| | | arr = obj.inspectionValue.split(",") |
| | | } |
| | | obj.empiricalValueAddss = arr |
| | | this.$set(obj,'empiricalValueAddss',arr) |
| | | // obj.empiricalValueAddss = arr |
| | | if(obj.note){ |
| | | snote=obj.inote |
| | | } |
| | | // obj.inote=obj.note |
| | | this.$set(obj,'inote',obj.note) |
| | | }else{ |
| | | this.$set(obj,'inote',null) |
| | | } |
| | | if(arr.length > this.empiricalValueAdd){ |
| | | this.empiricalValueAdd = arr.length |
| | | } |
| | |
| | | } |
| | | }) |
| | | this.inspectionItems = result.children |
| | | let rVal = '' |
| | | let passNum = 0 |
| | | let unPassNum = 0 |
| | | this.inspectionItems.forEach(item => { |
| | | if (item.children) { |
| | | item.children.forEach(obj => { |
| | | if(obj.iresult == 0){ |
| | | unPassNum += 1 |
| | | } |
| | | if(obj.iresult == 1){ |
| | | passNum+=1 |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | rVal = (passNum+unPassNum)>0 ? unPassNum>0 ? '0' :'1' : '' |
| | | this.inspectionResultForm = [{ |
| | | materialCode: result.materialCode, |
| | | material: result.material, |
| | | userName: Array.from(new Set(userList)).join(","), |
| | | result: this.resultVal==null ? '' : this.resultVal, |
| | | result: this.resultVal==null ? rVal : this.resultVal, |
| | | }] |
| | | this.getProcessConfigFile() |
| | | }).catch(error=>{ |
| | | console.log(error) |
| | | console.error(error) |
| | | }) |
| | | } |
| | | }, |
| | |
| | | if (str === undefined || str === '' || str === null ) { |
| | | return |
| | | } |
| | | let obj = { |
| | | deviceId: row.eId, |
| | | fpid: row.iid, |
| | | inspectionValue: str, |
| | | note : row.inote |
| | | } |
| | | updateFinishedInsProduct(obj).then(res=>{ |
| | | if(res.data.code == 0){ |
| | | this.$message.success("更新成功") |
| | | }else{ |
| | | this.$message.error("更新失败") |
| | | } |
| | | this.init() |
| | | }) |
| | | // let obj = { |
| | | // deviceId: row.eId, |
| | | // fpid: row.iid, |
| | | // inspectionValue: str, |
| | | // note : row.inote |
| | | // } |
| | | // updateFinishedInsProduct(obj).then(res=>{ |
| | | // if(res.data.code == 0){ |
| | | // this.$message.success("更新成功") |
| | | // }else{ |
| | | // this.$message.error("更新失败") |
| | | // } |
| | | // this.init() |
| | | // }) |
| | | } |
| | | }, |
| | | addTestProject() { |
| | |
| | | arr.splice((arr.length-1),1) |
| | | let obj = { |
| | | devideId: i.eId, |
| | | fpid: row.iid, |
| | | fpid: i.iid, |
| | | inspectionValue: arr.join(","), |
| | | note : i.inote |
| | | } |
| | | updateFinishedInsProduct(obj).then(res => { |
| | | if (res.data.code == 0) { |
| | | this.init() |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | |
| | | this.inspectionItems.forEach(i => { |
| | | i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); |
| | | }); |
| | | this.saveTable() |
| | | } |
| | | } |
| | | }, |
| | | // 添加检验值列 |
| | | clickAddInspectionColumn() { |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | | }, |
| | | moveFocus(event, index, key) { |
| | | console.log(key, index,key) |
| | | let keyfield = this.insertArrayAt(this.keyfield,0,this.keyfield0); |
| | | // enter键 |
| | | // if (event.keyCode === 13) { // 回车 |
| | | // if (index === this.getLen() - 1 && key === keyfield[keyfield.length - 1]) { // 最后一行最后一个 |
| | | // console.log('最后一行最后一个无法回车') |
| | | // return |
| | | // } |
| | | // this.$nextTick(() => { |
| | | // event.target.blur() |
| | | // }) |
| | | // if (key === keyfield[keyfield.length - 1]) { // 当前行最后一个,跳转下一行第一个 |
| | | |
| | | // } else { // 跳转下一个 |
| | | // const nextkeyindex = keyfield.findIndex(k => k === key) + 1 |
| | | // this.$nextTick(() => { |
| | | // document.getElementById(keyfield[nextkeyindex] + index).focus() |
| | | // }) |
| | | // } |
| | | // } |
| | | |
| | | // 向上 =38 |
| | | if (event.keyCode === 38) { |
| | | console.log('向上') |
| | | if (index === 0) { // 第一行 |
| | | console.log('第一行无法向上') |
| | | return |
| | | } |
| | | document.getElementById(key + index).blur() |
| | | let i = 0; |
| | | while (true){ |
| | | let dom = document.getElementById(key + (index - 1-i)) |
| | | if(dom){ |
| | | dom.focus() |
| | | return |
| | | }else if((index-1-i)==0){ |
| | | return |
| | | } |
| | | i++ |
| | | } |
| | | } |
| | | |
| | | // 下 = 40 |
| | | if (event.keyCode === 40) { |
| | | console.log('向下') |
| | | if (index === this.getLen() - 1) { // 最后一行 |
| | | console.log('最后一行无法向下') |
| | | return |
| | | } |
| | | document.getElementById(key + index).blur() |
| | | this.$nextTick(() => { |
| | | let i = 0; |
| | | while (true){ |
| | | let dom = document.getElementById(key + (index + 1+i)) |
| | | console.log(dom,key + (index + 1+i)) |
| | | if(dom){ |
| | | dom.focus() |
| | | return |
| | | }else if((index+1+i)==this.getLen() - 1){ |
| | | return |
| | | } |
| | | i++ |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 左 = 37 |
| | | if (event.keyCode === 37) { |
| | | console.log('向左') |
| | | if (index === 0 && key === keyfield[0]) { // 第一行第一个 |
| | | console.log('第一行第一个无法向左') |
| | | return |
| | | } |
| | | document.getElementById(key + index).blur() |
| | | const prevkeyindex = keyfield.findIndex(k => k === key) - 1 |
| | | this.$nextTick(() => { |
| | | let dom = document.getElementById(keyfield[prevkeyindex] + index) |
| | | if(dom){ |
| | | dom.focus() |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 右 = 39 |
| | | if (event.keyCode === 39) { |
| | | console.log('向右') |
| | | if (index === this.getLen() - 1 && key === keyfield[keyfield.length - 1]) { // 最后一行最后一个 |
| | | console.log('最后一行最后一个无法向右') |
| | | return |
| | | } |
| | | document.getElementById(key + index).blur() |
| | | const nextkeyindex = keyfield.findIndex(k => k === key) + 1 |
| | | this.$nextTick(() => { |
| | | let dom = document.getElementById(keyfield[nextkeyindex] + index) |
| | | if(dom){ |
| | | dom.focus() |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | insertArrayAt(arr1, index, arr2) { |
| | | return arr1.slice(0, index).concat(arr2, arr1.slice(index)); |
| | | }, |
| | | getLen(){ |
| | | let arr = [] |
| | | this.inspectionItems.forEach(item => { |
| | | arr.push(item) |
| | | item.children.forEach(child => { |
| | | arr.push(child) |
| | | }) |
| | | }) |
| | | return arr.length |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | <style scoped> |
| | | .finishedProduct-detail { |
| | | width: 100%; |
| | | height: 500px; |
| | | height: 520px; |
| | | padding: 10px 20px; |
| | | display: flex; |
| | | border: 1px solid #ddd; |
| | | background-color: #fff; |
| | | margin-top: 10px; |
| | | box-sizing: border-box; |
| | | flex-wrap: wrap; |
| | | /* display: flex; |
| | | flex-wrap: wrap; */ |
| | | } |
| | | |
| | | basic.finishedProduct-result { |