From 1ece9a67f303b73a67ebe78b681143006fc89894 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期五, 12 四月 2024 16:07:49 +0800 Subject: [PATCH] 产品检、过程检新增附件 --- src/views/quality/processInspect/processInspect-form.vue | 1326 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 913 insertions(+), 413 deletions(-) diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue index 8cffa25..18e7222 100644 --- a/src/views/quality/processInspect/processInspect-form.vue +++ b/src/views/quality/processInspect/processInspect-form.vue @@ -4,132 +4,339 @@ <div class="page-header"> <div class="header-left"> <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> - <h2 v-if="resultVal != null && processInspectVo.id!=null">鏌ョ湅-杩囩▼妫�楠屽崟</h2> + <h2 v-if="resultVal != null && processInspectVo.id != null">鏌ョ湅-杩囩▼妫�楠屽崟</h2> <h2 v-else>缂栬緫-杩囩▼妫�楠屽崟</h2> </div> <div class="btn-group header-right"> - <el-button @click="addTestProject" v-if="processInspectVo.id==null">鐢熸垚妫�楠岄」鐩�</el-button> + <el-button type="primary" @click="addTestProject" v-if="processInspectVo.id == null">鐢熸垚妫�楠岄」鐩�</el-button> </div> </div> <div class="page-main"> <div class="finishedProduct-basic"> - <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" - label-position="right" label-width="120px" style="width: 100%" size="small"> + <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" label-position="right" + label-width="120px" style="width: 100%" size="small" :rules="rules"> <div class="formwrapper"> <el-row> <el-col :span="6"> - <el-form-item label="璁㈠崟鍙凤細"> + <el-form-item label="杩囩▼妫�楠岀紪鍙�"> + <el-input disabled + v-model="processInspectVo.proInsNo" placeholder="杩囩▼妫�楠岀紪鍙�" autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="杞﹂棿璁㈠崟鍙�" prop="moNo"> <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" - v-model="processInspectVo.orderNumber" placeholder="璇疯緭鍏ヨ鍗曞彿" autocomplete="off" /> + v-model="processInspectVo.moNo" placeholder="璇疯緭鍏ヨ溅闂磋鍗曞彿" autocomplete="off" > + <!-- <el-button + slot="append" + icon="el-icon-search" + :disabled="resultVal!=null" + @click="queryCode"></el-button> --> + <el-button + slot="append" + icon="el-icon-full-screen" + :disabled="resultVal!=null" + @click="Turnonthecamera"></el-button> + </el-input> </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="浜у搧鍚嶇О锛�"> - <el-select style="width: 100%" @change="changeOptionsSamplename" :disabled="processInspectVo.id != null" - v-model="processInspectVo.material" size="small" placeholder="璇烽�夋嫨浜у搧鍚嶇О"> - <el-option v-for="(item,index) in optionsSamplename" :key="index" :label="item.material" - :value="item.materialCode"> - </el-option> - </el-select> + <el-form-item label="閿�鍞鍗曞彿" prop="orderNumber"> + <el-input disabled + v-model="processInspectVo.orderNumber" placeholder="閿�鍞鍗曞彿" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="浜у搧缂栫爜锛�"> - <el-input disabled v-model="processInspectVo.materialCode" - placeholder="璇疯緭鍏ヤ骇鍝佺紪鐮�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input disabled v-model="processInspectVo.specs" - placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> + <el-form-item label="浜у搧鍚嶇О"> + <el-tooltip class="item" effect="dark" :content="processInspectVo.material"> + <el-input v-model="processInspectVo.material" disabled placeholder="浜у搧鍚嶇О"></el-input> + </el-tooltip> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> - <el-form-item label="宸ュ簭鍚嶇О"> + <el-form-item label="浜у搧缂栧彿"> + <el-input disabled v-model="processInspectVo.materialCode" placeholder="浜у搧缂栧彿" autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="瑙勬牸鍨嬪彿"> + <el-tooltip class="item" effect="dark" :content="processInspectVo.specs"> + <el-input disabled v-model="processInspectVo.specs" placeholder="瑙勬牸鍨嬪彿" autocomplete="off" /> + </el-tooltip> + </el-form-item> + </el-col> + + <el-col :span="6"> + <el-form-item label="宸ュ崟" prop="operationTaskId"> <el-select style="width: 100%" :disabled="processInspectVo.id != null" - v-model="processInspectVo.technologyOperationId" size="small" placeholder="璇烽�夋嫨宸ュ簭"> - <el-option v-for="(item,index) in technologyList" :key="index" :label="item.name" - :value="item.technologyOperationId"> + v-model="processInspectVo.operationTaskId" size="small" placeholder="璇烽�夋嫨宸ュ崟"> + <el-option v-for="(item, index) in technologyList" :key="index" :label="item.name+'-'+item.optaskNo" + :value="item.operationTaskId"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="鍗曚綅锛�"> - <el-input disabled v-model="processInspectVo.unit" - placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + <el-form-item label="鍗曚綅"> + <el-input disabled v-model="processInspectVo.unit" placeholder="鍗曚綅" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> - <el-form-item label="鏁伴噺锛�"> - <el-input v-model="processInspectVo.quantity" placeholder="璇疯緭鍏ユ暟閲�" - autocomplete="off" :disabled="processInspectVo.id != null" /> + <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName"> + <el-input v-model="processInspectVo.customerName" placeholder="瀹㈡埛鍚嶇О" autocomplete="off" disabled /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="宸ョ▼鍚嶇О" prop="projectName"> + <el-input v-model="processInspectVo.projectName" placeholder="宸ョ▼鍚嶇О" autocomplete="off" disabled /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="鏁伴噺" prop="quantity"> + <el-input v-model="processInspectVo.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" + :disabled="processInspectVo.id != null" /> </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-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, index)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> - <span v-if="resultVal != null && processInspectVo.id!=null" v-text="scope.row.empiricalValueAddss[index]"></span> - </el-tooltip> - </template> + <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-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="deviceName" label="璇曢獙璁惧" min-width="250"> - <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:100%" 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.number +'-'+ item.name"></el-option> - </el-select> - </div> - </template> + <el-table-column + prop="originalFileName" + align="center" + label="鍘熸枃浠跺悕" + width="200" + > </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="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%"> @@ -138,10 +345,10 @@ <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> + :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }" + :cell-style="{ textAlign: 'center' }"> + <el-table-column prop="materialCode" width="200" show-overflow-tooltip label="鐗╂枡缂栧彿"></el-table-column> + <el-table-column prop="material" width="200" show-overflow-tooltip label="鐗╂枡鍚嶇О"></el-table-column> <el-table-column prop="userName" label="妫�楠屽憳"></el-table-column> <el-table-column prop="result" label="妫�楠岀粨璁�"> <template slot-scope="scope"> @@ -149,9 +356,10 @@ <el-tag type="danger" v-if="scope.row.result == '0'">涓嶅悎鏍�</el-tag> </template> </el-table-column> - <el-table-column label="鎿嶄綔"> + <el-table-column label="鎿嶄綔"> <template> - <el-button type="text" :disabled="resultVal != null && processInspectVo.id!=null" @click="submitSave()" size="small">涓婃姤</el-button> + <el-button type="text" :disabled="resultVal != null && processInspectVo.id != null" + @click="submitSave()" size="small">涓婃姤</el-button> </template> </el-table-column> </el-table> @@ -159,352 +367,644 @@ </el-row> </div> </div> + <el-dialog + title="鎵弿" + :visible.sync="qrcode" + width="60%"> + <div style="height: 100vh;width: 100%;"> + <qr-code-app ref="codeCompont" @ok="getResultInfo" @cancelCodeDialog="cancelCodeDialog"></qr-code-app> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="qrcode = false">鍙� 娑�</el-button> + <el-button type="primary" @click="qrcode = false">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog + title="璁惧鎵弿" + :visible.sync="deviceCode" + width="60%"> + <div style="height: 100vh;width: 100%;"> + <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deviceCode = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button> + </span> + </el-dialog> + <processPart :paramObj="paramObj" :currshowlist.sync="workshop" /> </div> - </template> - - <script> - import { - chooseMater, - addProcess, - queryById, - updateDeviceBypppId, - updateProcessInsProduct, - updateProcessInspectsById, - } from '@/api/quality/processInspect' - import { selectDevice } from '@/api/quality/rawMaterial' - export default { - data() { - return { - resultVal: null, - technologyList: [], - deviceList: [], - hasChildren: true, - optionsSamplename: [], - // 娣诲姞鍒� - empiricalValueAdd: 1, - // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂� - empiricalValueAddMaxNumber: 0, - processInspectVo: { - id: null, - material: null, - materialCode: null, - orderNumber: "ZTTIC20230001", - quantity: null, - specs: null, - unit: null, - technologyOperationId: null - }, - inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� - inspectionResultForm: [], - } - }, - watch: { - }, - beforeUpdate(){ - this.$nextTick(()=>{ +</template> + +<script> +import { + chooseMater, + addProcess, + queryById, + updateDeviceBypppId, + updateProcessInsProduct, + updateProcessInsProduct2, + updateProcessInspectsById, +} from '@/api/quality/processInspect' +import { + getProcessConfigFiles, + deleteProcessConfigFile, + downloadProcessConfigFile + } from '@/api/quality/attachment' +import { getProcessConfigFile } from '@/api/plan/manufacturingorder' +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' +import * as customerorder from '@/api/plan/customerorder' +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, + proIndex: 0, + deviceCode: false, + rules: { + moNo: [{required:true,message:'杞﹂棿璁㈠崟鍙蜂笉鑳戒负绌�',trigger:'blur'}], + quantity: [{required:true,validator: validatePositiveInteger,trigger:'blur'}], + operationTaskId: [{required:true,message: '璇烽�夋嫨宸ュ崟',trigger:'change'}], + }, + dataVal: [{ + label: '鏄�', + value: '鏄�' + }, { + label: '鍚�', + value: '鍚�' + }], + resultVal: null, + technologyList: [], + deviceList: [], + workshop:false,//杞﹂棿寮圭獥 + hasChildren: true, + optionsSamplename: [], + // 娣诲姞鍒� + empiricalValueAdd: 1, + // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂� + empiricalValueAddMaxNumber: 0, + processInspectVo: { + id: null, + moNo: null, + proInsNo: null, + material: null, + materialCode: null, + orderNumber: null, + quantity: null, + specs: null, + unit: null, + operationTaskId: null, + customerName: null, + projectName: null + }, + inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� + inspectionResultForm: [], + configFileTableData:[], + dataForm:null + } + }, + watch: { + }, + beforeUpdate() { + this.$nextTick(() => { this.$refs.table.doLayout(); - }) + }) + }, + created() { + }, + mounted() { + this.getDeviceList() + this.processInspectVo.id = this.$route.query.id + this.resultVal = this.$route.params.resultVal + if (this.resultVal == null) { + let val = sessionStorage.getItem("process-resultVal-" + this.processInspectVo.id); + val == undefined ? this.resultVal = null : this.resultVal = val + } + this.init() + }, + methods: { + getProcessConfigFile(){ + getProcessConfigFile({ + orderNumber: this.dataForm.orderNumber, + lineNumber: this.dataForm.customerNo + }).then((res)=>{ + this.configFileTableData = res.data.data + }) }, - created() { + downloadProcessConfigFiles(row){ + customerorder.downloadProcessConfigFile( + row.fileName, + row.bucketName, + row.originalFileName + ) }, - mounted() { - this.getDeviceList() - this.processInspectVo.id = this.$route.query.id - this.resultVal = this.$route.query.resultVal - if(this.resultVal == null){ - let val = sessionStorage.getItem("process-resultVal"); - val == undefined ? this.resultVal=null : this.resultVal = val - } - this.init() - }, - methods: { - submitSave(){ - let pro = 0 - console.log(this.inspectionItems); - this.inspectionItems.forEach(item => { - if(item.children){ - let arr = item.children.filter(obj=>{ - return obj.iresult == 0; - }) - pro+=arr.length + 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() }) - if (pro > 0) { - this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - inputPattern: /^\d+$/, - inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' - }).then(({ value }) => { - let data = { - id: this.processInspectVo.id, - number: value - } - updateProcessInspectsById(data).then(res => { - let data = res.data.data - if(data){ - if(data.indexOf("鎴愬姛")>0){ - this.$message.success(data); - this.checkTestState() - }else{ - this.$message.warning(data); - } - return - } - }); - }).catch(() => {}); - }else{ - updateProcessInspectsById({id:this.processInspectVo.id,number:0}).then(res => { + } + }, + 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 + }, + cancelCodeDialog(){ + this.qrcode = false + }, + getResultInfo(data){ + if(!data.includes("moNo")){ + this.$message.warning('鏈瘑鍒嚭杞﹂棿璁㈠崟鍙蜂俊鎭紒'); + } + let obj=JSON.parse(data) + let info={"code":obj["moNo"]} + if(info.code){ + this.processInspectVo.moNo = obj["moNo"] + this.selectInfoByOrderId() + }else{ + this.$message.warning('鏈瘑鍒嚭杞﹂棿璁㈠崟鍙蜂俊鎭紒'); + } + }, + // 鎵撳紑鐩告満 + Turnonthecamera() { + this.qrcode = true + this.$refs.codeCompont.openCamera() + }, + cancelDeviceCodeDialog(){ + this.deviceCode = false + }, + getDeviceResultInfo(val){ + let id=val.split("id@")[1] + if(id!=undefined&&id!=''&&id!=null){ + let filterData=this.deviceList.filter(item=>{ + return item.id==id + })[0] + this.row.eId=Number(id) + this.updateDevice(this.row) + }else{ + this.$message({ + message: '鏈瘑鍒嚭璁¢噺鍣ㄥ叿淇℃伅锛�', + type: 'warning' + }); + } + }, + codeDevice(row,index){ + this.row=row + this.deviceCode =true + this.$refs.codeDeviceCompont.openCamera() + this.proIndex=index + }, + submitSave() { + let pro = 0 + this.inspectionItems.forEach(item => { + if (item.children) { + let arr = item.children.filter(obj => { + return obj.iresult == 0; + }) + pro += arr.length + } + }) + let obj = { + id: this.processInspectVo.id, + number: 0, + result: this.inspectionResultForm[0].result + } + if (pro > 0) { + this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + inputPattern: /^\d+$/, + inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' + }).then(({ value }) => { + obj.number = value + updateProcessInspectsById(obj).then(res => { let data = res.data.data - if(data){ - if(data.indexOf("鎴愬姛") > 0){ + if (data) { + if (data.indexOf("鎴愬姛") > 0) { this.$message.success(data); this.checkTestState() - }else{ + } else { this.$message.warning(data); } return } }); - } - this.init() - }, - checkTestState(){ - let resultVal = '1' - this.inspectionItems.forEach(item=>{ - if(item.children){ - item.children.forEach(obj=>{ - if(obj.iresult == 0){ - resultVal = '0' - } - }) + }).catch(() => { }); + } else { + updateProcessInspectsById(obj).then(res => { + let data = res.data.data + if (data) { + if (data.indexOf("鎴愬姛") > 0) { + this.$message.success(data); + this.checkTestState() + } else { + this.$message.warning(data); + } + return } + }); + } + this.init() + }, + checkTestState() { + let resultVal = '1' + this.inspectionItems.forEach(item => { + if (item.children) { + item.children.forEach(obj => { + if (obj.iresult == 0) { + resultVal = '0' + } + }) + } + }) + this.resultVal = resultVal + this.inspectionResultForm[0].result = resultVal + sessionStorage.setItem("process-resultVal-" + this.processInspectVo.id, resultVal) + }, + init() { + let id = this.processInspectVo.id + if (id != null) { + queryById(id).then(res => { + let result = res.data.data + this.processInspectVo.moNo = result.moNo + this.dataForm = result; + this.processInspectVo.operationTaskId = result.technologyOperationName + this.processInspectVo.proInsNo = result.proInsNo + this.processInspectVo.projectName = result.projectName + this.processInspectVo.customerName = result.customerName + this.processInspectVo.orderNumber = result.orderNumber + this.processInspectVo.materialCode = result.materialCode + this.processInspectVo.material = result.material + this.processInspectVo.specs = result.specs + this.processInspectVo.unit = result.punit + this.processInspectVo.quantity = result.quantity + let userList = [] + result.children.forEach((item,index) => { + item.isIndex = true; + item.parentIndex = index + 1; + item.iid = Math.random() + if (item.children != undefined) { + item.children.forEach(obj => { + let arr = [] + if (obj.userName) { + userList.push(obj.userName) + } + if (obj.inspectionValue) { + arr = obj.inspectionValue.split(",") + } + obj.empiricalValueAddss = arr + if(!obj.inote){ + 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 ? rVal : this.resultVal, + }] + this.getProcessConfigFile() + }).catch(error => { + console.log(error) }) - this.resultVal = resultVal - this.inspectionResultForm[0].result = resultVal - sessionStorage.setItem("process-resultVal",resultVal) - }, - init(){ - let id = this.processInspectVo.id - if(id != null){ - queryById(id).then(res=>{ - let result = res.data.data - this.processInspectVo.orderNumber = result.orderNumber - this.processInspectVo.materialCode = result.materialCode - this.processInspectVo.material = result.material - this.processInspectVo.technologyOperationId = result.technologyOperationName - this.processInspectVo.specs = result.specs - this.processInspectVo.unit = result.punit - this.processInspectVo.quantity = result.quantity - let userList = [] - result.children.forEach(item=>{ - item.iid = Math.random() - if(item.children != undefined){ - item.children.forEach(obj=>{ - let arr = [] - if(obj.userName){ - userList.push(obj.userName) + } + }, + getDeviceList() { + selectDevice(null).then(res => { + this.deviceList = res.data.data + }) + }, + updateDevice(row, index) { + let rowId=JSON.stringify(row.iid) + updateDeviceBypppId({ deviceId: row.eId, ppid: row.iid }).then(res => { + this.inspectionItems.forEach(obj => { + obj.children.forEach(c=>{ + if(c.iid==rowId){ + c.inspectionValue = null + c.iresult = null + c.empiricalValueAddss = [] + c.inote='' + } + }) + }) + }).catch(error => { + console.log(error) + }) + }, + changeState(row,isChecked) { + const _than = this + if(isChecked){ + let isNumber = true + for(var i=0;i<row.empiricalValueAddss.length;i++){ + let val = row.empiricalValueAddss[i] + if(!/(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/.test(val)){ + row.empiricalValueAddss[i] = null + _than.$message.error("璇疯緭鍏ユ暟瀛�") + isNumber = false + } + } + if(!isNumber){ + 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() + // }) + // } + }, + addTestProject() { + let val = this.processInspectVo + const _than = this + this.$refs.addInspectionform.validate(valid=>{ + if(valid){ + addProcess(val).then(res => { + let id = res.data.data + if (id != null) { + _than.processInspectVo.id = id + queryById(id).then(response => { + let proList = response.data.data.children + proList.forEach(item => { + item.iid = Math.random(); + if (item.children != undefined) { + item.children.forEach(obj => { + obj.inote = null + obj.empiricalValueAddss = [] + }) } - if(obj.inspectionValue){ - arr = obj.inspectionValue.split(",") - } - obj.empiricalValueAddss = arr - if(arr.length > this.empiricalValueAdd){ - this.empiricalValueAdd = arr.length + }) + _than.inspectionItems = proList + }).catch(error => { + console.log(error); + }) + } + }).catch(error => { + console.log(error) + }) + } + }) + }, + selectInfoByOrderId() { + if(this.processInspectVo.moNo){ + chooseMater({ + moNo: this.processInspectVo.moNo + }).then(res => { + let data = res.data.data + if (data) { + this.technologyList = data.children + this.processInspectVo.materialCode = data.materialCode + this.processInspectVo.orderNumber = data.orderNumber + this.processInspectVo.projectName = data.projectName + this.processInspectVo.customerName = data.customerName + this.processInspectVo.material = data.material + this.processInspectVo.specs = data.specs + this.processInspectVo.unit = data.unit + } else { + this.$message.warning('娌℃湁璇ヨ溅闂磋鍗曞彿锛�'); + this.technologyList = [] + this.processInspectVo.materialCode = null + this.processInspectVo.orderNumber = null + this.processInspectVo.material = null + this.processInspectVo.specs = null + this.processInspectVo.unit = null + } + }) + } + }, + changeRowResult(){ + if(this.inspectionItems){ + this.inspectionItems.forEach(e=>{ + if(e.children){ + e.children.forEach(i=>{ + if(i.empiricalValueAddss.length>1){ + let arr = i.inspectionValue.split(",") + arr.splice((arr.length-1),1) + let obj = { + devideId: i.eId, + ppid: i.iid, + inspectionValue: arr.join(","), + note : i.inote + } + updateProcessInsProduct(obj).then(res => { + if (res.data.code == 0) { + this.init() } }) } }) - this.inspectionItems = result.children - this.inspectionResultForm = [{ - materialCode: result.materialCode, - material: result.material, - userName: Array.from(new Set(userList)).join(","), - result: this.resultVal == null ? '' : this.resultVal, - }] - }).catch(error=>{ - console.log(error) - }) - } - }, - getDeviceList(){ - selectDevice(null).then(res=>{ - this.deviceList = res.data.data - }) - }, - updateDevice(row){ - updateDeviceBypppId({equiomentId:row.eId,ppid:row.iId}).then(res=>{ - }).catch(error=>{ - console.log(error) - }) - }, - //浜у搧鍚嶇О锛岄�夋嫨 - changeOptionsSamplename(val) { - let sample = this.optionsSamplename.filter(o=>{ - return o.materialCode == val - })[0] - this.processInspectVo.materialCode = sample.materialCode - this.processInspectVo.specs = sample.specs - this.processInspectVo.unit = sample.unit - this.processInspectVo.material = sample.material - this.technologyList = sample.children - }, - changeState(row, index) { - 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 = { - equiomentId: row.eId, - ppid: row.iid, - inspectionValue: str - } - updateProcessInsProduct(obj).then(res=>{ - if(res.data.code == 0){ - this.$message.success("鏇存柊鎴愬姛") - }else{ - this.$message.error("鏇存柊澶辫触") - } - this.init() - }) - } - }, - addTestProject() { - let val = this.processInspectVo - addProcess(val).then(res=>{ - let id = res.data.data - if(id != null){ - queryById(id).then(response=>{ - console.log(response.data.data.children) - let proList = response.data.data.children - proList.forEach(item=>{ - item.iid = Math.random(); - if(item.children != undefined){ - item.children.forEach(obj=>{ - obj.empiricalValueAddss = [] - }) - } - }) - this.inspectionItems = proList - }).catch(error=>{ - console.log(error); - }) - } - }).catch(error=>{ - console.log(error) - }) - }, - selectInfoByOrderId() { - chooseMater({ - orderNumber: this.processInspectVo.orderNumber - }).then(res => { - if (res.data.data != null) { - this.optionsSamplename = res.data.data.children - } else { - this.$message({ - message: '娌℃湁璇ヨ鍗曞彿锛�', - type: 'warning' - }); - this.optionsSamplename = [] - this.processInspectVo.materialCode = null - this.processInspectVo.material = null - this.processInspectVo.specs = null - this.processInspectVo.unit = null } }) - }, - // 鍒犻櫎妫�楠屽�煎垪 - clickDeleteInspectionColumn() { - if (this.empiricalValueAdd - 1 === 0) { - } else { - if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { - this.empiricalValueAdd = this.empiricalValueAdd - 1; - this.inspectionItems.forEach(i => { - i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); - }); - } - } - }, - // 娣诲姞妫�楠屽�煎垪 - clickAddInspectionColumn() { - this.empiricalValueAdd = this.empiricalValueAdd + 1; } }, - } - </script> - - <style scoped> - .finishedProduct-detail { - width: 100%; - height: 470px; - padding: 10px 20px; - display: flex; - border: 1px solid #ddd; - background-color: #fff; - margin-top: 10px; - box-sizing: border-box; - flex-wrap: wrap; - } - - .finishedProduct-result { - width: 100%; - height: 150px; - padding: 10px 20px; - display: flex; - border: 1px solid #ddd; - background-color: #fff; - margin-top: 10px; - box-sizing: border-box; - flex-wrap: wrap; - } - - .finishedProduct-basic { - background-color: #fff; - height: 155px; - display: flex; - flex-wrap: wrap; - padding: 10px 20px; - border: 1px solid #ddd; - box-sizing: border-box; - } - /*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/ - .completeproductstructure-checkout - .el-checkbox__input.is-disabled.is-checked - .el-checkbox__inner { - background-color: #006eff; - border-color: #006eff; - } - - .completeproductstructure-checkout - .el-checkbox__input.is-disabled.is-checked - + span.el-checkbox__label { - color: #006eff; - border-color: #006eff; - } - - .completeproductstructure-checkout - .el-checkbox__input.is-disabled - .el-checkbox__inner { - background-color: #ffffff; - cursor: pointer; - } - - .completeproductstructure-checkout - .el-checkbox__input.is-disabled - + span.el-checkbox__label { - color: #606266; - cursor: pointer; - } - - .completeproductstructure-checkout .el-checkbox__inner::after { - border: 1px solid #fff !important; - border-left: 0 !important; - border-top: 0 !important; - cursor: pointer !important; - } - </style> \ No newline at end of file + // 鍒犻櫎妫�楠屽�煎垪 + clickDeleteInspectionColumn() { + const _than = this + if (_than.empiricalValueAdd - 1 === 0) { + } else { + if (_than.empiricalValueAddMaxNumber != _than.empiricalValueAdd - 1) { + _than.empiricalValueAdd = _than.empiricalValueAdd - 1; + // _than.changeRowResult() + _than.inspectionItems.forEach(i => { + if(i.children){ + i.children.forEach(ele=>{ + ele.empiricalValueAddss.splice(_than.empiricalValueAdd, 1); + }) + } + }); + _than.saveTable(); + } + } + }, + // 娣诲姞妫�楠屽�煎垪 + clickAddInspectionColumn() { + this.empiricalValueAdd = this.empiricalValueAdd + 1; + } + }, +} +</script> + +<style scoped> +.finishedProduct-detail { + width: 100%; + height: 520px; + padding: 10px 20px; + border: 1px solid #ddd; + background-color: #fff; + margin-top: 10px; + box-sizing: border-box; +} + +.finishedProduct-result { + width: 100%; + height: 150px; + padding: 10px 20px; + display: flex; + border: 1px solid #ddd; + background-color: #fff; + margin-top: 10px; + box-sizing: border-box; + flex-wrap: wrap; +} + + +.finishedProduct-basic { + background-color: #fff; + height: 155px; + display: flex; + flex-wrap: wrap; + padding: 10px 20px; + border: 1px solid #ddd; + box-sizing: border-box; +} + +/*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/ +.completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #006eff; + border-color: #006eff; +} + +.completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked+span.el-checkbox__label { + color: #006eff; + border-color: #006eff; +} + +.completeproductstructure-checkout .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #ffffff; + cursor: pointer; +} + +.completeproductstructure-checkout .el-checkbox__input.is-disabled+span.el-checkbox__label { + color: #606266; + cursor: pointer; +} + +.completeproductstructure-checkout .el-checkbox__inner::after { + border: 1px solid #fff !important; + border-left: 0 !important; + border-top: 0 !important; + cursor: pointer !important; +} +</style> -- Gitblit v1.9.3