| | |
| | | </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" 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"></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,true)" placeholder="请输入检测值"></el-input> |
| | | <span v-if="resultVal != null && processInspectVo.id != 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 && scope.row.iname != 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, scope.$index)"> |
| | | <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-column> |
| | | <el-table-column show-overflow-tooltip |
| | | label="检验描述" width="140" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col> |
| | | <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> |
| | | <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" |
| | | v-if="inspectionItems&&inspectionItems.length>0" |
| | | @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"></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,true)" placeholder="请输入检测值"></el-input> |
| | | <span v-if="resultVal != null && processInspectVo.id != 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 && scope.row.iname != 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, scope.$index)"> |
| | | <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-column> |
| | | <el-table-column show-overflow-tooltip |
| | | label="检验描述" width="140" style="text-align: center;"> |
| | | <template slot-scope="scope"> |
| | | <el-col> |
| | | <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> |
| | | </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 |
| | | :disabled="processInspectVo.proInsNo==null || (resultVal!=null && resultVal!='')" |
| | | drag |
| | | ref="upload" |
| | | action="/mes/rawInsProduct/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="rawInsNo" |
| | | 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> |
| | | </el-col> |
| | | </el-row> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | <div class="finishedProduct-result"> |
| | | <el-row style="width:100%"> |
| | |
| | | queryById, |
| | | updateDeviceBypppId, |
| | | updateProcessInsProduct, |
| | | updateProcessInsProduct2, |
| | | updateProcessInspectsById, |
| | | } from '@/api/quality/processInspect' |
| | | import { |
| | | getProcessConfigFiles, |
| | | deleteProcessConfigFile, |
| | | downloadProcessConfigFile |
| | | } from '@/api/quality/attachment' |
| | | import processPart from '@/views/common/processinspect-part' |
| | | import { selectDevice } from '@/api/quality/processInspect' |
| | | import qrCodeApp from '@/views/common/qrCodeApp' |
| | | import { validatePositiveInteger } from '@/util/validate' |
| | | import { getStore } from '@/util/store' |
| | | export default { |
| | | components:{ |
| | | qrCodeApp,processPart |
| | | }, |
| | | data() { |
| | | return { |
| | | progrecessFileLoading: false, |
| | | processConfigFileTableData: [], |
| | | headers: { |
| | | Authorization: 'Bearer ' + getStore({ name: 'access_token' }) |
| | | }, |
| | | paramData: { |
| | | rawInsNo: '', |
| | | lineNumber: '', |
| | | type: 2 |
| | | }, |
| | | paramObj:{}, |
| | | qrcode: false, |
| | | row: null, |
| | |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | saveTable(){ |
| | | let processInsProduct = []; |
| | | this.inspectionItems.forEach((item) => { |
| | | if(item.children&&item.children.length>0){ |
| | | item.children.forEach((child)=>{ |
| | | let obj = {} |
| | | obj.id = child.iid; |
| | | obj.eId = child.eId; |
| | | obj.note = child.inote; |
| | | obj.inspectionValue = child.empiricalValueAddss.join(','); |
| | | obj.required = child.required; |
| | | processInsProduct.push(obj) |
| | | }) |
| | | } |
| | | }) |
| | | if(processInsProduct.length>0){ |
| | | updateProcessInsProduct2(processInsProduct).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.rawInsNo, |
| | | lineNumber: this.processInspectVo.id, |
| | | type: 2 |
| | | } |
| | | 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.proInsNo |
| | | this.paramData.lineNumber = this.processInspectVo.id |
| | | this.progrecessFileLoading = true |
| | | }, |
| | | uploadSuccess() { |
| | | this.progrecessFileLoading = false |
| | | this.getConfigFiles() |
| | | }, |
| | | tabsClick(tab,even){ |
| | | if(tab.index == 1){ |
| | | if(this.processInspectVo.proInsNo==null){ |
| | | this.$message.error("请先保存过程检验信息") |
| | | return |
| | | } |
| | | this.getConfigFiles(); |
| | | } |
| | | }, |
| | | queryCode(){ |
| | | this.workshop = true |
| | | console.log(this.workshop); |
| | | // this.paramObj = { |
| | | // code: this.dataForm.code |
| | | // } |
| | | }, |
| | | cancelCodeDialog(){ |
| | | this.qrcode = false |
| | |
| | | return |
| | | } |
| | | } |
| | | if (row.iid != null && row.iid != '') { |
| | | let str = "" |
| | | row.empiricalValueAddss.forEach(e => { |
| | | str += e + "," |
| | | }) |
| | | str = str.slice(0, -1); |
| | | if (str === undefined || str === '' || str === null) { |
| | | return |
| | | } |
| | | let obj = { |
| | | devideId: row.eId, |
| | | ppid: row.iid, |
| | | inspectionValue: str, |
| | | note : row.inote |
| | | } |
| | | updateProcessInsProduct(obj).then(res => { |
| | | if (res.data.code == 0) { |
| | | this.$message.success("更新成功") |
| | | } else { |
| | | this.$message.error("更新失败") |
| | | } |
| | | this.init() |
| | | }) |
| | | } |
| | | // if (row.iid != null && row.iid != '') { |
| | | // let str = "" |
| | | // row.empiricalValueAddss.forEach(e => { |
| | | // str += e + "," |
| | | // }) |
| | | // str = str.slice(0, -1); |
| | | // if (str === undefined || str === '' || str === null) { |
| | | // return |
| | | // } |
| | | // let obj = { |
| | | // devideId: row.eId, |
| | | // ppid: row.iid, |
| | | // inspectionValue: str, |
| | | // note : row.inote |
| | | // } |
| | | // updateProcessInsProduct(obj).then(res => { |
| | | // if (res.data.code == 0) { |
| | | // this.$message.success("更新成功") |
| | | // } else { |
| | | // this.$message.error("更新失败") |
| | | // } |
| | | // this.init() |
| | | // }) |
| | | // } |
| | | }, |
| | | addTestProject() { |
| | | let val = this.processInspectVo |
| | |
| | | } else { |
| | | if (_than.empiricalValueAddMaxNumber != _than.empiricalValueAdd - 1) { |
| | | _than.empiricalValueAdd = _than.empiricalValueAdd - 1; |
| | | _than.changeRowResult() |
| | | // _than.changeRowResult() |
| | | _than.saveTable(); |
| | | _than.inspectionItems.forEach(i => { |
| | | if(i.children){ |
| | | i.children.forEach(ele=>{ |
| | |
| | | <style scoped> |
| | | .finishedProduct-detail { |
| | | width: 100%; |
| | | height: 470px; |
| | | height: 520px; |
| | | padding: 10px 20px; |
| | | display: flex; |
| | | border: 1px solid #ddd; |
| | | background-color: #fff; |
| | | margin-top: 10px; |
| | | box-sizing: border-box; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .finishedProduct-result { |