Commit 747a2bdd authored by moonby's avatar moonby

Merge branch 'master' of gitee.com:tj-wang-yahui/AMS_HeatSys_Vue_V10

parents 77e1fc05 6955c08e
// export const ExternalSERVEICE='http://218.69.97.198:8001' export const ExternalSERVEICE='http://218.69.97.198:8001'
// export const WithinSERVEICE='http://192.168.1.252:8001' export const WithinSERVEICE='http://192.168.1.252:8001'
export const ExternalSERVEICE='http://localhost:5013' // export const ExternalSERVEICE='http://localhost:5013'
export const WithinSERVEICE='http://localhost:5013' // export const WithinSERVEICE='http://localhost:5013'
export const CURRLOGO="LOGO_gangyi.png" export const CURRLOGO="LOGO_gangyi.png"
...@@ -2,10 +2,15 @@ ...@@ -2,10 +2,15 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> --> <!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> -->
<link rel="icon" type="image/svg+xml" href="/ams.ico" /> <link rel="icon" type="image/svg+xml" href="/ams.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>爱默森区域供热管控平台V10.0</title> <title>爱默森区域供热管控平台V10.0</title>
<script>
// 兼容es6 不加这行手机版本太低打包后好多方法无法生效
this.globalThis || (this.globalThis = this)
</script>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
......
{ {
"hash": "d2a24596", "hash": "c88a64ec",
"configHash": "f7180c00", "configHash": "6bc3ecb5",
"lockfileHash": "415b4f88", "lockfileHash": "cd7189ec",
"browserHash": "506fb5c3", "browserHash": "c592b5ce",
"optimized": { "optimized": {
"vue": { "vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js", "src": "../../vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js", "file": "vue.js",
"fileHash": "3227ba20", "fileHash": "515b6d6f",
"needsInterop": false "needsInterop": false
}, },
"element-plus": { "element-plus": {
"src": "../../element-plus/es/index.mjs", "src": "../../element-plus/es/index.mjs",
"file": "element-plus.js", "file": "element-plus.js",
"fileHash": "123a5fc4", "fileHash": "2e778094",
"needsInterop": false "needsInterop": false
}, },
"@element-plus/icons-vue": { "@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js", "src": "../../@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js", "file": "@element-plus_icons-vue.js",
"fileHash": "d63343b0", "fileHash": "44a77da3",
"needsInterop": false "needsInterop": false
}, },
"vue3-smooth-scroll": { "vue3-smooth-scroll": {
"src": "../../vue3-smooth-scroll/dist/vue-smooth-scroll.min.js", "src": "../../vue3-smooth-scroll/dist/vue-smooth-scroll.min.js",
"file": "vue3-smooth-scroll.js", "file": "vue3-smooth-scroll.js",
"fileHash": "9466f662", "fileHash": "68d872a0",
"needsInterop": true "needsInterop": true
}, },
"@kyvg/vue3-notification": { "@kyvg/vue3-notification": {
"src": "../../@kyvg/vue3-notification/dist/index.es.js", "src": "../../@kyvg/vue3-notification/dist/index.es.js",
"file": "@kyvg_vue3-notification.js", "file": "@kyvg_vue3-notification.js",
"fileHash": "12d53af5", "fileHash": "e4b1301c",
"needsInterop": false "needsInterop": false
}, },
"jquery": { "jquery": {
"src": "../../jquery/dist/jquery.js", "src": "../../jquery/dist/jquery.js",
"file": "jquery.js", "file": "jquery.js",
"fileHash": "e02e3a42", "fileHash": "b965b93f",
"needsInterop": true "needsInterop": true
}, },
"element-plus/dist/locale/zh-cn.mjs": {
"src": "../../element-plus/dist/locale/zh-cn.mjs",
"file": "element-plus_dist_locale_zh-cn__mjs.js",
"fileHash": "9c48ad79",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"file": "axios.js",
"fileHash": "5723cd42",
"needsInterop": false
},
"vue-router": { "vue-router": {
"src": "../../vue-router/dist/vue-router.mjs", "src": "../../vue-router/dist/vue-router.mjs",
"file": "vue-router.js", "file": "vue-router.js",
"fileHash": "e7a65c94", "fileHash": "d035ba38",
"needsInterop": false
},
"element-plus/dist/locale/zh-cn.mjs": {
"src": "../../element-plus/dist/locale/zh-cn.mjs",
"file": "element-plus_dist_locale_zh-cn__mjs.js",
"fileHash": "1d0385f0",
"needsInterop": false "needsInterop": false
}, },
"vuex": { "vuex": {
"src": "../../vuex/dist/vuex.esm-bundler.js", "src": "../../vuex/dist/vuex.esm-bundler.js",
"file": "vuex.js", "file": "vuex.js",
"fileHash": "1ad04a64", "fileHash": "0a7adb8c",
"needsInterop": false
},
"axios": {
"src": "../../axios/index.js",
"file": "axios.js",
"fileHash": "eccf63c7",
"needsInterop": false "needsInterop": false
}, },
"echarts": { "echarts": {
"src": "../../echarts/index.js", "src": "../../echarts/index.js",
"file": "echarts.js", "file": "echarts.js",
"fileHash": "4bc23a29", "fileHash": "78551daa",
"needsInterop": false "needsInterop": false
}, },
"@amap/amap-jsapi-loader": { "@amap/amap-jsapi-loader": {
"src": "../../@amap/amap-jsapi-loader/dist/index.js", "src": "../../@amap/amap-jsapi-loader/dist/index.js",
"file": "@amap_amap-jsapi-loader.js", "file": "@amap_amap-jsapi-loader.js",
"fileHash": "7df2260b", "fileHash": "1dd9918c",
"needsInterop": true "needsInterop": true
}, },
"mitt": { "mitt": {
"src": "../../mitt/dist/mitt.mjs", "src": "../../mitt/dist/mitt.mjs",
"file": "mitt.js", "file": "mitt.js",
"fileHash": "3c6009f1", "fileHash": "6cdeaaa7",
"needsInterop": false "needsInterop": false
},
"file-saver": {
"src": "../../file-saver/dist/FileSaver.min.js",
"file": "file-saver.js",
"fileHash": "a4425f4f",
"needsInterop": true
},
"xlsx-js-style": {
"src": "../../xlsx-js-style/dist/xlsx.min.js",
"file": "xlsx-js-style.js",
"fileHash": "09bb44bc",
"needsInterop": true
} }
}, },
"chunks": { "chunks": {
"chunk-YFT6OQ5R": {
"file": "chunk-YFT6OQ5R.js"
},
"chunk-LNZ7GA7G": { "chunk-LNZ7GA7G": {
"file": "chunk-LNZ7GA7G.js" "file": "chunk-LNZ7GA7G.js"
}, },
"chunk-YFT6OQ5R": {
"file": "chunk-YFT6OQ5R.js"
},
"chunk-VDFR5PMD": { "chunk-VDFR5PMD": {
"file": "chunk-VDFR5PMD.js" "file": "chunk-VDFR5PMD.js"
}, },
......
This source diff could not be displayed because it is too large. You can view the blob instead.
export const ExternalSERVEICE='http://218.69.97.198:8001' // export const ExternalSERVEICE='http://218.69.97.198:8001'
export const WithinSERVEICE='http://192.168.1.252:8001' // export const WithinSERVEICE='http://192.168.1.252:8001'
// export const ExternalSERVEICE='http://localhost:5013' export const ExternalSERVEICE='http://localhost:5013'
// export const WithinSERVEICE='http://localhost:5013' export const WithinSERVEICE='http://localhost:5013'
export const CURRLOGO="LOGO_gangyi.png" export const CURRLOGO="LOGO_gangyi.png"
...@@ -71,6 +71,13 @@ export const postSecAbsTUc = params => { ...@@ -71,6 +71,13 @@ export const postSecAbsTUc = params => {
}) })
} }
//二网万平米流量
export const postSecTrafficUc = params => {
return http.post(`/api/analysis/external/SecTrafficUc`, params).then(res => res).catch(function (error) {
console.log(error);
})
}
//热量分析报表 //热量分析报表
export const postHeatAnalysis = params => { export const postHeatAnalysis = params => {
return http.post(`/api/analysis/report/HeatAnalysis`, params).then(res => res).catch(function (error) { return http.post(`/api/analysis/report/HeatAnalysis`, params).then(res => res).catch(function (error) {
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
:header-cell-style="setHeaderCellStyle" :header-cell-style="setHeaderCellStyle"
:data="visibleData" :data="visibleData"
v-loading="isLoading" v-loading="isLoading"
:row-key="getRowId" :row-key="transferId"
element-loading-text="数据加载中......" element-loading-text="数据加载中......"
:element-loading-spinner="svg" :element-loading-spinner="svg"
element-loading-svg-view-box="-10, -10, 50, 50" element-loading-svg-view-box="-10, -10, 50, 50"
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
v-model="enertyInfo.type" v-model="enertyInfo.type"
placeholder="请选择" placeholder="请选择"
@change="selTypeChange" @change="selTypeChange"
style="width: 130px" style="width: 150px"
> >
<!-- <el-option label="用量环比" :value="0" /> --> <!-- <el-option label="用量环比" :value="0" /> -->
<el-option label="热单耗" :value="1" /> <el-option label="热单耗" :value="1" />
...@@ -84,11 +84,12 @@ ...@@ -84,11 +84,12 @@
<el-option label="水单耗" :value="3" /> <el-option label="水单耗" :value="3" />
<el-option label="度日数热耗" :value="4" /> <el-option label="度日数热耗" :value="4" />
<el-option label="一网回温" :value="5" /> <el-option label="一网回温" :value="5" />
<!-- <el-option label="一网万平米流量" :value="6" /> <el-option label="一网万平米流量" :value="6" />
<el-option label="换热站板换效率" :value="7" /> <el-option label="换热站板换效率" :value="7" />
<el-option label="换热站二网均温" :value="8" /> --> <el-option label="换热站二网均温" :value="8" />
<!-- <el-option label="二网温差" :value="9" /> <el-option label="二网温差" :value="9" />
<el-option label="二网均温" :value="10" /> --> <el-option label="二网均温" :value="8" />
<el-option label="二网万平米流量" :value="11" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="用量环比类型" v-show="energyTypeDis"> <!-- <el-form-item label="用量环比类型" v-show="energyTypeDis">
...@@ -166,6 +167,7 @@ import { ...@@ -166,6 +167,7 @@ import {
postHeatEffiUc, postHeatEffiUc,
postSecAvgTUc, postSecAvgTUc,
postSecAbsTUc, postSecAbsTUc,
postSecTrafficUc,
} from "../../api/analysis"; } from "../../api/analysis";
const options = reactive([]); const options = reactive([]);
const enterpriseId = ref(); const enterpriseId = ref();
...@@ -402,6 +404,12 @@ function sendClick() { ...@@ -402,6 +404,12 @@ function sendClick() {
case 8: case 8:
postSecAvgTUcFun(); //换热站二网均温 postSecAvgTUcFun(); //换热站二网均温
break; break;
case 9:
postSecAbsTUcFun(); //换热站二网温差
break;
case 11:
postSecTrafficUcFun(); //二网万平米流量
break;
} }
enertyTab.value = "能耗值(" + company.value + ")"; enertyTab.value = "能耗值(" + company.value + ")";
} else { } else {
...@@ -565,6 +573,22 @@ function postHeatEffiUcFun() { ...@@ -565,6 +573,22 @@ function postHeatEffiUcFun() {
}); });
} }
//换热站机组能耗数据接口(二网温差)
function postSecAbsTUcFun() {
tabloading.value = true;
postSecAbsTUc(enertyInfo).then((res) => {
echarts.dispose(document.getElementById("echartsLayer"));
if (res.success === true) {
pageInitFun(res);
} else if (res.status == 9) {
setInterval(function () {
tabloading.value = false;
this.postSecAbsTUcFun();
}, 600000);
}
});
}
//换热站机组能耗数据接口(换热站二网均温) //换热站机组能耗数据接口(换热站二网均温)
function postSecAvgTUcFun() { function postSecAvgTUcFun() {
tabloading.value = true; tabloading.value = true;
...@@ -581,6 +605,22 @@ function postSecAvgTUcFun() { ...@@ -581,6 +605,22 @@ function postSecAvgTUcFun() {
}); });
} }
//换热站机组能耗数据接口(二网万平米流量)
function postSecTrafficUcFun() {
tabloading.value = true;
postSecTrafficUc(enertyInfo).then((res) => {
echarts.dispose(document.getElementById("echartsLayer"));
if (res.success === true) {
pageInitFun(res);
} else if (res.status == 9) {
setInterval(function () {
tabloading.value = false;
this.postSecTrafficUcFun();
}, 600000);
}
});
}
function pageInitFun(res) { function pageInitFun(res) {
tableData.length = 0; tableData.length = 0;
res.data.hourWater.forEach((element) => { res.data.hourWater.forEach((element) => {
......
<template> <template>
<el-card class="card-contianer"> <el-card class="remoteTitle">
<label>二次网供水方案列表:</label> <div class="card-content">
<!-- <el-select v-model="value" class="m-2" placeholder="Select" size="large"> <div class="demo-image">
<div class="block">
<span class="demonstration">通讯异常</span>
<el-icon><Connection color="rgb(255,0,0)"/></el-icon>
</div>
<div class="block">
<span class="demonstration">读写失败</span>
<el-icon><Failed color="rgb(255,0,0)"/></el-icon>
</div>
<div class="block">
<span class="demonstration">读写成功</span>
<el-icon><CircleCheckFilled color="rgb(0,255,0)"/></el-icon>
</div>
</div>
<div class="demo-select">
二次网供水方案列表:
<el-select v-model="methodId" placeholder="请选择二网方案" size="large" style="width: 200px; " @change="getTransfer" :disabled="isAdd">
<el-option <el-option
v-for="item in options" v-for="item in secondTemp"
:key="item.value" :key="item.methodId"
:label="item.label" :label="item.methodName"
:value="item.value" :value="item.methodId"
/> />
</el-select> --> </el-select>
</div>
<div class="demo-button">
<el-button type="primary" size="small" :loading="isLoading" @click="AddSecTemp" :disabled="isAdd">新增</el-button>
<el-button type="primary" size="small" :loading="isLoading" @click="CancelSecTemp" v-show="isAdd">取消</el-button>
<el-button type="primary" size="small" :loading="isLoading" @click="dialogVisible = true" :disabled="isAdd">删除</el-button>
</div>
</div>
</el-card> </el-card>
<el-loading :visible="isLoading" text="加载中..."></el-loading>
<div class="remoteContent">
<!-- @row-click="handleRowClick" -->
<el-table
ref="tableRef"
v-model:checked="selectedRows"
@selection-change="handleSelectionChange"
style="width: 700px;"
show-header="true"
:height="tableHeight"
:cell-style="setCellStyle"
border
highlight-current-row
:header-cell-style="setHeaderCellStyle"
:data="planTransfers"
v-loading="isLoading"
element-loading-text="数据加载中......"
:element-loading-spinner="svg"
element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.8)"
>
<el-table-column type="selection" width="55px" />
<el-table-column prop="rowIndex" label="序号" width="60px" />
<el-table-column prop="transferId" label="机组编号" v-if="false" />
<el-table-column prop="transferName" label="换热机组" />
<el-table-column label="状态" width="60px">
<template #default="{ row }">
<el-icon v-if="row.transferStatus === 0"></el-icon>
<el-icon v-if="row.transferStatus === 1"><CircleCheckFilled color="rgb(0,255,0)"/></el-icon>
<el-icon v-if="row.transferStatus === 2"><Failed color="rgb(255,0,0)"/></el-icon>
<el-icon v-if="row.transferStatus === 3"><Connection color="rgb(255,0,0)"/></el-icon>
</template>
</el-table-column>
</el-table>
<div :style="{ height: tableHeight + 'px', paddingTop: 10 + 'px' }" style="width: 100%; margin: 0 5px; display:flex; flex-direction: column; align-items: center; vertical-align: top;">
<el-form ref="ruleFormRef" :rules="rules" :model="forms" label-width="230px" :style="{ height: (tableHeight-80) + 'px'}" style="overflow-y: auto; width: 100%; margin-top: 10px; margin-bottom: 5px;">
<el-form-item label="方案名称:" prop="methodName">
<el-input v-model="forms.methodName" style="width: 300px;" />
</el-form-item>
<el-form-item label="华为控制模式值:" class="custom-item">
<el-checkbox v-model="forms.isJD" size="large" />
</el-form-item>
<el-form-item label="二次网增益:" class="custom-item">
<el-checkbox v-model="forms.isAuto" size="large" /> 温度增益 自动/半自动
</el-form-item>
<el-form-item label="" class="custom-item" required>
<el-col :span="4">
<el-form-item prop="outdoorTempStart">
<el-input v-model="forms.outdoorTempStart1" style="width: 100px;" v-float-number/>
</el-form-item>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="4">
<el-form-item prop="outdoorTempEnd">
<el-input v-model="forms.outdoorTempEnd1" style="width: 100px;" v-float-number/>
</el-form-item>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="12">
<el-form-item prop="tempGain">
温度增益:<el-input v-model="forms.tempGain1" style="width: 150px;" v-float-number/>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item" required>
<el-col :span="4">
<el-input v-model="forms.outdoorTempStart2" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="4">
<el-input v-model="forms.outdoorTempEnd2" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="12">
温度增益:<el-input v-model="forms.tempGain2" style="width: 150px;" v-float-number/>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item" required>
<el-col :span="4">
<el-input v-model="forms.outdoorTempStart3" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="4">
<el-input v-model="forms.outdoorTempEnd3" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="12">
温度增益:<el-input v-model="forms.tempGain3" style="width: 150px;" v-float-number/>
</el-col>
</el-form-item>
<el-form-item label="" required>
<el-col :span="4">
<el-input v-model="forms.outdoorTempStart4" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="4">
<el-input v-model="forms.outdoorTempEnd4" style="width: 100px;" v-float-number/>
</el-col>
<el-col :span="2" class="text-center">
<span class="text-gray-500"></span>
</el-col>
<el-col :span="12">
温度增益:<el-input v-model="forms.tempGain4" style="width: 150px;" v-float-number/>
</el-col>
</el-form-item>
<el-form-item label="气象参数组:" class="custom-item">
<el-checkbox v-model="forms.isWeahter" label="参与执行" size="large" />
</el-form-item>
<el-form-item class="custom-item" prop="temperature">
温度系数:<el-input v-model="forms.temperature" :disabled="!forms.isWeahter" style="width: 100px;" v-float-number/>
</el-form-item>
<el-form-item label="" class="custom-item">
风力系数:<el-input v-model="forms.wind" :disabled="!forms.isWeahter" style="width: 100px;" v-float-number/>
</el-form-item>
<el-form-item label="">
光照系数:<el-input v-model="forms.power" :disabled="!forms.isWeahter" style="width: 100px;" v-float-number/>
</el-form-item>
<el-form-item label="夜间降温参数组:" class="custom-item">
<el-checkbox v-model="forms.isNight" label="参与执行" size="large" />
</el-form-item>
<el-form-item label="" class="custom-item" >
<el-col :span="6">
夜间降温1:
<el-select v-model="forms.outdoorStartHour1" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin1" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour1" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin1" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling1" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item">
<el-col :span="6">
夜间降温2:
<el-select v-model="forms.outdoorStartHour2" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin2" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour2" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin2" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling2" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item">
<el-col :span="6">
夜间降温3:
<el-select v-model="forms.outdoorStartHour3" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin3" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour3" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin3" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling3" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item">
<el-col :span="6">
夜间降温4:
<el-select v-model="forms.outdoorStartHour4" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin4" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour4" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin4" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling4" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
<el-form-item label="" class="custom-item">
<el-col :span="6">
夜间降温5:
<el-select v-model="forms.outdoorStartHour5" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin5" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour5" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin5" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling5" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
<el-form-item label="" >
<el-col :span="6">
夜间降温6:
<el-select v-model="forms.outdoorStartHour6" placeholder="起始小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorStartMin6" placeholder="起始分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-col>
<el-col :span="1" >
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndHour6" placeholder="结束小时" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in hours"
:key="item"
:label="item"
:value="item"
/>
</el-select>小时
</el-col>
<el-col :span="3">
<el-select v-model="forms.outdoorEndMin6" placeholder="结束分钟" size="small" :disabled="!forms.isNight">
<el-option
v-for="item in mins"
:key="item"
:label="item"
:value="item"
/>z
</el-select>
</el-col>
<el-col :span="6">
降温:<el-input v-model="forms.cooling6" style="width: 100px;" v-float-number :disabled="!forms.isNight"/>
</el-col>
</el-form-item>
</el-form>
<div style="height:30px; margin: 5px;">
<el-button type="primary" :isLoading="isLoading" size="small" @click="submitForm(ruleFormRef)">保存修改</el-button>
<el-button type="primary" :isLoading="isLoading" size="small" @click="WriteAllStatus()" :disabled="isAdd">执行此方案</el-button>
</div>
</div>
</div>
<el-card style="height: 50px; padding: 0;">
<el-progress
:indeterminate="myIndeterminate"
:stroke-width="16"
:percentage="progress"
/>
</el-card>
<el-dialog v-model="dialogVisible" title="提示" width="30%" draggable>
<span>确认删除 ‘{{forms.methodName}}’ 吗?</span>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="DelSecTemp">确认</el-button>
</span>
</template>
</el-dialog>
</template> </template>
<script lang="ts" setup>
import { ref, reactive, onMounted, onUnmounted, watch,nextTick } from 'vue';
import http from '../../api/http';
import store from "../../store/index";
import { ElMessage } from "element-plus";
import { vFloatNumber, integerOnly } from "../../utils/directives.js";
import type { FormInstance, FormRules } from 'element-plus'
const isAdd = ref(false)
const dialogVisible = ref(false)
const enterpriseId = store.getters.getEnterpriseId();
const selectTransfers = ref([]);
const isLoading= ref(true);
const secondTemp = ref([]);
const planTransfers = ref([]);
const methodId = ref(null);
const tableRef = ref([]);
const selectedRows = ref([]);
const tableHeight = ref(500);
const progress =ref(0);
const myIndeterminate=ref(false);
const hours = reactive([]);
const mins = reactive([]);
const transfers = ref([]);
const forms = reactive({
methodId:"",
methodName:"",
transferIds:[],
isJD:false,
isAuto: false,
isWeahter: true,
isNight:true,
outdoorTempStart1:null,
outdoorTempStart2:null,
outdoorTempStart3:null,
outdoorTempStart4:null,
outdoorTempEnd1:null,
outdoorTempEnd2:null,
outdoorTempEnd3:null,
outdoorTempEnd4:null,
tempGain1:null,
tempGain2:null,
tempGain3:null,
tempGain4:null,
temperature:null,
wind:null,
power:null,
outdoorStartHour1:null,
outdoorStartHour2:null,
outdoorStartHour3:null,
outdoorStartHour4:null,
outdoorStartHour5:null,
outdoorStartHour6:null,
outdoorStartMin1:null,
outdoorStartMin2:null,
outdoorStartMin3:null,
outdoorStartMin4:null,
outdoorStartMin5:null,
outdoorStartMin6:null,
outdoorEndHour1:null,
outdoorEndHour2:null,
outdoorEndHour3:null,
outdoorEndHour4:null,
outdoorEndHour5:null,
outdoorEndHour6:null,
outdoorEndMin1:null,
outdoorEndMin2:null,
outdoorEndMin3:null,
outdoorEndMin4:null,
outdoorEndMin5:null,
outdoorEndMin6:null,
cooling1:null,
cooling2:null,
cooling3:null,
cooling4:null,
cooling5:null,
cooling6:null,
})
onMounted(() => {
for(let i = 0; i< 60;i++){
mins.push(i.toString().padStart(2, '0'));
}
for(let i = 0; i<= 23;i++){
hours.push(i.toString().padStart(2, '0'));
}
setContentHeight();
window.addEventListener('resize', setContentHeight);
})
onUnmounted(() => {
window.removeEventListener('resize', setContentHeight);
})
watch(() => planTransfers.value, (newData)=> {
newData.forEach((item) =>{
nextTick(() => {
if(item.methodId !== "00000000-0000-0000-0000-000000000000"){
tableRef.value.toggleRowSelection(item,true);
}
});
})
}, {
deep: true // 确保深度监听
});
function initPage(){
isLoading.value = true;
getSecondTemp();
isLoading.value = false;
}
initPage();
async function getSecondTemp(){
try{
var result = await http.post('/api/remote/GetCtrlSecondTemp', enterpriseId);
if(result){
if(result.success){
secondTemp.value = result.data.ctrolSecTempList;
methodId.value = secondTemp.value[0].methodId;
transfers.value = result.data.transferList;
getTransfer();
}else{
ElMessage.error(result.message);
}
}
}catch(error){
ElMessage.error(error.message);
}
}
function getTransfer(){
try{
var index = 0;
planTransfers.value = [];
if(transfers){
transfers.value.forEach(item => {
if(item.methodId === methodId.value || item.methodId === "" || item.methodId === "00000000-0000-0000-0000-000000000000"){
item.rowIndex = ++index;
planTransfers.value.push(item);
}
});
}
var selectItem = secondTemp.value.find(obj => obj.methodId === methodId.value);
handleRowClick(selectItem);
}catch(error){
ElMessage.error(error.message);
}
}
function setContentHeight() {
tableHeight.value = window.innerHeight - 250;
}
function AddSecTemp(){
isAdd.value = true;
planTransfers.value = [];
var index = 0;
if(transfers){
transfers.value.forEach(item => {
if(item.methodId === "00000000-0000-0000-0000-000000000000"){
item.rowIndex = ++index;
planTransfers.value.push(item);
}
});
}
handleRowClick({});
}
function CancelSecTemp(){
isAdd.value = false;
getTransfer();
}
async function DelSecTemp(){
try {
isLoading.value = true;
dialogVisible.value = false;
var result = await http.post('/api/remote/DeleteSecTemp', forms.methodId);
if(result){
if(result.success){
ElMessage.success("'"+ forms.methodName +"' "+ result.message);
let id = secondTemp.value.findIndex(item => {
if (item.methodId == forms.methodId) {
return true
}
})
secondTemp.value.splice(id, 1);
methodId.value = secondTemp.value[0];
transfers.value.forEach(item => {
if(item.methodId == forms.methodId){
item.methodId = "00000000-0000-0000-0000-000000000000";
}
});
//console.log(secondTemp.value[0]);
getTransfer();
}else{
ElMessage.error(result.message);
}
}
}catch(error){
ElMessage.error(error.message);
}finally{
isLoading.value = false;
}
}
// function checkMethod(){
// if(forms.methodName === ""){
// ElMessage.error("方案名称不能为空!");
// return false;
// }
// if(forms.outdoorTempStart1 === ""){
// ElMessage.error("二次网温度增益温度起始1不能为空!");
// return false;
// }
// if(forms.outdoorEndHour1 === ""){
// ElMessage.error("二次网温度增益不能为空!");
// return false;
// }
// }
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return
await formEl.validate((valid, fields) => {
if (valid) {
SaveSecTemp();
} else {
ElMessage.error('提交失败!');
console.log('error submit!', fields)
}
})
}
async function SaveSecTemp(){
try {
isLoading.value = true;
// if(!checkMethod()){
// return;
// }
var currTransfers = [];
selectedRows.value.forEach(item => {
currTransfers.push(item.transferId);
});
var result = await http.post('/api/remote/UpdateSecTemp', {reqSecTempInfo: forms, transferIds: currTransfers});
if(result){
if(result.success){
ElMessage.success("'"+forms.methodName +"' "+ result.message);
planTransfers.value.forEach(item =>{
var curr = selectedRows.value.find(obj => obj.transferId == item.transferId);
var transfer = transfers.value.find(obj => obj.transferId == item.transferId);
if(curr){
transfer.methodId = methodId.value;
}else{
transfer.methodId = "00000000-0000-0000-0000-000000000000";
}
})
//console.log(secondTemp.value[0]);
getTransfer();
}else{
ElMessage.error(result.message);
}
}
}catch(error){
ElMessage.error(error.message);
}finally{
isLoading.value = false;
}
}
async function WriteAllStatus(){
if(selectedRows.value.length === 0){
ElMessage.warning("请勾选需要远程控制的换热站!");
return;
}
myIndeterminate.value = !myIndeterminate.value;
progress.value=1;
isLoading.value = true;
if(selectedRows){
var total = selectedRows.value.length;
var count =0;
for(const item of selectedRows.value){
item.transferStatus = 0;
}
for(const item of selectedRows.value){
await WriteStation(item);
count=count+1;
progress.value = (count/total*100).toFixed(2);
}
}
isLoading.value = false;
myIndeterminate.value = !myIndeterminate.value;
progress.value=100;
}
async function WriteStation(element){
try{
//console.log(writeValue);
var result = await http.post('/api/remote/ExcecuteSecTemp', {"TransferId":element.transferId, "remoteInfo": forms});
if(result.success){
ElMessage.success(element.transferName +" "+ result.data);
element.transferStatus = 1;
}else{
ElMessage.error(element.transferName +" "+ result.message);
if(result.message === "连接异常"){
element.transferStatus = 3;
}else{
element.transferStatus = 2;
}
}
}catch(error){
ElMessage.error(element.transferName +" "+ error.message);
element.transferStatus = 3;
}
}
const handleSelectionChange = (selection) => {
selectedRows.value = selection;
};
const ruleFormRef = ref<FormInstance>();
const rules = reactive<FormRules>({
methodName:[
{
required: true,
trigger: 'blur',
message: '请输入二次网方案名称',
}
],
outdoorTempStart:[
{
required: true,
trigger: 'blur',
message: '请输入二次网增益值起始温度',
}
],
outdoorTempEnd:[
{
required: true,
trigger: 'blur',
message: '请输入二次网增益值结束温度',
}
],
tempGain:[
{
required: true,
trigger: 'blur',
message: '请输入二次网增益值',
}
],
temperature:[
{
validator: (rule, value, callback) => {
if (forms.isWeahter && !value) {
callback(new Error('请输入温度系数'));
} else {
callback();
}
},
trigger: 'blur',
}
],
wind:[
{
validator: (rule, value, callback) => {
if (forms.isWeahter && !value) {
callback(new Error('请输入风力系数'));
} else {
callback();
}
},
trigger: 'blur',
}
],
power:[
{
validator: (rule, value, callback) => {
if (forms.isWeahter && !value) {
callback(new Error('请输入光照系数'));
} else {
callback();
}
},
trigger: 'blur',
}
],
});
const handleRowClick=(row)=>{
forms.methodId = row.methodId;
forms.methodName = row.methodName;
forms.transferIds = row.transferIds;
forms.isJD = row.isJD ;
forms.isAuto = row.isAuto;
forms.outdoorTempStart1 = row.outdoorTempStart1;
forms.outdoorTempStart2 = row.outdoorTempStart2;
forms.outdoorTempStart3 = row.outdoorTempStart3;
forms.outdoorTempStart4 = row.outdoorTempStart4;
forms.outdoorTempEnd1 = row.outdoorTempEnd1;
forms.outdoorTempEnd2 = row.outdoorTempEnd2;
forms.outdoorTempEnd3 = row.outdoorTempEnd3;
forms.outdoorTempEnd4 = row.outdoorTempEnd4;
forms.tempGain1 = row.tempGain1;
forms.tempGain2 = row.tempGain2;
forms.tempGain3 = row.tempGain3;
forms.tempGain4 = row.tempGain4;
forms.temperature = row.temperature;
forms.power = row.power;
forms.wind = row.wind;
forms.outdoorStartHour1 = row.outdoorStartHour1;
forms.outdoorStartHour2 = row.outdoorStartHour2;
forms.outdoorStartHour3 = row.outdoorStartHour3;
forms.outdoorStartHour4 = row.outdoorStartHour4;
forms.outdoorStartHour5 = row.outdoorStartHour5;
forms.outdoorStartHour6 = row.outdoorStartHour6;
forms.outdoorStartMin1 = row.outdoorStartMin1;
forms.outdoorStartMin2 = row.outdoorStartMin2;
forms.outdoorStartMin3 = row.outdoorStartMin3;
forms.outdoorStartMin4 = row.outdoorStartMin4;
forms.outdoorStartMin5 = row.outdoorStartMin5;
forms.outdoorStartMin6 = row.outdoorStartMin6;
forms.outdoorEndHour1 = row.outdoorEndHour1;
forms.outdoorEndHour2 = row.outdoorEndHour2;
forms.outdoorEndHour3 = row.outdoorEndHour3;
forms.outdoorEndHour4 = row.outdoorEndHour4;
forms.outdoorEndHour5 = row.outdoorEndHour5;
forms.outdoorEndHour6 = row.outdoorEndHour6;
forms.outdoorEndMin1 = row.outdoorEndMin1;
forms.outdoorEndMin2 = row.outdoorEndMin2;
forms.outdoorEndMin3 = row.outdoorEndMin3;
forms.outdoorEndMin4 = row.outdoorEndMin4;
forms.outdoorEndMin5 = row.outdoorEndMin5;
forms.outdoorEndMin6 = row.outdoorEndMin6;
forms.cooling1 = row.cooling1;
forms.cooling2 = row.cooling2;
forms.cooling3 = row.cooling3;
forms.cooling4 = row.cooling4;
forms.cooling5 = row.cooling5;
forms.cooling6 = row.cooling6;
}
function setCellStyle({ row, column, rowIndex, columnIndex }) {
let css_color = {};
css_color['padding-left'] = '0px';
css_color['padding-right'] = '0px';
css_color['borderColor'] = '#97d5fd';
css_color['padding'] = '0px';
css_color['textAlign'] = 'center';
if(row.transferId === forms.transferId){
css_color['backgroundColor'] = '#f0faff';
}else{
css_color['backgroundColor'] = '#fff';
}
return css_color;
}
function setHeaderCellStyle({ row, column, rowIndex, columnIndex }) {
let css_color;
var backcolor = 'd9f1ff';
css_color = { 'background-color': '#' + backcolor, 'padding-left': '0px', 'padding-right': '0px', 'borderColor': '#97d5fd', 'color': '#000', 'text-align': 'center', 'vertical-align': 'top' };
var backcolor = 'd9f1ff';
css_color = { 'background-color': '#' + backcolor, 'padding-left': '0px', 'padding-right': '0px', 'borderColor': '#97d5fd', 'color': '#000', 'text-align': 'center', 'vertical-align': 'top' };
return css_color;
}
const svg = `
<path class="path" d="
M 30 15
L 28 17
M 25.61 25.61
A 15 15, 0, 0, 1, 15 30
A 15 15, 0, 1, 1, 27.99 7.5
L 15 15
" style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>`
</script>
<style lang="less" scoped>
.remoteTitle{
width: 100%;
}
.card-content {
display: flex;
justify-content: space-between;
height: 20px;
width: 100%;
}
.remoteContent{
width:100%;
height: 100%;
display: flex;
justify-content:center;
align-items: center;
}
.demo-select{
display: flex;
justify-content: right;
width: 50%;
align-items: center;
height: 20px;
}
.demo-image {
width: 30%;
display: flex;
justify-content: left;
flex: 4;
margin-top: -10px;
}
.demo-image .block {
padding: 1px 0;
text-align: center;
border-right: solid 1px var(--el-border-color);
display: inline-block;
width: 80px;
box-sizing: border-box;
vertical-align: top;
}
.demo-image .block:last-child {
border-right: none;
}
.demo-image .demonstration {
display: block;
color: var(--el-text-color-secondary);
font-size: 12px;
margin-bottom: 0px;
}
.demo-button{
display: right;
margin-left: 15px;
width: 20%;
}
.el-select{
width:60px;
}
.custom-item {
margin-bottom: 15px;
display: flex;
}
.el-col{
display: flex;
justify-content: center;
align-items: center;
}
</style>
\ No newline at end of file
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
import { ref, reactive, onMounted, onUnmounted, watch } from 'vue'; import { ref, reactive, onMounted, onUnmounted, watch } from 'vue';
import http from '../../api/http'; import http from '../../api/http';
import store from "../../store/index"; import store from "../../store/index";
import { useRoute, useRouter } from 'vue-router'; // import { useRoute, useRouter } from 'vue-router';
import TransferStatusControl from '../../components/Remote/TransferStatusControl.vue'; import TransferStatusControl from '../../components/Remote/TransferStatusControl.vue';
import TransferRegControl from '../../components/Remote/TransferRegControl.vue'; import TransferRegControl from '../../components/Remote/TransferRegControl.vue';
import HolidayControl from '../../components/Remote/HolidayControl.vue'; import HolidayControl from '../../components/Remote/HolidayControl.vue';
...@@ -95,32 +95,6 @@ ...@@ -95,32 +95,6 @@
const isHeatControl = ref(false); const isHeatControl = ref(false);
const isNightFrequency = ref(false); const isNightFrequency = ref(false);
// const editableTabs = reactive([
// {
// title: '换热站状态',
// path: '../../components/Remote/TransferStatusControl.vue',
// name: 'TransferStatusControl',
// isActive: false,
// component: TransferStatusControl
// },
// {
// title: '远程寄存器值',
// path: '/Remote/RemoteTransferReg',
// name: 'TransferRegControl',
// isActive: false,
// component: TransferRegControl
// }
// ])
// function handleTabClick(tab) {
// activeTab.value = tab.name
// }
// const handleClick = (tab, event) => {
// console.log(tab.props.name);
// console.log(editableTabs.find(t => t.name === tab.props.name).path);
// router.push(editableTabs.find(t => t.name === tab.props.name).path);
// };
//初始化页面 //初始化页面
function initPage(){ function initPage(){
initRadioList(); initRadioList();
......
<template>
生产与结算数据分析表
</template>
\ No newline at end of file
<template>
年度参数管理
</template>
\ No newline at end of file
<template>
锅炉参数配置
</template>
\ No newline at end of file
<template>
能源消耗
</template>
\ No newline at end of file
<template>
瞬时热量对比配置
</template>
\ No newline at end of file
<template>
天气工况
</template>
\ No newline at end of file
<template>
气象干预
</template>
\ No newline at end of file
<script setup>
import {computed, isRef, ref, shallowRef} from "vue";
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import ReviseWindow from "./weatherManageSub/ReviseWindow.vue";
import BindWindow from "./weatherManageSub/BindWindow.vue";
const data = ref([
{
id: 1,
customName: '非节能(行政区)', // 自定义名称
heatingStationName: '行政区供热站', // 供热站名称
operateTime: '2024-03-19 21:33:50', // 操作时间
interventionMode: '气象仪模式', // 干预模式
temperature: 15.5, // 温度
windSpeed: 0, // 风速
illumination: 0, // 光照
switching: '手动模式', // 手自动切换
deviationPercentage: 10,// 自动偏差百分比
verifyTime: '20', // 验证时间
adjustTemperature: 1, // 调节温度
sort: 1 // 排序
},
{
id: 2,
customName: '非节能(行政区)', // 自定义名称
heatingStationName: '行政区供热站', // 供热站名称
operateTime: '2024-03-19 21:33:50', // 操作时间
interventionMode: '气象仪模式', // 干预模式
temperature: 15.5, // 温度
windSpeed: 0, // 风速
illumination: 0, // 光照
switching: '手动模式', // 手自动切换
deviationPercentage: 10,// 自动偏差百分比
verifyTime: '20', // 验证时间
adjustTemperature: 1, // 调节温度
sort: 2 // 排序
},
{
id: 3,
customName: '非节能(行政区)', // 自定义名称
heatingStationName: '行政区供热站', // 供热站名称
operateTime: '2024-03-19 21:33:50', // 操作时间
interventionMode: '气象仪模式', // 干预模式
temperature: 15.5, // 温度
windSpeed: 0, // 风速
illumination: 0, // 光照
switching: '手动模式', // 手自动切换
deviationPercentage: 10,// 自动偏差百分比
verifyTime: '20', // 验证时间
adjustTemperature: 1, // 调节温度
sort: 3 // 排序
},
{
id: 4,
customName: '非节能(行政区)', // 自定义名称
heatingStationName: '行政区供热站', // 供热站名称
operateTime: '2024-03-19 21:33:50', // 操作时间
interventionMode: '气象仪模式', // 干预模式
temperature: 15.5, // 温度
windSpeed: 0, // 风速
illumination: 0, // 光照
switching: '手动模式', // 手自动切换
deviationPercentage: 10,// 自动偏差百分比
verifyTime: '20', // 验证时间
adjustTemperature: 1, // 调节温度
sort: 4 // 排序
}
])
const currentPage = ref(1) // 当前页码
const pageSize = ref(30) // 每页显示条数
const reviseWindowOpen = ref(false) // 修改按钮弹窗状态
const bindWindowOpen = ref(false) // 绑定按钮弹窗状态
const totalPageCount = computed(() => { // 页面左下角总页数计算
return Math.ceil(data.value.length / pageSize.value)
})
const dependentSub = ref({}) // 弹窗数据
const tableHeaderClass = data => { // 表头样式
return 'table-header-class'
}
const tableBodyClass = data => { // 表体样式
return 'table-body-class'
}
const setCellStyle = (row, column, rowIndex, columnIndex) => {
let css_color = {}
css_color['padding-left'] = '0px'
css_color['padding-right'] = '0px'
css_color['padding-top'] = '3px'
css_color['padding-bottom'] = '3px'
return css_color
}
const revise = (row) => { // 修改按钮单击事件
dependentSub.value = row
reviseWindowOpen.value = true
}
const bind = (row) => { // 绑定按钮单击事件
dependentSub.value = row
bindWindowOpen.value = true
}
const confirmRevise = val => { // 修改弹窗确认按钮事件
for (let i = 0; i < data.value.length; i++) {
if (data.value[i].id === val.id) {
data.value[i].customName = val.customName
data.value[i].interventionMode = val.interventionMode
data.value[i].temperature = val.temperature
data.value[i].windSpeed = val.windSpeed
data.value[i].illumination = val.illumination
data.value[i].switching = val.switching
data.value[i].deviationPercentage = val.deviationPercentage
data.value[i].verifyTime = val.verifyTime
data.value[i].adjustTemperature = val.adjustTemperature
data.value[i].sort = val.sort
break
}
}
reviseWindowOpen.value = false
}
const confirmBind = val =>{
console.log("处理换热站绑定")
bindWindowOpen.value = false
}
</script>
<template>
<div class="container">
<div class="table-wrapper">
<el-table
:data="data"
stripe
border
style="width: 100%"
:cell-style="setCellStyle"
:header-cell-class-name="tableHeaderClass"
:row-class-name="tableBodyClass">
<el-table-column label="序号" type="index" align="center" width="60"/>
<el-table-column prop="customName" label="自定义名称" width="200"/>
<el-table-column prop="heatingStationName" label="供热站名称" width="160"/>
<el-table-column prop="operateTime" label="操作时间" width="210"/>
<el-table-column prop="interventionMode" label="干预模式" width="120"/>
<el-table-column prop="temperature" label="温度" width="60"/>
<el-table-column prop="windSpeed" label="风速" width="60"/>
<el-table-column prop="illumination" label="光照" width="60"/>
<el-table-column prop="switching" label="手自动切换" width="120"/>
<el-table-column prop="deviationPercentage" label="自动偏差百分比"/>
<el-table-column prop="verifyTime" label="验证时间"/>
<el-table-column prop="adjustTemperature" label="调节温度"/>
<el-table-column prop="sort" label="排序" width="60"/>
<el-table-column label="操作" width="200">
<template #default="scope">
<div class="table-operate-column">
<el-button link @click="revise(scope.row)" type="primary">修改</el-button>
<el-button link @click="bind(scope.row)" type="primary">绑定换热站</el-button>
<el-button link type="primary">详情</el-button>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination-wrapper">
<div class="pagination-text-area">
<div class="pagination-text">
共{{ data.length }}条记录,当前为第{{ currentPage }}页,共{{ totalPageCount }}页
</div>
</div>
<el-config-provider :locale="zhCn">
<el-pagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:page-sizes="[30, 40, 50, 100, 200, 300]"
:small="true"
layout="sizes, prev, pager, next, jumper"
:total="data.length"
@change="data"
class="pagination"/>
</el-config-provider>
</div>
<div class="dialog-wrapper">
<ReviseWindow
:open="reviseWindowOpen"
:data="dependentSub"
@onCancel="reviseWindowOpen = false"
@onConfirm="confirmRevise"
></ReviseWindow>
<BindWindow
:open="bindWindowOpen"
:data="dependentSub"
@onCancel="bindWindowOpen = false"
@onConfirm="confirmBind"></BindWindow>
</div>
</div>
</template>
<style scoped>
:deep(.table-header-class) {
text-align: center;
background-color: #c4d8f1 !important;
color: #124c6a;
font-weight: normal;
}
:deep(.table-body-class) {
color: black;
}
.table-operate-column {
display: flex;
justify-content: center;
align-items: center;
}
.table-operate-column .el-button {
color: #124c6a;
font-size: 12px;
}
.pagination-wrapper {
padding: 10px;
display: flex;
justify-content: space-between;
align-items: center;
}
.pagination-text {
font-size: 12px;
}
.pagination {
}
::v-deep .el-table__body tr:hover>td {
background: linear-gradient(to top, rgb(0, 198, 255), rgb(255, 255, 255)) !important;
}
</style>
\ No newline at end of file
<template>
风力配置管理
</template>
\ No newline at end of file
...@@ -73,8 +73,8 @@ const confirmRevise = val => { // 修改弹窗确认按钮事件 ...@@ -73,8 +73,8 @@ const confirmRevise = val => { // 修改弹窗确认按钮事件
} }
alterWeatherMagData(params).then(res=>{ alterWeatherMagData(params).then(res=>{
if(res.success){ if(res.success){
getData()
reviseWindowOpen.value = false reviseWindowOpen.value = false
getData()
ElMessage({ ElMessage({
message: '修改成功.', message: '修改成功.',
type: 'success', type: 'success',
......
...@@ -78,8 +78,12 @@ function onOpen() { ...@@ -78,8 +78,12 @@ function onOpen() {
async function handleConfirm() { async function handleConfirm() {
if (reviseData.value.hasOwnProperty('supplyId')) { if (reviseData.value.hasOwnProperty('supplyId')) {
if (reviseData.value.supplyId) { if (reviseData.value.supplyId) {
const result = await getTransferInterface(param) getTransferInterface({
customizeId: reviseData.value.customizeId,
supplyId: reviseData.value.supplyId
}).then(result => {
for (let item of result.data) { for (let item of result.data) {
if(item.selected.toLowerCase() === 'true'){
reviseData.value.transfers.push( reviseData.value.transfers.push(
{ {
customizeId: reviseData.value.customizeId, customizeId: reviseData.value.customizeId,
...@@ -89,12 +93,17 @@ async function handleConfirm() { ...@@ -89,12 +93,17 @@ async function handleConfirm() {
) )
} }
} }
}
formRef.value.validate(valid => { formRef.value.validate(valid => {
if (valid) { if (valid) {
emit('onConfirm', reviseData.value) emit('onConfirm', reviseData.value)
} }
}) })
})
}
}
} }
</script> </script>
......
...@@ -206,8 +206,8 @@ ...@@ -206,8 +206,8 @@
</el-icon> </el-icon>
</a> </a>
<el-dialog v-model="dialogFormVisible" width="1000" > <el-dialog v-model="dialogFormVisible" width="1000" >
<el-tabs :tab-position="tabPosition"> <el-tabs v-model="funsel" :tab-position="tabPosition">
<el-tab-pane label="个人资料"> <el-tab-pane label="个人资料" :name="true">
<el-form :model="userinfo"> <el-form :model="userinfo">
<el-form-item label="登录名:" label-width="140px"> <el-form-item label="登录名:" label-width="140px">
<el-input v-model="userinfo.userName"/> <el-input v-model="userinfo.userName"/>
...@@ -215,9 +215,6 @@ ...@@ -215,9 +215,6 @@
<el-form-item label="真实姓名:" label-width="140px"> <el-form-item label="真实姓名:" label-width="140px">
<el-input v-model="userinfo.realName"/> <el-input v-model="userinfo.realName"/>
</el-form-item> </el-form-item>
<el-form-item label="密码:" label-width="140px">
<el-input v-model="password" type="password"/>
</el-form-item>
<el-form-item label="供热企业:" label-width="140px"> <el-form-item label="供热企业:" label-width="140px">
{{ showenterpriseName }} {{ showenterpriseName }}
</el-form-item> </el-form-item>
...@@ -247,18 +244,18 @@ ...@@ -247,18 +244,18 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="修改密码"> <el-tab-pane label="修改密码" :name="false">
<!-- <el-form :model="savepass"> <el-form :model="savepass">
<el-form-item label="原密码:" label-width="140px"> <el-form-item label="原密码:" label-width="140px">
<el-input v-model="savepass.userName" type="password"/> <el-input v-model="savepass.old" type="password"/>
</el-form-item> </el-form-item>
<el-form-item label="新密码:" label-width="140px"> <el-form-item label="新密码:" label-width="140px">
<el-input v-model="savepass.realName" type="password"/> <el-input v-model="savepass.new1" type="password"/>
</el-form-item> </el-form-item>
<el-form-item label="再次输入新密码:" label-width="140px"> <el-form-item label="再次输入新密码:" label-width="140px">
<el-input v-model="savepass" type="password"/> <el-input v-model="savepass.new2" type="password"/>
</el-form-item> </el-form-item>
</el-form> --> </el-form>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<template #footer> <template #footer>
...@@ -383,6 +380,7 @@ import { ...@@ -383,6 +380,7 @@ import {
import DataMenu from "../components/DataMenu.vue"; import DataMenu from "../components/DataMenu.vue";
import EventBus from "../utils/event-bus.js"; import EventBus from "../utils/event-bus.js";
import { ElNotification } from "element-plus"; import { ElNotification } from "element-plus";
import { fa } from "element-plus/es/locales.mjs";
//import {RoleEnum} from '../utils/enumData'; //import {RoleEnum} from '../utils/enumData';
var $this; var $this;
...@@ -773,7 +771,12 @@ export default defineComponent({ ...@@ -773,7 +771,12 @@ export default defineComponent({
const countid = ref(); const countid = ref();
const sta = ref(0); const sta = ref(0);
const consta = ref(0); const consta = ref(0);
const password = ref('fnoihfnoighaoiw'); const savepass = ref({
"old":"",
"new1":"",
"new2":""
})
//获取用户信息 //获取用户信息
function getuser() { function getuser() {
var user = store.getters.getUserInfo(); var user = store.getters.getUserInfo();
...@@ -868,8 +871,17 @@ export default defineComponent({ ...@@ -868,8 +871,17 @@ export default defineComponent({
}, 60 * 1000); // 每分钟执行一次 }, 60 * 1000); // 每分钟执行一次
//个人资料弹出框 //个人资料弹出框
const dialogFormVisible = ref(false)//个人资料弹出框显示隐藏 const funsel = ref(true);
var userinfo = ref(111); const dialogFormVisible = ref(false);//个人资料弹出框显示隐藏
var userinfo = ref();
var message = ref();
var retmess = ref();
const open = () => {
ElMessage({
message: message.value,
type: retmess.value?'success':'warning',
})
}
async function getuserdata(){ async function getuserdata(){
var user = store.getters.getUserInfo(); var user = store.getters.getUserInfo();
if (user) { if (user) {
...@@ -878,16 +890,34 @@ export default defineComponent({ ...@@ -878,16 +890,34 @@ export default defineComponent({
const useridInfo = reactive({"id":userId.value}); const useridInfo = reactive({"id":userId.value});
await http.post("/api/User/getData", useridInfo).then((result) => { await http.post("/api/User/getData", useridInfo).then((result) => {
userinfo.value = result.data; userinfo.value = result.data;
console.log(result)
}) })
} }
function updateuser(){ function updateuser(){
userinfo.value.updateNullFields = ""; userinfo.value.updateNullFields = "";
userinfo.value.enterpriseName = ""; userinfo.value.enterpriseName = "";
userinfo.value.token = ""; userinfo.value.token = "";
if(funsel.value){
userinfo.value.roleId = roleId; userinfo.value.roleId = roleId;
http.post("/api/User/save", userinfo.value).then((result) => { http.post("/api/User/save", userinfo.value).then((result) => {
console.log(result) message.value = result.message;
retmess.value = result.success;
open();
}) })
}else{
if(savepass.value.new1 !== savepass.value.new2){
message.value = "两次输入的密码不一致!";
retmess.value = false;
open();
return;
}
userinfo.value.password = savepass.value.new1;
http.post("/api/User/password", userinfo.value).then((result) => {
message.value = result.message;
retmess.value = result.success;
open();
})
}
} }
getuserdata(); getuserdata();
...@@ -926,7 +956,8 @@ export default defineComponent({ ...@@ -926,7 +956,8 @@ export default defineComponent({
leaveMenu, leaveMenu,
updateuser, updateuser,
showenterpriseName, showenterpriseName,
password savepass,
funsel,
}; };
}, },
methods: { methods: {
......
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import legacy from '@vitejs/plugin-legacy'
// 导入path模块 // 导入path模块
import path from 'path' import path from 'path'
//import requireTransform from 'vite-plugin-require-transform' //import requireTransform from 'vite-plugin-require-transform'
...@@ -16,6 +17,9 @@ export default defineConfig({ ...@@ -16,6 +17,9 @@ export default defineConfig({
}, },
plugins: [ plugins: [
[vue()], [vue()],
legacy({
targets:['defaults','not IE 11'],
}),
// requireTransform({ // requireTransform({
// fileRegex: /.js$|.vue$/, // fileRegex: /.js$|.vue$/,
// }) // })
......
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