diff --git a/src/api/ems/search.js b/src/api/ems/search.js
index f53e504..32bd1ea 100644
--- a/src/api/ems/search.js
+++ b/src/api/ems/search.js
@@ -22,3 +22,11 @@ export function getPointValueList(data) {
data
})
}
+
+// 图表
+export function getAllBatteryIdsBySites(data) {
+ return request({
+ url: `/ems/generalQuery/getAllBatteryIdsBySites/${data}`,
+ method: 'get',
+ })
+}
\ No newline at end of file
diff --git a/src/views/ems/search/DateTimeSelect.vue b/src/views/ems/search/DateTimeSelect.vue
index 515b760..0827588 100644
--- a/src/views/ems/search/DateTimeSelect.vue
+++ b/src/views/ems/search/DateTimeSelect.vue
@@ -32,7 +32,7 @@ export default {
return this.dataUnit === 3 ? 'daterange' : 'datetimerange'
},
valueFormat(){
- return this.dataUnit === 3 ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm'
+ return this.dataUnit === 3 ? 'yyyy-MM-dd' :this.dataUnit === 2 ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd HH:mm:ss'
},
disabledNextBtn(){
if(this.dateRange && this.dateRange.length ===2){
@@ -47,7 +47,14 @@ export default {
dataUnit:{
handler(newVal,oldVal){
console.log('wacth到了dataUnit的变化',newVal,oldVal)
- newVal && newVal!==oldVal && this.init()
+ this.init()
+ // if(!oldVal && newVal){
+ // this.init()
+ // }else{
+ // this.init()
+ // //为了触发调用图表接口
+ // this.$emit('updateDate',this.dateRange || [])
+ // }
},
immediate: true,
}
@@ -73,7 +80,7 @@ export default {
this.dateRange = [timeAgo, formatNow];
this.defaultDateRange=[timeAgo, formatNow];
console.log('init',timeAgo,formatNow)
- this.$emit('updateDate',this.dateRange || [])
+ this.$emit('initDate',this.dateRange || [])
},
showBtnLoading(status){
this.loading = status
@@ -96,6 +103,8 @@ export default {
const timeDis= dataUnit === 3? 30 * 24 * 60 * 60 * 1000 :dataUnit === 2 ? 24 * 60 * 60 * 1000 : 60 * 60 * 1000
if(endTime - startTime > timeDis){
this.$message.error(`时间范围不能超过${dataUnit === 3 ? '30天' : dataUnit === 2 ? '24小时' : '1小时'}`)
+ }else{
+ this.$emit('updateDate',this.dateRange || [])
}
}else{
this.$emit('updateDate',this.dateRange || [])
diff --git a/src/views/ems/search/index.vue b/src/views/ems/search/index.vue
index 650bff6..60c2d77 100644
--- a/src/views/ems/search/index.vue
+++ b/src/views/ems/search/index.vue
@@ -6,11 +6,16 @@
prop="siteIds"
:rules="[{ required: true, message: '请选择站点' }]"
>
-
-
+
+
+
+
+
+
+
{{ item.siteName }}
-
-
+
+
@@ -28,10 +33,11 @@
@select="handleSelect"
>
-
+
@@ -50,7 +56,7 @@
@@ -61,7 +67,7 @@
import * as echarts from 'echarts'
import resize from '@/mixins/ems/resize'
import {getAllSites} from "@/api/ems/zddt";
-import {getAllDeviceCategory,getPointValueList,pointFuzzyQuery} from '@/api/ems/search'
+import {getAllDeviceCategory,getPointValueList,pointFuzzyQuery,getAllBatteryIdsBySites} from '@/api/ems/search'
import DateTimeSelect from "./DateTimeSelect.vue";
export default {
name: "Search",
@@ -70,71 +76,32 @@ export default {
computed: {
isDtdc(){
return this.form.categoryName === '单体电池'
- }
+ },
+ },
+ watch:{
+ 'form.siteIds':{
+ handler(newVal){
+ newVal && this.isDtdc && this.getChildList()
+ }
+ },
+ isDtdc:{
+ handler(newVal){
+ newVal && this.form.siteIds && this.getChildList()
+ !newVal && (this.form.child = [])
+ }
+ },
+
},
data() {
return {
chart: null,
deviceCategoryList:[],//设备列表
siteList: [],//站点列表
- childOptions:[
- {
- value: '021_DDS_01',
- label: '站点一',
- children:[{
- value: '1',
- label: '1-50',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- },{
- value: '003',
- label: '设备三'
- }]
- }]
- },
- {
- value: '021_DDS_02',
- label: '站点二',
- children:
- [{
- value: '1',
- label: '1-50',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- }, {
- value: '003',
- label: '设备三'
- }]
- },
- {
- value: '2',
- label: '51-100',
- children:[{
- value: '001',
- label: '设备一'
- },{
- value: '002',
- label: '设备二'
- },{
- value: '003',
- label: '设备三'
- }]
- }]
-
- }
- ],//二级设备列表
+ childOptions:[],//二级设备列表
form: {
dataRange:[],//时间选择范围
child:[],
- siteIds: [],//当前选中的站点id 默认选中第一个站点
+ siteIds: '',//当前选中的站点id 默认选中第一个站点
categoryName: '',//设备
pointName: '',//点位
dataUnit: 1,//横坐标
@@ -143,6 +110,43 @@ export default {
}
},
methods: {
+ getChildList(){
+ this.childOptions=[]
+ this.form.child=[]
+ const {siteIds} = this.form
+ getAllBatteryIdsBySites([siteIds]).then(response=>{
+ const data = response?.data || {};
+ const base = 50
+ let options = []
+ Object.entries(data).forEach(([key,value],index)=>{
+ if(!value) value =[]
+ options.push({
+ value: key,
+ label: this.siteList.find(s=>s.siteId === key)?.siteName || '',
+ children:[]
+ })
+ const length = value.length
+ const num = Math.ceil(length /base )
+ if(num === 0) return
+ for(let i = 1; i <= num; i++){
+ const start = (i-1)*base+1,end = i*base
+ options[index].children.push({
+ value:i,
+ label: `${start}-${end}`,
+ children:[]
+ })
+ for(let s = start;s<=Math.min(length,end);s++){
+ options[index].children[i-1].children.push({
+ value:value[s-1],
+ label:value[s-1]
+ })
+ }
+ }
+ })
+ console.log('二级设备options',options)
+ this.childOptions = options;
+ })
+ },
handleChildChange(data){
console.log('选择二级设备',data)
this.form.child=data
@@ -156,6 +160,10 @@ export default {
initChart() {
this.chart = echarts.init(document.querySelector('#searchChart'))
},
+ updateDate(val){
+ this.form.dataRange =val || []
+ this.getDate()
+ },
setOption(data) {
if(!this.chart) return
this.chart.clear()
@@ -165,7 +173,7 @@ export default {
data.forEach((item,index)=>{
item.deviceList.forEach(inner=>{
dataset.push({
- name:`${this.siteList.find(s=>s.siteId === item.siteId)?.siteName || ''}-${inner.deviceId}`,
+ name:`${this.isDtdc ? `${inner.parentDeviceId ? inner.parentDeviceId+'-' : ''}` : ''}${inner.deviceId}`,
type:'line',
xdata:[],
data:[]
@@ -224,7 +232,7 @@ export default {
},
querySearchAsync(query,cb){
console.log('查询数据',query)
- if(this.form.siteIds.length===0 || !this.form.categoryName){
+ if(!this.form.siteIds || !this.form.categoryName){
this.$message({
type: 'warning',
message: '请先选择站点和设备',
@@ -232,7 +240,7 @@ export default {
return cb([])
}
pointFuzzyQuery({
- siteIds:this.form.siteIds,
+ siteIds:[this.form.siteIds],
categoryName:this.form.categoryName,
pointName:query,
}).then(response => {
@@ -264,8 +272,31 @@ export default {
return this.$message.error('请选择二级设备且不能超过5个');
}
this.loading = true
- const{siteIds,dataUnit,categoryName,pointName}=this.form
- getPointValueList({siteIds,dataUnit,categoryName,pointName}).then(response => {
+ const{siteIds,dataUnit,categoryName,pointName,dataRange:[start='',end=''],child}=this.form
+ let siteDeviceMap={}
+ child.forEach(([first,second,third])=>{
+ if(siteDeviceMap[first]){
+ siteDeviceMap[first].push(third)
+ }else{
+ siteDeviceMap[first]=[]
+ siteDeviceMap[first].push(third)
+ }
+ })
+ let startDate,endDate
+ if(start && dataUnit===3){
+ // startDate= start + `${dataUnit === 2 ? ':00' : ' 00:00:00'}`
+ startDate = start + ' 00:00:00'
+ }else{
+ startDate=start
+ }
+ if(end && dataUnit===3){
+ // endDate= end + `${dataUnit === 2 ? ':00' : ' 00:00:00'}`
+ endDate = end + ' 00:00:00'
+ }else{
+ endDate=end
+ }
+
+ getPointValueList({siteIds:[siteIds],dataUnit,categoryName,pointName,startDate,endDate,siteDeviceMap}).then(response => {
this.setOption(response?.data || [])
}).finally(()=>{
this.loading = false