新增策略页面
This commit is contained in:
87
src/views/ems/dzjk/clpz/xftg/TempPowerChart.vue
Normal file
87
src/views/ems/dzjk/clpz/xftg/TempPowerChart.vue
Normal file
@ -0,0 +1,87 @@
|
||||
|
||||
<template>
|
||||
<el-card shadow="always" class="common-card-container common-card-container-body-no-padding" style="margin-top:25px;">
|
||||
<div slot="header">
|
||||
<span class="card-title">策略模板曲线展示</span>
|
||||
</div>
|
||||
<div style="height: 360px" id="tempChart"/>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
import resize from '@/mixins/ems/resize'
|
||||
|
||||
export default {
|
||||
mixins: [resize],
|
||||
data() {
|
||||
return {
|
||||
chart: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.initChart()
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (!this.chart) {
|
||||
return
|
||||
}
|
||||
this.chart.dispose()
|
||||
this.chart = null
|
||||
},
|
||||
methods: {
|
||||
initChart() {
|
||||
this.chart = echarts.init(document.querySelector('#tempChart'))
|
||||
this.setOptions()
|
||||
},
|
||||
setOptions() {
|
||||
this.chart.setOption({
|
||||
color:['#FFBD00','#3C81FF'],
|
||||
legend: {
|
||||
left: 'center',
|
||||
bottom: '10',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { // 坐标轴指示器,坐标轴触发有效
|
||||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
|
||||
}
|
||||
},
|
||||
textStyle:{
|
||||
color:"#333333",
|
||||
},
|
||||
xAxis: {
|
||||
data: ['01:00','02:00','03:00','05:00','06:00','07:00','08:00','09:00','10:00'],
|
||||
axisLine: {
|
||||
lineStyle:{
|
||||
color: '#333333',
|
||||
}
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
lineStyle:{
|
||||
color: '#333333',
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name:'模板一',
|
||||
data: [80,92,1,34,90,130,320,80,9,91],
|
||||
type: 'line',
|
||||
},{
|
||||
name:'模板二',
|
||||
data: [820,932,901,934,1290,1330,1320,820,932,901],
|
||||
type: 'line',
|
||||
}]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
123
src/views/ems/dzjk/clpz/xftg/TempTable.vue
Normal file
123
src/views/ems/dzjk/clpz/xftg/TempTable.vue
Normal file
@ -0,0 +1,123 @@
|
||||
|
||||
<template>
|
||||
<el-card shadow="always" class="common-card-container">
|
||||
<div slot="header">
|
||||
<span class="card-title">新增模板</span>
|
||||
<div style="float: right; padding: 3px 0">
|
||||
<el-button type="primary" size="mini">新增</el-button>
|
||||
<el-button type="warning" size="mini">编辑</el-button>
|
||||
<el-button type="primary" class="alarm-btn" size="mini">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-button-group class="ems-btns-group">
|
||||
<el-button v-for="(item,index) in tempList" :key="index+'tempList'" :class="{'activeBtn' : activeBtn === item.id}" type="small" @click="changeTemp(item.id)">{{item.name}}</el-button>
|
||||
</el-button-group>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
:span-method="tableSpanFilter"
|
||||
border
|
||||
style="width: 100%;">
|
||||
<!-- todo 如果要在span-method中使用column.property 在表格中必须定义prop="xxx"属性-->
|
||||
<el-table-column
|
||||
prop="name"
|
||||
label="模板名称"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
label="SOC限制">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:value="scope.row.status === 1"
|
||||
disabled>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="min"
|
||||
label="SOC下限">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.min}}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="max"
|
||||
label="SOC上限">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.max}}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="startTime"
|
||||
label="开始时间">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="endTime"
|
||||
label="结束时间">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cfgl"
|
||||
label="充放功率(kW)">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="powerStatus"
|
||||
label="充电状态">
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
activeBtn:1,
|
||||
tempList:[
|
||||
{name:'模板1',id:1},
|
||||
{name:'模板2',id:2},
|
||||
{name:'模板3',id:3},
|
||||
],
|
||||
tableData:[
|
||||
{name:'模板一',status:1,min:10,max:90,startTime:'2023/05/07',endTime:'2030/05/07',cfgl:100,powerStatus:'充电'},
|
||||
{name:'模板一',status:1,min:10,max:90,startTime:'2024/06/07',endTime:'2030/05/07',cfgl:110,powerStatus:'充电'},
|
||||
{name:'模板一',status:1,min:10,max:90,startTime:'2023/07/07',endTime:'2030/05/07',cfgl:120,powerStatus:'充电'},
|
||||
{name:'模板一',status:1,min:10,max:90,startTime:'2023/08/07',endTime:'2030/05/07',cfgl:130,powerStatus:'充电'},
|
||||
{name:'模板一',status:1,min:10,max:90,startTime:'2023/09/07',endTime:'2030/05/07',cfgl:140,powerStatus:'充电'},
|
||||
],
|
||||
mixinPrototype:['name','status','min','max']
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
changeTemp(id){
|
||||
//切换模板 更新数据
|
||||
if(id !== this.activeBtn){
|
||||
this.activeBtn=id;
|
||||
}
|
||||
},
|
||||
tableSpanFilter({ row, column, rowIndex, columnIndex }){
|
||||
if(!this.mixinPrototype.includes(column.property)) return { rowspan: 1,colspan: 1 }
|
||||
if(rowIndex===0){
|
||||
return {
|
||||
rowspan: this.tableData.length,
|
||||
colspan: 1
|
||||
};
|
||||
}else{
|
||||
return {
|
||||
rowspan: 0,
|
||||
colspan: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
80
src/views/ems/dzjk/clpz/xftg/TimeSetting.vue
Normal file
80
src/views/ems/dzjk/clpz/xftg/TimeSetting.vue
Normal file
@ -0,0 +1,80 @@
|
||||
|
||||
<template>
|
||||
<el-card shadow="always" class="common-card-container" style="margin-top:25px;">
|
||||
<div slot="header">
|
||||
<span class="card-title">策略配置:削峰填谷</span>
|
||||
<div style="float: right; padding: 3px 0">
|
||||
<el-button type="warning" size="mini">编辑</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-form :inline="true" class="select-container">
|
||||
<el-form-item label="时间配置">
|
||||
<el-select v-model="timeType" placeholder="请选择" :loading="loading" loading-text="正在加载数据">
|
||||
<el-option :label="item.name" :value="item.id" v-for="(item,index) in timeOptions" :key="index+'timeOptions'"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="padding:0 6px 12px 6px;">
|
||||
<div class="cl-items" v-for="item in 12" :key="item+'lclf'">
|
||||
<div class="cl-header">{{item}}月</div>
|
||||
<div class="cl-content">
|
||||
<div class="cl-name">两放两冲</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.cl-items{
|
||||
width: 144px;
|
||||
height: 90px;
|
||||
line-height: 16px;
|
||||
display: inline-block;
|
||||
margin:12px 6px 0 6px;
|
||||
font-size:14px;
|
||||
color:#333333;
|
||||
border: 1px solid #eeeeee;
|
||||
.cl-header{
|
||||
background: #FFE5AC;
|
||||
text-align: center;
|
||||
font-size:16px;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
.cl-content{
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
height: 48px;
|
||||
width: 100%;
|
||||
.cl-name{
|
||||
position: absolute;
|
||||
top:50%;
|
||||
left:50%;
|
||||
transform: translate(-50%,-50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading:false,
|
||||
timeType:1,
|
||||
timeOptions:[
|
||||
{name:'按日',id:1},
|
||||
{name:'按月',id:2},
|
||||
{name:'按年',id:3},
|
||||
]
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
},
|
||||
mounted(){
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
@ -1,14 +1,23 @@
|
||||
|
||||
<template>
|
||||
<div style="width:100%">
|
||||
削峰填谷
|
||||
</div>
|
||||
<cl-container :hideSettingBtn="true">
|
||||
<template v-slot:default>
|
||||
<temp-table/>
|
||||
<time-setting/>
|
||||
<temp-power-chart/>
|
||||
</template>
|
||||
</cl-container>
|
||||
</template>
|
||||
|
||||
|
||||
<script>
|
||||
import ClContainer from './../ClContainer.vue'
|
||||
import TempTable from "./TempTable.vue";
|
||||
import TimeSetting from "./TimeSetting.vue";
|
||||
import TempPowerChart from "./TempPowerChart.vue";
|
||||
export default {
|
||||
name:'DzjkClpzXftg',
|
||||
components:{ClContainer,TempTable,TimeSetting,TempPowerChart},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@ -23,5 +32,15 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
::v-deep{
|
||||
.common-card-container .el-card__header{
|
||||
padding:5px 20px;
|
||||
height:44px;
|
||||
.card-title{
|
||||
line-height: 34px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
Reference in New Issue
Block a user