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 | 359 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 327 insertions(+), 32 deletions(-) diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue index d37f203..a1517d9 100644 --- a/src/components/view/b1-inspection-order.vue +++ b/src/components/view/b1-inspection-order.vue @@ -90,17 +90,76 @@ >>>.el-radio__label{ color: #000 !important; } + .el-dialog__body >>>.el-radio__label{ + font-size: 8px; + } + .el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after { + content: ''; + width: 4px; + height: 3px; + border: 1px solid #000; + border-top: transparent; + border-right: transparent; + text-align: center; + display: block; + position: absolute; + top: 1px; + left: 2px; + transform: rotate(-45deg); + border-radius: 0px; + background: none; + } >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ background: #3A7BFA; + } + .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + background: transparent; + } + .el-dialog__body >>>.el-radio__inner{ + width: 8px !important; + height: 8px !important; + } + .el-dialog__body >>>.el-radio__label{ + 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; + } + .el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + border: none !important; + } + .scor{ + width: 0.01cm; + height: 0.01cm; + border-radius: 1px; + border: 1px solid #000; + display: inline-block; + } + .ellipsis-multiline { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + word-wrap: break-word; + max-height: 3.0em; /* 楂樺害涓哄瓧浣撳ぇ灏忕殑涓ゅ�� */ + line-height: 1.5em; /* 琛岄珮 */ + height: 3.0em; /* 楂樺害涓鸿楂樼殑涓ゅ�� */ } </style> <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;">妫�楠屼笅鍗�</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="medium" type="primary" @click="print">鏍囩鎵撳嵃</el-button> <el-button size="medium" type="primary" @click="playOrder(1)" v-if="addPower">涓嬪崟</el-button> @@ -116,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> @@ -130,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" @@ -172,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> <!-- 瀹℃牳 --> @@ -230,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> @@ -250,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"> @@ -287,9 +374,9 @@ <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.sample }}</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;"> + <el-row style="margin-top: 1px;font-size: 14px;" class="ellipsis-multiline"> <el-col style="font-weight: bold;"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> </el-row> <el-row style="margin-top: 3px;font-size: 14px;"> @@ -313,6 +400,50 @@ </el-row> </span> </el-dialog> + <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="10" :offset="2"> + <vueQr :text="JSON.stringify(item.sampleCode)" :size="60" :margin="2"></vueQr> + </el-col> + </div> + <div style="margin-left: 0.32cm;line-height: 0.22cm;"> + <el-row> + <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: 0.20cm;"> + <el-col><span>濮旀墭鍗曞彿: </span>{{ item.code }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;"> + <el-col><span>瑙勬牸鍨嬪彿: </span>{{ item.model }}</el-col> + </el-row> + <el-row style="font-size: 0.20cm;"> + <el-col ><span>鏍峰搧鍚嶇О: </span>{{ item.sample }}</el-col> + </el-row> + <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: 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>寰呮 + <span v-if="item.insState==1">鈭�</span><span class="scor" v-if="item.insState!=1"></span>鍦ㄦ + <span v-if="item.insState==2">鈭�</span><span class="scor" v-if="item.insState!=2"></span>宸叉 + <span v-if="item.isLeave==1">鈭�</span><span class="scor" v-if="item.isLeave!=1"></span>鐣欐牱</span> + <!-- <el-radio-group :value="item.insState" style="margin-top: 3px;margin-left: 1px;" disabled> + <el-radio :label="0" style="margin-right: 3px;font-size: 6px;">寰呮</el-radio> + <el-radio :label="1" style="margin-right: 3px;font-size: 6px;">鍦ㄦ</el-radio> + <el-radio :label="2" style="margin-right: 3px;font-size: 6px;">宸叉</el-radio> + </el-radio-group><el-radio :label="1" style="margin-top: 3px;font-size: 8px;" v-model="item.isLeave" disabled>鐣欐牱</el-radio> --> + </el-col> + </el-row> + </div> + </div> + </el-card> + </div> + </div> </div> </template> @@ -329,6 +460,8 @@ }, data() { return { + deleteTilte:'鎾ら攢', + deleteList:[], loadPint:false, checkAll: false, isIndeterminate: true, @@ -349,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, @@ -405,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: { @@ -470,8 +614,11 @@ }, selectField: {}, requiredAdd: [], - requiredUp: [] + requiredUp: [], + needSort: ['createTime', 'sendTime', 'type', 'appointed'] }, + orderId:'', + revocationInsProductIds:'', componentDataDataLook: { entity: { id: 0, @@ -513,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, @@ -550,9 +733,14 @@ more:false, insOrderRow:{}, checkIndexList:[], - checkDataList:[], + checkDataList:[ + { + sampleCode:'11111' + } + ], qrData:[], - multipleSelection:[] + multipleSelection:[], + sonLaboratoryList:[] } }, watch:{ @@ -626,23 +814,27 @@ PrintJS({ printable: 'printMOrder',//椤甸潰 type: "html",//鏂囨。绫诲瀷 - maxWidth:450, + maxWidth:360, targetStyles:['*'], style: `@page { margin:0; - size: 360px 175px landscape; + 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(){ @@ -666,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) @@ -680,6 +872,8 @@ let del = false 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 @@ -690,12 +884,24 @@ if (power[i].menuMethod == 'updateStatus') { revoke = true } + 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) { this.componentData.do.splice(3, 1) + } + if (!check) { + this.componentData.do.splice(2, 1) } this.addPower = add }, @@ -749,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; @@ -763,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; @@ -778,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 @@ -787,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 @@ -800,7 +1088,7 @@ if (res.code===200){ this.upLoad=false this.quashDialogVisible=false - this.refreshTable() + this.refreshTable('page') this.$message.success("鏇存柊鎴愬姛") } }) @@ -809,7 +1097,7 @@ if (res.code===200){ this.upLoad = false this.quashDialogVisible = false - this.refreshTable() + this.refreshTable('page') this.$message.success("鏇存柊鎴愬姛") } }) @@ -824,6 +1112,7 @@ // 涓嬪崟 playOrder(num) { this.active = num + this.refreshTable('page') }, handleTab(m, i) { this.tabIndex = i; @@ -859,6 +1148,7 @@ } }) this.componentDataDataLook.tagField.insState.select = data + this.componentDataDelete.tagField.insState.select = data }) }, selectEnumByCategoryForOrderType() { @@ -870,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