From 254f5863bed7474f258e6829cc0a2a4f94989e1c Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 26 六月 2024 11:06:07 +0800 Subject: [PATCH] 修改/bug --- src/components/view/b2-standard.vue | 3 src/components/do/b1-ins-order/add.vue | 10 + src/main.js | 8 index.html | 4 src/components/do/b1-inspect-order-plan/Inspection.vue | 56 ++++++++-- src/components/view/b1-inspection-order.vue | 197 ++++++++++++++++++++++++++++++++++++++- src/assets/api/controller.js | 1 7 files changed, 255 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 0c8e7c1..483f242 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,10 @@ #app{ overflow: hidden; } + .el-table-filter__list{ + max-height: 70vh !important; + overflow-y: scroll !important; + } </style> </head> <body> diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index a50cbaf..91901f5 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -165,6 +165,7 @@ selectSampleDefects: "/insOrder/selectSampleDefects", //鏍峰搧缂洪櫡鎸囨爣 updateStatus: "/insOrder/updateStatus", //灏嗗緟瀹℃牳鏇存柊鎴愭挙閿�鐘舵�� updateInspected: "/insOrder/updateInspected", //灏嗗緟妫�楠岀殑鐨勬挙閿�杩涜鏇存敼 + labelPrinting: "/insOrder/labelPrinting", //鏍囩鎵撳嵃 } const sampleOrder = { diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 0e9813c..b4a4ca4 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -1009,8 +1009,12 @@ } }, save0(){ - let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1) - this.saveMethod(sampleList) + if(this.editTable.every(m=>m.value)){ + let sampleList = this.handleData(this.HaveJson(this.sampleList),this.handleAsk,1) + this.saveMethod(sampleList) + }else{ + this.$message.error('璇峰~鍐欒瘑鍒鍊�') + } }, handleData(sampleList,calBack,type){ let editTable = [] @@ -1235,6 +1239,8 @@ this.saveLoad = false if (res.code == 201) return this.$message.success('鎻愪氦鎴愬姛') + // this.$parent.multipleSelection = [{id: this.currentId}] + // this.$parent.print() // 濡傛灉绱ф�ョ▼搴︿负绱ф�ワ紝闇�瑕佺洿鎺ヤ笅鍙戜汉鍛� // if (this.addObj.type == 2) { // this.issuedDialogVisible = true; diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index e7241a3..1a6e052 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -135,6 +135,14 @@ .table_caret:active{ opacity: .8; } + >>>input::-webkit-inner-spin-button { + -webkit-appearance: none !important; /* 闅愯棌寰皟鎸夐挳 */ + margin: 0 !important; /* 绉婚櫎寰皟鎸夐挳鐨勮竟璺� */ + } + + >>>input[type=number] { + -moz-appearance: textfield !important; /* 閽堝 Firefox */ + } </style> <style> .inspection .el-form-item__label { @@ -264,7 +272,7 @@ <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��' && state==1"> <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')" - @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)"> + @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" type="number"> <el-button slot="append" type="primary" icon="el-icon-edit" size="mini" v-if="getInspectionItemType(n.i) == 1" @click="getSystemValue(n)"></el-button> </el-input> @@ -281,12 +289,12 @@ v-else-if="getInspectionValueType(n.i) == 4">/</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='缁撹'"> - <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" + <!-- <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" class="table_input" v-model="n.v.v" @change="saveInsContext()"> <el-option label="鍚堟牸" :value="1"></el-option> <el-option label="涓嶅悎鏍�" :value="0"></el-option> - </el-select> - <template v-else> + </el-select> --> + <template> <span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">鍚堟牸</span> <span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">涓嶅悎鏍�</span> <span v-else :style="`font-family:${n.v.ff} !important;`">寰呭畾</span> @@ -310,7 +318,7 @@ :disabled="state>1" @visible-change="e=>getDic(e,n.i)" @change="saveInsContext()"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> - <span :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> + <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v,n.v.ct) }}</span> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='鏍峰搧缂栧彿'"> <div style="display: flex;flex-wrap: nowrap;align-items: center;width: 100%" :title="currentSample.sampleCode"> @@ -1196,7 +1204,12 @@ if(ask){ comp = ask.map((m, i) => { if (m.includes('=')) { - return res == m.split('=')[1] + let str = m.split('=')[1] + if(typeof res == 'string'&&typeof str == 'string'){ + return res.trim() == str.trim() + }else{ + return res == str + } } else if (m.includes('鈮�')) { return res >= m.split('鈮�')[1] }else if (m.includes('鈮�')) { @@ -1217,12 +1230,10 @@ } }) } - if(this.getInspectionValueType(item.i)==1){ - if (comp.every(m => m)) { - item.v.v = 1 - } else { - item.v.v = 0 - } + if (comp.every(m => m)) { + item.v.v = 1 + } else { + item.v.v = 0 } this.saveInsContext() } @@ -1293,6 +1304,7 @@ str = str.replaceAll('MAX', 'Math.max') str = str.replaceAll('MIN', 'Math.min') str = str.replaceAll('锛�', ',') + console.log(str) try { if(this.getInspectionValueType(item.i)==1){ comResult = eval(str) @@ -1944,6 +1956,26 @@ }).catch(error => { }) + }, + /** + * 灏嗘暟鍊紇淇濈暀ct.fa涓�'##'鍚庣殑鎸囧畾灏忔暟浣嶆暟锛屽苟杩斿洖鏍煎紡鍖栧悗鐨勫瓧绗︿覆銆� + * + * @param v 瑕佹牸寮忓寲鐨勬暟鍊� + * @param ct 鍖呭惈鏍煎紡鍖栭厤缃殑瀵硅薄 + * @param ct.fa 鏍煎紡鍖栭厤缃瓧绗︿覆锛岃嫢鍖呭惈'##'鍒欐寜鐓у叾鍚庣殑鍐呭纭畾灏忔暟浣嶆暟 + * @returns 鏍煎紡鍖栧悗鐨勫瓧绗︿覆鎴栧師濮嬫暟鍊硷紙鑻ラ厤缃笉绗﹀悎瑕佹眰锛� + */ + toFixed(v,ct){ + if(v&&ct&&ct.fa&&ct.fa.includes('##')){ + if(ct.fa.includes('.')){ + let num = ct.fa.slice(4).length + return Number(v).toFixed(num) + }else{ + return Number(v).toFixed(0) + } + }else{ + return v + } } } } diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue index b81c76c..d37f203 100644 --- a/src/components/view/b1-inspection-order.vue +++ b/src/components/view/b1-inspection-order.vue @@ -68,6 +68,31 @@ .el-form-item { margin-bottom: 16px; } + .box-card >>>.el-radio__inner { + border-radius: 2px !important; + } + .box-card >>>.el-radio__input.is-checked .el-radio__inner::after { + content: ''; + width: 8px; + height: 3px; + border: 1px solid white; + border-top: transparent; + border-right: transparent; + text-align: center; + display: block; + position: absolute; + top: 3px; + left: 2px; + transform: rotate(-45deg); + border-radius: 0px; + background: none; + } + >>>.el-radio__label{ + color: #000 !important; + } + >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{ + background: #3A7BFA; + } </style> <template> @@ -77,6 +102,7 @@ <el-row class="title"> <el-col :span="12" style="padding-left: 20px;">妫�楠屼笅鍗�</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> </el-col> </el-row> @@ -229,19 +255,85 @@ <div style="width: 100%;height: 100%;" v-if="active >0"> <Add :active="active" :currentId="currentId" v-if="active<4" /> </div> + <el-dialog title="鏍囩鎵撳嵃" :visible.sync="printDialogVisible" width="40%" top="5vh"> + <div style="width:100%;height: 400px;overflow-y: auto;" v-loading="loadPint"> + <div class="dia_body"> + <el-checkbox + style="margin: 10px 5px;" + :indeterminate="isIndeterminate" + v-model="checkAll" + @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> + <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList"> + <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> + <el-checkbox :label="i" :key="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> + <div> + <el-row style="font-size: 14px;padding-left: 20px;"> + <el-col style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <div style="display: flex;"> + <div> + <el-col :span="8" :offset="4"> + <vueQr :text="JSON.stringify(item.sampleCode)" :size="140" :margin="2"></vueQr> + </el-col> + </div> + <div style="margin-left: 50px;width: 100%;"> + <el-row> + <el-col style="font-weight: bold;font-size: 14px;"><span>鏍峰搧缂栧彿: </span>{{ item.sampleCode }}</el-col> + </el-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>濮旀墭鍗曞彿: </span>{{ item.code }}</el-col> + </el-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <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-row> + <el-row style="margin-top: 1px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>妫�娴嬮」鐩�: </span>{{ item.item }}</el-col> + </el-row> + <el-row style="margin-top: 3px;font-size: 14px;"> + <el-col style="font-weight: bold;display: flex;align-items: center;"><span>鏍峰搧鐘舵��: </span><el-radio-group :value="item.insState" style="margin-top: 7px;margin-left: 4px;" disabled> + <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">寰呮</el-radio> + <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">鍦ㄦ</el-radio> + <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">宸叉</el-radio> + </el-radio-group><el-radio :label="1" style="font-weight: bold;margin-top: 7px;" v-model="item.isLeave" disabled>鐣欐牱</el-radio></el-col> + </el-row> + </div> + </div> + </div> + </el-card> + </el-checkbox-group> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-row> + <el-button @click="printDialogVisible=false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitPrint" :loading="printLoading">鎵� 鍗�</el-button> + </el-row> + </span> + </el-dialog> </div> </template> <script> import ValueTable from '../tool/value-table.vue' import Add from '../do/b1-ins-order/add.vue' + import vueQr from 'vue-qr' + import PrintJS from 'print-js' export default { components: { ValueTable, - Add + Add, + vueQr }, data() { return { + loadPint:false, + checkAll: false, + isIndeterminate: true, + printLoading:false, + printDialogVisible:false, //鏄惁瀹℃牳閫氳繃 true鏄� false涓嶆槸 isPass: false, //鏄惁瀹℃牳鎾ら攢 true鏄� false涓嶆槸 @@ -278,8 +370,9 @@ } }, isIndex: true, - showSelect: false, - select: false, + showSelect: true, + select: true, + selectMethod:'selectMethod', do: [{ id: 'dataLook', font: '鏁版嵁鏌ョ湅', @@ -321,7 +414,7 @@ } }], linkEvent: { - entrustCode: { + sampleName: { method: 'selectAllByOne' } }, @@ -455,9 +548,23 @@ active: 0, //1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝4锛氬厜绾ら厤缃�,榛樿涓�0 currentId: null, more:false, - insOrderRow:{} + insOrderRow:{}, + checkIndexList:[], + checkDataList:[], + qrData:[], + multipleSelection:[] } }, + watch:{ + printDialogVisible(newVal){ + if(!newVal){ + this.qrData = [] + this.checkIndexList = [] + this.checkDataList = [] + this.isIndeterminate = true; + } + } + }, mounted() { this.entityCopy = this.HaveJson(this.componentData.entity) this.getPower() @@ -467,6 +574,86 @@ this.selectEnumByCategoryForOrderType() }, methods: { + selectMethod(val){ + this.multipleSelection = val + }, + getLabelPrinting(selection){ + this.loadPint = true; + this.$axios.post(this.$api.insOrder.labelPrinting,{ + ids:selection.map(m=>m.id).join(',') + }).then(res => { + let arr = res.data; + arr.forEach(a=>{ + this.loadPint = false; + let arr1 = [] + a.insProduct.forEach(b=>{ + arr1.push(b.inspectionItem) + }) + a.item = [...new Set(arr1)].join(',') + }) + this.qrData = arr + console.log(this.qrData) + }) + }, + //閫夋嫨瑕佹墦鍗扮殑浜岀淮鐮� + changePrintCode(){ + let indexList = this.checkIndexList + let arr = [] + indexList.forEach(i=>{ + arr.push(this.qrData[i]) + }) + this.checkDataList = arr + }, + //鍏ㄩ�� + handleCheckAllChange(val) { + if(val){ + for(var i=0;i<this.qrData.length;i++){ + this.checkIndexList.push(i) + } + this.checkDataList = this.qrData + }else{ + this.checkIndexList = [] + this.checkDataList = [] + } + this.isIndeterminate = false; + }, + submitPrint(){ + if(this.checkDataList.length < 1){ + this.$message.warning("璇烽�夋嫨瑕佹墦鍗扮殑浜岀淮鐮�") + return + } + this.printDialogVisible = false; + PrintJS({ + printable: 'printMOrder',//椤甸潰 + type: "html",//鏂囨。绫诲瀷 + maxWidth:450, + targetStyles:['*'], + style: `@page { + margin:0; + size: 360px 175px landscape; + } + html{ + zoom:100%; + } + @media print{ + width: 360px; + height: 175px; + margin:0; + }`, + onPrintDialogClose: this.erexcel=false, + targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� + font_size: '', + }); + }, + print(){ + if(this.multipleSelection.length==0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return + } + let selection = this.multipleSelection + this.getLabelPrinting(selection) + this.printDialogVisible = true + }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index cf1527d..3d354d1 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -1448,7 +1448,8 @@ getItemEnum() { this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId, { id: this.standardId, - tree: this.selectTree + tree: this.selectTree, + item:this.inspectionItem }).then(res => { this.filters0 = [] this.filters1 = [] diff --git a/src/main.js b/src/main.js index c6926aa..a051bd2 100644 --- a/src/main.js +++ b/src/main.js @@ -15,8 +15,8 @@ Vue.prototype.PROJECT = '妫�娴嬩腑蹇�' // Vue.prototype.PROJECT = '瑁呭鐢电紗' //鏈湴 -Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; -const javaApi = 'http://127.0.0.1:8001'; +// Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; +// const javaApi = 'http://127.0.0.1:8001'; // const javaApi = 'http://192.168.0.104:8001'; //浜� @@ -24,8 +24,8 @@ // const javaApi = 'http://114.132.189.42:1234'; //妫�娴嬩腑蹇冩寮忓簱 -// Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; -// const javaApi = 'http://10.1.200.86:8001'; +Vue.prototype.LOCATIONVUE = "http://10.1.200.86:8080"; +const javaApi = 'http://10.1.200.86:8001'; //瑁呭鐢电紗娴嬭瘯搴� // Vue.prototype.LOCATIONVUE = "http://10.16.173.59"; -- Gitblit v1.9.3