能效诊断

This commit is contained in:
jiangyinzhi
2024-07-10 10:25:32 +08:00
parent b7aa6f87f1
commit 04f0606430
262 changed files with 58693 additions and 1 deletions
+842
View File
@@ -0,0 +1,842 @@
<template>
<div>
<!-- <Header :title="title" @onClickLeft="onClickLeft" /> -->
<!-- 头部 -->
<div class="list">
<div class="header">
<div class="header-name">
<img src="@/assets/TaskFilling1.png" alt="" />
{{ item.customerName || item.consName}}
</div>
<div class="header-address">
<img src="@/assets/TaskFilling2.png" alt="" />
<div class="address-warp">地址: {{ item.detailAddress || item.elecAddr }}</div>
</div>
<div class="header-title">{{ typeName }}</div>
</div>
<!-- 选择 -->
<div class="select">
<van-cell>
<template #title>
<div
style="width: 100%; display: flex; justify-content: space-between"
>
<span class="custom-text">
<div class="line"></div>
建筑信息
</span>
<!-- <van-tag type="warning" v-if="!buildId" class="custom-type" >未填写</van-tag> -->
</div>
</template>
</van-cell>
<div class="main1-content" @click="constructionInfo">
<img src="@/assets/ggjz/1.png" alt="" />
<div class="main1-content-text">建筑信息</div>
</div>
<van-cell style="margin-top: 20px">
<template #title>
<span class="custom-text">
<div class="line"></div>
主要用能设备
</span>
<!-- <span class="custom-text"><img src="@/assets/TaskFilling3.png" alt="" />用能设备信息</span> -->
</template>
</van-cell>
<div class="main2-flex">
<div
class="main2-content"
v-for="(item, index) in iconList"
:key="index"
>
<img :src="item.icon" alt="" @click="facilityManage(item)" />
<div class="main2-content-text" @click="facilityManage(item)">
{{ item.name }}
</div>
<div class="img-del" @click="iconDelete(item, index)">
<img src="@/assets/数据采集-减号.png" alt="" />
</div>
</div>
<div
class="main2-content"
@click="energyadd"
v-if="iconList.length < 7"
>
<img src="@/assets/数据采集-新增.png" alt="" />
<div class="main2-content-text">新增</div>
</div>
</div>
<van-cell style="margin-top: 20px">
<template #title>
<span class="custom-text">
<div class="line"></div>
能耗数据信息
</span>
<!-- <span class="custom-text"
><img src="@/assets/TaskFilling4.png" alt="" />能耗数据信息</span> -->
</template>
</van-cell>
<div class="main1-content" @click="energyConsumption">
<img src="@/assets/ggjz/9.png" alt="" />
<div class="main1-content-text">能耗数据</div>
</div>
</div>
</div>
<div class="btn">
<van-button
size="large"
class="faqi"
@click="saveAllInfo"
v-if="taskType < 3"
>
提交
</van-button>
</div>
</div>
</template>
<script>
// import Header from "@/components/headerNew";
import { getCurrentPersonInfoAPI } from '@/api/customerIformation.js'
import { getSingleTaskInfo } from '@/api/customer.js'
import { changeSubStateType, taskList } from '@/api/api'
// import { Dialog } from
import { Notify } from 'vant'
import { getCode } from '@/api/common.js'
import {
getCustomerInfo,
getEnergyEquip,
addEnergyEquip,
getSearchList,
editEnergyEquip,
} from '@/api/energyConsumption'
import { dataMode } from '@/views/facilityManage/common.js'
export default {
name: 'TaskFilling',
components: {
// Header,
},
data() {
return {
showList: [
{
id: 'focusAir',
name: '空调-集中式',
icon: require('@/assets/ggjz/2.png'),
systemTypes: '01',
typeId: '1',
},
{
id: 'multipleAir',
name: '空调-多联式',
icon: require('@/assets/ggjz/3.png'),
systemTypes: '02',
typeId: '8',
},
{
id: 'fissionAir',
name: '空调-分体式',
icon: require('@/assets/ggjz/4.png'),
systemTypes: '03',
typeId: '9',
},
{
id: 'heating',
name: '采暖系统',
icon: require('@/assets/ggjz/5.png'),
systemTypes: '04',
typeId: '2',
},
{
id: 'distribution',
name: '配电系统',
icon: require('@/assets/ggjz/6.png'),
systemTypes: '05',
typeId: '4',
},
{
id: 'illumination',
name: '照明系统',
icon: require('@/assets/ggjz/7.png'),
systemTypes: '06',
typeId: '3',
},
{
id: 'hotWater',
name: '生活热水系统',
icon: require('@/assets/ggjz/8.png'),
systemTypes: '07',
typeId: '5',
},
],
iconList: [],
currentPath: {
path: '',
type: 1,
name: '',
},
title: '任务信息填报',
statusPopup: false,
datePopup: false,
currentDate: new Date(),
// 点击填报用户信息
item: {},
buildId: '',
typeList: [], //类型列表
searchInfo: {},
taskId: '',
taskType: '1',
records:[],
tidCid: null,
editData: {}
}
},
computed: {
showForm() {
if(this.tidCid.taskId) {
return false
}
return true
},
// 类型
typeName() {
this.typeList.forEach((v) => {
v.child.forEach((ev) => {
if (this.item.customerType == ev.code) {
this.item.customerTypeName = v.name + '/' + ev.name
}
})
})
return this.item.customerTypeName
},
},
created() {
this.tidCid = JSON.parse(sessionStorage.getItem('tidCid'))
this.getCustomerStatistic()
// this.getBuildId()
this.getPathInfo()
if (!sessionStorage.getItem('goBack')) {
this.getFacData()
}
this.getCustomerType()
this.getSearchInfo()
let data = JSON.parse(sessionStorage.getItem('tidCid'))
this.tidCid = data
if(data.taskId) {
this.taskId = data.taskId
this.taskType = data.taskType||sessionStorage.getItem('taskType')
}
},
methods: {
//获取所有询问数据
async getSearchInfo() {
/**
* 获取询问的数据,根据询问的enquireMode拆分为n个数组,将enquireMode相同的放置到同类数组中
*/
const res = await getSearchList()
if (res.code == 0) {
const mapList = [
...new Set(res.data.records.map((ele) => ele.enquireMode)),
]
mapList.forEach((ele) => {
this.searchInfo[ele] = []
})
res.data.records.forEach((v) => {
mapList.forEach((ele) => {
if (ele == v.enquireMode) {
this.searchInfo[ele].push(v)
}
})
})
sessionStorage.setItem('searchInfo', JSON.stringify(this.searchInfo))
this.$store.commit('pageData/GET_SEARCHINFO', this.searchInfo)
}
},
// 图标添加
energyadd() {
if(!this.tidCid.taskId) {
return
}
this.buildId = sessionStorage.getItem('buildId')||this.tidCid.buildId
if (!this.buildId) {
Notify({ type: 'danger', message: '请先填写建筑信息' })
} else {
const systemTypes = this.iconList.map((item) => {
return item.systemTypes
})
this.$router.push({
path: './useenergyadd',
query: { systemTypes: systemTypes },
})
}
},
// 图标删除
iconDelete(item, index) {
if(this.showForm) {
return
}
const data = {
nxzdRefrigeSystemDTO: [], //空调信息
nxzdHeatSystemDTO: [], //采暖系统信息
nxzdLightSystemDTO: {}, //照明系统信息
nxzdDistributeSystemDTO: {}, //配电系统
nxzdHotWaterSystemDTO: {}, //生活热水系统信息
nxzdUseEnergyEquipDTO: {
buildId: '', //建筑id
consId: '', //客户编码
equipId: '', //用能设备id
/**
* 集中式空调
*/
cenEnquireDevIds: '', //设备类
cenEnquireIds: '', //运营类
cenEquipModiy: '', //是否改造
cenIntellectModifyYear: '', //集中控制系统改造年份
cenModifyYear: '', //更换高能效设备改造年份
cenWaterModifyYear: '', //水泵增加智能变频控制改造年份
/**
* 多联式空调
*/
conEnquireDevIds: '', //设备类
conEnquireIds: '', //运营类
conEquipModiy: '', //是否改造
conIntellectModifyYear: '', //智能化集中改造年份
conModifyYear: '', //更换高能效设备改造年份
/**
* 配电系统
*/
distributeEnquireDevIds: '', //设备类
distributeEnquireIds: '', //运营类
/**
* 采暖系统
*/
heatEnquireDevIds: '', //设备类
heatEnquireIds: '', //运营类
heatEquipModiy: '', //是否改造
heatMode: '', //采暖方式
heatIntellectModifyYear: '', //智能化集中改造年份
heatModifyYear: '', //更换高能效设备改造年份
heatType: '', //采暖设备类型
/**
* 生活热水
*/
hotWaterEnquireDevIds: '', //设备类
hotWaterEnquireIds: '', //运营类
/**
* 照明系统
*/
lightEnquireDevIds: '', //设备类
lightEnquireIds: '', //运营类
/**
* 输送泵组
*/
pumpNum: '0', // 输送泵组台数
pumpTotalPower: '', //输送泵组总功率
pumpYear: '', // 输送泵组设备年份
}, //用能设备闻询问类
}
for (const key in this.$store.getters.editData.info) {
if (
typeof this.$store.getters.editData.info[key] == 'string' ||
typeof this.$store.getters.editData.info[key] == 'number'
) {
for (const keys in data.nxzdUseEnergyEquipDTO) {
if (key == keys) {
data.nxzdUseEnergyEquipDTO[keys] =
this.$store.getters.editData.info[key]
}
}
} else {
data[key] = this.$store.getters.editData.info[key]
}
}
const searchData = this.$store.getters.searchInfo
this.iconList.splice(index, 1)
switch (item.id) {
case 'heating':
data.nxzdUseEnergyEquipDTO.heatType = ''
data.nxzdUseEnergyEquipDTO.heatMode = ''
data.nxzdUseEnergyEquipDTO.heatEquipModiy = ''
data.nxzdUseEnergyEquipDTO.heatModifyYear = ''
data.nxzdUseEnergyEquipDTO.heatIntellectModifyYear = ''
data.nxzdUseEnergyEquipDTO.pumpNum = '0'
data.nxzdUseEnergyEquipDTO.pumpYear = ''
data.nxzdUseEnergyEquipDTO.pumpTotalPower = ''
data.nxzdHeatSystemDTO = null
this.resetData(data, item.typeId)
break
case 'hotWater':
// eslint-disable-next-line no-case-declarations
const hotres = dataMode(searchData['sbshrs'])
data.nxzdUseEnergyEquipDTO.hotWaterEnquireDevIds = hotres.find((ele) => ele.type == 2).child.map((item) => item.enquireId).join(',')
data.nxzdUseEnergyEquipDTO.hotWaterEnquireIds = hotres.find((ele) => ele.type == 1).child.map((item) => item.enquireId).join(',')
data.nxzdHotWaterSystemDTO = null
this.resetData(data, item.typeId)
break
case 'illumination':
// eslint-disable-next-line no-case-declarations
const illres = dataMode(searchData['sbzm'])
data.nxzdUseEnergyEquipDTO.lightEnquireDevIds = illres.find((ele) => ele.type == 2).child.map((item) => item.enquireId).join(',')
data.nxzdUseEnergyEquipDTO.lightEnquireIds = illres.find((ele) => ele.type == 1).child.map((item) => item.enquireId).join(',')
data.nxzdLightSystemDTO = null
this.resetData(data, item.typeId)
break
case 'distribution':
// eslint-disable-next-line no-case-declarations
const disres = dataMode(searchData['sbpd'])
data.nxzdUseEnergyEquipDTO.distributeEnquireDevIds = disres.find((ele) => ele.type == 2).child.map((item) => item.enquireId).join(',')
data.nxzdUseEnergyEquipDTO.distributeEnquireIds = disres.find((ele) => ele.type == 1).child.map((item) => item.enquireId).join(',')
data.nxzdDistributeSystemDTO = null
this.resetData(data, item.typeId)
break
case 'focusAir':
// eslint-disable-next-line no-case-declarations
const cenres = dataMode(searchData['sbktjz'])
// eslint-disable-next-line no-case-declarations
data.nxzdUseEnergyEquipDTO.cenModifyYear = ''
data.nxzdUseEnergyEquipDTO.cenEquipModiy = ''
data.nxzdUseEnergyEquipDTO.cenWaterModifyYear = ''
data.nxzdUseEnergyEquipDTO.cenIntellectModifyYear = ''
data.nxzdUseEnergyEquipDTO.cenEnquireDevIds = cenres.find((ele) => ele.type == 2).child.map((item) => item.enquireId).join(',')
data.nxzdUseEnergyEquipDTO.cenEnquireIds = cenres.find((ele) => ele.type == 1).child.map((item) => item.enquireId).join(',')
data.nxzdRefrigeSystemDTO = null
this.resetData(data, item.typeId)
break
case 'multipleAir':
// eslint-disable-next-line no-case-declarations
const conres = dataMode(searchData['sbktdls'])
data.nxzdUseEnergyEquipDTO.conEquipModiy = ''
data.nxzdUseEnergyEquipDTO.conIntellectModifyYear = ''
data.nxzdUseEnergyEquipDTO.conModifyYear = ''
data.nxzdUseEnergyEquipDTO.conEnquireDevIds = conres.find((ele) => ele.type == 2).child.map((item) => item.enquireId).join(',')
data.nxzdUseEnergyEquipDTO.conEnquireIds = conres.find((ele) => ele.type == 1).child.map((item) => item.enquireId).join(',')
data.nxzdRefrigeSystemDTO = null
this.resetData(data, item.typeId)
break
case 'fissionAir':
data.nxzdRefrigeSystemDTO = null
this.resetData(data, item.typeId)
break
default:
break
}
},
//清空用能设备数据并保存
async resetData(data, id) {
for (const key in data) {
if (data[key] instanceof Array) {
data[key].forEach((v) => {
for (const keys in v) {
if (keys == 'changeTime') {
delete v['changeTime']
}
if (keys == 'changeUser') {
delete v['changeUser']
}
}
})
} else {
for (const val in data[key]) {
if (val == 'changeTime') {
delete data[key]['changeTime']
}
if (val == 'changeUser') {
delete data[key]['changeUser']
}
}
}
}
data.operDetailCode = id // 用能设备明细类型编号用逗号隔开
const res = await editEnergyEquip(data)
if (res.code == 0) {
this.getFacData()
}
},
//获取用能设备数据
async getFacData() {
try {
// let id = JSON.parse(sessionStorage.getItem('tidCid')).customerId
let id = JSON.parse(sessionStorage.getItem('tidCid')).equipId||sessionStorage.getItem('equipId')
if(!id) return
const res = await getEnergyEquip({equipId: id})
if (res.code == 0) {
const data = {
info: res.data,
pageKey: true,
}
let tidCid = JSON.parse(sessionStorage.getItem('tidCid'))
this.$set(tidCid,'buildId',res.data.buildId )
this.$set(tidCid,'equipId', id )
sessionStorage.removeItem('tidCid')
sessionStorage.setItem('tidCid', JSON.stringify(tidCid))
this.buildId=res.data.buildId
this.editData = res.data
this.$store.commit('pageData/GET_EDITDATA', data)
if(res.data.detaileCode) {
const list = res.data.detaileCode.split(',')
if(list.length > 0) {
this.iconList = this.showList.filter((ele)=> {
return list.some((item)=> item == ele.typeId)
})
} else {
this.iconList = []
}
}
return
}else{
}
} catch (error) {
}
},
//获取当前页面信息
getPathInfo() {
this.currentPath.path = this.$route.path
this.currentPath.name = this.title
this.$store.commit('path/SET_PATH', this.currentPath)
sessionStorage.setItem('goPage', JSON.stringify(this.currentPath))
},
// 根据客户id查询单个建筑信息获取建筑id
// async getBuildId() {
// const id = JSON.parse(sessionStorage.getItem('tidCid')).customerId
// const res = await getInfo({customerId: id})
// if (res.code == 0) {
// sessionStorage.setItem('buildId', res.data.buildId)
// this.buildId = res.data.buildId
// }
// },
//查询单个客户统计信息
async getCustomerStatistic() {
const id = JSON.parse(sessionStorage.getItem('tidCid')).customerId
const res = await getCurrentPersonInfoAPI(id)
if (res.code == 0) {
this.item = res.data
// this.buildId = res.data.buildId
const data = {
taskId: JSON.parse(sessionStorage.getItem('tidCid')).taskId,
customerId: res.data.customerId,
item: res.data,
buildId: this.buildId,
equipId: JSON.parse(sessionStorage.getItem('tidCid')).equipId,
}
sessionStorage.setItem('tidCid', JSON.stringify(data))
this.getSingleTaskInfo()
}else{
this.item = JSON.parse(sessionStorage.getItem('tidCid')).item
}
this.customerStatistic = res.data;
},
async getSingleTaskInfo () {
if(!this.buildId||this.buildId=='null') return
const data = JSON.parse(sessionStorage.getItem('tidCid'))
const id = data.taskId
if(id) {
const res = await getSingleTaskInfo(id)
if(res.code == 0) {
this.taskType = res.data.taskType
sessionStorage.setItem('taskType', this.taskType)
// data.item.taskType = res.data.taskType
if(data) {
data.taskType = res.data.taskType
data.buildId = this.buildId
sessionStorage.setItem('tidCid', JSON.stringify(data))
}
}
} else {
this.taskType = 4
}
},
// 建筑信息
constructionInfo() {
this.$router.push({ path: '/constructioninfo', type: 1 })
},
//查询客户类型
async getCustomerType() {
const data = {
codeSortId: '80000001004',
codeType: 'khlx',
}
const ref = await getCode(data)
if (ref.code === 0) {
this.typeList = ref.data
}
},
// 用能设备信息
async facilityManage(item) {
const consId = JSON.parse(sessionStorage.getItem('tidCid')).customerId
if (!this.buildId) {
this.$store.commit('pageData/GET_EDITDATA', {})
Notify({ type: 'danger', message: '请先填写建筑信息' })
} else {
if (!this.$store.getters.editData) {
const data = {
nxzdDistributeSystemDTO: {},
nxzdHeatSystemDTO: [],
nxzdHotWaterSystemDTO: {},
nxzdLightSystemDTO: {},
nxzdRefrigeSystemDTO: [],
nxzdUseEnergyEquipDTO: {
buildId: this.buildId,
consId,
},
}
const res = await addEnergyEquip(data)
if (res.code == 0) {
this.getFacData()
this.getPathInfo()
this.goFacilityManage(item)
}
return
}
this.getPathInfo()
this.goFacilityManage(item)
// })
return
}
},
//主要用能设备跳转
goFacilityManage(item) {
this.$router.push({
path: '/facilityManage',
query: { id: item.id, typeId: item.typeId },
})
},
// 能耗数据信息
energyConsumption() {
this.$router.push({ path: '/energyconsumption', type: 1 })
},
// 清空页面数据
clearData() {
this.item = {}
},
//提交页面信息
saveAllInfo() {
taskList({ consName: this.item.customerName }).then((res) => {
this.records = res.data.list[0]
if (!this.records.buildId) {
this.$notify({
message: '请完善信息',
duration: 1000,
background: '#34baae',
})
return false
}
this.$router.push('/taskManage')
changeSubStateType({ taskId: this.taskId }).then((res) => {
if (res.code == 0) {
this.$notify({
message: '保存成功',
duration: 1000,
background: '#34baae',
})
}else if(res.code == 1){
this.$notify({
message: res.msg,
duration: 1000,
// background: '#34baae',
type: 'danger'
})
}
})
})
},
},
}
</script>
<style lang="less" scoped>
.list {
padding: 0 10px;
.select {
box-shadow: 1px 1px 10px 1px rgb(225, 225, 225, 0);
width: 100%;
min-height: calc(12rem - 50px);
margin-top: 15px;
background-color: #fff;
border-radius: 5px;
overflow: hidden;
padding-bottom: 25px;
.custom-type {
width: 50px;
display: block;
text-align: center;
padding-top: 4.5px;
}
.custom-text {
font-size: 0.38rem;
color: #1c9b92;
display: flex;
font-weight: bold;
img {
width: 20px;
height: 20px;
margin-right: 10px;
}
}
}
}
.btn {
position: fixed;
bottom: 20px;
padding: 0 10px;
.faqi {
width: 355px;
background-color: #34baaf;
color: #fff;
border-radius: 8px;
}
}
.van-cell__title,
.van-cell__value {
-webkit-box-flex: 1;
flex: 1;
display: flex;
justify-content: space-between;
padding-bottom: 5px;
border-bottom: 1px dashed #ececec;
}
.van-tag--primary {
border-radius: 7px;
background-color: #2c938b;
}
.van-tag--warning {
border-radius: 7px;
background-color: #ff9205;
}
.header {
box-shadow: 1px 1px 10px 1px rgb(225, 225, 225, 0);
margin-top: 10px;
background-color: #ffffff;
padding: 10px;
box-sizing: border-box;
border-radius: 5px;
position: relative;
.header-name {
display: flex;
padding-bottom: 10px;
box-sizing: border-box;
font-size: 17px;
font-weight: 700;
opacity: 0.9;
width: 58%;
img {
width: 17px;
height: 17px;
margin-right: 10px;
margin-top: 2px;
}
}
.header-address {
display: flex;
border-top: 1px dashed #e0e0e0;
padding: 6px 0;
box-sizing: border-box;
color: #8d8d8d;
line-height: 25px;
img {
width: 15px;
height: 17px;
margin-top: 2px;
margin-right: 13px;
}
.address-warp {
white-space: nowrap; //规定段落中的文本不进行换行
text-overflow: ellipsis;
overflow: hidden;
}
}
.header-title {
position: absolute;
top: 4px;
right: 4px;
color: #ffaa2b;
border: 1px solid #ffd89f;
border-radius: 5px;
padding: 3px 10px;
box-sizing: border-box;
background-color: #ffebcc;
}
}
.line {
display: inline-block;
width: 5px;
height: 17px;
position: relative;
top: 2px;
margin-right: 10px;
border-radius: 3px;
background: linear-gradient(to bottom, #2da197, #2c827c);
}
.van-cell {
position: unset;
display: -webkit-box;
display: -webkit-flex;
display: flex;
box-sizing: border-box;
width: 100%;
padding: 0.266667rem 0.426667rem;
overflow: hidden;
color: #323233;
font-size: 0.373333rem;
line-height: 0.64rem;
background-color: #fff;
}
.main1-content {
font-size: 13px;
text-align: center;
width: 25%;
img {
margin: 0 auto 10px;
width: 50px;
height: 50px;
}
.main1-content-text {
color: #808080;
}
}
.main2-flex {
display: flex;
flex-wrap: wrap;
.main2-content {
font-size: 13px;
margin-top: 10px;
text-align: center;
width: 25%;
position: relative;
img {
margin: 0 auto 10px;
width: 50px;
height: 50px;
}
.main2-content-text {
color: #808080;
}
.img-del {
width: 20px;
height: 20px;
position: absolute;
top: -9px;
right: 12px;
img {
width: 100%;
height: 100%;
}
}
}
}
</style>