From ef4e46f182aee6253805e66286dee847c573cbde Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 22 五月 2024 17:18:34 +0800 Subject: [PATCH] 完成原材料、产品检验、过程检,包装检键盘切换输入框 --- src/views/quality/rawMaterial/rawMaterial-form.vue | 1186 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 847 insertions(+), 339 deletions(-) diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue index ec6ec28..a9ed951 100644 --- a/src/views/quality/rawMaterial/rawMaterial-form.vue +++ b/src/views/quality/rawMaterial/rawMaterial-form.vue @@ -3,11 +3,11 @@ <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 && dataForm.id!=null">鏌ョ湅-鍘熸潗鏂欐楠�</h2> + <h2 v-if="(resultVal!=null && resultVal!='') && dataForm.id!=null">鏌ョ湅-鍘熸潗鏂欐楠�</h2> <h2 v-else>缂栬緫-鍘熸潗鏂欐楠�</h2> </div> <div class="btn-group header-right"> - <el-button @click="save()" v-if="this.dataForm.id==null">淇濆瓨</el-button> + <el-button @click="save()" type="primary" v-if="dataForm.id==null">淇濆瓨</el-button> </div> </div> <div class="page-main"> @@ -21,41 +21,54 @@ label-width="110px"> <el-row> <el-col :span="6"> + <el-form-item label="鍘熸潗鏂欐楠岀紪鍙�" prop="rawInsNo"> + <el-input v-model="dataForm.rawInsNo" disabled> + </el-input> + </el-form-item> + </el-col> + <el-col :span="6"> <el-form-item label="闆朵欢鍙�" prop="code"> - <el-input v-model="dataForm.code" :disabled="resultVal!=null && dataForm.id!=null"> + <el-input v-model="dataForm.code" :disabled="dataForm&&dataForm.id!==null&&dataForm.id!==''"> <el-button slot="append" icon="el-icon-search" - :disabled="resultVal!=null && dataForm.id!=null" - @click="queryCode()"></el-button> + :disabled="dataForm&&dataForm.id!==null&&dataForm.id!==''" + @click="queryCode"></el-button> + <el-button + slot="append" + icon="el-icon-full-screen" + :disabled="dataForm&&dataForm.id!==null&&dataForm.id!==''" + @click="Turnonthecamera"></el-button> </el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="name" label="鍘熸潗鏂欏悕绉�"> - <el-input v-model="dataForm.name" disabled > - </el-input> + <el-tooltip class="item" effect="dark" :content="dataForm.name"> + <el-input v-model="dataForm.name" disabled ></el-input> + </el-tooltip> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="formTime" label="鏉ユ枡鏃ユ湡"> - <el-date-picker + <el-date-picker style="width:100%" v-model="dataForm.formTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" disabled> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="瑙勬牸鍨嬪彿" prop="specs"> - <el-input v-model="dataForm.specs" disabled></el-input> </el-form-item> </el-col> </el-row> <el-row> + <el-col :span="6"> + <el-form-item label="瑙勬牸鍨嬪彿" prop="specs"> + <el-tooltip class="item" effect="dark" :content="dataForm.specs"> + <el-input v-model="dataForm.specs" disabled></el-input> + </el-tooltip> + </el-form-item> + </el-col> <el-col :span="6"> <el-form-item prop="unit" label="鍗曚綅"> <el-input @@ -66,157 +79,276 @@ </el-col> <el-col :span="6"> <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplier"> + <el-tooltip class="item" effect="dark" :content="dataForm.supplier" > <el-input v-model="dataForm.supplier" disabled /> + </el-tooltip> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="鏁伴噺" prop="number"> - <el-input v-model="dataForm.number" :disabled="resultVal!=null" /> + <el-input v-model="dataForm.number" :disabled="dataForm&&dataForm.id!==null&&dataForm.id!==''" /> </el-form-item> </el-col> + </el-row> + <el-row> <el-col :span="6"> - <el-form-item prop="projectName" label="椤圭洰鍚嶇О"> + <el-form-item label="鎶ユ鏃ユ湡" prop="startTime"> + <el-date-picker + disabled + v-model="dataForm.startTime" + type="datetime" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="鎶ユ鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="6" v-if="dataForm.id!=null"> + <el-form-item label="鎶ユ浜�" prop="createUser" > + <el-input v-model="dataForm.createUser" disabled /> + </el-form-item> + </el-col> + <el-col :span="6" v-if="dataForm.id!=null"> + <el-form-item prop="projectName" label="椤圭洰鍚嶇О" > <el-tooltip :disabled="dataForm.projectName==null" :content="dataForm.projectName"> <el-input v-model="dataForm.projectName" disabled ></el-input> </el-tooltip> </el-form-item> </el-col> - </el-row> - <el-row> <el-col :span="6"> - <el-form-item label="鎶ユ鏃ユ湡" prop="createTime" v-if="dataForm.id!=null"> - <el-input v-model="dataForm.createTime" disabled /> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="鎶ユ浜�" prop="createUser" v-if="dataForm.id!=null"> - <el-input v-model="dataForm.createUser" disabled /> - </el-form-item> - </el-col> + <el-form-item label="澶囨敞" prop="remark"> + <el-input :disabled="dataForm&&dataForm.id!==null&&dataForm.id!==''" v-model="dataForm.remark" /> + </el-form-item> + </el-col> </el-row> </el-form> </div> - - - - <div class="rawMaterial-detail"> - <el-row style="width:100%;z-index: 10;height:50px;"> - <el-col :span="18">妫�楠岄」鐩�</el-col> - <el-col :span="6"> - <div style="width:100%;text-align: right;"> - <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine()">娣诲姞妫�楠岄」鐩�</el-button> - <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">娣诲姞妫�娴嬪�煎垪</el-button> - <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="delTeatValueColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> - </div> - </el-col> - </el-row> - <el-row style="width:100%;"> - <el-col :span="24"> - <el-table - :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" - :cell-style="{textAlign:'center'}" - ref="table" - :data="list" - border - style="width: 100%;" - height="400" - row-key="iid" - default-expand-all - :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> - <el-table-column type="index" label="搴忓彿" width="60"> - </el-table-column> - <el-table-column prop="father" label="妫�楠岄」鐩�" width="260"> - <template slot-scope="scope"> - <el-input v-if="scope.row.children" style="width:120px" :disabled="dataForm.id!=null" v-model="scope.row.father" placeholder="璇疯緭鍏ユ楠岄」鐩�"></el-input> - </template> - </el-table-column> - <el-table-column prop="name" label="椤圭洰" width="260"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-input class="inline-input" :disabled="dataForm.id!=null" v-model="scope.row.name" - placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input> - </div> - </template> - </el-table-column> - <el-table-column prop="unit" label="鍗曚綅" width="260"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-input :disabled="dataForm.id != null" v-model="scope.row.unit" placeholder="璇疯緭鍏ュ崟浣�"></el-input> - </div> - </template> - - </el-table-column> - <el-table-column prop="required" label="鏍囧噯鍊�" width="260"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-input :disabled="dataForm.id != null" v-model="scope.row.required" - placeholder="璇疯緭鍏ユ爣鍑嗗��"></el-input> + <div> + <el-tabs class="rawMaterial-detail" @tab-click="tabsClick"> + <el-tab-pane label="妫�楠岄」鐩�"> + <el-row style="width:100%;z-index: 10;height:50px;" v-if="resultVal==null"> + <el-col :span="12"></el-col> + <el-col :span="12" style="text-align: right;"> + <el-button v-if="dataForm.id&&resultVal==null" size="small" + type="primary" + @click="saveTable()">淇濆瓨</el-button> + <el-button v-if="dataForm.id==null" size="small" @click="clickAddLine()">娣诲姞妫�楠岄」鐩�</el-button> + <el-button class="pad-addcol-btn" v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">娣诲姞妫�娴嬪�煎垪</el-button> + <el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="delTeatValueColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> + </el-col> + </el-row> + <el-row style="width:100%;"> + <el-col :span="24"> + <el-table + :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" + :cell-style="{textAlign:'center'}" + ref="table" + :data="list" + border + style="width: 100%;" + height="400" + row-key="iid" + default-expand-all + :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 prop="father" label="妫�楠岄」鐩�" width="160"> + <template slot-scope="scope"> + <el-input v-if="scope.row.children" style="width:80%" :disabled="dataForm.id!=null&&(resultVal!=null && resultVal!='')" v-model="scope.row.father" placeholder="璇疯緭鍏ユ楠岄」鐩�" + :ref="'inspectProject'+scope.$index" + :id="'inspectProject'+scope.$index" + @keyup.native="moveFocus($event, scope.$index, 'inspectProject')"></el-input> + </template> + </el-table-column> + <el-table-column prop="name" label="椤圭洰" width="160"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <el-input class="inline-input" :disabled="dataForm.id!=null&&(resultVal!=null && resultVal!='')" v-model="scope.row.name" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + :ref="'project'+scope.$index" + :id="'project'+scope.$index" + @keyup.native="moveFocus($event, scope.$index, 'project')"></el-input> </div> - </template> - </el-table-column> - <el-table-column prop="testValue" label="妫�娴嬪��" min-width="260" v-for="(item,index) in empiricalValueAdd" :key="index"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" - placement="top-start"> - <el-col v-if="scope.row.itype === '1'"> - <el-input :disabled="scope.row.deviceId == '' || (dataForm.id!=null&&resultVal!=null)" + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅" width="160"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <el-input :disabled="dataForm.id!=null&&(resultVal!=null && resultVal!='')" v-model="scope.row.unit" placeholder="璇疯緭鍏ュ崟浣�" + :ref="'unit'+scope.$index" + :id="'unit'+scope.$index" + @keyup.native="moveFocus($event, scope.$index, 'unit')"></el-input> + </div> + </template> + + </el-table-column> + <el-table-column prop="required" label="鏍囧噯鍊�" width="160"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <el-input :disabled="dataForm.id!=null&&(resultVal!=null && resultVal!='')" v-model="scope.row.required" + placeholder="璇疯緭鍏ユ爣鍑嗗��" + :ref="'standard'+scope.$index" + :id="'standard'+scope.$index" + @keyup.native="moveFocus($event, scope.$index, 'standard')"></el-input> + </div> + </template> + </el-table-column> + <el-table-column prop="testValue" label="妫�娴嬪��" min-width="160" v-for="(item,index) in empiricalValueAdd" :key="index"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <!-- :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" --> + <!-- @input="$nextTick(()=>{checkTestValues(scope.row)})" --> + <!-- @blur.capture.native="changeState(scope.row)" --> + <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> + <el-autocomplete clearable + cache="false" + ref="testValueInput" + @blur="checkTestValues(scope.row,'blur',$event)" + @select="checkTestValues(scope.row,'select',$event)" + :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.testValueList[index]" - placeholder="璇疯緭鍏ユ娴嬪��"></el-input> - </el-col> - <el-col v-else> - <el-select style="width: 100%;" - :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" - v-model="scope.row.testValueList[index]" @change="aaa(scope.row)" - placeholder="璇烽�夋嫨"> - <el-option v-for="item in dataVal" :key="item.value" :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-col> - </el-tooltip> - </div> - </template> - </el-table-column> - <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="260"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-select :disabled="dataForm!=null && resultVal!=null" style="width:100%" - v-model="scope.row.deviceId" 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> - </div> - </template> - </el-table-column> - <el-table-column prop="note" label="妫�楠屾弿杩�" width="260" > - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-input :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input> - </div> - </template> - </el-table-column> - <el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="缁撹" min-width="150"> - <template slot-scope="scope"> - <span v-if="scope.row.testState == 0" style="color:#F56C6C">涓嶅悎鏍�</span> - <span v-else-if="scope.row.testState == 1" style="color:#67C23A">鍚堟牸</span> - <span v-else>鏆傛棤缁撹</span> - </template> - </el-table-column> - <el-table-column fixed="right" style="background-color: white;" v-if="dataForm.id == null" label="鎿嶄綔" width="150"> - <template slot-scope="scope"> - <div v-if="!scope.row.children"> - <el-button type="text" @click="addwaydata(scope)">鏂板</el-button> - <el-button type="text" @click="clickDeleteline(scope)">鍙栨秷</el-button> - </div> - </template> - </el-table-column> - </el-table> - </el-col> - </el-row> + :fetch-suggestions="querySearch" + placeholder="璇疯緭鍏ユ垨閫夋嫨妫�娴嬪��" + :id="`detectionValue${index}`+scope.$index" + @keyup.native="moveFocus($event, scope.$index, `detectionValue${index}`)"> + <template slot-scope="{ item }"> + <div>{{ item.value }}</div> + </template> + </el-autocomplete> + </el-tooltip> + </div> + </template> + </el-table-column> + <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="200"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <el-select ref="" :disabled="dataForm!=null && (resultVal!=null && resultVal!='')" style="width:60%" + v-model="scope.row.deviceId" 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" + :disabled="dataForm!=null && (resultVal!=null && resultVal!='')" + @click="codeDevice(scope.row,scope.$index)"></el-button> + </div> + </template> + </el-table-column> + <el-table-column prop="note" label="妫�楠屾弿杩�" width="160" > + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <el-input @blur="checkTestValues(scope.row,'blur',$event)" :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="妫�楠屾弿杩�" + :ref="`remark`+scope.$index" + :id="`remark`+scope.$index" + @keyup.native="moveFocus($event, scope.$index, `remark`)"></el-input> + </div> + </template> + </el-table-column> + <el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="缁撹" min-width="150"> + <template slot-scope="scope"> + <div v-if="!scope.row.children"> + <span v-if="scope.row.testState == 0" style="color:#F56C6C">涓嶅悎鏍�</span> + <span v-else-if="scope.row.testState == 1" style="color:#67C23A">鍚堟牸</span> + <span v-else>鏆傛棤缁撹</span> + </div> + </template> + </el-table-column> + <el-table-column fixed="right" style="background-color: white;" v-if="dataForm.id == null" label="鎿嶄綔" width="150"> + <template slot-scope="scope"> + <div v-if="scope.row.fId!=null"> + <el-button type="text" @click="addChildren(scope.row)">娣诲姞椤圭洰</el-button> + <el-button type="text" @click="delChildren(scope.row,scope.$index,true)">鍒犻櫎琛�</el-button> + </div> + <el-button v-else type="text" @click="delChildren(scope.row,scope.$index,false)">鍙栨秷</el-button> + </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="dataForm.rawInsNo==null || (resultVal!=null && resultVal!='')" + 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="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-tabs> </div> - - <div class="rawMaterial-result"> <el-row> <el-col :span="24">妫�楠岀粨璁�</el-col> @@ -224,20 +356,20 @@ <el-row style="width:100%"> <el-col :span="24"> <el-table border height="90" :data="conclusionTable" ref="conclusion" v-model="conclusion" - :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" + :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" :cell-style="{textAlign:'center'}"> - <el-table-column prop="code" label="鐗╂枡缂栧彿"></el-table-column> - <el-table-column prop="name" label="鐗╂枡鍚嶇О"></el-table-column> + <el-table-column prop="code" width="150" show-overflow-tooltip label="鐗╂枡缂栧彿"></el-table-column> + <el-table-column prop="name" width="150" show-overflow-tooltip label="鐗╂枡鍚嶇О"></el-table-column> <el-table-column prop="userName" label="妫�楠屽憳"></el-table-column> <el-table-column prop="judgeState" label="妫�楠岀粨璁�"> <template slot-scope="scope"> - <el-tag type="success" v-if="scope.row.testState == '1'">鍚堟牸</el-tag> - <el-tag type="danger" v-else-if="scope.row.testState == '0'">涓嶅悎鏍�</el-tag> + <el-tag type="success" v-if="scope.row.testState == 1">鍚堟牸</el-tag> + <el-tag type="danger" v-else-if="scope.row.testState == 0">涓嶅悎鏍�</el-tag> </template> </el-table-column> <el-table-column label="鎿嶄綔"> <template> - <el-button type="text" :disabled="resultVal!=null && dataForm.id!=null" @click="showDialog()" size="small">涓婃姤</el-button> + <el-button type="text" :disabled="(resultVal!=null && resultVal!='') && dataForm.id!=null" @click="showDialog()" size="small">涓婃姤</el-button> </template> </el-table-column> </el-table> @@ -261,34 +393,73 @@ <el-button type="primary" @click="submitSave()">纭� 瀹�</el-button> </span> </el-dialog> + <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> </div> </template> <script> -import { +import { selectDevice, addRawInspects, getObj, updateRawInsProduct, updateRawInspectsById, - updateDeviceById, } from '@/api/quality/rawMaterial' + updateRawInsProduct2, + updateDeviceById, chooseIFS} from '@/api/quality/rawMaterial' + import { + getProcessConfigFiles, + deleteProcessConfigFile, + downloadProcessConfigFile + } from '@/api/quality/attachment' import rawMaterialPartDialog from '@/views/common/rawMaterial-part' -export default { - // props:['currentRow'], + import { getStore } from '@/util/store' + import qrCodeApp from '@/views/common/qrCodeApp' + export default { + components:{ + rawMaterialPartDialog, + qrCodeApp, + }, computed:{}, - components:{ - rawMaterialPartDialog - }, data(){ return{ - dataVal: [{ - label: '鏄�', - value: '鏄�' - }, { - label: '鍚�', - value: '鍚�' - }], - // componentData:{}, + progrecessFileLoading: false, + processConfigFileTableData: [], + fileList: [], + headers: { + Authorization: 'Bearer ' + getStore({ name: 'access_token' }) + }, + paramData: { + no: '', + lineNumber: '', + type: 0 + }, + row: null, + proIndex: 0, + deviceCode: false, + qrcode: false, userdata:[], currentRow:[], userlist:[], @@ -310,11 +481,12 @@ formTime: '', message: '', name: '', - code: '88.118.1/A0498220', + code: '', specs: '', unit: '', number: '', supplier: '', + remark:'', rawInsProducts: [{ deviceId: 0, father:'', @@ -334,10 +506,13 @@ userName: '', testState: '' }], - dataRule: {}, + dataRule: { + code:[{ required: true, message: '璇锋壂鎻忛�夋嫨闆朵欢', trigger: 'blur' }], + // startTime: [{ required: true, message: '璇烽�夋嫨鎶ユ鏃ユ湡', trigger: 'blur' }] + }, deviceList: [], - restaurants:[], - whetherNot:'', + keyfield:['inspectProject','project','unit','standard','remark'], + keyfield0:['detectionValue0'] } }, beforeUpdate(){ @@ -345,19 +520,15 @@ this.$refs.table.doLayout(); }) }, - mounted(){ + created(){ this.dataForm.id = this.$route.query.id - this.resultVal = this.$route.query.resultVal + this.resultVal = this.$route.params.resultVal if(this.resultVal == null){ let val = sessionStorage.getItem("raw-resultVal-"+this.dataForm.id) val == undefined ? null : this.resultVal=val } - this.init() + this.init(this.dataForm.id) this.getDeviceList() - this.restaurants = this.loadAll(); - - console.log(this.dataForm); - }, watch:{ dialogVisible(newVal){ @@ -365,42 +536,132 @@ this.unqualifiedNum = null } }, - + 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); + } + } + } }, methods:{ - querySearch(queryString, cb) { - var restaurants = this.restaurants; - var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; - cb(results); + querySearch(queryString, cb){ + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb([{value:'鏄�'},{value:'鍚�'}]); }, - // createFilter(queryString) { - // return (restaurant) => { - // return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); - // }; - // }, - // loadAll(){ - // return [ - // {"value":"鏄�"}, - // {"value":"鍚�"} - // ];}, - // handleSelect(item) { - // console.log(item); - // }, - changeName(index,row){ - this.projectList.forEach(item=>{ - if(row.name == item.name){ - this.list[index].unit = item.unit - this.list[index].required = item.required + tabsClick(tab,even){ + if(tab.index == 1){ + if(this.dataForm.rawInsNo==null){ + this.$message.error("璇峰厛淇濆瓨鍘熸潗鏂欐楠屼俊鎭�") + return } + this.getConfigFiles(); + } + }, + getConfigFiles() { + const param = { + no: this.dataForm.rawInsNo, + lineNumber: this.dataForm.id, + type: 0 + } + getProcessConfigFiles(param).then((res) => { + this.processConfigFileTableData = res.data.data }) + }, + downloadProcessConfigFile(row) { + downloadProcessConfigFile({ + bucket: row.bucketName, + fileName: row.fileName, + originalFileName: row.originalFileName + }) + }, + delProcessConfigFile(row) { + this.$confirm('鏄惁鍒犻櫎璇ラ檮浠�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + closeOnClickModal: false + }).then(function() { + return deleteProcessConfigFile(row.id) + }).then((data) => { + this.getConfigFiles() + }) + }, + submitUpload() { + this.paramData.no = this.dataForm.rawInsNo + this.paramData.lineNumber = this.dataForm.id + this.progrecessFileLoading = true + }, + uploadSuccess() { + this.progrecessFileLoading = false + this.getConfigFiles() + }, + 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] + console.log(filterData); + this.row.deviceId=Number(id) + this.updateDevice(this.row,this.proIndex) + }else{ + this.$message({ + message: '浜岀淮鐮佹湭璇嗗埆鍑鸿閲忓櫒鍏蜂俊鎭紒', + type: 'warning' + }); + } + }, + codeDevice(row,index){ + this.row=row + console.log("row",row); + this.deviceCode =true + this.$refs.codeDeviceCompont.openCamera() + this.proIndex=index + }, + getResultInfo(data){ + if(!data.includes("part_no")){ + this.$message({ + message: '浜岀淮鐮佹湭璇嗗埆鍑洪浂浠朵俊鎭紒', + type: 'warning' + }); + } + let obj=JSON.parse(data) + let info={"code":obj["part_no"]} + if(info.code!=undefined&&info.code!=''){ + this.paramObj = info + this.showPart = true + }else{ + this.$message({ + message: '浜岀淮鐮佹湭璇嗗埆鍑洪浂浠朵俊鎭紒', + type: 'warning' + }); + } + }, + cancelCodeDialog(){ + this.qrcode = false + }, + // 鎵撳紑鐩告満 + Turnonthecamera() { + this.qrcode = true + this.$refs.codeCompont.openCamera() }, // 纭鍥炶皟 selectPart(param, nodePart, index) { - console.log(param) if (typeof param !== 'undefined') { + this.dataForm.rawInsNo = param.rawInsNo this.dataForm.code = param.code this.dataForm.name = param.name this.dataForm.formTime = param.formTime + this.dataForm.startTime = param.formTime this.dataForm.unit = param.unit this.dataForm.specs = param.specs this.dataForm.supplier = param.supplier @@ -408,13 +669,8 @@ this.dataForm.message = param.message this.dataForm.projectName = param.projectName this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts - console.log(param.rawInsProducts); - param.rawInsProducts.forEach(item =>{ - item.iid = Math.random() - console.log(item); - }) - param.rawInsProducts.forEach(o=>{ - this.clickAddLine(o) + param.rawInsProducts.forEach((o,index)=>{ + this.clickAddLine(o,index) }) } @@ -425,40 +681,42 @@ } this.showPart = true }, - updateDevice(row,index){ - console.log(row); - return - if(this.dataForm.id != null){ - updateDeviceById({deviceId:row.deviceId,rpId:row.rpId}).then(res=>{ - this.list[index].testValue = '' - this.list[index].testState = null - this.list[index].testValueList = [] - }).catch(error=>{ - console.log(error) + updateDevice(row, index) { + updateDeviceById({ deviceId: row.deviceId, rpId: row.rpId }).then(res => { + row.testValue = null + row.testState = null + row.testValueList = [] + row.note = null + }).catch(error => { + console.log(error) }) - } }, checkTestState(){ let resultVal = '1' this.list.forEach(item=>{ if(item.children){ - if(obj.testState == 0){ - resultVal = '0' - } + item.children.forEach(ele=>{ + if(ele.testState == 0){ + resultVal = '0' + } + }) } }) this.resultVal = resultVal this.conclusionTable[0].testState = resultVal sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,resultVal) }, - aaa(row){ - console.log(row); - }, showDialog(){ - let pro = this.list.filter(item => { - return item.testState == 0; + let size = 0 //涓嶅悎鏍奸」鐩暟閲� + this.list.forEach(item=>{ + if(item.children){ + let num = item.children.filter(e=>{ + return e.testState == 0 + }).length + size+=num + } }) - if (pro.length > 0) { + if (size > 0) { this.dialogVisible = true }else{ this.submitSave() @@ -469,103 +727,132 @@ let data = { id: this.dataForm.id, number: this.unqualifiedNum, - // toLocationNo: this.fiedNum + result: this.conclusionTable[0].testState } updateRawInspectsById(data).then(res => { - if(res.data.code == 0){ + if(res.data.code == 0 && (res.data.data=='1'|| res.data.data=='0')){ sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data) this.$message.success("涓婃姤鎴愬姛"); - this.dialogVisible = false - this.checkTestState() + }else{ + this.$message.error("涓婃姤澶辫触锛�",res.data.data); } + this.dialogVisible = false + this.checkTestState() }); }, addTeatValueColumn(){ - this.empiricalValueAdd = this.empiricalValueAdd + 1; + this.$nextTick(()=>{ + this.empiricalValueAdd = this.empiricalValueAdd + 1; + }) }, // 娣诲姞琛� - clickAddLine(row) { + clickAddLine(row,index) { + let ele = { + fId: Math.random(), + father: null, + iid: Math.random(), + children:[] + } if(row){ - let userNameList = [] + ele.isIndex = true; + ele.parentIndex = index + 1; + ele.father = row.father?row.father:null row.children.forEach(item => { - console.log("item--",item); - item.iid = Math.random() + ele.children.push({ + deviceId: null, + deviceName: null, + iid: Math.random(), + required: item.required?item.required:null, + rpId: null, + name: item.name?item.name:null, + unit: item.unit?item.unit:null, + userName: null, + testValue: null, + testValueList: [], + note: null, + testState: null + }) let arr = [] - item.testValue = '' - item.testValueList= [] - if (item.userName) { - userNameList.push(item.userName) - } - if (item.inspectionValue) { - arr = item.inspectionValue.split(",") - } item.empiricalValueAddss = arr if (arr.length > this.empiricalValueAdd) { this.empiricalValueAdd = arr.length } - console.log("aaaa----",row); - this.list.push(row) - }) + }) + this.list.push(ele) }else{ - let ele = { - father: '', - iid: Math.random(), - children:[{ + ele.isIndex = true; + ele.parentIndex = this.list.length + 1; + ele.children.push({ deviceId: null, deviceName: null, iid: Math.random(), required: null, rpId: null, name: null, - unit: null, + unit: '', userName: null, - testValue: null, + testValue: '', testValueList: [], note: null, - testState: null - }] - } + testState: '' + }) this.list.push(ele) } }, + changeRowResult(){ + if(this.list){ + this.list.forEach(e=>{ + if(e.children){ + e.children.map(i=>{ + if(i.testValueList.length>1){ + i.testValueList = i.testValueList.splice(i.testValueList.length-1,1) + return i + // let arr = i.testValue.split(",") + // arr.splice((arr.length-1),1) + // let obj = { + // deviceId: i.deviceId, + // rpId: i.rpId, + // testValue: arr.join(","), + // note: i.note + // } + // updateRawInsProduct(obj).then(res=>{ + // if(res.data.code === 0){ + // this.init(this.dataForm.id) + // } + // }) + } + }) + } + }) + this.saveTable() + } + }, delTeatValueColumn(){ - if (this.empiricalValueAdd - 1 === 0) { } else { + if (this.empiricalValueAdd - 1 > 0) { if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { this.empiricalValueAdd = this.empiricalValueAdd - 1; + // this.changeRowResult() this.list.forEach(i => { - i.testValueList.splice(this.empiricalValueAdd, 1); + if(i.children){ + i.children.forEach(ele=>{ + ele.testValueList.splice(this.empiricalValueAdd, 1); + }) + } }); + this.saveTable() } } }, - updateTestValue(row,index){ - if(row.rpId == null || row.testValueList[index]==null){ - return - } - let obj = { - deviceId: row.deviceId, - rpId: row.rpId, - testValue: row.testValueList.join(",") - } - updateRawInsProduct(obj).then(res=>{ - if(res.data.code === 0){ - this.$message.success("鏇存柊鎴愬姛") - this.init() - }else{ - this.$message.success("鏇存柊澶辫触") - } - }).catch(error=>{ - this.$message.error(error) - }) - }, - init(){ - if(this.dataForm.id){ - getObj(this.dataForm.id).then(res=>{ - console.log(res); + init(id){ + if(id){ + getObj(id).then(res=>{ let data = res.data.data + this.dataForm.rawInsNo = data.rawInsNo this.dataForm.name = data.name this.dataForm.formTime = data.formTime + this.dataForm.startTime = data.startTime + this.dataForm.remark = data.remark this.dataForm.code = data.code this.dataForm.specs = data.specs this.dataForm.unit = data.runit @@ -576,20 +863,28 @@ this.dataForm.createUser = data.createUser let userNameList = [] this.list = [] - data.children.forEach(item => { + data.children.forEach((item,index) => { if (item.children) { let ele = { iid: null, father: null, children: [] } + ele.isIndex = true; + ele.parentIndex = index + 1; ele.iid = Math.random() ele.father = item.rpFather - item.children.forEach(obj => { - console.log(obj); + if (item.children != undefined) { + item.children.forEach((obj) => { let arr= [] + if(obj.userName){ + userNameList.push(obj.userName) + } if(obj.testValue){ arr = obj.testValue.split(",") + } + if (arr.length > this.empiricalValueAdd) { + this.empiricalValueAdd = arr.length } let o = { deviceId: obj.deviceId, @@ -608,13 +903,29 @@ ele.children.push(o) }) this.list.push(ele) + }} + }) + let rVal = '' + let passNum = 0 + let unPassNum = 0 + this.list.forEach(item=>{ + if(item.children){ + item.children.forEach(ele=>{ + if(ele.testState == 0){ + unPassNum += 1 + } + if(ele.testState == 1){ + passNum+=1 + } + }) } - }) + }) + rVal = (passNum+unPassNum)>0 ? unPassNum>0 ? '0' :'1' : '' this.conclusionTable = [{ code: data.code, name: data.name, userName: Array.from(new Set(userNameList)).join(','), - testState: this.resultVal==null?null:this.resultVal + testState: this.resultVal==null?rVal:this.resultVal }] }).catch(error=>{ this.$message.error("鑾峰彇澶辫触",error) @@ -623,59 +934,130 @@ this.conclusionTable = [] } }, - // 鍒犻櫎琛� - clickDeleteline(scope) { - console.log(scope); - let index = this.list.findIndex(el =>{ - return el.children.find(ele => ele.iid == scope.row.iid) + selectBlur(e){ + console.log(e,e.target.tabIndex); + console.log(e.target.value); + }, + checkTestValues(row,currentOption,event){ + if(row){ + let isTrue = true + if(currentOption==='blur'){ + let targetVal = event.target.value + if( (targetVal && ['鏄�','鍚�'].includes(targetVal)) || !targetVal){ + isTrue = false + }else{ + for(var i=0;i<row.testValueList.length;i++){ + let val = row.testValueList[i] + if(val != '' && val != null){ + if(!['鏄�','鍚�'].includes(val)){ + let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/ + if(!reg.test(val)){ + row.testValueList[i] = '' + event.target.value = '' + this.$message.error("璇疯緭鍏�6浣嶆暟瀛楁垨閫夋嫨鏄惁") + isTrue = false + } + } + } + } + } + } + if(!isTrue){ + return + } + // this.changeState(row) + } + }, + saveTable() { + let rawInsProducts = []; + this.$nextTick(()=>{ + this.list.forEach(item=>{ + if(item.children){ + item.children.forEach(ele=>{ + let obj = JSON.parse(JSON.stringify(ele)) + obj.testValue = obj.testValueList.join(",") + obj.id = obj.rpId + delete obj.testValueList; + obj.name = ele.name; + obj.father = item.father; + obj.unit = ele.unit; + rawInsProducts.push(obj) + }) + } + }) + if(rawInsProducts.length>0){ + updateRawInsProduct2(rawInsProducts).then(res => { + if (res.data.code == 0) { + this.$message.success("鏇存柊鎴愬姛") + } else { + this.$message.error("鏇存柊澶辫触") + } + this.init(this.dataForm.id) + }) + } }) - - let childrenIndex = this.list[index].children.findIndex(el => { - return el.iid == scope.row.iid - }) - // console.log(this.list); - console.log(index); - console.log(childrenIndex); - - this.list[index].children.splice(childrenIndex , 1); - if(childrenIndex == 0){ - this.list.splice(scope.row,1) + }, + // 鍒犻櫎瀛愰」鐩� + delChildren(row,index,isParent) { + if(isParent){ + let parentIndex = this.list.findIndex(el =>{ + return el.iid == row.iid + }) + this.list.splice(parentIndex,1) + }else{ + let i = this.list.findIndex(el =>{ + return el.children.find(ele => ele.iid == row.iid) + }) + let childrenIndex = this.list[i].children.findIndex(el =>{ + return el.iid == row.iid + }) + if(this.list[i].children.length<2){ + this.list.splice(i,1) + }else{ + this.list[i].children.splice(childrenIndex,1) + } } }, - addwaydata(row){ - console.log(row.row); - let index = this.list.findIndex(el =>{ - return el.children.find(ele => ele.iid == row.row.iid) - }) - console.log(index); + //娣诲姞瀛愰」鐩� + addChildren(row){ let obj = { - iid:Math.random(), - name:'', - required:'', - unit:'' + deviceId: null, + deviceName: null, + iid: Math.random(), + required: null, + rpId: null, + name: null, + unit: '', + userName: null, + testValue: null, + testValueList: [], + note: null, + testState: null } - this.list[index].children.push(obj) + row.children.push(obj) }, save(){ - console.log(this.dataForm); - let data = this.dataForm - console.log(data); - console.log(this.list); - data.rawInsProducts = this.list - // console.log(data.rawInsProducts); - // data.rawInsProducts.forEach(item=>{ - // console.log(item); - // let val = item.testValueList.join(",") - // item.testValue = val - // console.log(item.testValue); - // }) - // console.log(data); - console.log('=====>'); - addRawInspects(data).then(res=>{ - // this.$message.success("淇濆瓨鎴愬姛") - this.$router.go(-1) - }).catch(error=>{ - // this.$message.error(error||'error') + this.$refs.dataForm.validate(valid=>{ + if(valid){ + const _than = this + let data = this.dataForm + this.list.forEach(item=>{ + item.children.forEach(c=>{ + c.testValue=c.testValueList.join(",") + c.required = c.required.replace(',','锛�').replace('(','锛�').replace(')','锛�') + }) + }) + data.rawInsProducts = this.list + addRawInspects(data).then(res=>{ + this.$message.success("淇濆瓨鎴愬姛") + this.$router.go(-1) + }).catch(error=>{ + this.$message.error(error) + }) + _than.$nextTick(()=>{ + _than.init(Number(res.data.msg)) + }) + } }) }, getDeviceList(){ @@ -683,21 +1065,135 @@ this.deviceList = res.data.data }) }, - }, + moveFocus(event, index, key) { + console.log(key, index,key) + let keyfield = this.insertArrayAt(this.keyfield,4,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.list.forEach(item => { + arr.push(item) + item.children.forEach(child => { + arr.push(child) + }) + }) + return arr.length + } + } } </script> <style> .rawMaterial-detail { width: 100%; - height: 470px; + height: 530px; 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; */ } .rawMaterial-result { @@ -714,7 +1210,7 @@ .rawMaterial-basic { background-color: #fff; - height: 155px; + height: 170px; display: flex; flex-wrap: wrap; padding: 10px 20px; @@ -887,4 +1383,16 @@ border: 1px solid #e4e7ed; border-bottom: none; } +.dropdown{ + position: relative; + right: 30px; + top: 5px; + color: #C0C4CC; + font-size: 14px; +} +@media (max-width: 767px) { + .pad-addcol-btn{ + font-size:12px; + } +} </style> -- Gitblit v1.9.3