From c263fb316fc23d9db98ce711fda30d81c28d2d9c Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期四, 08 八月 2024 19:02:10 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before --- src/components/view/b1-inspection-order.vue | 282 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 233 insertions(+), 49 deletions(-) diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue index 7e989b0..a1517d9 100644 --- a/src/components/view/b1-inspection-order.vue +++ b/src/components/view/b1-inspection-order.vue @@ -120,10 +120,13 @@ height: 8px !important; } .el-dialog__body >>>.el-radio__label{ - padding-left: 2px !important; + padding-left: 2px !important; } .el-dialog__body >>>.el-card__body{ padding: 0 !important; + } + .el-dialog__body >>>.el-card { + border: none; } .el-dialog__body >>>.el-radio__input.is-disabled .el-radio__inner{ border-color: #000 !important; @@ -132,8 +135,8 @@ border: none !important; } .scor{ - width: 3px; - height: 3px; + width: 0.01cm; + height: 0.01cm; border-radius: 1px; border: 1px solid #000; display: inline-block; @@ -153,7 +156,7 @@ <template> <div class="inspection_order"> - <div style="width: 100%;height: 100%;" v-if="active == 0"> + <div style="width: 100%;height: 100%;" v-show="active == 0"> <div> <el-row class="title"> <el-col :span="12" style="padding-left: 20px;text-align: left;">妫�楠屼笅鍗�</el-col> @@ -172,9 +175,14 @@ v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing" style="width: 20%;"> + <div class="search_label" style="width: 120px;">澶栭儴濮旀墭缂栧彿锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.outEntrustCode" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing" style="width: 20%;"> <div class="search_label">鏍峰搧鍚嶇О锛�</div> <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.sampleType" @keyup.enter.native="refreshTable()"></el-input></div> + v-model="componentData.entity.sampleName" @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing" style="width: 20%;"> <div class="search_label">鏍峰搧鍨嬪彿锛�</div> @@ -186,7 +194,7 @@ <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="width: 20%;"> + <div class="search_thing" style="width: 20%;" v-if="more"> <div class="search_label">涓嬪崟鏃堕棿锛�</div> <div class="search_input"> <el-date-picker style="width:100%" v-model="componentData.entity.createTime" @@ -228,7 +236,9 @@ <ul class="tab"> <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> </ul> - <ValueTable :style="getStyle()" ref="ValueTable" :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData" + <ValueTable :style="getStyle()" ref="ValueTable" + :isColumnWidth="true" + :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData" :key="'b'+upIndex" /> </div> <!-- 瀹℃牳 --> @@ -286,8 +296,17 @@ <el-col class="search_thing" style="width: 95%;"> <div class="search_label"><span class="required-span" v-show="distributeData.type==2">* </span>鎸囨淳浜哄憳锛�</div> <div class="search_input"> - <el-select v-model="distributeData.userId" placeholder="璇烽�夋嫨" size="small" style="width: 100%;" clearable filterable> + <el-select v-model="distributeData.userId" placeholder="璇烽�夋嫨" size="small" style="width: 100%;" clearable filterable @change="changeUser"> <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </el-col> + <el-col class="search_thing" style="width: 95%;" v-if="distributeData.userId"> + <div class="search_label"><span class="required-span" >* </span>璇曢獙瀹わ細</div> + <div class="search_input"> + <el-select v-model="distributeData.sonLaboratory" placeholder="璇烽�夋嫨" size="small" style="width: 100%;" clearable filterable> + <el-option v-for="(item,i) in sonLaboratoryList" :key="i" :label="item.label" :value="item.value"> </el-option> </el-select> </div> @@ -306,6 +325,18 @@ <ValueTable ref="ValueTableDataLook" :url="$api.insOrder.selectSampleAndProductByOrderId" :componentData="componentDataDataLook"/> </div> + </el-dialog> + <el-dialog :title="deleteTilte" :visible.sync="deleteDialogVisible" width="80%"> + <div style="height: 70vh;overflow-y: auto;" v-if="deleteDialogVisible"> + <ValueTable ref="ValueTableDataDelete" :url="$api.insOrder.selectNoProducts+'?orderId='+orderId+'&ids='+this.revocationInsProductIds" + :componentData="componentDataDelete" :isColumnWidth="true"/> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="handleNo">{{deleteTilte=='鎾ら攢'?'鍙� 娑�':'涓嶉�氳繃'}}</el-button> + <el-button type="primary" @click="submitDelete" :loading="printLoading">{{deleteTilte=='鎾ら攢'?'纭� 瀹�':'閫� 杩�'}}</el-button> + </el-row> + </span> </el-dialog> </div> <div style="width: 100%;height: 100%;" v-if="active >0"> @@ -343,7 +374,7 @@ <el-col style="font-weight: bold;"><span>瑙勬牸鍨嬪彿: </span>{{ item.model }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;"> - <el-col style="font-weight: bold;"><span>鏍峰搧鍚嶇О: </span>{{ item.sampleName }}</el-col> + <el-col style="font-weight: bold;"><span>鏍峰搧鍚嶇О: </span>{{ item.sample }}</el-col> </el-row> <el-row style="margin-top: 1px;font-size: 14px;" class="ellipsis-multiline"> <el-col style="font-weight: bold;"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> @@ -369,32 +400,32 @@ </el-row> </span> </el-dialog> - <div class="el-dialog__body" style="width:320px;overflow-y: auto;position: absolute;top:9999px;margin-top: 0;position: fixed;top: 0;display: none;"> - <div id="printMOrder"> - <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 8px !important;page-break-before:always;page-break-after: always;color: #000;"> + <div class="el-dialog__body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 999px;z-index: 99999;display: none;"> + <div id="printMOrder" class="printMOrder" ref="printMOrder"> + <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.20cm !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> <div style="display: flex;"> <div> - <el-col :span="8" :offset="4"> - <vueQr :text="JSON.stringify(item.sampleCode)" :size="78" :margin="2"></vueQr> + <el-col :span="10" :offset="2"> + <vueQr :text="JSON.stringify(item.sampleCode)" :size="60" :margin="2"></vueQr> </el-col> </div> - <div style="margin-left: 57px;line-height: 9px;"> + <div style="margin-left: 0.32cm;line-height: 0.22cm;"> <el-row> - <el-col style="font-size: 8px;"><span>鏍峰搧缂栧彿: </span>{{ item.sampleCode }}</el-col> + <el-col style="font-size: 0.20cm;width: 4cm;" class="single-line-ellipsis"><span>鏍峰搧缂栧彿: </span>{{ item.sampleCode }}</el-col> </el-row> - <el-row style="font-size: 8px;"> + <el-row style="font-size: 0.20cm;"> <el-col><span>濮旀墭鍗曞彿: </span>{{ item.code }}</el-col> </el-row> - <el-row style="font-size: 8px;"> + <el-row style="font-size: 0.20cm;"> <el-col><span>瑙勬牸鍨嬪彿: </span>{{ item.model }}</el-col> </el-row> - <el-row style="font-size: 8px;"> - <el-col ><span>鏍峰搧鍚嶇О: </span>{{ item.sampleName }}</el-col> + <el-row style="font-size: 0.20cm;"> + <el-col ><span>鏍峰搧鍚嶇О: </span>{{ item.sample }}</el-col> </el-row> - <el-row style="font-size: 8px;width: 140px;"> + <el-row style="font-size: 0.20cm;width: 4cm;"> <el-col class="ellipsis-multiline"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> </el-row> - <el-row style="margin-top: 3px;font-size: 8px;"> + <el-row style="margin-top: 0.01cm;font-size: 0.20cm;"> <el-col style="display: flex;align-items: center;"><span>鏍峰搧鐘舵��: </span> <span style="white-space: nowrap;"><span v-if="item.insState==0">鈭�</span><span class="scor" v-if="item.insState!=0"></span>寰呮 @@ -412,7 +443,7 @@ </div> </el-card> </div> - </div> + </div> </div> </template> @@ -429,6 +460,8 @@ }, data() { return { + deleteTilte:'鎾ら攢', + deleteList:[], loadPint:false, checkAll: false, isIndeterminate: true, @@ -449,25 +482,27 @@ orderId: '', sampleId: '', appointed: '', - userId: '' + userId: '', + sonLaboratory:'' }, // 浜哄憳鍒楄〃 personList: [], componentData: { entity: { entrustCode: null, - sampleType: null, + sample: null, sampleName: null, sampleModel: null, sampleCode: null, + outEntrustCode: null, state: 0, name:null, engineering:null, production:null, - orderBy: { - field: 'id', - order: 'asc' - } + // orderBy: { + // field: '', + // order: '' + // } }, isIndex: true, showSelect: true, @@ -505,12 +540,21 @@ disabFun: (row, index) => { return row.state != 1 && row.state != 0 } + }, + { + id: 'quashCheck', + font: '鎾ら攢瀹℃牳', + type: 'text', + method: 'handlEquashCheck', + disabFun: (row, index) => { + return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1 + } }, { font: '鍒嗛厤', type: 'text', method: 'handleIssued', disabFun: (row, index) => { - return row.state != 1 || row.sendTime != null + return row.state != 1 || !!row.assign } }], linkEvent: { @@ -570,8 +614,11 @@ }, selectField: {}, requiredAdd: [], - requiredUp: [] + requiredUp: [], + needSort: ['createTime', 'sendTime', 'type', 'appointed'] }, + orderId:'', + revocationInsProductIds:'', componentDataDataLook: { entity: { id: 0, @@ -613,13 +660,49 @@ }, { name:'model', - index:2 + index:5 } ] }, requiredAdd: [], requiredUp: [] }, + componentDataDelete: { + entity: { + // orderId: '', + // orderBy: { + // field: 'sampleCode', + // order: 'asc' + // } + }, + isPage:false, + isIndex: false, + showSelect: true, + select: true, + selectMethod: 'selectDelete', + do: [], + tagField: { + insState: { + select: [] + }, + insResult: { + select: [{ + value: 1, + label: '鍚堟牸', + type: 'success' + },{ + value: 0, + label: '涓嶅悎鏍�', + type: 'danger' + }] + } + }, + selectField: {}, + spanConfig:{}, + requiredAdd: [], + requiredUp: [] + }, + deleteDialogVisible:false, entityCopy: {}, upIndex: 0, addPower: true, @@ -651,12 +734,13 @@ insOrderRow:{}, checkIndexList:[], checkDataList:[ - // { - // sampleCode:'11111' - // } + { + sampleCode:'11111' + } ], qrData:[], - multipleSelection:[] + multipleSelection:[], + sonLaboratoryList:[] } }, watch:{ @@ -730,23 +814,27 @@ PrintJS({ printable: 'printMOrder',//椤甸潰 type: "html",//鏂囨。绫诲瀷 - maxWidth:450, + maxWidth:360, targetStyles:['*'], style: `@page { margin:0; - size: 360px 175px portrait; + size: 400px 75px collapse; + margin-top:3px; + &:first-of-type{ + margin-top:0 !important; + } } html{ zoom:100%; } @media print{ - width: 360px; - height: 175px; + width: 400px; + height: 75px; margin:0; }`, onPrintDialogClose: this.erexcel=false, targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� - font_size: '', + font_size: '0.20cm', }); }, print(){ @@ -770,8 +858,8 @@ this.personList = data }) }, - refreshTable() { - this.$refs['ValueTable'].selectList() + refreshTable(e) { + this.$refs['ValueTable'].selectList(e) }, refresh() { this.componentData.entity = this.HaveJson(this.entityCopy) @@ -785,6 +873,7 @@ let add = false let revoke = false let check = false + let checkUpdate = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'upInsOrder') { up = true @@ -798,8 +887,14 @@ if (power[i].menuMethod == 'upInsOrderOfState') { check = true } + if (power[i].menuMethod == 'checkUpdate') { + checkUpdate = true + } } if (!up) { + this.componentData.do.splice(5, 1) + } + if (!checkUpdate) { this.componentData.do.splice(4, 1) } if (!revoke) { @@ -860,9 +955,72 @@ }, // 鎾ら攢 handlEquash(row) { - this.quashDialogVisible = true; - this.insOrderRow=row + if(this.tabIndex!=1){ + this.quashDialogVisible = true; + this.insOrderRow=row + }else{ + // this.componentDataDelete.entity.orderId = row.id + this.orderId = row.id + this.revocationInsProductIds = '' + this.componentDataDelete.showSelect= true + this.componentDataDelete.select= true + this.deleteTilte = '鎾ら攢' + this.deleteDialogVisible = true; + } }, + selectDelete(arr){ + this.deleteList = arr; + }, + submitDelete(){ + if(this.deleteTilte=='鎾ら攢'){ + if(this.deleteList.length==0){ + this.$message.error('璇烽�夋嫨瑕佹挙閿�鐨勯」') + return + } + let ids = this.deleteList.map(m=>m.id).join(',') + this.printLoading = true; + this.axios.put(this.$api.insOrder.updateInspected+"?ids="+ids+'&orderId='+this.orderId).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + }else{ + this.axios.post(this.$api.insOrder.checkUpdate+'?orderId='+this.orderId+'&state='+1).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + } + }, + handlEquashCheck(row){ + // this.componentDataDelete.entity.orderId = row.id + this.orderId = row.id + this.revocationInsProductIds = row.revocationInsProductIds + this.componentDataDelete.showSelect= false + this.componentDataDelete.select= false + this.deleteTilte = '鎾ら攢瀹℃牳' + this.deleteDialogVisible = true; + }, + handleNo(){ + if(this.deleteTilte=='鎾ら攢'){ + this.deleteDialogVisible=false + }else{ + this.axios.post(this.$api.insOrder.checkUpdate+'?orderId='+this.orderId+'&state='+0).then(res=>{ + if (res.code===200){ + this.printLoading=false + this.deleteDialogVisible=false + this.refreshTable('page') + this.$message.success("鏇存柊鎴愬姛") + } + }) + } + }, // 涓嬪彂 handleIssued(row) { this.issuedDialogVisible = true; @@ -874,14 +1032,32 @@ this.distributeData.appointed = res.data this.distributeData.type = row.type }) + this.$axios.post(this.$api.insOrderPlan.upPlanUser2, { + orderId:row.id, + }).then(res => { + if (res.code === 200&&res.data.length>0) { + this.sonLaboratoryList = []; + res.data.forEach(m=>{ + this.sonLaboratoryList.push({ + value:m, + label:m + }) + }) + } + }) }, submitForm2() { if (this.distributeData.appointed == null || this.distributeData.appointed == '') { this.$message.error('绾﹀畾鏃堕棿鏈~鍐�') return } + // if(this.distributeData.type==2&&(this.distributeData.userId==null||this.distributeData.userId=='')){ this.$message.error('鎸囨淳浜哄憳鏈~鍐�') + return + } + if(this.distributeData.userId&&(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory=='')){ + this.$message.error('璇曢獙瀹ゆ湭濉啓') return } this.upLoad = true; @@ -889,7 +1065,8 @@ orderId: this.distributeData.orderId, sampleId: this.distributeData.sampleId, appointed: this.distributeData.appointed, - userId: this.distributeData.userId + userId: this.distributeData.userId, + sonLaboratory:this.distributeData.sonLaboratory, }).then(res => { if (res.code === 201) { this.upLoad = false @@ -898,7 +1075,7 @@ this.$message.success('淇敼鎴愬姛') this.upLoad = false this.issuedDialogVisible = false - this.refreshTable() + this.refreshTable('page') }).catch(e => { this.$message.error('淇敼澶辫触') this.upLoad = false @@ -911,7 +1088,7 @@ if (res.code===200){ this.upLoad=false this.quashDialogVisible=false - this.refreshTable() + this.refreshTable('page') this.$message.success("鏇存柊鎴愬姛") } }) @@ -920,7 +1097,7 @@ if (res.code===200){ this.upLoad = false this.quashDialogVisible = false - this.refreshTable() + this.refreshTable('page') this.$message.success("鏇存柊鎴愬姛") } }) @@ -935,6 +1112,7 @@ // 涓嬪崟 playOrder(num) { this.active = num + this.refreshTable('page') }, handleTab(m, i) { this.tabIndex = i; @@ -970,6 +1148,7 @@ } }) this.componentDataDataLook.tagField.insState.select = data + this.componentDataDelete.tagField.insState.select = data }) }, selectEnumByCategoryForOrderType() { @@ -981,6 +1160,11 @@ }, getStyle(){ return 'height: calc(100% - '+(this.more?'94':'44')+'px)' + }, + changeUser(){ + if(this.sonLaboratoryList.length>0){ + this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value + } } } } -- Gitblit v1.9.3