|
@@ -2,23 +2,41 @@
|
|
|
<div class="energyReport">
|
|
|
<div class="energContent1">
|
|
|
<div style="display: flex">
|
|
|
- <el-select v-model="siteValue" placeholder="选择站点">
|
|
|
+ <el-select
|
|
|
+ v-model="store.state.siteId"
|
|
|
+ @change="siteChange"
|
|
|
+ placeholder="选择站点"
|
|
|
+ >
|
|
|
<el-option
|
|
|
- v-for="item in options"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
+ v-for="item in store.state.siteList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.siteName"
|
|
|
+ :value="item.id"
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
|
|
|
- <div class="energSwitch">
|
|
|
+ <div class="energSwitch" >
|
|
|
+
|
|
|
+ <!-- <el-select v-model="deviceChecked" v-if="deviceBoxData.length>0">
|
|
|
+ <el-option
|
|
|
+ v-for="item in deviceBoxData"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.deviceName"
|
|
|
+ :value="item.deviceCode"
|
|
|
+ ></el-option>
|
|
|
+ </el-select> -->
|
|
|
<el-tree
|
|
|
- :data="data"
|
|
|
+ ref="tree"
|
|
|
+ :data="deviceBoxData"
|
|
|
show-checkbox
|
|
|
node-key="id"
|
|
|
- :default-expanded-keys="[2, 3]"
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ accordion
|
|
|
+ :check-strictly="true"
|
|
|
:props="defaultProps"
|
|
|
+ @check="currentChecked"
|
|
|
+ highlight-current="showTree"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -36,31 +54,33 @@
|
|
|
</el-radio-group>
|
|
|
<div class="energDivTwo">
|
|
|
<div class="block">
|
|
|
- <span>日期:</span>
|
|
|
+ <!-- <span>日期:</span>
|
|
|
<el-date-picker
|
|
|
style="width: 150px"
|
|
|
v-model="value1"
|
|
|
:type="dateType"
|
|
|
+ ></el-date-picker> -->
|
|
|
+ <span class="demonstration">选择时间范围:</span>
|
|
|
+ <el-date-picker
|
|
|
+ v-model="dateTime"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="➥"
|
|
|
+ start-placeholder="开始时间"
|
|
|
+ end-placeholder="结束时间"
|
|
|
></el-date-picker>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div style="margin: 0 15px">
|
|
|
+
|
|
|
+ <div>
|
|
|
<el-button
|
|
|
icon="el-icon-search"
|
|
|
type="primary"
|
|
|
style="padding: 7px 12px"
|
|
|
+ @click="searchData()"
|
|
|
>
|
|
|
查询
|
|
|
</el-button>
|
|
|
</div>
|
|
|
- <el-radio-group
|
|
|
- v-model="electricTabs"
|
|
|
- @change="listTabsChange(electricTabs)"
|
|
|
- style="display: flex"
|
|
|
- >
|
|
|
- <el-radio-button label="electriQuan">电量</el-radio-button>
|
|
|
- <el-radio-button label="electriFees">电费</el-radio-button>
|
|
|
- </el-radio-group>
|
|
|
</div>
|
|
|
|
|
|
<div style="width: 30%">
|
|
@@ -82,14 +102,20 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="energEcharts">
|
|
|
- <echarts v-if="rightTabsBool" :Height="Height"></echarts>
|
|
|
+ <echarts :echartsData="echartsData" v-if="rightTabsBool&&flag" :Height="Height"></echarts>
|
|
|
<tables v-if="!rightTabsBool" :Height="Height"></tables>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { defineComponent, ref, reactive, toRefs } from 'vue'
|
|
|
+import { useStore } from 'vuex'
|
|
|
+import { defineComponent, ref, reactive, toRefs, onMounted } from 'vue'
|
|
|
+
|
|
|
+import * as api from '@/api/dataManage/energyReport.js'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+import { ElNotification } from 'element-plus'
|
|
|
+
|
|
|
import echarts from './ehcarts/index.vue'
|
|
|
import tables from './tables/index.vue'
|
|
|
|
|
@@ -98,9 +124,26 @@ export default defineComponent({
|
|
|
components: { echarts, tables },
|
|
|
props: {},
|
|
|
setup() {
|
|
|
+ const store = useStore()
|
|
|
+ const showTree = ref(true)
|
|
|
+ const typeSrarch = ref(1)
|
|
|
+ // const treeCheckedList = ref([])
|
|
|
+
|
|
|
let dateType = ref('date')
|
|
|
+ const echartsData = ref({})
|
|
|
+ const deviceBoxData = ref([])
|
|
|
+ const deviceChecked = ref([])
|
|
|
let rightTabsBool = ref(true)
|
|
|
+ const flag = ref(false)
|
|
|
+
|
|
|
+ const dateTime = ref([new Date(2021, 10, 1), new Date(2021, 10, 30)])
|
|
|
+ const handleNodeClick = (data, obj, node) => {
|
|
|
+ data, node
|
|
|
+ console.log(obj.data.deviceCode)
|
|
|
+ deviceChecked.value=obj.data.deviceCode
|
|
|
+
|
|
|
|
|
|
+ }
|
|
|
const listTabsChange = (value) => {
|
|
|
if (
|
|
|
value == 'dayValue' ||
|
|
@@ -108,10 +151,10 @@ export default defineComponent({
|
|
|
value == 'yearValue'
|
|
|
) {
|
|
|
value == 'dayValue'
|
|
|
- ? (dateType.value = 'date')
|
|
|
+ ? (typeSrarch.value = 1)
|
|
|
: value == 'monthValue'
|
|
|
- ? (dateType.value = 'month')
|
|
|
- : (dateType.value = 'year')
|
|
|
+ ? (typeSrarch.value = 2)
|
|
|
+ : (typeSrarch.value = 3)
|
|
|
} else if (value == 'electriQuan' || value == 'electriFees') {
|
|
|
console.log()
|
|
|
} else if (value == 'tables' || value == 'echarts') {
|
|
@@ -132,6 +175,80 @@ export default defineComponent({
|
|
|
window.addEventListener('resize', () => {
|
|
|
Height.value = window.innerHeight - 210 + 'px'
|
|
|
})
|
|
|
+
|
|
|
+ //通过站点切换下拉框 change事件改变 tree树中的数据
|
|
|
+ const siteChange = () => {
|
|
|
+ store.commit('publicDeviceList')
|
|
|
+ deviceBoxList()
|
|
|
+ }
|
|
|
+ // const currentChecked = (nodeObj, SelectedObj) => {
|
|
|
+ // nodeObj, SelectedObj
|
|
|
+ // treeCheckedList.value = SelectedObj.checkedNodes
|
|
|
+ // treeCheckedList.value = []
|
|
|
+ // SelectedObj.checkedNodes.forEach((item) => {
|
|
|
+ // treeCheckedList.value.push(item.deviceCode)
|
|
|
+ // remove(treeCheckedList.value, item.deviceCode)
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // function remove(arr, item) {
|
|
|
+ // let newArr = arr.filter((ele) => {
|
|
|
+ // return ele !== item
|
|
|
+ // })
|
|
|
+ // return newArr
|
|
|
+ // }
|
|
|
+
|
|
|
+ function searchData() {
|
|
|
+ if (deviceChecked.value) {
|
|
|
+ store.commit('TimeAll_function', dateTime.value)
|
|
|
+ const time = store.state.Time_Data
|
|
|
+ api
|
|
|
+ .monthlyReport2({
|
|
|
+ cycle: typeSrarch.value,
|
|
|
+ startTime: time[0],
|
|
|
+ endTime: time[1],
|
|
|
+ deviceCode:deviceChecked.value
|
|
|
+
|
|
|
+ })
|
|
|
+ .then((requset) => {
|
|
|
+ if (requset.status === 'SUCCESS') {
|
|
|
+ flag.value = true
|
|
|
+ echartsData.value = requset.data[0]
|
|
|
+ } else {
|
|
|
+ ElMessage.error(requset.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ console.log('', 1)
|
|
|
+ ElNotification({
|
|
|
+ title: '提示',
|
|
|
+ message: '请选择设备',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function deviceBoxList() {
|
|
|
+ api
|
|
|
+ .deviceBoxList({
|
|
|
+ siteId: store.state.siteId,
|
|
|
+ })
|
|
|
+ .then((requset) => {
|
|
|
+ if (requset.status === 'SUCCESS') {
|
|
|
+ deviceBoxData.value = requset.data
|
|
|
+ deviceBoxData.value.forEach(function (i, index) {
|
|
|
+ i.id = index
|
|
|
+ i.children = []
|
|
|
+ })
|
|
|
+ console.log(deviceBoxData.value)
|
|
|
+ } else {
|
|
|
+ ElMessage.error(requset.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ onMounted(() => {
|
|
|
+ deviceBoxList()
|
|
|
+ })
|
|
|
+
|
|
|
return {
|
|
|
Height,
|
|
|
...toRefs(state),
|
|
@@ -142,54 +259,41 @@ export default defineComponent({
|
|
|
rightTabsBool, //表格图表 显示隐藏
|
|
|
siteValue: ref(''), //站点下拉列表v-model
|
|
|
checked: ref(false),
|
|
|
+ siteChange,
|
|
|
+ searchData,
|
|
|
+ dateTime,
|
|
|
+ deviceBoxList,
|
|
|
+ showTree,
|
|
|
data: [
|
|
|
{
|
|
|
id: 1,
|
|
|
- label: '设备1',
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- label: '母线停电次数',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- label: '功率因数',
|
|
|
- },
|
|
|
- {
|
|
|
- id: 4,
|
|
|
- label: 'A相功率因数',
|
|
|
- },
|
|
|
- ],
|
|
|
+ deviceName: '克隆监控设备',
|
|
|
+ deviceCode: 'KL15223565',
|
|
|
+ children: [],
|
|
|
},
|
|
|
- ],
|
|
|
- options: ref([
|
|
|
{
|
|
|
- value: 'Option1',
|
|
|
- label: 'Option1',
|
|
|
+ id: 2,
|
|
|
+ deviceName: '测试监控设备two',
|
|
|
+ deviceCode: 'DA00013294',
|
|
|
+ children: [],
|
|
|
},
|
|
|
- {
|
|
|
- value: 'Option2',
|
|
|
- label: 'Option2',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option3',
|
|
|
- label: 'Option3',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option4',
|
|
|
- label: 'Option4',
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option5',
|
|
|
- label: 'Option5',
|
|
|
- },
|
|
|
- ]),
|
|
|
+ ],
|
|
|
+
|
|
|
defaultProps: {
|
|
|
children: 'children',
|
|
|
- label: 'label',
|
|
|
+ label: 'deviceName',
|
|
|
+ deviceCode: 'deviceCode',
|
|
|
+ id: 'id',
|
|
|
},
|
|
|
-
|
|
|
+ store,
|
|
|
listTabsChange,
|
|
|
+ flag,
|
|
|
+ // currentChecked,
|
|
|
+ typeSrarch,
|
|
|
+ deviceBoxData,
|
|
|
+ deviceChecked,
|
|
|
+ echartsData,
|
|
|
+ handleNodeClick
|
|
|
}
|
|
|
},
|
|
|
})
|
|
@@ -244,8 +348,8 @@ export default defineComponent({
|
|
|
.energDivTwo {
|
|
|
font-weight: 600;
|
|
|
color: #9d9d9d;
|
|
|
- width: 195px;
|
|
|
- margin-left: 20px;
|
|
|
+ // width: 195px;
|
|
|
+ margin: 0 20px;
|
|
|
.block {
|
|
|
white-space: nowrap;
|
|
|
}
|
|
@@ -273,4 +377,18 @@ export default defineComponent({
|
|
|
.el-tabs--card > .el-tabs__header .el-tabs__nav {
|
|
|
border: none;
|
|
|
}
|
|
|
+</style>
|
|
|
+
|
|
|
+<style lang="less">
|
|
|
+.energSwitch {
|
|
|
+ .el-tree-node__content .el-checkbox__input {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ .el-tree-node
|
|
|
+ .el-tree-node__children
|
|
|
+ .el-tree-node__content
|
|
|
+ .el-checkbox__input {
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|