From 8cda8919c95177c0789a8193799a980c1667a548 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期二, 18 二月 2025 13:31:03 +0800 Subject: [PATCH] 样品管理页面刷新 --- src/components/view/b1-inspect-order-plan.vue | 271 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 196 insertions(+), 75 deletions(-) diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index b10b282..154f5a7 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/src/components/view/b1-inspect-order-plan.vue @@ -144,6 +144,13 @@ </el-select> </div> </div> + <div class="search_thing"> + <div class="search_label">鏍峰搧缂栧彿锛�</div> + <div class="search_input"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.sampleCOde" @keyup.enter.native="refreshTable()"></el-input> + </div> + </div> <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="refresh()">閲� 缃�</el-button> <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> @@ -166,8 +173,8 @@ </el-col> <el-col :span="6"> <div class="center-title"> - <el-button size="small" type="primary" @click="qrCodeVisible=true">鎵爜鎶ユ</el-button> - <el-button size="small" type="primary" @click="exportVisible=true" style="margin-right: 16px;">鍑哄簱</el-button> + <el-button size="small" type="primary" @click="qrCodeVisible=true" v-if="selectWarehouse">鎵爜鎶ユ</el-button> + <el-button size="small" type="primary" @click="exportVisible=true" style="margin-right: 16px;" v-if="selectWarehouse">鍑哄簱</el-button> <span>鎬昏浠诲姟鏁伴噺:</span> <span>{{total}}</span> </div> @@ -203,12 +210,17 @@ width="100px" ></el-table-column> <el-table-column + prop="sampleCode" + label="鏍峰搧缂栧彿" + width="170px" + ></el-table-column> + <el-table-column prop="type" label="绱ф�ョ▼搴�" width="100px" > <template slot-scope="scope"> - <el-tag :type="typeList.find(m=>m.value==scope.row.type).type" size="small">{{ typeList.find(m=>m.value==scope.row.type).label }}</el-tag> + <el-tag :type="typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).type:''" size="small">{{ typeList.find(m=>m.value==scope.row.type)?typeList.find(m=>m.value==scope.row.type).label:'' }}</el-tag> </template> </el-table-column> <el-table-column @@ -257,15 +269,16 @@ <el-table-column fixed="right" align="center" label="鎿嶄綔" - width="320px" + width="340px" > <template slot-scope="scope"> <el-button @click="handleDataLook(scope.row)" type="text" size="small">鏁版嵁鏌ョ湅</el-button> <el-button @click="handleInspection(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="inspection">妫�楠�</el-button> <el-button @click="handleConnect(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 5 || scope.row.insState == 3||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="connect">浜ゆ帴</el-button> + <el-button @click="cancelSubmitPlan(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.userName&&!scope.row.userName.includes(userName))" v-if="inspection">鎾ら攢</el-button> <el-button @click="handleReview(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.checkName&&!scope.row.checkName.includes(userName))" v-if="review">澶嶆牳</el-button> <el-button @click="claimFun(scope.row)" type="text" size="small" :disabled="scope.row.userName != null || scope.row.checkName!=null" v-if="claim">璁ら</el-button> - <el-button @click="lookHistory0(scope.row)" type="text" size="small" :disabled="!scope.row.num1 || scope.row.num1<1">鏌ョ湅璁板綍</el-button> + <el-button @click="lookHistory0(scope.row)" type="text" size="small">鏌ョ湅璁板綍</el-button> </template> </el-table-column> </el-table> @@ -320,7 +333,7 @@ <div style="width: 100%;height: 100%;" v-if="activeFace >0"> <Add :active="activeFace" :currentId="currentId" :examine="examine"/> </div> - <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state" :orderStateId="orderStateId" :version="version" :isLook="isLook" :num1="num1"/> + <Inspection v-if="state>0" @goback="goback" :orderId="orderId" :inspectorList="inspectorList" :sonLaboratory="componentData.entity.sonLaboratory" :state="state" :orderStateId="orderStateId" :version="version" :isLook="isLook" :num1="num1" :orderId0="orderId0" :userInfo="userInfo" ref="Inspection" /> <el-dialog title="鏁版嵁鏌ョ湅" :visible.sync="dataDialogVisible" width="80%"> <div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible"> <ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'" :url="$api.insOrder.selectSampleAndProductByOrderId" @@ -335,45 +348,55 @@ <el-table-column prop="submitTime" label="鎻愪氦鏃ユ湡" - width="150"> + min-width="150"> </el-table-column> <el-table-column prop="submitUserName" label="鎻愪氦浜�" - width="90"> + min-width="90"> </el-table-column> <el-table-column prop="term" label="瀹為獙闃舵" - width="120"> + min-width="120"> </el-table-column> <el-table-column prop="note" label="瀹為獙鎿嶄綔" - width="120"> + min-width="120"> </el-table-column> <el-table-column prop="tell" label="鍐嶆妫�楠屽師鍥�" - width="120"> + min-width="120"> </el-table-column> <el-table-column fixed="right" label="鎿嶄綔" - width="100"> + min-width="100"> <template slot-scope="scope"> <el-button @click="lookHistory(scope.row)" type="text" size="small">鏌ョ湅</el-button> </template> </el-table-column> </el-table> </el-dialog> - <input type="text" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;" autocomplete="off"></input> - <el-dialog title="鎵爜妫�楠�" :visible.sync="qrCodeVisible" width="350px"> + <el-dialog title="鎵爜妫�楠�" :visible.sync="qrCodeVisible" width="400px"> <el-row> <el-col class="search_thing" :span="24"> <div class="search_label" style="width: 90px"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div> <div class="search_input"> - <el-input v-model="sampleCode" size="small"></el-input> + <el-input v-model="sampleCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + <el-tooltip :content="sampleCodeBtnDisabled?'鎵嬪姩杈撳叆':'鎵爜鏋緭鍏�'" placement="top" slot="append"> + <el-button type="primary" icon="el-icon-edit" @click="sampleCodeBtnDisabled=!sampleCodeBtnDisabled"></el-button> + </el-tooltip> + </el-input> + </div> + </el-col> + <el-col class="search_thing" :span="24"> + <div class="search_label" style="width: 90px"><span class="required-span">* </span>璁㈠崟缂栧彿锛�</div> + <div class="search_input"> + <el-input v-model="entrustCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + </el-input> </div> </el-col> </el-row> @@ -396,12 +419,23 @@ <el-button type="primary" @click="confirmStorage" :loading="upLoadStorage">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="鍑哄簱" :visible.sync="exportVisible" width="350px"> + <el-dialog title="鍑哄簱" :visible.sync="exportVisible" width="400px"> <el-row> <el-col class="search_thing" :span="24"> <div class="search_label" style="width: 90px"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div> <div class="search_input"> - <el-input v-model="sampleCode" size="small"></el-input> + <el-input v-model="sampleCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + <el-tooltip :content="sampleCodeBtnDisabled?'鎵嬪姩杈撳叆':'鎵爜鏋緭鍏�'" placement="top" slot="append"> + <el-button type="primary" icon="el-icon-edit" @click="sampleCodeBtnDisabled=!sampleCodeBtnDisabled"></el-button> + </el-tooltip> + </el-input> + </div> + </el-col> + <el-col class="search_thing" :span="24"> + <div class="search_label" style="width: 90px"><span class="required-span">* </span>濮旀墭缂栧彿锛�</div> + <div class="search_input"> + <el-input v-model="entrustCode" size="small" clearable :disabled="sampleCodeBtnDisabled"> + </el-input> </div> </el-col> </el-row> @@ -410,6 +444,7 @@ <el-button type="primary" @click="confirmExport" :loading="upLoadExport">纭� 瀹�</el-button> </span> </el-dialog> + <input id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input> </div> </template> @@ -503,7 +538,8 @@ entity: { sonLaboratory: null, insState: null, - userId: null + userId: null, + sampleCode:null, }, sortable:true, isIndex: true, @@ -610,7 +646,8 @@ activeFace: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0 currentId: null, entityCopy: {}, - orderId: 0, + orderId: null, + orderId0:null, personList:[], connectVisible:false, connect:{ @@ -654,20 +691,74 @@ scanInsOrderState:false, qrCodeVisible: false, sampleCode: '', + entrustCode:'', storageList:[], expandedKeys: [], selectTree: [], upLoadStorage: false, exportVisible: false, upLoadExport: false, + selectWarehouse:false, + userInfo:{ + name:[], + ids:[] + }, + sampleCodeBtnDisabled:true, } }, + watch:{ + qrCodeVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + this.selectList() + this.sampleCode = null + this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCodeBtnDisabled=true + } + }, + exportVisible(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + this.sampleCode = null + this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + // this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + this.sampleCodeBtnDisabled=true + } + }, + sampleCodeBtnDisabled(val){ + if(!val){ + this.startTime&&clearInterval(this.startTime) + }else if(this.exportVisible||this.qrCodeVisible){ + // this.sampleCode = null + // this.entrustCode = null + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + } + } + }, created() { this.getLaboratoryDicts() this.getTypeDicts() this.getInsStateDicts() this.getAuthorizedPerson() - this.selectList() this.currentTime = getYearAndMonthAndDays() }, mounted() { @@ -677,36 +768,6 @@ this.initializeSortable(); } }, - watch:{ - qrCodeVisible(newVal){ - if(newVal){ - // this.$message.success('鎵爜锛氭墦寮�') - let input = document.getElementById('ScanCodeInfo'); - input.focus(); - this.startTime = setInterval(()=>{ - input.focus() - },1000) - }else{ - // this.$message.warning('鎵爜锛氬叧闂�') - clearInterval(this.startTime) - this.sampleCode = '' - } - }, - exportVisible(newVal){ - if(newVal){ - // this.$message.success('鎵爜锛氭墦寮�') - let input = document.getElementById('ScanCodeInfo'); - input.focus(); - this.startTime = setInterval(()=>{ - input.focus() - },1000) - }else{ - // this.$message.warning('鎵爜锛氬叧闂�') - clearInterval(this.startTime) - this.sampleCode = '' - } - }, - }, methods: { selectList () { this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => { @@ -714,20 +775,37 @@ this.storageList = this.HaveJson(res.data).map(item=>{ item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{ let warehouseShelfList = []; - for (let i=1;i<m.row+1;i++){ - let warehouseShelfList0 = [] - for (let j=1;j<m.col+1;j++){ + let warehouseShelfList0 = [] + let warehouseCellList = m.warehouseCellList?m.warehouseCellList:[] + warehouseCellList.forEach(a=>{ + if(warehouseShelfList.find(n=>n.id==a.row)){ warehouseShelfList0.push({ - name:j+' 鍒�', - id:j, + name:a.col+'鍒�', + id:a.col + }) + }else if(warehouseShelfList.length==0){ + warehouseShelfList.push({ + name:a.row+'灞�', + id:a.row + }) + warehouseShelfList0.push({ + name:a.col+'鍒�', + id:a.col + }) + }else if(!warehouseShelfList.find(n=>n.id==a.row)){ + warehouseShelfList[warehouseShelfList.length-1].warehouseShelfList = JSON.parse(JSON.stringify(warehouseShelfList0)) + warehouseShelfList0 = [] + warehouseShelfList.push({ + name:a.row+'灞�', + id:a.row + }) + warehouseShelfList0.push({ + name:a.col+'鍒�', + id:a.col }) } - warehouseShelfList.push({ - name:i+' 灞�', - id:i, - warehouseShelfList:warehouseShelfList0 - }) - } + }) + warehouseShelfList[warehouseShelfList.length-1].warehouseShelfList = JSON.parse(JSON.stringify(warehouseShelfList0)) m.warehouseShelfList = warehouseShelfList; return m; }) @@ -755,6 +833,10 @@ this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') return } + if (!this.entrustCode) { + this.$message.error('璇峰~鍐欒鍗曠紪鍙�') + return + } if (this.selectTree.length < 4) { this.$message.error('璇烽�夋嫨鏍峰搧鍏ュ簱浣嶇疆') return @@ -763,11 +845,13 @@ this.$axios.post(this.$api.insOrderPlan.scanInsOrderState, { trees: this.selectTree.join('-'), sampleCode:this.sampleCode, + entrustCode:this.entrustCode, sonLaboratory: this.componentData.entity.sonLaboratory }).then(res => { this.upLoadStorage = false; this.qrCodeVisible = false this.sampleCode = ''; + this.entrustCode = ''; this.selectTree = [] if (res.code == 201) { this.$message.error('娣诲姞澶辫触') @@ -783,14 +867,20 @@ this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') return } + if (!this.entrustCode) { + this.$message.error('璇峰~鍐欒鍗曠紪鍙�') + return + } this.upLoadExport = true; this.$axios.post(this.$api.insOrderPlan.outInsOrderState, { sampleCode:this.sampleCode, + entrustCode:this.entrustCode, sonLaboratory: this.componentData.entity.sonLaboratory }).then(res => { this.upLoadExport = false; this.exportVisible = false this.sampleCode = ''; + this.entrustCode = ''; if (res.code == 201) { this.$message.error('鍑哄簱澶辫触') return @@ -801,16 +891,19 @@ }, // 鎵爜鏋寜涓� keyup(e){ - var code = '' + var codeInfo = null try{ - code = JSON.parse(this.codeInfo) - if(code==null||code==undefined||code==''){ - this.$message.error('璇ヤ簩缁寸爜鏈夎') + console.log(2222,this.codeInfo) + codeInfo = JSON.parse(this.codeInfo) + if(!codeInfo||codeInfo.sampleCode==undefined||codeInfo.entrustCode==undefined){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') }else{ - this.sampleCode = code + this.sampleCode = codeInfo.sampleCode + this.entrustCode = codeInfo.entrustCode } }catch(e){ - this.$message.error('璇ヤ簩缁寸爜鏈夎') + this.$message.error('璇疯皟鑷宠嫳鏂囬敭鐩�') + console.log(e) } this.codeInfo = null }, @@ -890,6 +983,9 @@ if (power[i].menuMethod == 'scanInsOrderState') { this.scanInsOrderState = true } + if (power[i].menuMethod == 'scanInsOrderState') { + this.selectWarehouse = true + } } // if (!getInsProduct2) { // this.componentData.do.splice(5, 1) @@ -929,7 +1025,7 @@ if (row) { this.sampleUserForm = { entrustCode: row.entrustCode, - insSampleId: row.id, + insSampleId: row.sampleId, sonLaboratory: row.sonLaboratory, } this.claimVisible = true @@ -937,11 +1033,13 @@ }, confirmClaim() { this.loading = true; + // this.sampleUserForm.insSampleId = this.orderId this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, { headers: { 'Content-Type': 'application/json' - } - }).then(res => { + }, + noQs:true + },).then(res => { if (res.code === 200 && res.data) { this.loading = false; this.$message.success("璁ら鎴愬姛") @@ -1079,14 +1177,18 @@ inspectorList.push(user.name) } this.inspectorList = inspectorList - this.orderId = row.id + this.orderId = row.sampleId + this.orderId0 = row.id this.version = row.version this.orderStateId = row.orderStateId this.state = 1; + this.userInfo.name = row.userName.split(',') + this.userInfo.ids = row.userNameId.split(',') this.isLook = false }, handleConnect(row){ - this.orderId = row.id + this.orderId = row.sampleId + this.orderId0 = row.id this.connect = {} this.connectVisible=true; // this.$axios.post(this.$api.insOrderPlan.upPlanUser2, { @@ -1104,6 +1206,23 @@ // } // }) }, + cancelSubmitPlan(row){ + this.$confirm('纭畾鎾ら攢姝ゆ妫�楠屾彁浜�?', "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.$axios.post(this.$api.insOrderPlan.cancelSubmitPlan, { + orderStateId: row.orderStateId + }).then(res => { + if(res.code==201){ + return + } + this.$message.success("鎿嶄綔鎴愬姛") + this.refreshTable('page') + }).catch(() => {}) + }).catch(() => {}) + }, confirmConnect(){ if(this.connect.connectPerson==null||this.connect.connectPerson==''||this.connect.connectPerson==undefined){ this.$message.error('鏈�夋嫨浜ゆ帴浜哄憳') @@ -1115,7 +1234,7 @@ // } this.loading = true; this.$axios.post(this.$api.insOrderPlan.upPlanUser, { - orderId:this.orderId, + sampleId:this.orderId, userId:this.connect.connectPerson, sonLaboratory:this.componentData.entity.sonLaboratory, }).then(res => { @@ -1132,7 +1251,8 @@ }, handleReview(row){ this.state = 2; - this.orderId = row.id + this.orderId = row.sampleId + this.orderId0 = row.id this.version = row.version this.orderStateId = row.orderStateId this.isLook = false @@ -1161,7 +1281,8 @@ lookHistory(row){ this.isLook = true this.state = 2; - this.orderId = this.currentHistory.id + this.orderId = this.currentHistory.sampleId + this.orderId0 = this.currentHistory.id this.version = this.currentHistory.version this.orderStateId = this.currentHistory.orderStateId this.num1 = row.num -- Gitblit v1.9.3