Commit 7d21af0a authored by 李苏's avatar 李苏 💬

新增备用状态溯源排查

parent 536adcdb
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
* @Description: * @Description:
* @Author: lisu lisu@gavelinfo.com * @Author: lisu lisu@gavelinfo.com
* @LastEditors: lisu lisu@gavelinfo.com * @LastEditors: lisu lisu@gavelinfo.com
* @LastEditTime: 2024-10-11 15:15:37 * @LastEditTime: 2024-10-14 11:05:14
* @FilePath: /zghywpc-vue/src/views/yhlywsytst/yhlywsytst/index.vue * @FilePath: /zghywpc-vue/src/views/yhlywsytst/yhlywsytst/index.vue
--> -->
<template> <template>
<div v-loading='loading' :element-loading-text='loadingText' element-loading-spinner="el-icon-loading" <div v-loading='loading' :element-loading-text='loadingText' element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)" ref="app" class="min_full nullbp"> element-loading-background="rgba(0, 0, 0, 0.8)" ref="app" class="min_full nullbp">
<!-- 弹框组件dialig --> <!-- 弹框组件dialig -->
<czDialog @save='getSave' :app='this' v-if='showDialog' /> <czDialog @save='getSave' :app='this' v-if='showDialog' />
<div class="bigTitle"> <div class="bigTitle">
一回路异物溯源态势图 一回路异物溯源态势图
</div> </div>
...@@ -279,8 +279,77 @@ ...@@ -279,8 +279,77 @@
<span>溯源排查</span> <span>溯源排查</span>
<b class="data-title-right">]</b> <b class="data-title-right">]</b>
</div> </div>
<div class="full " style="height: calc(100% - 14px);padding-top: 12px;padding-left: 10px;"> <div class="full flex " style="height: calc(100% - 14px);padding-top: 12px;padding-left: 10px;">
<el-row :gutter="20" class="search-row-1" style="width: 100%;"> <div class="search-item flex1">
<span class="search-span-r">
<span
style="color: rgb(255, 73, 73); margin-right: 4px;position: absolute;left: 4px;">*</span>功能位置</span>
<el-input v-model="sypcQueryParams.gnwz"></el-input>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
最小管径</span>
<el-input v-model="sypcQueryParams.gj"></el-input>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
近期引入</span>
<RelSelect placeholder='' style="width: 100%;" :optionsData="[
{id:true,name:'是'},
{id:false,name:'否'}
]" filterable clearable :match="{value:'id',label:'name'}"
v-model='sypcQueryParams.isrRecentImport'>
</RelSelect>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
规格</span>
<RelSelect placeholder='' style="width: 100%;" src='sbgl/usbxx/init/gg' filterable clearable
:match="{value:'name',label:'name'}" v-model='sypcQueryParams.gg'></RelSelect>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
材质</span>
<AuxInput :overlayClick='czOverlayClick' :match="{
label: 'cz',
value:'cz'
}" :form='sypcQueryParams' v-model="sypcQueryParams.cz" :onlyInput='true' />
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
流动特性</span>
<RelSelect placeholder='' style="width: 100%;" src='ywxxgl/uywxx/init/ldtx ' filterable clearable
:match="{value:'id',label:'name'}" v-model='sypcQueryParams.ldtx'></RelSelect>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
机组状态</span>
<RelSelect @change="kshZtChange" placeholder='' style="width: 100%;" src='ywxxgl/uywxx/init/zt ' filterable clearable
:match="{value:'id',label:'name'}" v-model='sypcQueryParams.kshZt'></RelSelect>
</div>
<div class="search-item flex1 ">
<span class="search-span-r">
备用设备状态</span>
<!--
/sbgl/usbxx/init/zt/by-->
<RelSelect placeholder='' multiple style="width: 100%;" src='/sbgl/usbxx/init/zt/by' filterable clearable
:match="{value:'id',label:'name'}" v-model='sypcQueryParams.byZts'></RelSelect>
</div>
<div class="search-item " style="padding-top: 18px;margin-right: 0px;width: 200px;" >
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="sypc()" type="primary">排查</el-button>
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="czmx()" type="primary">重置</el-button>
<el-button @click="savePdf()"
style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;" size="mini"
type="primary">日志</el-button>
</div>
<!-- <el-row :gutter="20" class="search-row-1" style="width: 100%;">
<el-col :span="3" class="search-col"> <el-col :span="3" class="search-col">
<div class="search-item"> <div class="search-item">
<span class="search-span"><span <span class="search-span"><span
...@@ -314,7 +383,6 @@ ...@@ -314,7 +383,6 @@
<el-col :span="3" class="search-col"> <el-col :span="3" class="search-col">
<div class="search-item"> <div class="search-item">
<span class="search-span">材质:</span> <span class="search-span">材质:</span>
<!-- <el-input v-model="sypcQueryParams.cz"></el-input> -->
<AuxInput :overlayClick='czOverlayClick' :match="{ <AuxInput :overlayClick='czOverlayClick' :match="{
label: 'cz', label: 'cz',
value:'cz' value:'cz'
...@@ -336,8 +404,6 @@ ...@@ -336,8 +404,6 @@
:match="{value:'id',label:'name'}" v-model='sypcQueryParams.kshZt'></RelSelect> :match="{value:'id',label:'name'}" v-model='sypcQueryParams.kshZt'></RelSelect>
</div> </div>
</el-col> </el-col>
<!-- <el-col :span="2" class="search-col flex-center">
</el-col> -->
<el-col :span="3" class="search-col flex-center" style="padding-left: 20px;"> <el-col :span="3" class="search-col flex-center" style="padding-left: 20px;">
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;" <el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="sypc()" type="primary">排查</el-button> size="mini" @click="sypc()" type="primary">排查</el-button>
...@@ -347,29 +413,9 @@ ...@@ -347,29 +413,9 @@
style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;" size="mini" style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;" size="mini"
type="primary">日志</el-button> type="primary">日志</el-button>
</el-col> </el-col>
<!-- <el-col :span="2" class="search-col flex-center" style="padding-left: 20px;">
<el-button style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" @click="czmx()" type="primary">重置</el-button>
</el-col>
<el-col :span="2" class="search-col flex-center" style="padding-left: 20px;">
<el-button @click="savePdf()" style="background-color: rgba(7,32,96,0.0);border: 1px solid #68D8FE; color: #68D8FE;"
size="mini" type="primary">日志</el-button>
</el-col> -->
</el-row>
<!--
<el-row :gutter="24" class="search-row-1" style="width: 100%;">
<el-col :span="20" class="search-col">
</el-col>
<el-col :span="4" class="search-col flex-center" style="padding: 0px;">
</el-col>
</el-row> --> </el-row> -->
</div> </div>
</div> </div>
</div> </div>
...@@ -518,6 +564,9 @@ ...@@ -518,6 +564,9 @@
czDialog czDialog
}, },
computed: { computed: {
byZts(){
return this.sypcQueryParams.byZts
},
optionSingleHeight() { optionSingleHeight() {
return { return {
singleHeight: 25 singleHeight: 25
...@@ -531,7 +580,7 @@ ...@@ -531,7 +580,7 @@
data() { data() {
return { return {
/* 材质辅助输入*/ /* 材质辅助输入*/
cztypeConfig:{ cztypeConfig: {
}, },
/* pdf-*/ /* pdf-*/
...@@ -551,7 +600,8 @@ ...@@ -551,7 +600,8 @@
ksh33: ksh33, ksh33: ksh33,
queryParams: { queryParams: {
jzbm: '', jzbm: '',
kshZt: '' kshZt: '',
}, },
sypcQueryParams: { sypcQueryParams: {
gnwz: '', gnwz: '',
...@@ -560,7 +610,8 @@ ...@@ -560,7 +610,8 @@
ldtx: '', ldtx: '',
gg: '', gg: '',
cz: '', cz: '',
kshZt:'' kshZt: '',
byZts:''
// ywName: '异物1RIS0218', // ywName: '异物1RIS0218',
// jzbm: '1', // jzbm: '1',
// kshZt:'QT' // kshZt:'QT'
...@@ -596,6 +647,15 @@ ...@@ -596,6 +647,15 @@
} }
}, },
watch: { watch: {
byZts(val){
if(val){
if(this.sypcQueryParams.kshZt){
}else{
this.sypcQueryParams.byZts=''
}
}
},
flowDirection() { flowDirection() {
if (this.allFlowObject) { if (this.allFlowObject) {
this.allFlowObject.forEach((item) => { this.allFlowObject.forEach((item) => {
...@@ -620,13 +680,18 @@ ...@@ -620,13 +680,18 @@
} }
}, },
methods: { methods: {
getSave(str){ kshZtChange(va){
if(!va){
this.sypcQueryParams.byZts=''
}
},
getSave(str) {
console.log(str) console.log(str)
this.showDialog=false this.showDialog = false
this.sypcQueryParams.cz=str this.sypcQueryParams.cz = str
}, },
czOverlayClick(){ czOverlayClick() {
this.showDialog=true this.showDialog = true
}, },
czmx() { czmx() {
this.viewer.scene.traverse((model) => { this.viewer.scene.traverse((model) => {
...@@ -664,27 +729,29 @@ ...@@ -664,27 +729,29 @@
// const linkSource = `data:application/pdf;base64,${base64String}` // const linkSource = `data:application/pdf;base64,${base64String}`
// var linkSource = `data:application/pdf;base64,${base64String}` // var linkSource = `data:application/pdf;base64,${base64String}`
// 将 Base64 编码的字符串转换为 Blob 对象 // 将 Base64 编码的字符串转换为 Blob 对象
function base64ToBlob(base64, contentType) { function base64ToBlob(base64, contentType) {
var byteCharacters = window.atob(base64); var byteCharacters = window.atob(base64);
var byteNumbers = new Array(byteCharacters.length); var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) { for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i); byteNumbers[i] = byteCharacters.charCodeAt(i);
} }
var byteArray = new Uint8Array(byteNumbers); var byteArray = new Uint8Array(byteNumbers);
return new Blob([byteArray], {type: contentType}); return new Blob([byteArray], {
} type: contentType
});
}
// 创建 Blob 对象并生成 URL // 创建 Blob 对象并生成 URL
var blob = base64ToBlob(base64String, 'application/pdf'); var blob = base64ToBlob(base64String, 'application/pdf');
var url = URL.createObjectURL(blob); var url = URL.createObjectURL(blob);
// 设置 <a> 标签的 href 属性 // 设置 <a> 标签的 href 属性
var link = document.createElement('a'); var link = document.createElement('a');
link.href = url; link.href = url;
link.target = '_blank'; // 在新标签页中打开 link.target = '_blank'; // 在新标签页中打开
link.click(); link.click();
link.remove() link.remove()
// const downloadLink = document.createElement('a'); // const downloadLink = document.createElement('a');
// downloadLink.href = linkSource; // downloadLink.href = linkSource;
...@@ -787,18 +854,18 @@ ...@@ -787,18 +854,18 @@
// this.sylbshow = true // this.sylbshow = true
// this.clickTag(this.jzReMaterialQue[0].model.name) // this.clickTag(this.jzReMaterialQue[0].model.name)
let model=false let model = false
let sbxxCode=this.sypcQueryParams.gnwz.replace(/\s+/g, ''); let sbxxCode = this.sypcQueryParams.gnwz.replace(/\s+/g, '');
this.jzReMaterialQue.forEach(jzitem=>{ this.jzReMaterialQue.forEach(jzitem => {
if(jzitem.model&&jzitem.model.name&&jzitem.model.name==sbxxCode){ if (jzitem.model && jzitem.model.name && jzitem.model.name == sbxxCode) {
model=jzitem.model model = jzitem.model
} }
}) })
if(model!==false){ if (model !== false) {
this.viewer.cameraControl.fitTo(model); this.viewer.cameraControl.fitTo(model);
this.sylbshow = true this.sylbshow = true
this.clickTag(model.name) this.clickTag(model.name)
}else{ } else {
this.viewer.cameraControl.fitTo(this.jzReMaterialQue[0].model); this.viewer.cameraControl.fitTo(this.jzReMaterialQue[0].model);
this.sylbshow = true this.sylbshow = true
this.clickTag(this.jzReMaterialQue[0].model.name) this.clickTag(this.jzReMaterialQue[0].model.name)
...@@ -913,7 +980,7 @@ ...@@ -913,7 +980,7 @@
return str; return str;
}, },
apiGetLbjxx() { apiGetLbjxx() {
this.lbjlistData=[] this.lbjlistData = []
this.$post('sbgl/usbxx/query', { this.$post('sbgl/usbxx/query', {
kshSbxxCode: this.getFirstPartOfString(this.selectedModel.name), kshSbxxCode: this.getFirstPartOfString(this.selectedModel.name),
}).then(res => { }).then(res => {
...@@ -921,7 +988,7 @@ ...@@ -921,7 +988,7 @@
}) })
}, },
apiGetYwxx() { apiGetYwxx() {
this.ywlistData =[] this.ywlistData = []
this.$post('ywxxgl/uywxx/query', { this.$post('ywxxgl/uywxx/query', {
sbxxCode: this.getFirstPartOfString(this.selectedModel.name), sbxxCode: this.getFirstPartOfString(this.selectedModel.name),
}).then(res => { }).then(res => {
...@@ -929,7 +996,7 @@ ...@@ -929,7 +996,7 @@
}) })
}, },
apiGetJxxx() { apiGetJxxx() {
this.jxlistData=[] this.jxlistData = []
this.$post('jxgl/usbjx/query', { this.$post('jxgl/usbjx/query', {
sbxxCode: this.getFirstPartOfString(this.selectedModel.name), sbxxCode: this.getFirstPartOfString(this.selectedModel.name),
}).then(res => { }).then(res => {
...@@ -937,7 +1004,7 @@ ...@@ -937,7 +1004,7 @@
}) })
}, },
apiGetBgxx() { apiGetBgxx() {
this.bglistData =[] this.bglistData = []
this.$post('sbgl/usbbg/query', { this.$post('sbgl/usbbg/query', {
sbxxCode: this.getFirstPartOfString(this.selectedModel.name), sbxxCode: this.getFirstPartOfString(this.selectedModel.name),
}).then(res => { }).then(res => {
...@@ -1434,17 +1501,17 @@ ...@@ -1434,17 +1501,17 @@
this.viewer.scene.traverse(model => { this.viewer.scene.traverse(model => {
if (model.isMesh) { if (model.isMesh) {
if(model.name=='2RCP0620-2R8015014'){ if (model.name == '2RCP0620-2R8015014') {
model.name='2RCP0620A' model.name = '2RCP0620A'
} }
if(model.name=='2RCP0620-2R8015052'){ if (model.name == '2RCP0620-2R8015052') {
model.name='2RCP0620B' model.name = '2RCP0620B'
} }
if(model.name=='1RCP0620-1R8015045'){ if (model.name == '1RCP0620-1R8015045') {
model.name='1RCP0620A' model.name = '1RCP0620A'
} }
if(model.name=='1RCP0620-1R8015909'){ if (model.name == '1RCP0620-1R8015909') {
model.name='1RCP0620B' model.name = '1RCP0620B'
} }
model.oldmaterial = model.material.clone() model.oldmaterial = model.material.clone()
} }
...@@ -1504,51 +1571,51 @@ ...@@ -1504,51 +1571,51 @@
return return
} }
try{ try {
let model let model
let modelIndex = intersects.findIndex(item=>item.object.name!==''&&item.object.visible==true) let modelIndex = intersects.findIndex(item => item.object.name !== '' && item.object.visible == true)
if(modelIndex!=-1){ if (modelIndex != -1) {
rconsole.log(`当前选中${modelIndex}`) rconsole.log(`当前选中${modelIndex}`)
model=intersects[modelIndex].object model = intersects[modelIndex].object
}else{ } else {
console.log('本次选中不存在name的节点') console.log('本次选中不存在name的节点')
} }
/* 当模型隐藏 不继续触发*/ /* 当模型隐藏 不继续触发*/
if (model.visible == false) { if (model.visible == false) {
rconsole.log('当前对象已屏蔽') rconsole.log('当前对象已屏蔽')
return return
} }
this.selectedModel = model this.selectedModel = model
// model.visible=false // model.visible=false
/* 执行并情况材料队列 */ /* 执行并情况材料队列 */
this.reMaterialQue.forEach(item => { this.reMaterialQue.forEach(item => {
item.revert() item.revert()
}) })
this.reMaterialQue.splice(0, this.reMaterialQue.length) this.reMaterialQue.splice(0, this.reMaterialQue.length)
/* 添加材质模型队列*/ /* 添加材质模型队列*/
let reMaterialQueItem = { let reMaterialQueItem = {
model, model,
material: model.material.clone(), material: model.material.clone(),
revert: function() { revert: function() {
this.model.material = this.material this.model.material = this.material
} }
} }
this.reMaterialQue.push(reMaterialQueItem) this.reMaterialQue.push(reMaterialQueItem)
model.material = new THREE.MeshPhongMaterial({ model.material = new THREE.MeshPhongMaterial({
color: new THREE.Color('rgba(69, 255, 128, 0.8)'), color: new THREE.Color('rgba(69, 255, 128, 0.8)'),
transparent: true, transparent: true,
opacity: 0.8, opacity: 0.8,
wireframe: false, wireframe: false,
}) })
}catch(e){ } catch (e) {
rconsole.log(e) rconsole.log(e)
} }
...@@ -1692,6 +1759,7 @@ ...@@ -1692,6 +1759,7 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.search-span { .search-span {
min-width: 60px; min-width: 60px;
float: right; float: right;
...@@ -1770,6 +1838,10 @@ ...@@ -1770,6 +1838,10 @@
border: 1px solid #68D8FE; border: 1px solid #68D8FE;
background-color: rgba(0, 0, 0, 0.0); background-color: rgba(0, 0, 0, 0.0);
color: #68D8FE; color: #68D8FE;
// height: 30px!important;
}
.is-disabled{
background-color: rgba(0, 0, 0, 0.0)!important;
} }
.nullbp { .nullbp {
...@@ -2033,6 +2105,17 @@ ...@@ -2033,6 +2105,17 @@
} }
.search-span-r {
color: #68D8FE !important;
font-size: 12px;
}
.search-item {
display: block;
margin-right: 15px;
}
.lbbt { .lbbt {
height: 4vh; height: 4vh;
width: 100%; width: 100%;
...@@ -2047,9 +2130,11 @@ ...@@ -2047,9 +2130,11 @@
background-color: #26c6f0 !important; background-color: #26c6f0 !important;
color: #fff !important; color: #fff !important;
} }
.el-icon-search{
.el-icon-search {
color: #61d2f7; color: #61d2f7;
} }
.lbbody { .lbbody {
height: calc(100% - 4vh); height: calc(100% - 4vh);
overflow: hidden; overflow: hidden;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment