From a0b1fdec2bc5ddad11e981936b80d0fdf1e4bc69 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 03 七月 2024 09:25:06 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before into master --- src/components/do/b1-ins-order/add.vue | 385 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 357 insertions(+), 28 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 5b552c9..d6e3822 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -70,6 +70,23 @@ line-height: 24px; margin-top: 5px; } + .circulateTable { + display: flex; + flex-direction: row; + justify-content: space-between; + .opticalProject { + width: 38%; + } + .temperatureList { + width: 60%; + .temperatureListTitle { + display: flex; + flex-direction: row; + justify-content: space-between; + line-height: 30px; + } + } + } </style> <style> .ins_order_add .el-input-group__append, @@ -414,12 +431,47 @@ @selection-change="selectProduct" style="margin-bottom: 10px;" @select="upProductSelect" :row-class-name="tableRowClassName" v-loading="getProductLoad" @select-all="handleAll"> <el-table-column type="selection" width="65" :selectable="selectable" v-if="active==1"></el-table-column> - <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column> + <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>妫�楠岄」</span> + <el-input + v-if="active==1" + v-model="inspectionItem" + @input="searchFilterList" + size="mini" + placeholder="璇疯緭鍏�"/> + </div> + </template> + </el-table-column> <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" - show-overflow-tooltip></el-table-column> + show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>妫�楠岄」瀛愰」</span> + <el-input + v-if="active==1" + v-model="inspectionItemSubclass" + @input="searchFilterList" + size="mini" + placeholder="璇疯緭鍏�"/> + </div> + </template> + </el-table-column> <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" min-width="130" show-overflow-tooltip :filters="filters" :filter-method="filterHandler"></el-table-column> <el-table-column prop="methodS" label="璇曢獙鏂规硶" min-width="120" show-overflow-tooltip> + <template slot="header" slot-scope="scope"> + <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> + <span>璇曢獙鏂规硶</span> + <el-input + v-if="active==1" + v-model="methodS" + @input="searchFilterList" + size="mini" + placeholder="璇疯緭鍏�"/> + </div> + </template> </el-table-column> <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="鍗曚环" width="100" show-overflow-tooltip></el-table-column> @@ -702,16 +754,98 @@ </el-row> </span> </el-dialog> + <el-dialog title="娓╁害寰幆瑕佹眰濉啓" :visible.sync="circulateShow" width="900px" :before-close="beforeCirculateShowClose" :show-close="false"> + <div class="search" style="display: flex;background: transparent;"> + <div class="search_thing"> + <div class="search_label">淇濇俯鏃堕棿锛�</div> + <div class="search_input"> + <el-input v-model="circulateForm.entrustTime" size="small" placeholder="" type="number"></el-input> + </div> + </div> + <div class="search_thing"> + <div class="search_label">寰幆娆℃暟锛�</div> + <div class="search_input"> + <el-input v-model="circulateForm.entrustNum" size="small" placeholder="" type="number"></el-input> + </div> + </div> + <div class="search_thing"> + <div class="search_label">娓╁害鐐癸細</div> + <div class="search_input"> + <el-input @blur="changeTemperatureData" v-model="circulateForm.entrustPoint" size="small" placeholder="" type="number"></el-input> + </div> + </div> + </div> + <div class="circulateTable"> + <div class="opticalProject"> + <div style="line-height: 30px;">鍏夌氦椤圭洰</div> + <el-divider></el-divider> + <div> + <el-table + ref="multipleTable" + border + :header-cell-style="{'text-align':'center'}" + :cell-style="{'text-align':'center'}" + :data="opticalProject" + tooltip-effect="dark" + style="width: 100%" + @selection-change="handleSelectionChange"> + <el-table-column + type="selection" + width="55"> + </el-table-column> + <el-table-column prop="value" label="鍏夌氦椤圭洰" show-overflow-tooltip></el-table-column> + </el-table> + </div> + </div> + <div class="temperatureList"> + <div class="temperatureListTitle"> + <span>娓╁害鐐归泦鍚�(璇锋寜鐓ч『搴忓~鍐欙紝20鈩冨繀椤讳负棣栦綅)</span> + <span> + <el-button type="primary" size="mini" @click="addTemperatureData">鏂板</el-button> + <el-button size="mini" @click="deleteTemperatureData">鍒犻櫎</el-button> + </span> + </div> + <el-divider></el-divider> + <el-table + :data="temperatureData" + border + :header-cell-style="{'text-align':'center'}" + :cell-style="{'text-align':'center'}" + style="width: 100%"> + <el-table-column prop="date" label="娓╁害鐐�(鈩�)" width="120px"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.temperaturePoint" clearable placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column prop="name" label="瑕佹眰(dB/Km)"> + <template slot-scope="scope"> + <span>x</span> + <el-select v-model="scope.row.askSymbol" placeholder="璇烽�夋嫨" size="small" style="width: 120px"> + <el-option v-for="item in temperatureDataList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + <el-input size="small" v-model="scope.row.askNum" clearable placeholder="璇疯緭鍏�" style="width: 120px"></el-input> + </template> + </el-table-column> + </el-table> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="spliceData">淇濆瓨</el-button> + </span> + </el-dialog> </div> </template> <script> - import ValueTable from '../../tool/value-table.vue' - import fiberOpticConfig from './fiberoptic-config.vue' - import equipConfig from './equip-config.vue' - import cableConfig from './cable-config.vue' - import Vue from 'vue' - export default { +import ValueTable from '../../tool/value-table.vue' +import fiberOpticConfig from './fiberoptic-config.vue' +import equipConfig from './equip-config.vue' +import cableConfig from './cable-config.vue' +import Vue from 'vue' +import {iuCharts} from "../../../util/echarts"; + +export default { components: { ValueTable, fiberOpticConfig, @@ -816,8 +950,10 @@ addSampleDia: false, count: 1, productList: [], + productList0: [], bsm1DiaList: [], productIds: [], + productListSelected: [], getProductLoad: false, saveLoad: false, templateDia: false, @@ -865,7 +1001,27 @@ model: null, standardMethodListId: null, symbolList:[ - 'RTS','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] + 'RTS','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'], + inspectionItem:null, + inspectionItemSubclass:null, + methodS:null, + circulateShow:false, + circulateForm:{ + entrustTime: '', + entrustNum: '', + entrustPoint: '' + }, + isBsm2Val2:false, + opticalProject: [], // 娓╁害寰幆寮规鍏夌氦椤圭洰鍒楄〃 + opticalProjectList: [], // 娓╁害寰幆寮规鍏夌氦椤圭洰閫変腑鐨勬暟缁� + temperatureData: [], // 娓╁害寰幆寮规娓╁害鐐归泦鍚堝垪琛� + temperatureDataList: [ + {label: '<', value: '<'}, + {label: '鈮�', value: '鈮�'}, + {label: '锛�', value: '锛�'}, + {label: '鈮�', value: '鈮�'}, + {label: '锛�', value: '锛�'}, + ] } }, watch: { @@ -940,6 +1096,131 @@ } }, methods: { + spliceData () { + if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) { + this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + return + } + + const opticalProjectList = JSON.parse(JSON.stringify(this.opticalProjectList)) + let entrustTime = this.circulateForm.entrustTime + let entrustNum = this.circulateForm.entrustNum + let temperaturePoint1 = JSON.parse(JSON.stringify(this.temperatureData)) + temperaturePoint1.forEach(t => { + if (!t.temperaturePoint || !t.askSymbol || !t.askNum) { + throw this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + } + }) + let temperaturePoint = JSON.parse(JSON.stringify(this.temperatureData)) + temperaturePoint.unshift({temperaturePoint: 20}) + let askArr = [] + let opticalProjectArr = [] + // 鎷兼帴瑕佹眰鍊糰sk + opticalProjectList.forEach(o => { + opticalProjectArr.push(o.value) + temperaturePoint.forEach(t => { + if (!t.askSymbol) { + const askObj = t.temperaturePoint + '鈩�' + ',' + o.value + ',' + null + askArr.push(askObj) + } else { + const askObj = t.temperaturePoint + '鈩�' + ',' + o.value + ',' + t.askSymbol + t.askNum + askArr.push(askObj) + } + }) + }) + askArr.push(this.circulateForm.entrustNum) + const ask = askArr.join(';') + // 鎷兼帴瑕佹眰鎻忚堪tell + let askNum = [] + let temperaturePointList = [] + let temperaturePointList2 = [] + entrustTime = entrustTime + 'h' + entrustNum = entrustNum + '娆�' + temperaturePoint.forEach(t => { + t.temperaturePoint = t.temperaturePoint + '鈩�' + temperaturePointList.push(t.temperaturePoint) + }) + temperaturePoint1.forEach(t => { + t.temperaturePoint = t.temperaturePoint + '鈩�' + askNum.push(t.askSymbol + t.askNum + 'dB/Km') + temperaturePointList2.push(t.temperaturePoint) + }) + let additionArr = [] + askNum.forEach(a => { + additionArr.push(temperaturePointList2.join(',') + a) + }) + temperaturePointList2.unshift(20 + '鈩�') + const tell = '娓╁害鑼冨洿:' + temperaturePointList2.join(',') + ';' + '淇濇俯鏃堕棿:' + entrustTime + ';' + '寰幆娆℃暟:' + + entrustNum + ';' + '鍏夌氦(' + opticalProjectArr.join(',') + ')' + '闄勫姞琛板噺缁濆鍊�:' + additionArr.join(';') + this.productList.forEach(item => { + if (item.inspectionItem === '娓╁害寰幆') { + item.ask = ask + item.tell = tell + } + }) + console.log('ask---', ask) + console.log('tell---', tell) + this.circulateShow = false + }, + beforeCirculateShowClose () { + if (!this.circulateForm.entrustNum || !this.circulateForm.entrustTime || !this.circulateForm.entrustPoint || this.opticalProjectList.length === 0 || this.temperatureData.length === 0) { + this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + return + } + let temperaturePoint1 = JSON.parse(JSON.stringify(this.temperatureData)) + temperaturePoint1.forEach(t => { + if (!t.temperaturePoint || !t.askSymbol || !t.askNum) { + throw this.$message.error('璇峰~鍐欏畬鏁存暟鎹�') + } + }) + }, + handleSelectionChange(val) { + this.opticalProjectList = val; + }, + addTemperatureData () { + const obj = {} + this.temperatureData.push(obj) + }, + deleteTemperatureData () { + if (this.temperatureData.length > 0) { + this.temperatureData = this.temperatureData.slice(0,-1) + } + }, + changeTemperatureData () { + const length = this.temperatureData.length + const entrustPoint = Number(this.circulateForm.entrustPoint) + if (entrustPoint > length) { + for (let i = 0; i < (entrustPoint - length); i++) { + const obj = {} + this.temperatureData.push(obj) + } + } else if (entrustPoint < length) { + const deleteNum = length - entrustPoint + this.temperatureData = this.temperatureData.slice(0,-deleteNum) + } + }, + searchFilterList () { + const vtw = { + inspectionItem: this.inspectionItem, // 妫�楠岄」 + inspectionItemSubclass: this.inspectionItemSubclass, // 妫�楠岄」瀛愰」 + methodS: this.methodS, // 璇曢獙鏂规硶 + } + const isHaveValue = Object.values(vtw).some(item => { + return item + }) + if (isHaveValue) { + for(let i in vtw) { + if (vtw[i]) { + this.productList = this.productList0.filter((item) => { + return item[i] && item[i].includes(vtw[i]) + }) + } + } + } else { + // 娌℃湁鏌ヨ鏉′欢鏃舵覆鏌撴墍鏈夋暟鎹� + this.productList = this.productList0 + } + }, getAuthorizedPerson() { this.$axios.get(this.$api.user.getUserMenu).then(res => { let data = [] @@ -1046,6 +1327,19 @@ } else if (!this.sampleList.every(m => m.standardMethodListId)) { this.$message.error('璇烽�夋嫨妫�楠屾爣鍑�') } else { + const select = this.selectTree.split(' - ') + const productListSelected = this.productListSelected.some(item => item.inspectionItem === '娓╁害寰幆') + let isHaveBushing = '' + this.sampleList.forEach(item => { + if (!item.bushing || item.bushing.length === 0) { + isHaveBushing = false + } + }) + console.log('isHaveBushing===', isHaveBushing) + if (productListSelected && select[2] === '鍏夌紗' && isHaveBushing === false) { + this.$message.error('鍏夌紗娓╁害寰幆椤圭洰蹇呴』杩涜鍏夌氦閰嶇疆') + return + } let sampleList = this.HaveJson(this.sampleList) let projectNum = this.totalArr.filter(a => a.state == 1).length if(projectNum==0){ @@ -1099,18 +1393,36 @@ }) }else if(type==1){ let arr = this.editTable.filter(b => b.sampleId == item.id) - arr.forEach(f => { - if(a.ask.includes(f.symbolItem)){ - let ask = calBack(a.ask, f.symbolItem,f.value) - if (ask) { - a.ask = ask + for (var i=0;i<arr.length;i++){ + if(a.ask){ + if(a.ask.includes(arr[i].symbolItem)){ + let ask = calBack(a.ask, arr[i].symbolItem,arr[i].value) + if (ask) { + a.ask = ask + } + let tell = this.handleTell(a.tell, arr[i].symbolItem,arr[i].value) + if (tell) { + a.tell = tell + } } - let tell = this.handleTell(a.tell, f.symbolItem,f.value) - if (tell) { - a.tell = tell - } + }else{ + this.$message.error('瑕佹眰鍊间负绌猴紝闇�瑕佸幓鏍囧噯搴撶淮鎶わ紒') } - }) + } + // arr.forEach(f => { + // if(a.ask){ + // if(a.ask.includes(f.symbolItem)){ + // let ask = calBack(a.ask, f.symbolItem,f.value) + // if (ask) { + // a.ask = ask + // } + // let tell = this.handleTell(a.tell, f.symbolItem,f.value) + // if (tell) { + // a.tell = tell + // } + // } + // }else{} + // }) } } }) @@ -1295,7 +1607,8 @@ this.$axios.post(this.$api.insOrder.upInsOrderOfState, { state, id: this.currentId, - companyId:this.addObj.companyId + companyId:this.addObj.companyId, + laboratory:this.addObj.laboratory }, { headers: { 'Content-Type': 'application/json' @@ -1525,6 +1838,7 @@ this.$refs.sampleTable.doLayout() }, selectProduct(val) { + this.productListSelected = val this.productIds = [] val.forEach(a => { this.productIds.push(a.id) @@ -1554,7 +1868,6 @@ this.$refs.productTable.toggleRowSelection(row, true); }, upProductSelect(selection, row) { - console.log('danxuan', row) this.bsm1DiaList = [] row.state = row.state == 1 ? 0 : 1 if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 1) { @@ -1567,7 +1880,7 @@ } else if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 0) { row.bsm1 = false } - if (row.bsm === '1' && row.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length > 1 && row.state === 1) { + if (row.bsm === '1' && row.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && this.sampleList.length > 1 && row.state === 1&&!this.isBsm2Val2) { this.bsm2 = true this.bsm1Dia = true if (this.bsm2Val2.length === 0) { @@ -1575,9 +1888,9 @@ this.computationalPairing(this.sampleList.length) this.bsm2Val2 = this.HaveJson(this.bsm2Val3) } - } else if (row.bsm === '1' && row.inspectionItem === '鐔旀帴鎹熻��' && row.state === 1 && this.sampleList.length > 1) { + } else if (row.bsm === '1' && row.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && row.state === 1 && this.sampleList.length > 1) { this.bsm2 = false - } else if (row.bsm === '1' && row.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length < 2) { + } else if (row.bsm === '1' && row.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && this.sampleList.length < 2) { this.$message.error('鏍峰搧鏁伴噺涓嶈冻澶熻繘琛岄厤瀵规搷浣�') row.state = row.state == 1 ? 0 : 1 this.$refs.productTable.toggleRowSelection(row, false) @@ -1603,7 +1916,21 @@ } return item }) + const select = this.selectTree.split(' - ') + if (row.inspectionItem === '娓╁害寰幆' && select[2] === '鍏夌紗' && row.state === 1) { + this.circulateShow = true; + return + } else if (row.inspectionItem === '娓╁害寰幆' && select[2] === '鍏夌紗' && row.state === 0) { + this.circulateShow = false; + } this.getProNum() + }, + searchProject () { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鍏夌氦椤圭洰" + }).then(res => { + this.opticalProject = res.data + }) }, permute(nums) { const result = []; @@ -1758,6 +2085,7 @@ row.insProduct = this.HaveJson(res.data) this.getProductLoad = false this.productList = row.insProduct + this.productList0 = JSON.parse(JSON.stringify(this.productList)) this.$refs.sampleTable.setCurrentRow(row) setTimeout(() => { this.productList.forEach(a => { @@ -1765,6 +2093,7 @@ }) }, 200) }) + this.searchProject() }, changeModel() { this.sampleList.forEach(a => { @@ -1824,7 +2153,6 @@ } }, handleAll(e) { - console.log('鍏ㄩ��') if (e.length > 0) { this.productList.map(m => { m.state = 1 @@ -1849,7 +2177,7 @@ } else if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 0) { p.bsm1 = false } - if (p.bsm === '1' && p.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length > 1 && p.state === 1) { + if (p.bsm === '1' && p.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && this.sampleList.length > 1 && p.state === 1&&!this.isBsm2Val2) { this.bsm2 = true this.bsm1Dia = true if (this.bsm2Val2.length === 0) { @@ -1857,9 +2185,9 @@ this.computationalPairing(this.sampleList.length) this.bsm2Val2 = this.HaveJson(this.bsm2Val3) } - } else if (p.bsm === '1' && p.inspectionItem === '鐔旀帴鎹熻��' && p.state === 1 && this.sampleList.length > 1) { + } else if (p.bsm === '1' && p.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && p.state === 1 && this.sampleList.length > 1) { this.bsm2 = false - } else if (p.bsm === '1' && p.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length < 2) { + } else if (p.bsm === '1' && p.inspectionItem === '鍏夌氦鎺ュご鎹熻��' && this.sampleList.length < 2) { this.$message.error('鏍峰搧鏁伴噺涓嶈冻澶熻繘琛岄厤瀵规搷浣�') this.$refs.productTable.clearSelection() return @@ -2102,6 +2430,7 @@ return } } + this.isBsm2Val2 = true; } // if(this.bsm3){ // if(!this.bsm3Val){ -- Gitblit v1.9.3