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-sample.vue | 183 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 161 insertions(+), 22 deletions(-) diff --git a/src/components/view/b1-sample.vue b/src/components/view/b1-sample.vue index 70d036c..244755c 100644 --- a/src/components/view/b1-sample.vue +++ b/src/components/view/b1-sample.vue @@ -166,7 +166,7 @@ <div style="width: 100%;height: 100%;" v-if="!isDetail"> <div> <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">鏍峰搧绠$悊</el-col> + <el-col :span="12" style="padding-left: 20px;text-align: left;">鏍峰搧绠$悊</el-col> <el-col :span="12" style="text-align: right;"> <el-button size="small" type="primary" @click="storageVisible=true">鍏ュ簱</el-button> <el-button size="small" type="primary" @click="exportVisible=true">鍑哄簱</el-button> @@ -195,10 +195,14 @@ <div class="search_thing"> <div class="search_label">鏍峰搧缂栧彿锛�</div> <div class="search_input"> - <el-input placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" v-model="searchSampleCode" size="small"> - <el-button slot="append" icon="el-icon-search" @click="handleSearch"></el-button> + <el-input placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" v-model="searchSampleCode" size="small" autocomplete="off" ref="organization" readonly="readonly" @focus="remove('organization')" @blur="setType('organization')"> + <!-- <el-button slot="append" icon="el-icon-search" @click="handleSearch"></el-button> --> </el-input> </div> + </div> + <div class="search_thing"> + <el-button size="small" @click="handleShelf(entity.shelfId,''),searchSampleCode=''">閲嶇疆</el-button> + <el-button size="small" type="primary" @click="handleShelf(entity.shelfId,searchSampleCode)">鏌ヨ</el-button> </div> <!-- <div class="search_thing" style="padding-left: 30px;"> <el-button size="small" @click="refresh()">閲� 缃�</el-button> @@ -222,7 +226,7 @@ effect="dark" placement="top" v-for="(n,j) in m.samples" - :key="j" :disabled="`${n.sample}${n.model}`.length<10"> + :key="j" :disabled="`${n.sample}${n.model}`.length<5"> <div slot="content"><span>{{ n.sample }}</span> <span> ({{ n.model }}) [{{ n.sampleCode }}]</span></div> <li class="green" @@ -255,7 +259,18 @@ <el-col class="search_thing" :span="24"> <div class="search_label"><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" @change="sampleCodeChange" :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> @@ -287,7 +302,18 @@ <el-col class="search_thing" :span="24"> <div class="search_label"><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" @change="sampleCodeChange" 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> @@ -366,6 +392,7 @@ <el-button type="primary" @click="confirmShelves" :loading="upLoadShelves">纭� 瀹�</el-button> </span> </el-dialog> + <input id="ScanCodeInfo0" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input> </div> </template> @@ -381,7 +408,9 @@ warehouseId: null, shelfId: null }, + sampleCodeBtnDisabled:true, warehouse: [], + startTime: null, shelf: [], storageList:[], storageVisible: false, @@ -405,14 +434,83 @@ currentEdit:null,//褰撳墠瑕佺淮鎶ょ殑淇℃伅 tableLoading:false, sampleCode:'', + entrustCode:'', currentId:null, - searchSampleCode:'' + searchSampleCode:null, + codeInfo:null, + } + }, + watch:{ + storageVisible(newVal){ + if(newVal){ + this.selectList() + this.sampleCode = null + this.entrustCode = null + // this.$message.success('鎵爜锛氭墦寮�') + let input = document.getElementById('ScanCodeInfo0'); + 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('ScanCodeInfo0'); + 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.storageVisible){ + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + } + }, + isEdit(newVal){ + if(!newVal){ + this.shelves = {} + } } }, mounted() { this.selectList() }, methods: { + keyup(e){ + var codeInfo = null + try{ + console.log(2222,this.codeInfo) + codeInfo = JSON.parse(this.codeInfo) + if(!codeInfo||codeInfo.sampleCode==undefined||codeInfo.entrustCode==undefined){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + }else{ + this.sampleCode = codeInfo.sampleCode + this.entrustCode = codeInfo.entrustCode + } + }catch(e){ + this.$message.error('璇疯皟鑷宠嫳鏂囬敭鐩�') + } + this.codeInfo = null + }, selectList() { this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => { this.warehouse = res.data @@ -424,20 +522,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; }) @@ -479,6 +594,10 @@ this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') return } + if (!this.entrustCode) { + this.$message.error('璇峰~鍐欒鍗曠紪鍙�') + return + } if (this.selectTree.length < 4) { this.$message.error('璇烽�夋嫨鏍峰搧鍏ュ簱浣嶇疆') return @@ -486,11 +605,13 @@ this.upLoadStorage = true; this.$axios.post(this.$api.warehouse.inWarehouse, { trees: this.selectTree.join('-'), - sampleCode:this.sampleCode + sampleCode:this.sampleCode, + entrustCode:this.entrustCode }).then(res => { this.upLoadStorage = false; this.storageVisible = false this.sampleCode = ''; + this.entrustCode = ''; this.selectTree = [] if (res.code == 201) { this.$message.error('鍏ュ簱澶辫触') @@ -506,13 +627,19 @@ this.$message.error('璇峰~鍐欐牱鍝佺紪鍙�') return } + if (!this.entrustCode) { + this.$message.error('璇峰~鍐欒鍗曠紪鍙�') + return + } this.upLoadExport = true; this.$axios.post(this.$api.warehouse.outWarehouse, { - sampleCode:this.sampleCode + sampleCode:this.sampleCode, + entrustCode:this.entrustCode, }).then(res => { this.upLoadExport = false; this.exportVisible = false this.sampleCode = ''; + this.entrustCode = ''; if (res.code == 201) { this.$message.error('鍑哄簱澶辫触') return @@ -700,16 +827,17 @@ this.isDetail = true; }, warehouseChange(val) { + this.tableList = [] let map = this.warehouse.find(a => { return a.id === val ? a : null }) this.shelf = map.warehouseShelfList; this.entity.shelfId = ''; }, - handleShelf(e){ + handleShelf(e,sampleCode=''){ if(e){ this.tableLoading = true; - this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e).then(res => { + this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e+'&sampleCode='+(sampleCode?sampleCode:'')).then(res => { this.tableLoading = false; let data = res.data; let set =new Set() @@ -751,6 +879,17 @@ this.isDetail = true; } }) + }, + sampleCodeChange(e){ + if(e){ + this.sampleCode = e.replaceAll('"','') + } + }, + remove(type){ + this.$refs[type].$el.querySelector('input').removeAttribute('readonly') + }, + setType(type){ + this.$refs[type].$el.querySelector('input').setAttribute('readonly', 'true') } } } -- Gitblit v1.9.3