From f75c4df0ca8cdee5c15f0ecd4288825f35b19bf1 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 25 三月 2024 15:01:17 +0800 Subject: [PATCH] 完成样品模板回显为table功能 --- src/components/do/b1-inspect-order-plan/Inspection.vue | 295 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 245 insertions(+), 50 deletions(-) diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index 20e6813..e72e9ee 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -43,11 +43,53 @@ .el-drawer__header{ color: #303133; } + .center{ + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + } + .tables{ + width: 800px; + } + .tables td{ + height: 40px; + width: 100px; + text-align: center; + font-size: 14px; + } + .content{ + display: flex; + width: 100%; + height: 100%; + align-items: center; + justify-content: left; + padding: 2px; + box-sizing: border-box; + } + .content-h-0{ + justify-content: center; + } + .content-h-1{ + justify-content: start; + } + .content-h-2{ + justify-content: end; + } + .content-v-0{ + align-items: center; + } + .content-v-1{ + align-items: start; + } + .content-v-2{ + align-items: end; + } </style> <template> <div> <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">鏍峰搧璇︽儏</el-col> + <el-col :span="12" style="padding-left: 20px;">妫�楠屽崟璇︽儏</el-col> <el-col :span="12" style="text-align: right;"> <el-button size="small" type="primary" @click="sampleVisible=true">鏍峰搧鍒囨崲</el-button> <el-button size="small" type="primary" @click="taskVisible=true">浠诲姟鍒囨崲</el-button> @@ -55,82 +97,96 @@ </el-col> </el-row> <div class="search"> - <el-form :inline="true" :model="searchForm" class="form-inline" label-width="90px"> + <el-form :inline="true" :model="searchForm" class="form-inline" label-width="100px"> <el-form-item label="濮旀墭缂栧彿:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="insOrder.entrustCode" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="鏍峰搧缂栧彿:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="currentSample.sampleCode" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="鏍峰搧鍚嶇О:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="currentSample.sample" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="鏍峰搧鏁伴噺:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="sampleProduct.length" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="涓嬪彂鏃堕棿:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="insOrder.sendTime" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="绱ф�ョ▼搴�:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="insOrder.typeName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> <el-form-item label="绾﹀畾鏃堕棿:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> + <el-input clearable v-model="insOrder.appointed" disabled size="small" placeholder="璇疯緭鍏�"></el-input> </el-form-item> - <el-form-item label="褰撳墠鏍峰搧鏁�:"> - <el-input clearable v-model="searchForm.sampleName" disabled size="small" placeholder="璇疯緭鍏�"></el-input> - </el-form-item> + <el-form-item label="褰撳墠鏍峰搧浣嶆暟:" > + <span v-if="currentSample.index">{{ `NO.${currentSample.index}` }}</span> + </el-form-item> </el-form> </div> <div class="center"> + <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index"> + <tbody> + <tr v-for="(m,i) in item.arr" :key="i"> + <td + v-for="(n,j) in m" + :key="j" + :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};font-family:${n.v.ff};color:${n.v.fc};font-size:${n.v.fs}px;width:${item.style.columnlen['0']}px;height:${item.style.rowlen[i]}px;font-wight:${n.v.bl?'bold':''};`"> + <div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`"> + <span>{{ n.v.v}}</span> + </div> + </td> + </tr> + </tbody> + </table> </div> <el-drawer title="鏍峰搧鍒囨崲" :visible.sync="sampleVisible" - :destroy-on-close="true" - size="55%"> - <el-table class="el-table" ref="productTable" :data="productList" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeSample"> - <el-table-column type="index" align="center" label="搴忓彿" width="70" :key="Math.random()"> + size="50%"> + <el-table class="el-table" ref="productTable" :data="sampleProduct" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeSample" :row-class-name="tableRowClassName"> + <el-table-column type="index" align="center" label="搴忓彿" width="70px" :key="Math.random()"> </el-table-column> - <el-table-column prop="inspectionItemSubclass" label="鏍峰搧缂栧彿" min-width="100" + <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿" min-width="100px" show-overflow-tooltip></el-table-column> - <el-table-column prop="sonLaboratory" label="妫�娴嬬姸鎬�" min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="method" label="妫�娴嬩汉" min-min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="unit" label="鏄惁鐣欐牱" min-width="100" show-overflow-tooltip></el-table-column> + <el-table-column prop="model" label="鏍峰搧鍨嬪彿" min-width="100px" show-overflow-tooltip></el-table-column> + <el-table-column prop="insState" label="妫�娴嬬姸鎬�" min-width="100px" show-overflow-tooltip> + <template slot-scope="scope"> + <el-tag v-for="(item, i) in typeList" :key="i" v-if="item.value == scope.row.insState" + :type="item.type" size="medium" style="margin-right: 5px;">{{item.label}}</el-tag> + </template> + </el-table-column> + <el-table-column prop="isLeave" label="鏄惁鐣欐牱" min-width="100px" show-overflow-tooltip> + <template slot-scope="scope"> + <span>{{ scope.row.isLeave==0?'鍚�':'鏄�' }}</span> + </template> + </el-table-column> + <!-- 妫�楠屽崟浼氭湁涓�涓槸鍚︽湁閰嶅鏍峰搧瀛楁鎺у埗鏄剧ず --> + <el-table-column prop="joinModel" label="閰嶅鏍峰搧鍨嬪彿" min-width="130px" show-overflow-tooltip v-if="insOrder.mating>0"></el-table-column> + <el-table-column prop="joinName" label="閰嶅鏍峰搧鍚嶇О" min-width="130px" show-overflow-tooltip v-if="insOrder.mating>0"></el-table-column> + <el-table-column prop="joinNum" label="閰嶅鏍峰搧鏁伴噺" min-width="130px" show-overflow-tooltip v-if="insOrder.mating>0"></el-table-column> </el-table> </el-drawer> <el-drawer title="浠诲姟鍒囨崲" :visible.sync="taskVisible" - :destroy-on-close="true" - size="55%"> - <el-table class="el-table" ref="productTable" :data="productList" height="100%" tooltip-effect="dark" border highlight-current-row @row-click="handleChangeTask"> - <el-table-column prop="inspectionItemSubclass" label="濮旀墭缂栧彿" min-width="100" - show-overflow-tooltip></el-table-column> - <el-table-column prop="sonLaboratory" label="鏍峰搧缂栧彿" min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="method" label="鏍峰搧鍚嶇О" min-min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="unit" label="绱ф�ョ▼搴�" min-width="100" show-overflow-tooltip> - <template slot-scope="scope"> - <el-tag - :type="scope.row.type" size="medium">{{scope.row.label}}</el-tag> - </template> - </el-table-column> - <el-table-column prop="unit" label="鐘舵��" min-width="100" show-overflow-tooltip> - <template slot-scope="scope"> - <el-tag - :type="scope.row.type" size="medium">{{scope.row.label}}</el-tag> - </template> - </el-table-column> - <el-table-column prop="method" label="绾﹀畾鏃堕棿" min-min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="method" label="涓嬪彂鏃堕棿" min-min-width="100" show-overflow-tooltip></el-table-column> - </el-table> + size="45%"> + <ValueTable class="value-table" ref="insOrderPlan" + :url="$api.insOrderPlan.selectInsOrderPlanList" :componentData="componentData" + :key="upIndex"/> </el-drawer> </div> </template> <script> + import ValueTable from '../../tool/value-table.vue' export default { - props: ['orderId'], + props: ['sonLaboratory','orderId'], + components: { + ValueTable, + }, data() { return { sampleVisible:false, @@ -139,24 +195,163 @@ sampleName: null, state: null }, - productList:[], - id: 0 + id: 0, + componentData: { + entity: { + sonLaboratory: null, + userId: 0 + }, + isIndex: true, + showSelect: true, + select: false, + selectMethod:'handleChangeTask', + sort: false, + do: [], + isPage:false, + linkEvent: {}, + tagField: { + type: { + select: [] + }, + insState: { + select: [] + }, + }, + selectField: {}, + requiredAdd: [], + requiredUp: [] + }, + upIndex: 0, + insOrder: {}, + sampleProduct: [], + typeList:[], + urgentList:[], + currentSample:{},//褰撳墠鏍峰搧淇℃伅 + tableList:[], } }, created() { - this.id = this.orderId + this.componentData.entity.sonLaboratory = this.sonLaboratory; + this.id = this.orderId; }, mounted() { - + this.getTypeDicts() + this.getInsStateDicts() + }, + watch:{ + id(val){ + this.$axios.post(this.$api.insOrderPlan.doInsOrder,{ + id: val + }).then(res=>{ + this.insOrder = res.data.insOrder; + this.urgentList.forEach(m=>{ + if(m.value==this.insOrder.type){ + this.insOrder.typeName = m.label + } + }) + this.sampleProduct = res.data.sampleProduct + this.currentSample = this.sampleProduct[0] + this.handleTableData() + }) + } }, methods: { - handleChangeSample(row){ - console.log(1111111111,row) + handleChangeSample(row, column, event){ + this.currentSample = row; + this.handleTableData() this.sampleVisible = false; }, handleChangeTask(row){ - console.log(222222222,row) + this.id = row[0].id; this.taskVisible = false; + }, + getTypeDicts() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "绱ф�ョ▼搴�" + }).then(res => { + let data = res.data + data.forEach(ele => { + if (ele.value === '0') { + ele.type = 'success' + } else if (ele.value === '1') { + ele.type = 'warning' + } else if (ele.value === '2') { + ele.type = 'danger' + } + }) + this.urgentList = data; + this.componentData.tagField.type.select = data + }) + }, + getInsStateDicts() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "妫�楠屼换鍔$姸鎬�" + }).then(res => { + let data = res.data + data.forEach(ele => { + //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃 + if (['2', '5'].includes(ele.value)) { + ele.type = 'success' + } else if (['1', '3'].includes(ele.value)) { + ele.type = 'warning' + } else if (['0', '4'].includes(ele.value)) { + ele.type = 'danger' + } + }) + this.typeList = data + this.componentData.tagField.insState.select = data + }) + }, + tableRowClassName({ row, rowIndex }){ + row.index = rowIndex + 1; + }, + handleTableData(){ + const mySet1 = new Set(); + this.tableList = JSON.parse(JSON.stringify(this.currentSample.insProduct)).filter(m=>{ + let num0 = mySet1.size; + mySet1.add(JSON.stringify({ + inspectionItem:m.inspectionItem, + templateId:m.templateId + })) + let num1 = mySet1.size; + if(num1>num0){ + return m + } + }) + this.tableList.map(item=>{ + const mySet0 = new Set(); + let arr = []; + let arrItem = []; + item.template.forEach((m,i)=>{ + let num0 = mySet0.size; + mySet0.add(m.r) + let num1 = mySet0.size; + if(num0<num1){ + if(arrItem.length>0){ + arr.push(arrItem) + arrItem = [] + } + if(m.v.mc){ + if(m.v.mc.rs||m.v.mc.cs){ + arrItem.push(m) + } + }else{ + arrItem.push(m) + } + }else{ + if(m.v.mc){ + if(m.v.mc.rs||m.v.mc.cs){ + arrItem.push(m) + } + }else{ + arrItem.push(m) + } + } + }) + arr.push(arrItem) + item.arr = arr; + return item + }) } } } -- Gitblit v1.9.3