From 7907bc0ec1207e8409893f53f417b4cdc8a69460 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期二, 11 六月 2024 18:54:24 +0800 Subject: [PATCH] 完成电缆配置页面 --- src/components/do/b1-ins-order/add.vue | 43 ++++ src/components/do/b1-ins-order/cable-config.vue | 148 ++++++++++++++++++ src/main.js | 4 src/components/do/b1-ins-order/fiberoptic-config.vue | 232 ++++++++++++++++++++++++++++ 4 files changed, 420 insertions(+), 7 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 210ac64..e28f310 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -100,7 +100,7 @@ <template> <div class="ins_order_add"> - <div v-show="!configShow&&!equipConfigShow"> + <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> <el-row class="title"> <el-col :span="6" style="padding-left: 20px;">濮旀墭鍗曚俊鎭� 鎬讳环锛�<span style="color: #3A7BFA">锟{total}}</span></el-col> @@ -116,6 +116,8 @@ <el-button size="medium" @click="templateDia=true" v-show="active==1"> <span style="color: #3A7BFA;">淇濆瓨妯℃澘</span> </el-button> + <el-button size="medium" type="primary" @click="openCableConfig" + v-if="active==1&&PROJECT=='瑁呭鐢电紗'">鐢电紗閰嶇疆</el-button> <el-button size="medium" type="primary" @click="openEquipConfig" v-if="active==1">瀛愭牱鍝侀厤缃�</el-button> <el-button size="medium" type="primary" @click="openConfig" @@ -132,7 +134,7 @@ </el-col> </el-row> </div> - <div class="search" v-show="!configShow&&!equipConfigShow"> + <div class="search" v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> <el-row> <el-col class="search_thing" :span="6"> <div class="search_label">濮旀墭缂栧彿锛�</div> @@ -300,7 +302,7 @@ </el-col> </el-row> </div> - <div v-show="!configShow&&!equipConfigShow"> + <div v-show="!configShow&&!equipConfigShow&&!cableConfigShow"> <el-table class="el-table sampleTable" ref="sampleTable" :data="sampleList" height="250px" tooltip-effect="dark" border @selection-change="selectSample" highlight-current-row @row-click="rowClick" style="margin-top: 10px;"> <el-table-column type="selection" width="60" :selectable="selectable" v-if="active==1"></el-table-column> @@ -489,6 +491,7 @@ v-if="configShow" :active="active" /> <equipConfig :currentId="currentId" v-if="equipConfigShow" :active="active"/> + <cableConfig v-if="cableConfigShow" :active="active" /> <el-dialog title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose"> <div class="body" style="max-height: 60vh;"> <el-row v-if="bsm1"> @@ -565,11 +568,13 @@ 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' export default { components: { ValueTable, fiberOpticConfig, - equipConfig + equipConfig, + cableConfig }, props: { active: { @@ -699,6 +704,7 @@ bsm1Val: null, bsm1Dia: false, equipConfigShow: false, + cableConfigShow:false, bsm2: false, bsm2Val: null, bsm2Dia: false, @@ -1572,6 +1578,35 @@ // }) } }, + openCableConfig(){ + if (this.active === 1) { + if (this.sampleIds.length === 0) { + this.$message.error("鏈�夋嫨鏍峰搧") + return + } + this.cableConfigShow = true + } else { + if (this.sampleId === null) { + this.$message.error('鏈�変腑鏍峰搧') + return + } + // this.$axios.post(this.$api.insBushing.selectBushingBySampleId, { + // sampleId: this.sampleId + // }).then(res => { + // if (res.data.length === 0) { + // this.$message.error('璇ユ牱鍝佹病鏈夐厤缃厜绾�') + // return + // } + // for (var i in this.sampleList) { + // if (this.sampleList[i].id = this.sampleId) { + // this.sampleList[i].bushing = res.data + // break + // } + // } + // this.configShow = true + // }) + } + }, upBsm1(val) { let sections = JSON.parse(this.bsmRow.section); let asks = JSON.parse(this.bsmRow.ask); diff --git a/src/components/do/b1-ins-order/cable-config.vue b/src/components/do/b1-ins-order/cable-config.vue new file mode 100644 index 0000000..652cb96 --- /dev/null +++ b/src/components/do/b1-ins-order/cable-config.vue @@ -0,0 +1,148 @@ +<template> + <div class="ins_order_config"> + <div> + <el-row class="title"> + <el-col :span="6" style="padding-left: 20px;">鐢电紗閰嶇疆</el-col> + <el-col :span="18" style="text-align: right;"> + <el-button size="medium" @click="outConfig"> + <span style="color: #3A7BFA;">杩� 鍥�</span> + </el-button> + </el-col> + </el-row> + </div> + <div class="search"> + <el-radio-group v-model="currentTab" size="small" style="margin-left: 20px;"> + <el-radio-button label="缁濈紭">缁� 缂�</el-radio-button> + <el-radio-button label="鎶ゅ">鎶� 濂�</el-radio-button> + </el-radio-group> + <div class="search_thing" v-if="currentTab=='缁濈紭'"> + <div class="search_label">鑺暟锛�</div> + <el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="vaule0"></el-input> + </div> + <el-button size="small" type="primary"@click="openAdd" style="margin-left: 20px;margin-right: 20px;" v-if="currentTab=='缁濈紭'"> + 纭� 瀹�</el-button> + <div class="search_thing"> + <div class="search_label">妫�楠屾爣鍑嗭細</div> + <el-select v-model="vaule0" placeholder="璇烽�夋嫨妫�楠屾爣鍑�" size="small" + clearable> + <el-option v-for="item in standardList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" type="primary"@click="openAdd">淇� 瀛�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" + :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" + :componentData="componentData" :key="upIndex" /> + </div> + </div> +</template> + +<script> +import ValueTable from '../../tool/value-table.vue' +export default { + components: { + ValueTable + }, + props: { + active: { + type: Number, + default: () => 0 + }, + }, + data(vm) { + return { + standardList:[], + vaule0:'', + currentTab:'缁濈紭', + componentData: { + entity: { + number: null, + department: null, + laboratory: null, + orderBy: { + field: 'id', + order: 'desc' + } + }, + isIndex: true, + showSelect: true, + select: true, + do: [], + tagField: {}, + linkEvent: { + }, + selectField: { + laboratory: { + select: [] + }, + unit: { + select: [] + }, + + }, + requiredAdd: [], + requiredUp: [] + }, + upIndex:0, + } + }, + methods: { + outConfig() { + this.$parent.cableConfigShow = false + }, + } +} +</script> + +<style scoped> +.ins_order_config { + width: 100%; + height: 100%; + overflow-y: auto; + overflow-x: hidden; + } + + .ins_order_config::-webkit-scrollbar { + width: 0; + } + + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + width: 300px; + display: flex; + align-items: center; + } + + .search_label { + width: 100px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 70px); + } + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 26px - 24px); + padding: 20px; + } +</style> diff --git a/src/components/do/b1-ins-order/fiberoptic-config.vue b/src/components/do/b1-ins-order/fiberoptic-config.vue index c20a16e..633a1c2 100644 --- a/src/components/do/b1-ins-order/fiberoptic-config.vue +++ b/src/components/do/b1-ins-order/fiberoptic-config.vue @@ -202,6 +202,75 @@ </el-col> </el-row> </div> + <el-dialog title="妫�娴嬪埌鐗规畩椤癸紝璇蜂綔鍑轰互涓嬮�夋嫨" :visible.sync="bsm1Dia" width="500px" :show-close="false" :before-close="beforeClose"> + <div class="body" style="max-height: 60vh;"> + <el-row v-if="bsm1"> + <el-col class="search_thing" :span="22"> + <div class="search_label"><span class="required-span">* </span>鎶ゅ瀵嗗害锛�</div> + <div class="search_input"> + <el-radio-group v-model="bsm1Val" @input="upBsm1"> + <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" :label="a"></el-radio> + </el-radio-group> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">瑕佹眰鍊硷細</div> + <div class="search_input" v-show="bsm1Val!==null&&bsm1Val!==''"> + <el-radio-group v-model="bsm1Val" @input="upBsm1"> + <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" + :label="a">{{JSON.parse(bsmRow.ask)[ai]}}</el-radio> + </el-radio-group> + </div> + </el-col> + <el-col class="search_thing" :span="22"> + <div class="search_label">鍗曚环锛�</div> + <div class="search_input" v-show="bsm1Val!==null&&bsm1Val!==''"> + <el-radio-group v-model="bsm1Val" @input="upBsm1"> + <el-radio v-for="(a, ai) in JSON.parse(bsmRow.section)" :key="ai" + :label="a">{{JSON.parse(bsmRow.price)[ai]}}</el-radio> + </el-radio-group> + </div> + </el-col> + </el-row> + <el-row v-if="bsm2"> + <el-col class="search_thing" :span="22"> + <div class="search_label" style="width: 220px;"><span class="required-span">* </span>鏍峰搧鐔旀帴閰嶅鏁伴噺锛�</div> + <div class="search_input"> + <el-input-number size="medium" v-model="bsm2Val" :min="1" :max="bsm2Val3.length" :precision="0" style="width: 70%;" + :controls="false" @change="bsm2Up"></el-input-number> + <span>MAX锛歿{bsm2Val3.length}}</span> + </div> + </el-col> + <el-col style="margin-top: 6px;"> + <el-col v-for="(a,ai) in bsm2Val2" :key="ai"> + <el-col :span="10"> + <el-select v-model="a[0]" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="(item,index) in sampleList" + :key="index" + :label="index+1" + :value="index+1"> + </el-option> + </el-select> + </el-col> + <!-- <el-col :span="10" class="pairing">{{a[0]}}</el-col> --> + <el-col :span="4" class="pairing" style="border: 0;color: rgba(0, 0, 0, 0.2);">鈥斺��</el-col> + <el-col :span="10"> + <el-select v-model="a[1]" placeholder="璇烽�夋嫨" size="small" style="width: 100%;"> + <el-option + v-for="(item,index) in sampleList" + :key="index" + :label="index+1" + :value="index+1"> + </el-option> + </el-select> + </el-col> + <!-- <el-col :span="10" class="pairing">{{a[1]}}</el-col> --> + </el-col> + </el-col> + </el-row> + </div> + </el-dialog> </div> </template> @@ -215,6 +284,7 @@ }, data() { return { + type:1, saveLoad: false, packageInfo: { radio: 1, @@ -251,7 +321,17 @@ currentDetectionItems:null, mireStandardLoading:false, multiFiberList:[], - isAskOnlyRead:true + isAskOnlyRead:true, + bsm1Dia: false, + bsmRow: null, + bsm1: false, + bsm1Val: null, + bsm2: false, + bsm2Val: null, + bsm2Dia: false, + bsm2Val2: [], + bsm2Val3: [], + sampleIds:[] } }, computed: { @@ -546,6 +626,7 @@ }) }, rowClickFiber(row, column, event,type){ + this.type = type if(this.active===1){ if(type==0){ let standard = null; @@ -567,6 +648,12 @@ }else{ this.isAskOnlyRead = true; } + } + } + if(this.type==1){ + if (this.active !== 1) { + this.sampleIds = [] + this.sampleIds.push(row.id) } } this.currentDetectionItems = row @@ -633,6 +720,51 @@ }); } } + if(this.type==1){ + this.detectionItems.forEach(p => { + if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 1) { + if (p.section.indexOf('[') > -1) { + this.bsmRow = this.HaveJson(p) + } + this.bsm1 = true + this.bsm1Dia = true + } else if (p.bsm === '1' && p.section !== '' && p.section !== null && p.state === 0) { + this.bsm1 = false + } + if (p.bsm === '1' && p.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length > 1 && p.state === 1) { + this.bsm2 = true + this.bsm1Dia = true + if(this.bsm2Val2.length === 0){ + this.bsm2Val = (this.sampleList.length - 1) * this.sampleList.length / 2 + this.computationalPairing(this.sampleList.length) + this.bsm2Val2 = this.HaveJson(this.bsm2Val3) + } + } else if (p.bsm === '1' && p.inspectionItem === '鐔旀帴鎹熻��' && p.state === 1) { + this.bsm2 = false + } + }) + if (e.length > 0) { + this.sampleList.map(item => { + if (this.sampleIds.indexOf(item.id) > -1) { + item.insProduct.map(m => { + m.state = 1 + return m; + }) + } + return item + }) + } else { + this.sampleList.map(item => { + if (this.sampleIds.indexOf(item.id) > -1) { + item.insProduct.map(m => { + m.state = 0 + return m; + }) + } + return item + }) + } + } this.$nextTick(() => { this.$refs.productTable.doLayout() }) @@ -657,6 +789,37 @@ return m; }); } + if(this.type==1){ + if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 1) { + if (row.section.indexOf('[') > -1) { + this.bsmRow = this.HaveJson(row) + } + this.bsm1 = true + this.bsm1Dia = true + } else if (row.bsm === '1' && row.section !== '' && row.section !== null && row.state === 0) { + this.bsm1 = false + } + if (row.bsm === '1' && row.inspectionItem === '鐔旀帴鎹熻��' && this.sampleList.length > 1 && row.state === 1) { + this.bsm2 = true + this.bsm1Dia = true + if(this.bsm2Val2.length === 0){ + this.bsm2Val = (this.sampleList.length - 1) * this.sampleList.length / 2 + this.computationalPairing(this.sampleList.length) + this.bsm2Val2 = this.HaveJson(this.bsm2Val3) + } + } else if (row.bsm === '1' && row.inspectionItem === '鐔旀帴鎹熻��' && row.state === 1) { + this.bsm2 = false + } + }else{ + this.bsm1Dia = false + } + }, + computationalPairing(n){ + const nums = []; + for (let i = 1; i <= n; i++) { + nums.push(i); + } + this.bsm2Val3 = this.HaveJson(this.permute(nums)) }, setClassName({ column }) { if (column.type == 'selection' && !this.isAllDisabled) { @@ -691,6 +854,73 @@ }) this.$message.success('宸蹭繚瀛�') this.$emit('saveFiberopticConfig') + }, + beforeClose(done){ + if (this.bsm1) { + if (this.bsm1Val === null || this.bsm1Val === '') { + this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊') + return + } + } + if (this.bsm2) { + if (this.bsm2Val2.length === 0) { + this.$message.error('鐗规畩椤圭洰蹇呴』澶勭悊') + return + } + let set = new Set() + for (let i=0;i<this.bsm2Val2.length;i++){ + let num0 = set.size + set.add(JSON.stringify(this.bsm2Val2[i])) + let num1 = set.size + if(num1==num0){ + this.$message.error('鍏宠仈椤圭洰涓嶈兘閲嶅') + return + } + set.add(JSON.stringify(this.bsm2Val2[i].reverse())) + let num2 = set.size + if(num1==num2){ + this.$message.error('鍏宠仈椤圭洰涓嶈兘閲嶅') + return + } + } + } + done() + }, + upBsm1(val) { + let sections = JSON.parse(this.bsmRow.section); + let asks = JSON.parse(this.bsmRow.ask); + let tells = JSON.parse(this.bsmRow.tell); + let manHours = JSON.parse(this.bsmRow.manHour); + let prices = JSON.parse(this.bsmRow.price); + for (var a in sections) { + if (val === sections[a]) { + this.productList.forEach(p => { + if (p.id === this.bsmRow.id) { + p.section = sections[a] + p.ask = asks[a] + p.tell = tells[a] + p.manHour = manHours[a] + p.price = prices[a] + } + }) + break + } + } + }, + bsm2Up(val){ + let list = [] + for(let a=1;a < this.bsm2Val3.length + 1;a++){ + list.push(a) + } + let set = new Set() + let size1 = set.length + while(set.size < val){ + set.add(Math.ceil(Math.random() * this.bsm2Val3.length)) + } + this.bsm2Val2 = [] + for(let a of set){ + this.bsm2Val2.push(this.HaveJson(this.bsm2Val3[a-1])) + } } } } diff --git a/src/main.js b/src/main.js index 799f9b5..16416d4 100644 --- a/src/main.js +++ b/src/main.js @@ -15,11 +15,11 @@ Vue.prototype.PROJECT = '妫�娴嬩腑蹇�' //椤圭洰鍚嶇О锛氭娴嬩腑蹇冦�佽澶囩數缂� //鏈湴 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; -const javaApi = 'http://192.168.144.200:8001';//鏉� +// const javaApi = 'http://192.168.144.200:8001';//鏉� // const javaApi = 'http://192.168.11.249:8001';//寮� // const javaApi = 'http://192.168.11.2:8001';//鏌� // const javaApi = 'http://127.0.0.1:8001';//鏅� -// const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� +const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� //鑳滀簯鏈嶅姟鍣� // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; // const javaApi = 'http://122.114.52.69:8001'; -- Gitblit v1.9.3