From 71c4ece010f68a74eeff5e986caecb9a0bb2e36c Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期四, 25 四月 2024 17:37:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/do/b1-inspect-order-plan/Inspection.vue | 287 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 193 insertions(+), 94 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index de2ae89..4e7f56e 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -38,11 +38,16 @@ display: flex; align-items: center; justify-content: center; + flex-direction: column; flex-wrap: wrap; + width: 100%; + /* overflow-x: hidden; */ + overflow-x: scroll; } .tables { - margin-bottom: 16px; + table-layout: fixed; + margin: 5px 5px 16px; } .tables td { @@ -54,12 +59,14 @@ .content { display: flex; - width: 100%; + /* width: 100px; */ height: 100%; align-items: center; justify-content: left; padding: 5px; box-sizing: border-box; + overflow: hidden; + user-select: none; } .content-h-0 { @@ -107,11 +114,11 @@ } </style> <style> - .el-form-item__label { + .inspection .el-form-item__label { color: #000; } - .el-drawer__header::before { + .inspection .el-drawer__header::before { content: ""; display: inline-block; width: 4px; @@ -122,8 +129,20 @@ margin-right: 8.5px; } - .el-drawer__header { + .inspection .el-drawer__header { color: #303133; + } + + .inspection .el-input-group__append{ + padding: 0 10px; + color: #3A7BFA; + background-color: #fff; + } + + .inspection .center-box .el-input__inner{ + font-size: 12px; + padding: 0 6px; + text-align: center; } </style> <template> @@ -171,17 +190,21 @@ </div> <div class="center"> <div class="center-box"> - <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index"> + <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index" + :style="`width: ${tableWidth}px;`"> <tbody> <tr v-for="(m,i) in item.arr" :key="i"> - <!-- v-if="n.v.mc==undefined || n.v.mc.rs!=undefined" :colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" --> <td :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' v-for="(n,j) in m" :key="j" - :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${item.style.columnlen[n.c]}px;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> + v-if="n.v.mc==undefined || Object.keys(n.v.mc).length === 4" :colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" + :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1" + :style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${item.style.columnlen[n.c]}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`"> <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"> - <template v-if="n.v.ps!=undefined && n.v.ps.value==='妫�楠屽��'"> + <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 != '')||state>1" - @change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" /> + :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}`)"> + <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> <el-input v-else-if="getInspectionValueType(n.i) == 2" class="table_input" type="textarea" :autosize="{ minRows: 1}" v-model="n.v.v" :disabled="state>1" /> <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v" @@ -191,19 +214,15 @@ </el-select> <span :style="`font-family:${n.v.ff} !important;`" v-else-if="getInspectionValueType(n.i) == 4">/</span> - <el-button type="primary" icon="el-icon-edit" size="mini" circle - v-if="getInspectionItemType(n.i) == 1" style="border: 0;margin-left: 2px;" - @click="getSystemValue(n)" :disabled="(n.u != userId && n.u != undefined && n.u != '')||state>1"> - </el-button> </template> <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='缁撹'"> <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> </template> - <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='璁惧缂栫爜'"> + <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='璁惧缂栫爜' && state==1"> <el-select v-model="n.v.v" placeholder="璁惧" @visible-change="e=>getEquipOptions(e,n.i)" - :disabled="state>1"> + remote @change="(val)=>changeEquip(val, n)"> <el-option v-for="item in equipOptions" :key="item.value" :label="item.value" :value="item.value"> </el-option> </el-select> @@ -248,12 +267,12 @@ <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList" :componentData="componentData" :key="upIndex" /> </el-drawer> - <el-dialog title="妫�楠屽鏍�" :visible.sync="reviewDia" width="400px"> - <div class="body" style="display: flex;" v-if="reviewDia"> - <div class="search_label" style="width: 120px;"><span class="required-span">* </span>涓嶉�氳繃鍘熷洜锛�</div> - <div class="search_input"> + <el-dialog title="妫�楠屽鏍�" :visible.sync="reviewDia" width="500px"> + <div class="body" style="display: flex;padding: 10px;" v-if="reviewDia"> + <div class="search_label" style="width: 150px;"><span class="required-span">* </span>涓嶉�氳繃鐨勭悊鐢憋細</div> + <div class="search_input" style="width: 100%;"> <el-input size="small" clearable v-model="noReason" type="textarea" - :autosize="{ minRows: 3, maxRows: 5}"></el-input> + :autosize="{ minRows: 4}"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> @@ -265,8 +284,10 @@ </template> <script> - import { set } from 'shelljs'; -import ValueTable from '../../tool/value-table.vue' + import { + set + } from 'shelljs'; + import ValueTable from '../../tool/value-table.vue' export default { props: ['sonLaboratory', 'orderId', 'state'], components: { @@ -325,7 +346,8 @@ userId: 0, reviewLoading: false, reviewDia: false, - noReason: '' + noReason: '', + tableWidth: 1000 } }, created() { @@ -358,7 +380,8 @@ insValue: [], comValue: [], resValue: null, - equipValue: null, + equipValue: [], + equipName: [], insResult: null } }) @@ -379,7 +402,8 @@ insValue: [], comValue: [], resValue: null, - equipValue: null, + equipValue: [], + equipName: [], insResult: null } }) @@ -447,7 +471,7 @@ const mySet1 = new Set(); this.tableList = JSON.parse(JSON.stringify(this.currentSample.insProduct)).filter(m => { let num0 = mySet1.size; - if(m.templateId!=null){ + if (m.templateId != null) { mySet1.add(JSON.stringify({ template: m.template, templateId: m.templateId @@ -465,55 +489,70 @@ mcList.push(b) } }) + let count = 0 mcList.forEach(b => { for (var c in a.template) { for (var i = 0; i < b.v.mc.cs; i++) { for (var i2 = 0; i2 < b.v.mc.rs; i2++) { if (a.template[c].c === b.c + i && a.template[c].r === b.r + i2) { - a.template[c].v.v = this.HaveJson(b).v.v - a.template[c].v.ps = this.HaveJson(b).v.ps + let bb = this.HaveJson(b) + a.template[c].v.v = bb.v.v + a.template[c].v.ps = bb.v.ps + a.template[c].v.fc = bb.v.fc + a.template[c].v.fs = bb.v.fs + a.template[c].v.ht = bb.v.ht + a.template[c].mc = count break } } } } + count++ }) }) this.tableList.forEach(a => { let dels = new Set() let ids = [] + let set3 = new Set() a.template.forEach(b => { - if (b.v.ps != undefined && b.v.ps.value === '妫�楠岄」') { - let count = 0 - for (let i in this.currentSample.insProduct) { - if (this.currentSample.insProduct[i].templateId === a.templateId && this.currentSample - .insProduct[i].inspectionItem === b.v.v) { - let count2 = 0 - for (var c in a.template) { - if (a.template[c].r === b.r && a.template[c].v.ps != undefined && a.template[c].v.ps.value === '妫�楠屽瓙椤�') { - if (this.currentSample.insProduct[i].inspectionItemSubclass === a.template[c].v.v) { - break - } + let size1 = set3.size + let size2 = set3.add(b.r).size + if (size1 < size2) { + let str = '' + let count4 = 0 + a.template.forEach(c => { + if (b.r === c.r) { + if (c.v.ps != undefined && c.v.ps.value === '妫�楠岄」') { + if (count4 === 0) { + str += c.v.v + count4 += 1 } - count2++ - } - if (count2 <= a.template.length) { - ids.push({ - r: b.r, - id: this.currentSample.insProduct[i].id, - product: this.currentSample.insProduct[i] - }) - break + } else if (c.v.ps != undefined && c.v.ps.value === '妫�楠屽瓙椤�') { + if (count4 === 1) { + str += c.v.v + count4 += 1 + } } } - count++ - } - if (count === this.currentSample.insProduct.length) { - dels.add(b.r) + }) + if (str != '') { + for (let i in this.currentSample.insProduct) { + if (this.currentSample.insProduct[i].templateId === a.templateId && this.currentSample + .insProduct[i].inspectionItem + this.currentSample.insProduct[i].inspectionItemSubclass === str) { + ids.push({ + r: b.r, + id: this.currentSample.insProduct[i].id, + product: this.currentSample.insProduct[i] + }) + break + } + if(i == this.currentSample.insProduct.length-1){ + dels.add(b.r) + } + } } } }) - console.log(dels); dels.forEach(del => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === del) { @@ -522,16 +561,38 @@ } } }) - /* ids.forEach(id => { + ids.forEach(id => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === id.r) { a.template[b].i = id.id if (a.template[b].v.ps != undefined && a.template[b].v.ps.value === '鍗曚綅') { a.template[b].v.v = id.product.unit } + if (a.template[b].v.ps != undefined && a.template[b].v.ps.value === '璇曢獙鏂规硶') { + a.template[b].v.v = id.product.methodS + } } } - }) */ + }) + let set2 = new Set() + a.template.forEach(b => { + let size1 = set2.size + let size2 = set2.add(b.mc).size + if (b.mc != undefined && size1 < size2) { + b.v.mc.rs = 0 + b.v.mc.cs = 0 + a.template.forEach(c => { + if (b.mc === c.mc) { + if (b.r === c.r) { + b.v.mc.cs += 1 + } + if (b.c === c.c) { + b.v.mc.rs += 1 + } + } + }) + } + }) }) this.tableList.forEach(a => { let arrs = [] @@ -542,7 +603,8 @@ conclusionList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '缁撹') finalList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '鏈�缁堝��') a.template.forEach(b => { - if (b.v.ps != undefined && b.v.ps.value === '搴忓彿') { + if (b.v.ps != undefined && b.v.ps.value === '搴忓彿' && (b.v.mc == undefined || Object.keys(b.v.mc) + .length === 4)) { count1++ b.v.v = count1 } @@ -552,36 +614,38 @@ if (b.v.ps != undefined && b.v.ps.value === '妫�楠屽��') { b.v.v = '' b.u = '' - // this.param[b.i].insValue.push(b) + this.param[b.i].insValue.push(b) } if (b.v.ps != undefined && b.v.ps.value === '璁$畻鍊�') { b.v.v = '' - // this.param[b.i].comValue.push(b) + this.param[b.i].comValue.push(b) } - if (b.v.ps != undefined && b.v.ps.value === '璁惧') { + if (b.v.ps != undefined && b.v.ps.value === '璁惧缂栫爜') { b.v.v = '' - // this.param[b.i].equipValue = b + this.param[b.i].equipValue.push(b) + } + if (b.v.ps != undefined && b.v.ps.value === '璁惧鍚嶇О') { + b.v.v = '' + this.param[b.i].equipName.push(b) } if (b.v.ps != undefined && b.v.ps.value === '鏈�缁堝��') { b.v.v = '' - /* if (b.i === undefined) { + if (b.i === undefined) { for (var c in this.param) { this.param[c].resValue = b } } else { this.param[b.i].resValue = b - } */ + } } if (b.v.ps != undefined && b.v.ps.value === '缁撹') { - /* for (var c in this.param) { - this.param[c].insResult = b - } + this.param[b.i].insResult = b conclusionList.forEach((n, i) => { if (n.r == b.r && n.c == b.c) { b.v.f = `(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})` } - }) */ + }) } set.add(b.r) if (b.v.f) { @@ -599,6 +663,10 @@ arrs.push(arr) }) a.arr = arrs + this.tableWidth = 0 + for (let i = 0; i < arrs[0].length; i++) { + this.tableWidth += (a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i]) + } }) this.currentSample.insProduct.forEach(a => { try { @@ -615,7 +683,16 @@ } } catch (e) {} try { - this.param[a.id].equipValue.v.v = a.insProductResult.equipValue + let equipValue = JSON.parse(a.insProductResult.equipValue) + for (var i = 0; i < equipValue.length; i++) { + this.param[a.id].equipValue[i].v.v = equipValue[i].v + } + } catch (e) {} + try { + let equipName = JSON.parse(a.insProductResult.equipName) + for (var i = 0; i < equipName.length; i++) { + this.param[a.id].equipName[i].v.v = equipName[i].v + } } catch (e) {} try { this.param[a.id].resValue.v.v = a.lastValue @@ -660,10 +737,9 @@ } }) }) - // console.log('褰撳墠鐨勬柟娉�',item.methodName,item.r,item.c,this.excelMethodList) - if (item.methodName == '鑷畾涔夋柟娉�' && item.v.ps && item.v.ps.value == '缁撹') { - if (this.tableList.find(m => m.id == item.i)) { - let ask = this.tableList.find(m => m.id == item.i).ask.split('&'); + if (item.methodName == '鑷畾涔夋柟娉�' && item.v.ps!=undefined && item.v.ps.value == '缁撹') { + if (this.currentSample.insProduct.find(m => m.id == item.i)) { + let ask = this.currentSample.insProduct.find(m => m.id == item.i).ask.split('&'); let res = Object.values(comValue)[0] let comp = ask.map((m, i) => { if (m.includes('=')) { @@ -687,17 +763,7 @@ } else { item.v.v = 0 } - this.$axios.post(this.$api.insOrderPlan.saveInsContext, this.param, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code == 201) { - this.$message.error('淇濆瓨澶辫触') - return - } - this.$message.success('宸蹭繚瀛�') - }) + this.saveInsContext() } } else { let comResult = 0; @@ -735,20 +801,28 @@ valueList.forEach(b => { str = str.replace(b.name, b.value) }) - comResult = eval(str) + if(item.v.f.includes('/')>-1){ + if(Object.getOwnPropertyNames(comValue).length==valueList.length){ + comResult = eval(str) + }else{ + comResult = '' + } + }else{ + comResult = eval(str) + } break; } list.forEach(a => { - if (a[0].r == item.r) { + if (a[0].r == item.r && comResult != '') { for (var b in a) { if (a[b].c == item.c) { - a[b].v.v = parseFloat(comResult.toFixed(2)) + a[b].v.v = parseFloat(comResult.toFixed(3)) break } } } }) - this.changeInput(comResult, `${code.split('-')[0]}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� + this.changeInput(comResult, `${id}-${item.r}-${item.c}-${pId}`) //鏀瑰彉鏈�缁堝�� } } }) @@ -769,9 +843,9 @@ let start = mode.split(':')[0] let end = mode.split(':')[1] c0 = this.comparisonList.find(j => j.label == start.split('')[0]).value - r0 = start.split('')[1] - 1 + r0 = start.replace(/[a-zA-Z]/g, "") - 1 c1 = this.comparisonList.find(j => j.label == end.split('')[0]).value - r1 = end.split('')[1] - 1 + r1 = end.replace(/[a-zA-Z]/g, "") - 1 for (let i = Number(r0); i <= Number(r1); i++) { for (let u = Number(c0); u <= Number(c1); u++) { valueList.push({ @@ -780,13 +854,12 @@ }) } } - item.valueList = valueList; } else { valueList = [] let regex = /[=\+\-\*\%\(\)\/\s]/g let mode = item.v.f.replace(regex, ' ').split(' '); mode.filter(m => m && !Number(m)).forEach(m => { - let r = m.split('')[1] - 1 + let r = m.replace(/[a-zA-Z]/g, "") - 1 let c = this.comparisonList.find(j => j.label == m.split('')[0]).value valueList.push({ c, @@ -838,9 +911,11 @@ }, getEquipOptions(e, id) { if (e) { - let category = this.currentSample.insProduct.find(m => m.id == id).deviceGroup + this.equipOptions = [] + let product = this.currentSample.insProduct.find(m => m.id == id) this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, { - category + inspectionItem: product.inspectionItem, + inspectionItemSubclass: product.inspectionItemSubclass }).then(res => { if (res.code === 200 && res.data) { this.equipOptions = res.data.map(m => { @@ -921,6 +996,30 @@ console.error(error) this.submitLoading = false; }) + }, + saveInsContext(){ + this.$axios.post(this.$api.insOrderPlan.saveInsContext, this.param, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) { + this.$message.error('淇濆瓨澶辫触') + return + } + this.$message.success('宸蹭繚瀛�') + }) + }, + changeEquip(val,n){ + for(let i in this.equipOptions){ + if(this.equipOptions[i].value === val){ + for(let i1 in this.param[n.i].equipName){ + if(this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r){ + this.param[n.i].equipName[i1].v.v = this.equipOptions[i].label + } + } + } + } } } } -- Gitblit v1.9.3