Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web-project
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
海康威视
web-project
Commits
c33ffbf0
Commit
c33ffbf0
authored
Aug 07, 2024
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 初次提交 调度管理
parent
ff7fa8d4
Changes
11
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2761 additions
and
0 deletions
+2761
-0
scheduling.js
src/api/scheduling.js
+121
-0
AnnualParamPage.vue
src/views/SchedulingPage/AnnualParamPage.vue
+394
-0
ConfigBoilerPage.vue
src/views/SchedulingPage/ConfigBoilerPage.vue
+319
-0
EnergyManagePage.vue
src/views/SchedulingPage/EnergyManagePage.vue
+464
-0
InstantHeatPage.vue
src/views/SchedulingPage/InstantHeatPage.vue
+195
-0
PhenomenonPage.vue
src/views/SchedulingPage/PhenomenonPage.vue
+301
-0
WeatherManagePage.vue
src/views/SchedulingPage/WeatherManagePage.vue
+181
-0
WindManagePage.vue
src/views/SchedulingPage/WindManagePage.vue
+285
-0
AddWindow.vue
src/views/SchedulingPage/weatherManageSub/AddWindow.vue
+200
-0
BindWindow.vue
src/views/SchedulingPage/weatherManageSub/BindWindow.vue
+144
-0
ReviseWindow.vue
src/views/SchedulingPage/weatherManageSub/ReviseWindow.vue
+157
-0
No files found.
src/api/scheduling.js
0 → 100644
View file @
c33ffbf0
import
http
from
'./http'
//能源消耗-获取
export
const
postEnergyManage
=
params
=>
{
return
http
.
post
(
`/api/energy/getData`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
// 能源消耗-删除
// export const postEnergyDel = EnergyId => {
// return http.post(`/api/energy/Delete`,{params:{EnergyId}}).then(res => res).catch(function (error) {
// console.log(error);
// })
// }
export
const
postEnergyDel
=
params
=>
{
return
http
.
post
(
`/api/energy/Delete`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
// 能源消耗-修改
export
const
postEnergyUpdate
=
params
=>
{
return
http
.
post
(
`/api/energy/Save`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
// 瞬时热量-获取列表
export
const
postInstantHeat
=
params
=>
{
return
http
.
post
(
`api/Scheduling/BizInstantaneousHeat/Get`
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
// 瞬时热量-新增修改
export
const
postInstantHeatUpdate
=
params
=>
{
return
http
.
post
(
`api/Scheduling/BizInstantaneousHeat/Update`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
// 参数设置
export
const
postConfigBoilerUpdate
=
params
=>
{
return
http
.
post
(
`api/configboiler/Save`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
export
const
postSecAbsTUc
=
params
=>
{
return
http
.
post
(
`/api/analysis/external/SecAbsTUc`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
export
const
postEnergyManageSave
=
params
=>
{
return
http
.
post
(
`/api/energy/Save`
,
params
).
then
(
res
=>
res
).
catch
(
function
(
error
)
{
console
.
log
(
error
);
})
}
export
const
getWeatherMagData
=
()
=>
{
// 获取气象干预数据
return
http
.
get
(
`/api/cusweather/getData`
)
}
export
const
alterWeatherMagData
=
params
=>
{
// 添加或修改气象干预数据/重新绑定换热站
return
http
.
post
(
`/api/cusweather/SaveAll`
,
params
)
}
export
const
getTransfer
=
param
=>
{
// 获取换热站列表
return
http
.
post
(
`/api/cusweather/getTransferIds?id=
${
param
}
`
,
param
)
}
export
const
getAnnualParam
=
()
=>
{
// 获取年度参数列表
return
http
.
post
(
'/api/Scheduling/BizHeatSet/Get'
)
}
export
const
alterAnnualParam
=
params
=>
{
// 修改年度参数
return
http
.
post
(
'/api/Scheduling/BizHeatSet/Update'
,
params
)
}
export
const
addAnnualParam
=
params
=>
{
// 新增年度参数
return
http
.
post
(
'/api/Scheduling/BizHeatSet/Add'
,
params
)
}
export
const
deleteAnnualParam
=
params
=>
{
// 删除年度参数
// console.log("地址:",`/api/Scheduling/BizHeatSet/Delete?Id=${params}`)
return
http
.
post
(
`/api/Scheduling/BizHeatSet/Delete?Id=
${
params
}
`
)
}
export
const
getPhenomenon
=
()
=>
{
// 获取数据列表————天气工况
return
http
.
post
(
'/api/Scheduling/WeatherCondition/Get'
)
}
export
const
addPhenomenon
=
params
=>
{
// 新增数据————天气工况
return
http
.
post
(
'/api/Scheduling/WeatherCondition/Add'
,
params
)
}
export
const
alterPhenomenon
=
params
=>
{
// 修改数据————天气工况
return
http
.
post
(
'/api/Scheduling/WeatherCondition/Update'
,
params
)
}
export
const
deletePhenomenon
=
params
=>
{
// 删除数据————天气工况
return
http
.
post
(
`/api/Scheduling/WeatherCondition/Delete?Id=
${
params
}
`
)
}
export
const
getWind
=
()
=>
{
// 获取数据列表————风力配置
return
http
.
post
(
'/api/Scheduling/WindConfiguration/Get'
)
}
export
const
addWind
=
params
=>
{
// 新增数据————风力配置
return
http
.
post
(
'/api/Scheduling/WindConfiguration/Add'
,
params
)
}
export
const
alterWind
=
params
=>
{
// 修改数据————风力配置
return
http
.
post
(
'/api/Scheduling/WindConfiguration/Update'
,
params
)
}
export
const
deleteWind
=
params
=>
{
// 删除数据————风力配置
return
http
.
post
(
`/api/Scheduling/WindConfiguration/Delete?Id=
${
params
}
`
)
}
src/views/SchedulingPage/AnnualParamPage.vue
0 → 100644
View file @
c33ffbf0
This diff is collapsed.
Click to expand it.
src/views/SchedulingPage/ConfigBoilerPage.vue
0 → 100644
View file @
c33ffbf0
<
template
>
<div
class=
"contentBlock"
>
<div
class=
"contentBlockInn"
>
<el-card
class=
"card-contianer"
>
<table
cellpadding=
"0"
cellspacing=
"1"
style=
"background-color: #99bbe8"
>
<tr>
<th
style=
"width: 25%"
>
电调阈开启度
</th>
<td
style=
"width: 60%; margin:0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.openingOfElectricValve"
>
<template
#
append
>
<div
style=
"width: 40px"
>
%
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
换热站
</th>
<td
style=
"text-align: left"
>
<el-checkbox-group
v-model=
"form.type"
style=
"width: 60%;"
>
<el-checkbox
v-for=
"(option, index) in options"
:key=
"index"
:label=
"option"
>
{{ option }}
</el-checkbox>
</el-checkbox-group>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
锅炉出水温度增加
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.boilerOutletWaterTemperature"
>
<
template
#
append
>
<div
style=
"width: 40px;"
>
℃
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
电调阈开启度保持时间
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-form>
<el-input
style=
"width: 80%"
v-model=
"formDatas.holdingTime"
>
<
template
#
append
>
<div
style=
"width: 40px"
>
分钟
</div>
</
template
>
</el-input>
</el-form>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
锅炉房供水总管流量上限值
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.upperLlimitMainFlow"
>
<
template
#
append
>
<div
style=
"width: 40px;"
>
m3/h
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
锅炉房供水总管流量下限值
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.lowerLlimitMainFlow"
>
<
template
#
append
>
<div
style=
"width: 40px"
>
m3/h
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
目标温度最大值
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.maxTargetTemperature"
>
<
template
#
append
>
<div
style=
"width: 40px;"
>
℃
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
总管流量上下限范围内持续时间
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"formDatas.bestHoldingTime"
>
<
template
#
append
>
<div
style=
"width: 40px"
>
分钟
</div>
</
template
>
</el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th></th>
<th
rowspan=
"3"
>
<div>
<div
class=
"btngrounp"
>
<el-button
type=
"primary"
@
click=
"onSave"
>
保存
</el-button>
<el-button
type=
"primary"
style=
"margin: 0 0 0 5px"
>
关闭
</el-button>
</div>
</div>
</th>
</tr>
</table>
</el-card>
</div>
</div>
</template>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
onUnmounted
,
onBeforeMount
}
from
"vue"
;
import
{
postConfigBoilerUpdate
}
from
'@/api/scheduling.js'
import
http
from
'../../api/http'
;
const
options
=
reactive
([
'瑞景园低区'
,
'瑞景园高区'
,
'翰锦园'
,
'圣美园低区'
,
'圣美园高区'
,
'社区服务中心'
,
'风雅园'
,
'风雅园_幼儿园'
,
'枫润园低区'
,
'枫润园高区'
]);
const
form
=
ref
({
types
:
[]
})
const
formDatas
=
ref
([
{
"updateNullFields"
:
"updateNullFields"
,
"configId"
:
""
,
"openingOfElectricValve"
:
""
,
"boilerOutletWaterTemperature"
:
""
,
"holdingTime"
:
""
,
"upperLlimitMainFlow"
:
""
,
"lowerLlimitMainFlow"
:
""
,
"maxTargetTemperature"
:
""
,
"bestHoldingTime"
:
""
,
"transferIds"
:
""
}
])
const
getListData
=
()
=>
{
http
.
get
(
"/api/configboiler/getData"
).
then
((
result
)
=>
{
formDatas
.
value
=
result
.
data
;
})
}
const
onSave
=
async
()
=>
{
await
postConfigBoilerUpdate
({...
formDatas
.
value
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
ElMessage
.
success
(
'修改成功'
)
getListData
()
}
})
}
// const onSave = () => {
// http.post("api/configboiler/Save","`updateNullFields=formDatas.updateNullFields&configId=formDatas.configId&openingOfElectricValve=formDatas.openingOfElectricValve&boilerOutletWaterTemperature=formDatas.boilerOutletWaterTemperature&holdingTime=formDatas.holdingTime&upperLlimitMainFlow=formDatas.upperLlimitMainFlow&lowerLlimitMainFlow=formDatas.lowerLlimitMainFlow&maxTargetTemperature=formDatas.maxTargetTemperature&bestHoldingTime=formDatas.bestHoldingTime&transferIds=formDatas.transferIds`").then((result) => {
// if (result.success) {
// ElMessage.success('修改成功')
// getListData()
// }
// }).catch((error) => {
// console.log(error)
// })
// }
// const onSave = () => {
// http.post("api/configboiler/Save","formDatas.value").then((result) => {
// if (result.success) {
// ElMessage.success('修改成功')
// getListData()
// }
// }).catch((error) => {
// console.log(error)
// })
// }
onMounted
(()
=>
{
getListData
()
})
</
script
>
<
style
lang=
"less"
scoped
>
.contentBlock {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ffffff;
overflow: auto;
}
table {
width: 100%;
}
table,
tr,
th,
td {
font-size: 14px;
margin: 0;
padding: 0;
}
table {
width: 100%;
}
table th {
background-color: #dfe8f6;
text-align: center;
padding: 5px 10px;
}
table td {
text-align: center;
background-color: #ffffff;
padding: 5px 10px;
}
.btngrounp {
width: 300px;
}
.gc td {
background-color: #a6ffa6;
}
.gc td:first-child {
background-color: #ffffff;
}
table.botList td {
width: 33%;
text-align: left;
font-weight: bolder;
}
</
style
>
\ No newline at end of file
src/views/SchedulingPage/EnergyManagePage.vue
0 → 100644
View file @
c33ffbf0
This diff is collapsed.
Click to expand it.
src/views/SchedulingPage/InstantHeatPage.vue
0 → 100644
View file @
c33ffbf0
<
template
>
<div
class=
"contentBlock"
>
<div
class=
"contentBlockInn"
>
<el-card
class=
"card-contianer"
>
<div
class=
"card-header"
>
<span>
瞬时热量对比配置
</span>
</div>
<table
cellpadding=
"0"
cellspacing=
"1"
>
<tr>
<th
style=
"width: 25%"
>
计划名称:
</th>
<td
style=
"width: 60%; margin:0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"List.planName"
></el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
偏差百分比 (%):
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"List.diffPercentage"
></el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
判断时间 (分):
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"List.timeoutMin"
></el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
调节温度 (℃)
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
v-model=
"List.tempRegulation"
></el-input>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<th
style=
"width: 25%"
>
备注
</th>
<td
style=
"width: 60%; margin: 0; padding: 0"
>
<table
cellpadding=
"0"
cellspacing=
"0"
>
<tr>
<td
style=
"text-align: left"
>
<el-input
style=
"width: 80%"
type=
"textarea"
rows=
"6"
v-model=
"List.description"
></el-input>
</td>
</tr>
</table>
</td>
</tr>
</table>
<div
class=
"btngrounp"
>
<el-button
type=
"primary"
@
click=
"onSave"
>
保存
</el-button>
<el-button
type=
"primary"
style=
"margin: 0 0 0 5px"
@
click=
"onCancel"
>
关闭
</el-button>
</div>
</el-card>
</div>
</div>
</
template
>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
onUnmounted
}
from
"vue"
;
import
{
postInstantHeat
,
postInstantHeatUpdate
}
from
"@/api/scheduling"
import
{
toRaw
}
from
"@vue/reactivity"
;
import
{
ElMessage
}
from
"element-plus"
;
import
http
from
"../../api/http"
;
const
loading
=
ref
(
false
)
const
List
=
ref
([
{
"planId"
:
""
,
"planName"
:
""
,
"diffPercentage"
:
""
,
"timeoutMin"
:
""
,
"tempRegulation"
:
""
,
"description"
:
""
,
"isActive"
:
''
}
])
const
getInstanceHeat
=
async
()
=>
{
loading
.
value
=
true
const
data
=
await
postInstantHeat
();
console
.
log
(
data
);
List
.
value
=
data
.
data
[
0
]
loading
.
value
=
false
}
const
onSave
=
async
()
=>
{
// await postInstantHeatUpdate(List.value)
await
http
.
post
(
"/api/Scheduling/BizInstantaneousHeat/Update"
,
{
...
List
.
value
},
false
).
then
((
result
)
=>
{
}).
catch
((
error
)
=>
{
console
.
log
(
error
)
})
ElMessage
.
success
(
'修改成功'
)
getInstanceHeat
()
}
onMounted
(()
=>
{
getInstanceHeat
()
})
</
script
>
<
style
lang=
"less"
scoped
>
.card-contianer {
background-color: #DFE8F6;
}
.card-header {
text-align: center;
font-weight: 700;
font-size: 28px;
margin-bottom: 10px;
}
.btngrounp {
margin-top: 10px;
text-align: center;
}
table {
width: 100%;
}
table,
tr,
th,
td {
font-size: 14px;
margin: 0;
padding: 0;
}
table {
width: 100%;
border-collapse: collapse;
}
table th {
background-color: #F2F6F8;
text-align: center;
padding: 5px 10px;
border: 1px solid #DFE8F6;
}
table td {
text-align: center;
background-color: #ffffff;
padding: 5px 10px;
border: 1px solid #DFE8F6;
border-bottom: 0;
}
table.botList td {
width: 33%;
text-align: left;
font-weight: bolder;
}
</
style
>
src/views/SchedulingPage/PhenomenonPage.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
onMounted
,
ref
}
from
"vue"
;
import
{
ElMessageBox
}
from
"element-plus"
;
import
{
getPhenomenon
,
addPhenomenon
,
alterPhenomenon
,
deletePhenomenon
}
from
"@/api/scheduling.js"
const
data
=
ref
()
const
dataBackup
=
ref
([])
const
searchKey
=
ref
(
''
)
// 查询参数
const
reviseWindowOpen
=
ref
(
false
)
const
addWindowOpen
=
ref
(
false
)
const
reviseForm
=
ref
({})
// 修改表单
const
addForm
=
ref
({})
// 新增表单
const
tableHeaderClass
=
data
=>
{
// 表头样式
return
'table-header-class'
}
const
tableBodyClass
=
data
=>
{
// 表体样式
return
'table-body-class'
}
function
add
(){
addWindowOpen
.
value
=
true
}
// 新增按钮单击事件
function
revise
(
val
){
reviseForm
.
value
=
{...
val
}
reviseWindowOpen
.
value
=
true
}
// 修改按钮单击事件
function
omit
(
val
){
let
id
=
val
.
phenomenonId
ElMessageBox
.
confirm
(
'点击确定后,该条数据将删除,是否继续?'
,
'Warning'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}
).
then
(()
=>
{
deletePhenomenon
(
id
).
then
(
res
=>
{
getData
()
})
}).
catch
(
err
=>
{})
}
// 删除按钮单击事件
function
search
(){
if
(
!
searchKey
.
value
){
getData
()
}
else
{
data
.
value
=
dataBackup
.
value
.
filter
(
item
=>
item
.
phenomenonName
.
includes
(
searchKey
.
value
)
)
}
}
function
handleClose
(){
reviseWindowOpen
.
value
=
false
addWindowOpen
.
value
=
false
resetInput
()
}
// 关闭弹窗
function
onReviseSubmit
(){
alterPhenomenon
(
reviseForm
.
value
).
then
(
res
=>
{
getData
()
reviseWindowOpen
.
value
=
false
})
}
// 修改表单提交
function
onAddSubmit
(){
addPhenomenon
(
addForm
.
value
).
then
(
res
=>
{
handleClose
()
getData
()
})
}
// 新增表单提交
function
resetInput
(){
addForm
.
value
=
{
phenomenonName
:
''
,
phenomenonType
:
''
,
phenomenonTemp
:
''
,
phenomenonDesc
:
''
}
}
// 清空新增表单输入框
onMounted
(()
=>
{
getData
()
})
function
getData
(){
getPhenomenon
().
then
(
res
=>
{
data
.
value
=
res
.
data
dataBackup
.
value
=
[...
data
.
value
]
})
}
</
script
>
<
template
>
<div
class=
"phenomenon-container"
>
<div
class=
"search-wrapper"
>
<el-row>
<el-col
:span=
"8"
label
>
名称:
</el-col>
<el-col
:span=
"16"
>
<el-input
clearable
v-model=
"searchKey"
/>
</el-col>
</el-row>
<el-button
type=
"primary"
@
click=
"search"
class=
"add-search-btn"
>
查询
</el-button>
<el-button
type=
"primary"
@
click=
"add"
class=
"add-search-btn"
>
新增
</el-button>
</div>
<div
class=
"table-wrapper"
>
<el-table
:data=
"data"
stripe
border
style=
"width: 100%"
:header-cell-class-name=
"tableHeaderClass"
:row-class-name=
"tableBodyClass"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"100"
/>
<el-table-column
prop=
"phenomenonName"
label=
"名称"
/>
<el-table-column
prop=
"phenomenonTemp"
label=
"对应温度"
/>
<el-table-column
prop=
"phenomenonDesc"
label=
"描述"
/>
<el-table-column
label=
"操作"
width=
"190"
>
<template
#
default=
"scope"
>
<div
class=
"table-operate-column"
>
<el-button
link
@
click=
"revise(scope.row)"
type=
"primary"
>
修改
</el-button>
<el-button
link
@
click=
"omit(scope.row)"
type=
"primary"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<div
class=
"dialog-window"
>
<el-dialog
title=
"天气工况设置修改"
v-model=
"reviseWindowOpen"
width=
"700px"
:before-close=
"handleClose"
>
<
template
#
default
>
<el-row
first
>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
名称:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"reviseForm.phenomenonName"
style=
"width: 370px"
>
<el-option
value=
"晴天"
label=
"晴天"
/>
<el-option
value=
"多云"
label=
"多云"
/>
<el-option
value=
"阴天"
label=
"阴天"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
类型:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"reviseForm.phenomenonType"
style=
"width: 370px"
>
<el-option
value=
"1"
label=
"1"
/>
<el-option
value=
"2"
label=
"2"
/>
<el-option
value=
"3"
label=
"3"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
对应温度:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"reviseForm.phenomenonTemp"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
描述:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"reviseForm.phenomenonDesc"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"onReviseSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"handleClose"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
<!-- 修改弹窗 -->
<el-dialog
title=
"天气工况设置新增"
v-model=
"addWindowOpen"
width=
"700px"
:before-close=
"handleClose"
>
<
template
#
default
>
<el-row
first
>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
名称:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"addForm.phenomenonName"
style=
"width: 370px"
>
<el-option
value=
"晴天"
label=
"晴天"
/>
<el-option
value=
"多云"
label=
"多云"
/>
<el-option
value=
"阴天"
label=
"阴天"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
类型:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"addForm.phenomenonType"
style=
"width: 370px"
>
<el-option
value=
"1"
label=
"1"
/>
<el-option
value=
"2"
label=
"2"
/>
<el-option
value=
"3"
label=
"3"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
对应温度:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"addForm.phenomenonTemp"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
描述:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"addForm.phenomenonDesc"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"onAddSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"handleClose"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
<!-- 新增弹窗 -->
</div>
</div>
</template>
<
style
lang=
"less"
scoped
>
.phenomenon-container{
width: 100%;
margin: 4px;
}
.search-wrapper {
width: 100%;
display: flex;
justify-content: start;
}
.search-wrapper .el-row {
width: 50%;
border: none;
display: flex;
align-items: center;
margin: 5px 10px 5px 5px;
}
.el-col[label] {
display: flex;
justify-content: end;
align-items: center;
}
.add-search-btn {
margin: 5px 10px 5px 0;
}
:deep(.table-header-class) {
text-align: center;
font-size: 12px;
background-color: #c4d8f1 !important;
color: #124c6a;
}
:deep(.table-body-class) {
font-size: 12px;
color: black;
}
.table-operate-column {
display: flex;
justify-content: center;
align-items: center;
}
.table-operate-column .el-button {
font-size: 12px;
}
::v-deep .el-table__body tr:hover > td {
background: linear-gradient(to top, rgb(0, 198, 255), rgb(255, 255, 255)) !important;
}
.el-row[first]{
border-top: 1px solid #a6c3e9;
}
.el-row{
border-left: 1px solid #a6c3e9;
border-right: 1px solid #a6c3e9;
border-bottom: 1px solid #a6c3e9;
width: 100%;
height: 35px;
color: #124362;
}
.el-col[col-label]{
display: flex;
justify-content: end;
align-items: center;
border-right: 1px solid #a6c3e9;
background-color: #dfe8f6;
padding-right: 5px;
}
.el-col[col-value]{
display: flex;
justify-content: start;
align-items: center;
padding-left: 5px;
}
.el-input{
color: black;
height: 24px;
}
</
style
>
\ No newline at end of file
src/views/SchedulingPage/WeatherManagePage.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
computed
,
isRef
,
onMounted
,
reactive
,
ref
,
shallowRef
}
from
"vue"
;
import
ReviseWindow
from
"./weatherManageSub/ReviseWindow.vue"
;
import
BindWindow
from
"./weatherManageSub/BindWindow.vue"
;
import
{
getWeatherMagData
,
alterWeatherMagData
,
getTransfer
}
from
'@/api/scheduling.js'
import
AddWindow
from
"./weatherManageSub/AddWindow.vue"
;
const
data
=
ref
()
const
reviseWindowOpen
=
ref
(
false
)
// 修改按钮弹窗状态
const
bindWindowOpen
=
ref
(
false
)
// 绑定按钮弹窗状态
const
addWindowOpen
=
ref
(
false
)
// 新增按钮弹窗状态
const
dependentSub
=
ref
({})
// 修改和绑定弹窗数据依赖
const
tableHeaderClass
=
data
=>
{
// 表头样式
return
'table-header-class'
}
const
tableBodyClass
=
data
=>
{
// 表体样式
return
'table-body-class'
}
const
revise
=
(
row
)
=>
{
// 修改按钮单击事件
dependentSub
.
value
=
row
reviseWindowOpen
.
value
=
true
}
const
bind
=
(
row
)
=>
{
// 绑定按钮单击事件
// getTransfer(id).then(res=>{
// // console.log(res)
// })
dependentSub
.
value
=
row
bindWindowOpen
.
value
=
true
}
const
confirmRevise
=
val
=>
{
// 修改弹窗确认按钮事件
alterWeatherMagData
(
val
).
then
(
res
=>
{
getData
()
reviseWindowOpen
.
value
=
false
})
}
const
confirmBind
=
val
=>
{
bindWindowOpen
.
value
=
false
}
onMounted
(()
=>
{
getData
()
})
function
getData
()
{
getWeatherMagData
().
then
(
res
=>
{
data
.
value
=
res
.
data
})
}
function
handleAddWinOpenClose
(){
addWindowOpen
.
value
=
false
}
function
handleAdd
(
val
){
alterWeatherMagData
(
val
).
then
(
res
=>
{
getData
()
addWindowOpen
.
value
=
false
})
}
// 新增数据提交
</
script
>
<
template
>
<div
class=
"weather-manage-container"
>
<el-row>
<el-col
:span=
"15"
left-col
>
</el-col>
<el-col
:span=
"9"
right-col
>
<el-button
type=
"primary"
@
click=
"addWindowOpen = true"
class=
"add-btn"
>
新增
</el-button>
<!--
<el-button
type=
"primary"
class=
"add-btn"
>
新增
</el-button>
-->
<el-button
type=
"primary"
>
查询
</el-button>
</el-col>
</el-row>
<div
class=
"table-wrapper"
>
<el-table
:data=
"data"
stripe
border
style=
"width: 100%"
:header-cell-class-name=
"tableHeaderClass"
:row-class-name=
"tableBodyClass"
>
<el-table-column
prop=
"allowPagingId"
label=
"编号"
align=
"center"
width=
"60"
/>
<el-table-column
prop=
"customizeName"
label=
"自定义名称"
width=
"200"
/>
<el-table-column
prop=
"supplyName"
label=
"供热站名称"
width=
"160"
/>
<el-table-column
prop=
"operateTime"
label=
"操作时间"
width=
"210"
/>
<el-table-column
prop=
"isFixed"
label=
"干预模式"
width=
"120"
/>
<el-table-column
prop=
"temperature"
label=
"温度"
width=
"60"
/>
<el-table-column
prop=
"wind"
label=
"风速"
width=
"60"
/>
<el-table-column
prop=
"illumination"
label=
"光照"
width=
"60"
/>
<el-table-column
prop=
"isAuto"
label=
"手自动切换"
width=
"120"
/>
<el-table-column
prop=
"diffPercentage"
label=
"自动偏差百分比"
width=
"170"
/>
<el-table-column
prop=
"timeoutMin"
label=
"验证时间"
width=
"100"
/>
<el-table-column
prop=
"tempRegulation"
label=
"调节温度"
width=
"100"
/>
<el-table-column
prop=
"sort"
label=
"排序"
width=
"60"
/>
<el-table-column
label=
"操作"
width=
"200"
>
<template
#
default=
"scope"
>
<div
class=
"table-operate-column"
>
<!--
<el-link
:underline=
"false"
@
click=
"revise(scope.row)"
type=
"primary"
>
修改
</el-link>
-->
<!--
<el-link
:underline=
"false"
@
click=
"bind(scope.row)"
type=
"primary"
>
绑定换热站
</el-link>
-->
<!--
<el-link
:underline=
"false"
type=
"primary"
>
详情
</el-link>
-->
<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=
"dialog-wrapper"
>
<AddWindow
:open=
"addWindowOpen"
@
onCancel=
"handleAddWinOpenClose"
@
on-confirm=
"handleAdd"
></AddWindow>
<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
>
.weather-manage-container
{
width
:
100%
;
margin
:
4px
;
}
.el-col
[
left-col
]
{
border-right
:
1px
solid
#a6c3e9
;
}
.el-row
{
width
:
100%
;
border
:
1px
solid
#a6c3e9
;
margin
:
5px
0
10px
0
;
}
.el-col
[
right-col
]
{
padding-left
:
10px
;
}
.add-btn
{
margin
:
5px
0
;
}
:deep
(
.table-header-class
)
{
text-align
:
center
;
font-size
:
12px
;
background-color
:
#c4d8f1
!important
;
color
:
#124c6a
;
}
:deep
(
.table-body-class
)
{
font-size
:
12px
;
color
:
black
;
}
.table-wrapper
{
}
.table-operate-column
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.table-operate-column
.el-button
{
font-size
:
12px
;
}
::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
src/views/SchedulingPage/WindManagePage.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
onMounted
,
ref
,
watch
,
watchEffect
}
from
"vue"
;
import
{
ElMessageBox
}
from
"element-plus"
;
import
{
getWind
,
deleteWind
,
alterWind
,
addWind
}
from
"@/api/scheduling.js"
const
data
=
ref
()
const
dataBackup
=
ref
([])
const
searchKey
=
ref
(
''
)
// 查询参数
const
reviseWindowOpen
=
ref
(
false
)
const
addWindowOpen
=
ref
(
false
)
const
reviseForm
=
ref
({})
// 修改表单
const
addForm
=
ref
({})
// 新增表单
const
tableHeaderClass
=
data
=>
{
// 表头样式
return
'table-header-class'
}
const
tableBodyClass
=
data
=>
{
// 表体样式
return
'table-body-class'
}
function
add
()
{
addWindowOpen
.
value
=
true
}
// 新增按钮单击事件
function
revise
(
val
)
{
reviseForm
.
value
=
{...
val
}
reviseWindowOpen
.
value
=
true
}
// 修改按钮单击事件
function
omit
(
val
)
{
let
id
=
val
.
windId
ElMessageBox
.
confirm
(
'点击确定后,该条数据将删除,是否继续?'
,
'Warning'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}
).
then
(()
=>
{
deleteWind
(
id
).
then
(
res
=>
{
getData
()
})
}).
catch
(
err
=>
{
})
}
// 删除按钮单击事件
function
search
()
{
if
(
!
searchKey
.
value
){
getData
()
}
else
{
data
.
value
=
dataBackup
.
value
.
filter
(
item
=>
searchKey
.
value
==
item
.
windLevel
)
}
}
// 处理查询
function
handleClose
()
{
reviseWindowOpen
.
value
=
false
addWindowOpen
.
value
=
false
resetInput
()
}
// 关闭弹窗
function
onReviseSubmit
()
{
alterWind
(
reviseForm
.
value
).
then
(
res
=>
{
getData
()
handleClose
()
})
}
// 修改表单提交
function
onAddSubmit
()
{
addWind
(
addForm
.
value
).
then
(
res
=>
{
getData
()
handleClose
()
})
}
// 新增表单提交
onMounted
(()
=>
{
getData
()
})
function
getData
()
{
getWind
().
then
(
res
=>
{
data
.
value
=
res
.
data
dataBackup
.
value
=
[...
data
.
value
]
})
}
function
resetInput
()
{
addForm
.
value
=
{
windLevel
:
''
,
windTemp
:
''
,
windDesc
:
''
}
}
</
script
>
<
template
>
<div
class=
"windManage-container"
>
<div
class=
"search-wrapper"
>
<el-row>
<el-col
:span=
"8"
label
>
级数:
</el-col>
<el-col
:span=
"16"
>
<el-select
placeholder=
""
clearable
style=
"width: 200px"
v-model=
"searchKey"
>
<el-option
v-for=
"item in 14"
:key=
"item"
:value=
"item"
:label=
"item"
/>
</el-select>
</el-col>
</el-row>
<el-button
type=
"primary"
@
click=
"search"
class=
"add-search-btn"
>
查询
</el-button>
<el-button
type=
"primary"
@
click=
"add"
class=
"add-search-btn"
>
新增
</el-button>
</div>
<div
class=
"table-wrapper"
>
<el-table
:data=
"data"
stripe
border
style=
"width: 100%"
:header-cell-class-name=
"tableHeaderClass"
:row-class-name=
"tableBodyClass"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"100"
/>
<el-table-column
prop=
"windLevel"
label=
"级数"
/>
<el-table-column
prop=
"windTemp"
label=
"对应温度"
/>
<el-table-column
prop=
"windDesc"
label=
"描述"
/>
<el-table-column
label=
"操作"
width=
"190"
>
<template
#
default=
"scope"
>
<div
class=
"table-operate-column"
>
<el-button
link
@
click=
"revise(scope.row)"
type=
"primary"
>
修改
</el-button>
<el-button
link
@
click=
"omit(scope.row)"
type=
"primary"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
<div
class=
"dialog-window"
>
<el-dialog
title=
"风力配置修改"
v-model=
"reviseWindowOpen"
width=
"700px"
:before-close=
"handleClose"
>
<
template
#
default
>
<el-row
first
>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
级数:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"reviseForm.windLevel"
style=
"width: 370px"
>
<el-option
v-for=
"(item,index) in 14"
:key=
"index"
:value=
"item"
:label=
"item"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
对应温度:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"reviseForm.windTemp"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
描述:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"reviseForm.windDesc"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"onReviseSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"handleClose"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
<!-- 修改弹窗 -->
<el-dialog
title=
"风力配置新增"
v-model=
"addWindowOpen"
width=
"700px"
:before-close=
"handleClose"
>
<
template
#
default
>
<el-row
first
>
<el-col
:span=
"8"
col-label
class=
"energy-type-class"
>
级数:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-select
placeholder=
""
size=
"small"
v-model=
"addForm.windLevel"
style=
"width: 370px"
>
<el-option
v-for=
"(item,index) in 14"
:key=
"index"
:value=
"item"
:label=
"item"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
对应温度:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"addForm.windTemp"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
col-label
>
描述:
</el-col>
<el-col
:span=
"16"
col-value
>
<el-input
v-model=
"addForm.windDesc"
placeholder=
""
style=
"width: 370px"
/>
</el-col>
</el-row>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"onAddSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"handleClose"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
<!-- 新增弹窗 -->
</div>
</div>
</template>
<
style
lang=
"less"
scoped
>
.windManage-container {
width: 100%;
margin: 4px;
}
.search-wrapper {
width: 100%;
display: flex;
justify-content: start;
}
.search-wrapper .el-row {
width: 50%;
border: none;
display: flex;
align-items: center;
margin: 5px 10px 5px 5px;
}
.el-col[label] {
display: flex;
justify-content: end;
align-items: center;
}
.add-search-btn {
margin: 5px 10px 5px 0;
}
:deep(.table-header-class) {
text-align: center;
font-size: 12px;
background-color: #c4d8f1 !important;
color: #124c6a;
}
:deep(.table-body-class) {
font-size: 12px;
color: black;
}
.table-operate-column {
display: flex;
justify-content: center;
align-items: center;
}
.table-operate-column .el-button {
font-size: 12px;
}
::v-deep .el-table__body tr:hover > td {
background: linear-gradient(to top, rgb(0, 198, 255), rgb(255, 255, 255)) !important;
}
.el-row[first] {
border-top: 1px solid #a6c3e9;
}
.el-row {
border-left: 1px solid #a6c3e9;
border-right: 1px solid #a6c3e9;
border-bottom: 1px solid #a6c3e9;
width: 100%;
height: 35px;
color: #124362;
}
.el-col[col-label] {
display: flex;
justify-content: end;
align-items: center;
border-right: 1px solid #a6c3e9;
background-color: #dfe8f6;
padding-right: 5px;
}
.el-col[col-value] {
display: flex;
justify-content: start;
align-items: center;
padding-left: 5px;
}
.el-input {
color: black;
height: 24px;
}
</
style
>
\ No newline at end of file
src/views/SchedulingPage/weatherManageSub/AddWindow.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
ref
,
defineProps
,
defineEmits
,
computed
,
isRef
,
onMounted
,
watchEffect
}
from
"vue"
;
const
props
=
defineProps
({
open
:
{
type
:
Boolean
,
default
:
false
,
required
:
true
}
})
const
emit
=
defineEmits
([
'onCancel'
,
'onConfirm'
])
const
addData
=
ref
({
transfers
:[],
// 换热站
customizeName
:
''
,
// 自定义名称
diffPercentage
:
''
,
// 自动偏差百分比
illumination
:
''
,
// 光照
isAuto
:
false
,
// 是否自动模式
isFixed
:
false
,
// 干预模式:true 固定模式,false 气象仪模式
operateTime
:
""
,
// 操作时间
sort
:
''
,
// 排序
tempRegulation
:
''
,
// 自动调节温度
temperature
:
''
,
// 温度
timeoutMin
:
''
,
// 自动验证循环时间
wind
:
''
,
// 风速
description
:
null
,
// 排序字段,全为Null
updateNullFields
:
""
,
// 无用,但不为空
isActive
:
false
,
// 是否启用
})
const
inputStyle
=
{
color
:
'black'
,
height
:
'24px'
}
function
handleClose
()
{
addData
.
value
=
{
customizeName
:
''
,
// 自定义名称
isFixed
:
false
,
// 干预模式:true 固定模式,false 气象仪模式
temperature
:
''
,
// 温度
wind
:
''
,
// 风速
illumination
:
''
,
// 光照
sort
:
''
,
// 排序
isAuto
:
false
,
// 是否自动模式
diffPercentage
:
''
,
// 自动偏差百分比
timeoutMin
:
''
,
// 自动验证循环时间
tempRegulation
:
''
,
// 自动调节温度
operateTime
:
""
,
// 操作时间
description
:
null
,
// 排序字段,全为Null
updateNullField
:
""
,
// 无用,但不为空
isActive
:
false
,
// 是否启用
supplyId
:
''
,
// 供热站编号
}
emit
(
'onCancel'
)
}
function
handleConfirm
()
{
addData
.
value
.
operateTime
=
getCurrentDateTime
()
emit
(
'onConfirm'
,
addData
.
value
)
addData
.
value
=
{
customizeName
:
''
,
// 自定义名称
isFixed
:
false
,
// 干预模式:true 固定模式,false 气象仪模式
temperature
:
''
,
// 温度
wind
:
''
,
// 风速
illumination
:
''
,
// 光照
sort
:
''
,
// 排序
isAuto
:
false
,
// 是否自动模式
diffPercentage
:
''
,
// 自动偏差百分比
timeoutMin
:
''
,
// 自动验证循环时间
tempRegulation
:
''
,
// 自动调节温度
operateTime
:
""
,
// 操作时间
description
:
null
,
// 排序字段,全为Null
updateNullField
:
""
,
// 无用,但不为空
isActive
:
false
,
// 是否启用
supplyId
:
''
,
// 供热站编号
}
}
function
getCurrentDateTime
()
{
const
now
=
new
Date
();
const
year
=
now
.
getFullYear
();
const
month
=
(
'0'
+
(
now
.
getMonth
()
+
1
)).
slice
(
-
2
);
// 月份从0开始,所以加1
const
day
=
(
'0'
+
now
.
getDate
()).
slice
(
-
2
);
const
hours
=
(
'0'
+
now
.
getHours
()).
slice
(
-
2
);
const
minutes
=
(
'0'
+
now
.
getMinutes
()).
slice
(
-
2
);
const
seconds
=
(
'0'
+
now
.
getSeconds
()).
slice
(
-
2
);
return
`
${
year
}
-
${
month
}
-
${
day
}
${
hours
}
:
${
minutes
}
:
${
seconds
}
`
;
}
// 生成时间
</
script
>
<
template
>
<el-dialog
v-model=
"props.open"
width=
"1000px"
title=
"新增"
@
close=
"emit('onCancel')"
>
<template
#
default
>
<div
class=
"dialog-content"
>
<el-row
style=
"border-top: #a6c3e9 1px solid"
>
<el-col
:span=
"8"
class=
"content-col-label"
>
自定义名称:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.customizeName"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
干预模式:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-radio-group
v-model=
"addData.isFixed"
>
<el-radio
:value=
"true"
:style=
"
{marginLeft:'10px'}">固定模式
</el-radio>
<el-radio
:value=
"false"
:style=
"
{marginLeft:'-15px'}">气象仪模式
</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
温度:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.temperature"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
风速:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.wind"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
光照:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.illumination"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
排序:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.sort"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"5"
class=
"content-col-label"
>
切换自动模式:
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-checkbox
:style=
"
{marginLeft:'10px'}" v-model="addData.isAuto" label="自动模式"/>
</el-col>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动偏差百分比(%d):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.diffPercentage"
style=
"width: 240px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动验证循环时间(分钟):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.timeoutMin"
style=
"width: 240px"
/>
</el-col>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动调节温度(℃):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"addData.tempRegulation"
style=
"width: 240px"
/>
</el-col>
</el-row>
</div>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleConfirm"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"handleClose"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
style
scoped
>
.el-row
{
color
:
black
;
height
:
35px
;
border-bottom
:
#a6c3e9
1px
solid
;
border-left
:
#a6c3e9
1px
solid
;
border-right
:
#a6c3e9
1px
solid
;
}
.content-col-label
{
display
:
flex
;
justify-content
:
end
;
align-items
:
center
;
background-color
:
#dfe8f6
;
border-right
:
#a6c3e9
1px
solid
;
padding-right
:
5px
;
}
.content-col-value
{
display
:
flex
;
justify-content
:
start
;
align-items
:
center
;
padding-left
:
5px
;
}
.el-input
{
color
:
black
;
}
.el-radio
{
color
:
black
;
}
.el-checkbox
{
color
:
black
;
}
</
style
>
\ No newline at end of file
src/views/SchedulingPage/weatherManageSub/BindWindow.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
ref
,
defineProps
,
defineEmits
,
watchEffect
}
from
"vue"
;
const
props
=
defineProps
({
open
:
{
type
:
Boolean
,
default
:
false
,
required
:
true
},
data
:
{
type
:
Object
,
default
:
null
,
required
:
true
}
})
const
emit
=
defineEmits
({
onCancel
:
null
,
onConfirm
:
({})
=>
{
return
true
}
})
const
bindData
=
ref
({})
watchEffect
(()
=>
{
bindData
.
value
=
{...
props
.
data
}
})
const
inputStyle
=
{
color
:
'black'
,
height
:
'24px'
}
const
heatingStationList
=
ref
([
'行政区供热站'
,
'二号供热站'
,
'三号供热站'
])
// 供热站列表
const
heatExchangeList
=
ref
([
'兴安里'
,
'永明里'
,
'润泽园'
,
'凯旋一期'
,
'凯旋二期'
,
'凯旋三期'
,
'兴旺里东区'
,
'兴旺里西区'
,
'兴盛里南环'
,
'兴盛里北环'
,
'七邻里'
,
'胜利里南区'
,
'胜利里北区'
,
'兴慧里'
,
'兴德里'
,
'行政办公区'
,
'开元里'
,
'振业里'
])
// 换热站列表
const
onSubmit
=
()
=>
{
emit
(
'onConfirm'
,
bindData
)
}
// 点击保存按钮
</
script
>
<
template
>
<el-dialog
v-model=
"props.open"
width=
"1000px"
title=
"换热站绑定"
@
close=
"emit('onCancel')"
>
<template
#
default
>
<div
class=
"dialog-content"
>
<el-row
style=
"border-top: #a6c3e9 1px solid"
class=
"not-select-row"
>
<el-col
:span=
"8"
class=
"content-col-label"
>
自定义名称:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
v-model=
"bindData.customizeName"
style=
"width: 510px"
:input-style=
"inputStyle"
/>
</el-col>
</el-row>
<el-row
class=
"not-select-row"
>
<el-col
:span=
"8"
class=
"content-col-label"
>
供热站:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-select
v-model=
"bindData.supplyName"
placeholder=
""
style=
"width: 210px;"
class=
"custom-select"
size=
"small"
>
<el-option
v-for=
"item in heatingStationList"
:key=
"item"
:label=
"item"
:value=
"item"
/>
</el-select>
</el-col>
</el-row>
<el-row
class=
"select-row"
>
<el-col
:span=
"8"
class=
"content-col-label"
>
换热站:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-checkbox-group
v-model=
"bindData.heatExchangeList"
style=
"width: 510px"
>
<el-checkbox
v-for=
"item in heatExchangeList"
:key=
"item"
:label=
"item"
/>
</el-checkbox-group>
</el-col>
</el-row>
</div>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"emit('onCancel')"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
style
scoped
>
.not-select-row
{
color
:
black
;
height
:
35px
;
border-bottom
:
#a6c3e9
1px
solid
;
border-left
:
#a6c3e9
1px
solid
;
border-right
:
#a6c3e9
1px
solid
;
}
.select-row
{
color
:
black
;
border-bottom
:
#a6c3e9
1px
solid
;
border-left
:
#a6c3e9
1px
solid
;
border-right
:
#a6c3e9
1px
solid
;
}
.content-col-label
{
display
:
flex
;
justify-content
:
end
;
align-items
:
center
;
background-color
:
#dfe8f6
;
border-right
:
#a6c3e9
1px
solid
;
padding-right
:
5px
;
}
.content-col-value
{
display
:
flex
;
justify-content
:
start
;
align-items
:
center
;
padding-left
:
5px
;
}
.el-input
{
color
:
black
;
}
.el-checkbox
{
color
:
black
;
}
.custom-select
.el-input__inner
{
color
:
yellow
;
background-color
:
#dfe8f6
;
}
</
style
>
\ No newline at end of file
src/views/SchedulingPage/weatherManageSub/ReviseWindow.vue
0 → 100644
View file @
c33ffbf0
<
script
setup
>
import
{
ref
,
defineProps
,
defineEmits
,
computed
,
isRef
,
onMounted
,
watchEffect
}
from
"vue"
;
const
props
=
defineProps
({
open
:
{
type
:
Boolean
,
default
:
false
,
required
:
true
},
data
:
{
type
:
Object
,
default
:
{},
required
:
true
}
})
const
emit
=
defineEmits
({
onCancel
:
null
,
onConfirm
:
data
=>
{
return
true
}
})
const
reviseData
=
ref
({})
watchEffect
(()
=>
{
reviseData
.
value
=
{...
props
.
data
}
})
const
inputStyle
=
{
color
:
'black'
,
height
:
'24px'
}
const
switchingisAuto
=
computed
({
get
()
{
return
reviseData
.
value
.
isAuto
===
'自动模式'
},
set
(
newValue
)
{
if
(
newValue
)
{
reviseData
.
value
.
isAuto
=
'自动模式'
}
else
{
reviseData
.
value
.
isAuto
=
'手动模式'
}
}
})
// 可写计算属性,手动、自动模式切换
</
script
>
<
template
>
<el-dialog
v-model=
"props.open"
width=
"1000px"
title=
"自定义修改"
@
close=
"emit('onCancel')"
>
<template
#
default
>
<div
class=
"dialog-content"
>
<el-row
style=
"border-top: #a6c3e9 1px solid"
>
<el-col
:span=
"8"
class=
"content-col-label"
>
自定义名称:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.customizeName"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
干预模式:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-radio-group
v-model=
"reviseData.isFixed"
>
<el-radio
value=
"固定模式"
:style=
"
{marginLeft:'10px'}">固定模式
</el-radio>
<el-radio
value=
"气象仪模式"
:style=
"
{marginLeft:'-15px'}">气象仪模式
</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
温度:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.temperature"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
风速:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.wind"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
光照:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.illumination"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"8"
class=
"content-col-label"
>
排序:
</el-col>
<el-col
:span=
"16"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.sort"
style=
"width: 510px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"5"
class=
"content-col-label"
>
切换自动模式:
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-checkbox
:style=
"
{marginLeft:'10px'}" v-model="switchingisAuto" label="自动模式"/>
</el-col>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动偏差百分比(%d):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.diffPercentage"
style=
"width: 240px"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动验证循环时间(分钟):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.timeoutMin"
style=
"width: 240px"
/>
</el-col>
<el-col
:span=
"5"
class=
"content-col-label"
>
自动调节温度(℃):
</el-col>
<el-col
:span=
"7"
class=
"content-col-value"
>
<el-input
:input-style=
"inputStyle"
v-model=
"reviseData.tempRegulation"
style=
"width: 240px"
/>
</el-col>
</el-row>
</div>
</
template
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"emit('onConfirm', reviseData)"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"emit('onCancel')"
>
关闭
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
style
scoped
>
.el-row
{
color
:
black
;
height
:
35px
;
border-bottom
:
#a6c3e9
1px
solid
;
border-left
:
#a6c3e9
1px
solid
;
border-right
:
#a6c3e9
1px
solid
;
}
.content-col-label
{
display
:
flex
;
justify-content
:
end
;
align-items
:
center
;
background-color
:
#dfe8f6
;
border-right
:
#a6c3e9
1px
solid
;
padding-right
:
5px
;
}
.content-col-value
{
display
:
flex
;
justify-content
:
start
;
align-items
:
center
;
padding-left
:
5px
;
}
.el-input
{
color
:
black
;
}
.el-radio
{
color
:
black
;
}
.el-checkbox
{
color
:
black
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment