src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue
@@ -5,30 +5,44 @@
      <div style="width: 100%; background-color: #fff" class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <!--<a-col :md="5" :sm="5">-->
            <!--<a-form-item label="名称">-->
            <!--<a-input placeholder="输入设备名称查询" :readOnly="readOnly" v-model="queryParam.tierName"></a-input>-->
            <!--</a-form-item>-->
            <!--</a-col>-->
            <a-col :md="5" :sm="5">
              <a-form-item label="设备">
                <a-input-search :readOnly="true" v-model="queryParam.equipmentId" @search="deviceSearch"
                <a-input-search readOnly v-model="queryParam.equipmentId" @search="deviceSearch"
                                placeholder='请选择设备'/>
              </a-form-item>
            </a-col>
            <a-col :md="5" :sm="5">
              <a-form-item label="设备类型">
                <a-select
                  :value="queryParam.equipmentType"
                  mode="multiple"
                  placeholder="请选择设备类型"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'equipmentType')"
                >
                  <a-select-option v-for="(item,index) in equipmentTypeList" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6">
              <a-form-item label="驱动类型">
                <!--<j-dict-select-tag placeholder="请选择驱动类型"-->
                <!--:triggerChange="true" dictCode="mdc_driveType"-->
                <!--v-model="queryParam.driveType" allow-clear/>-->
                <a-auto-complete
                  v-model="queryParam.driveType"
                  :data-source="driveTypeList"
                  placeholder="驱动类型"
                  :filter-option="filterOption"
                  :allowClear="true"
                />
                <a-select
                  :value="queryParam.driveType"
                  mode="multiple"
                  placeholder="请选择驱动类型"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'driveType')"
                >
                  <a-select-option v-for="(item,index) in driveTypeList" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="6" :sm="6" :xs="6">
@@ -36,7 +50,55 @@
                <a-range-picker @change="dateParamChange" v-model="dates" format="YYYYMMDD"/>
              </a-form-item>
            </a-col>
            <a-col>
            <a-col :md="2" :sm="2">
              <a
                @click="toggleSearchStatus=!toggleSearchStatus"
                @selectstart="$event.preventDefault()"
                style="display: inline-block;height: 32px;line-height: 32px"
              >
                {{ toggleSearchStatus ? '收起' : '展开' }}
                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
              </a>
            </a-col>
          </a-row>
          <a-row :gutter="24" v-if="toggleSearchStatus">
            <a-col :md="5" :sm="5" :xs="5">
              <a-form-item label="设备级别">
                <a-select
                  :value="queryParam.deviceLevel"
                  mode="multiple"
                  placeholder="请选择设备级别"
                  allow-clear
                  :maxTagCount="1"
                  @change="selectChange($event,'deviceLevel')"
                >
                  <a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :md="5" :sm="5" :xs="5">
              <a-form-item label="重要程度">
                <a-select
                  v-model="queryParam.deviceImportanceLevel"
                  placeholder="请选择设备重要程度"
                  allow-clear
                >
                  <a-select-option v-for="(item,index) in device_importance_level_list" :value="item.value"
                                   :key="index">
                    {{item.label}}
                  </a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
          </a-row>
          <a-row :gutter="24">
            <a-col :md="2" :sm="2" :xs="2">
              <a-space>
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload">重置</a-button>
@@ -68,30 +130,22 @@
<script>
  import moment from 'moment'
  import $ from 'jquery'
  import JDictSelectTag from '@/components/dict/JDictSelectTag'
  import JDate from '../../../../../components/jeecg/JDate'
  import {
    requestPut,
    deleteAction,
    getAction
  } from '@/api/manage'
  import { requestPut, deleteAction, getAction } from '@/api/manage'
  import comparativeAnalysisBar from './comparativeAnalysisBar'
  import comparativeAnalysisGauge from './comparativeAnalysisGauge'
  import conparativeAnalysisPie from './conparativeAnalysisPie'
  import '@/components/table2excel/table2excel'
  import JInput from '@/components/jeecg/JInput'
  import JEllipsis from '@/components/jeecg/JEllipsis'
  import Tooltip from 'ant-design-vue/es/tooltip'
  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
  import api from '@/api/mdc'
  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer.vue'
  export default {
    name: 'comparativeAnalysismain',
    // mixins: [JeecgListMixin],
    components: {
      Tooltip,
      comparativeAnalysisBar,
      comparativeAnalysisGauge,
      conparativeAnalysisPie,
@@ -112,40 +166,42 @@
        AnalysisGauge: [],
        AnalysisPie: [],
        dates: [],
        xianshi: '',
        readOnly: true,
        queryParam: {
          equipmentId: ''
          equipmentId: '',
          equipmentType: [],
          driveType: [],
          deviceLevel: []
        },
        queryParams: {},
        queryParamEquip: {},
        queryParamPeople: {},
        dataStartsoucre: [],
        url: {
          comparativeAnalysis: '/mdc/efficiencyReport/comparativeAnalysis'
          comparativeAnalysis: '/mdc/efficiencyReport/comparativeAnalysis',
          queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
        },
        AnalysisList: {},
        driveTypeList: []
        equipmentTypeList: [],
        driveTypeList: [],
        device_level_list: [],
        device_importance_level_list: [],
        toggleSearchStatus: ''
      }
    },
    watch: {
      Type(valmath) {
        this.dataList = []
        this.queryParams.typeTree = valmath
        // console.log(this.queryParams.typeTree)
      },
      nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId) {
            // this.$set(this.queryParam, 'tierName', val.title)
            this.queryParamEquip.parentId = ''
            // this.queryParams.equipmentId = val.equipmentId
            this.queryParam.equipmentId = val.equipmentId
            this.queryParamEquip.equipmentId = val.equipmentId
          } else {
            // this.$set(this.queryParam, 'tierName', val.title)
            this.queryParamEquip.parentId = val.key
            this.queryParams.equipmentId = ''
            this.queryParam.equipmentId = ''
          }
          this.searchQuery()
        }
@@ -153,12 +209,10 @@
      nodePeople(val) {
        if (JSON.stringify(val) != '{}') {
          if (val.equipmentId) {
            // this.$set(this.queryParam, 'tierName', val.title)
            this.queryParamEquip.parentId = ''
            this.queryParams.equipmentId = val.equipmentId
            this.queryParamEquip.equipmentId = val.equipmentId
          } else {
            // this.$set(this.queryParam, 'tierName', val.title)
            this.queryParamEquip.parentId = val.key
            this.queryParams.equipmentId = ''
          }
@@ -167,63 +221,62 @@
      }
    },
    methods: {
      tabChange(val) {
        this.activeKey = val
      queryGroup() {
        getAction(this.url.queryEquipmentType).then(res => {
          if (res.success) {
            this.equipmentTypeList = res.result.map(item => {
              return {
                label: item.equipmentTypeName,
                value: item.equipmentTypeName
              }
            })
          } else {
            this.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        })
      },
      dateParamChange(v1, v2) {
        // console.log(v1,v2)
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
        console.log(v2[0], v2[1])
      },
      loadAnalysis() {
        getAction(this.url.comparativeAnalysis, this.queryParam).then(res => {
      loadAnalysis(queryParam) {
        getAction(this.url.comparativeAnalysis, queryParam).then(res => {
          if (res.success) {
            this.AnalysisList = res.result
            this.AnalysisBarList = res.result.graphics
            this.AnalysisGauge = res.result.meters
            this.AnalysisPie.push(res.result.pieCharts)
          } else {
            this.$message.warning(res.message)
            this.$notification.warning({
              message: '消息',
              description: res.message
            })
          }
        }).finally(() => {
          this.loading = false
        })
      },
      searchQuery() {
        if (this.dates && this.dates.length > 0) {
          this.AnalysisList = []
          this.AnalysisBarList = []
          this.AnalysisGauge = []
          this.AnalysisPie = []
          if (this.queryParams.typeTree == '1') {
            this.queryParams.parentId = this.queryParamEquip.parentId
            // this.queryParams.equipmentId =  this.queryParamEquip.equipmentId
          } else {
            this.queryParams.parentId = this.queryParamEquip.parentId
            // this.queryParams.equipmentId = ""
          }
          this.AnalysisList = []
          this.queryParams.parentId = this.queryParamEquip.parentId
          //获取查询条件
          this.queryParam.parentId = this.queryParams.parentId
          // this.queryParam.equipmentId = this.queryParams.equipmentId
          this.queryParam.typeTree = this.queryParams.typeTree
          getAction(this.url.comparativeAnalysis, this.queryParam).then((res) => {
            if (res.success) {
              this.AnalysisList = res.result
              this.AnalysisBarList = res.result.graphics
              this.AnalysisGauge = res.result.meters
              this.AnalysisPie.push(res.result.pieCharts)
            } else {
              // this.$message.warning(res.message)
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
          const queryParam = Object.assign({}, this.queryParam)
          Object.keys(queryParam).forEach(item => {
            if (Array.isArray(queryParam[item])) {
              queryParam[item] = queryParam[item].join()
              // 此处为保证接口参数不多余,可省略
              if (queryParam[item].length === 0) delete queryParam[item]
            }
          }).finally(() => {
            this.loading = false
          })
          this.loadAnalysis(queryParam)
        } else {
          this.$notification.warning({
            message: '提示',
@@ -232,213 +285,61 @@
        }
      },
      searchReset() {
        this.AnalysisList = []
        this.AnalysisBarList = []
        this.AnalysisGauge = []
        this.AnalysisPie = []
        if (this.queryParams.typeTree == '1') {
          this.typeTree = this.queryParams.typeTree
          this.typeParent = this.queryParams.parentId
          this.typeEquipment = this.queryParams.equipmentId
          this.queryParams = {}
          this.queryParam = {}
          this.dates = []
          this.queryParams.typeTree = this.typeTree
          this.queryParams.parentId = this.typeParent
          if (this.queryParams.parentId != '') {
            this.queryParams.equipmentId = ''
          } else {
            if (this.queryParams.equipmentId == this.queryParamEquip.equipmentId) {
              this.queryParams.equipmentId = this.typeEquipment
            } else {
              this.queryParams.equipmentId = this.queryParamEquip.equipmentId
            }
          }
          getAction(this.url.comparativeAnalysis, this.queryParams).then((res) => {
            if (res.success) {
              this.AnalysisList = res.result
              this.AnalysisBarList = res.result.graphics
              this.AnalysisGauge = res.result.meters
              this.AnalysisPie.push(res.result.pieCharts)
            } else {
              // this.$message.warning(res.message)
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          }).finally(() => {
            this.loading = false
          })
        } else {
          this.typeTree = this.queryParams.typeTree
          this.typeParent = this.queryParams.parentId
          this.typeEquipment = this.queryParams.equipmentId
          this.queryParams = {}
          this.queryParam = {}
          this.dates = []
          this.queryParams.typeTree = this.typeTree
          this.queryParams.parentId = this.typeParent
          if (this.queryParams.parentId != '') {
            this.queryParams.equipmentId = ''
          } else {
            if (this.queryParams.equipmentId == this.queryParamEquip.equipmentId) {
              this.queryParams.equipmentId = this.typeEquipment
            } else {
              this.queryParams.equipmentId = this.queryParamEquip.equipmentId
            }
          }
          getAction(this.url.comparativeAnalysis, this.queryParams).then((res) => {
            if (res.success) {
              this.AnalysisList = res.result
              this.AnalysisBarList = res.result.graphics
              this.AnalysisGauge = res.result.meters
              this.AnalysisPie.push(res.result.pieCharts)
            } else {
              // this.$message.warning(res.message)
              this.$notification.warning({
                message: '消息',
                description: res.message
              })
            }
          }).finally(() => {
            this.loading = false
          })
        this.typeTree = this.queryParams.typeTree
        this.typeParent = this.queryParams.parentId
        this.typeEquipment = this.queryParams.equipmentId
        this.queryParams = {}
        this.queryParam = {
          equipmentType: [],
          driveType: [],
          deviceLevel: []
        }
        this.dates = [moment().subtract('days', 7), moment().subtract('days', 0)]
        this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD')
        this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD')
        this.queryParams.typeTree = this.typeTree
        this.queryParams.parentId = this.typeParent
        if (this.queryParams.parentId != '') {
          this.queryParams.equipmentId = ''
        } else {
          if (this.queryParams.equipmentId == this.queryParamEquip.equipmentId) {
            this.queryParams.equipmentId = this.typeEquipment
          } else {
            this.queryParams.equipmentId = this.queryParamEquip.equipmentId
          }
        }
        this.loadAnalysis(this.queryParam)
      },
      /**
       * 调用接口获取控制系统类型
       */
      // 调用接口获取控制系统类型
      getDriveTypeByApi() {
        api.getDriveTypeApi().then((res) => {
          this.driveTypeList = res.result.map(item => item.value)
          if (res.success) this.driveTypeList = res.result
        })
      },
      /**
       * 联想输入框筛选功能
       * @param input 输入的内容
       * @param option 配置
       * @returns {boolean} 判断是否筛选
       */
      filterOption(input, option) {
        return (
          option.componentOptions.children[0].text.toUpperCase().indexOf(input.toUpperCase()) >= 0
        )
      initDictData(dictCode) {
        // //优先从缓存中读取字典配置
        if (getDictItemsFromCache(dictCode)) {
          this[dictCode + '_list'] = getDictItemsFromCache(dictCode)
          return
        }
        //根据字典Code, 初始化字典数组
        ajaxGetDictItems(dictCode, null).then((res) => {
          if (res.success) {
            this[dictCode + '_list'] = res.result
            return
          }
        })
      },
      // onChange(value, dateString) {
      //   // console.log('Selected Time: ', value);
      //   // console.log('Formatted Selected Time: ', dateString);
      // },
      // searchReset() {
      //   if(this.queryParams.typeTree == "1"){
      //     this.typeTree = this.queryParams.typeTree
      //     this.typeParent =  this.queryParams.parentId
      //     this.typeEquipment = this.queryParams.equipmentId
      //     this.queryParams = {}
      //     this.queryParam = {}
      //     this.dates = []
      //     this.queryParams.typeTree = this.typeTree
      //     this.queryParams.parentId = this.typeParent
      //     if(this.queryParams.parentId !=  ""){
      //       this.queryParams.equipmentId =  ""
      //     }else{
      //       if(this.queryParams.equipmentId == this.queryParamEquip.equipmentId){
      //         this.queryParams.equipmentId =  this.typeEquipment
      //       }else{
      //         this.queryParams.equipmentId = this.queryParamEquip.equipmentId
      //       }
      //
      //     }
      //
      //     this.ipagination.current = 1
      //     this.ResetloadData();
      //   }else{
      //     this.typeTree = this.queryParams.typeTree
      //     this.typeParent =  this.queryParams.parentId
      //     // this.typeEquipment = this.queryParams.equipmentId
      //     this.queryParams = {}
      //     this.queryParam = {}
      //     this.dates = []
      //     this.queryParams.typeTree = this.typeTree
      //     this.queryParams.parentId = this.typeParent
      //     // this.queryParams.equipmentId =  this.typeEquipment
      //     this.ipagination.current = 1
      //     this.ResetloadData();
      //   }
      //
      // },
      // ResetloadData() {
      //   if(!this.url.list){
      //     this.$message.error("请设置url.list属性!")
      //     return
      //   }
      //   var params = {}
      //   params.typeTree = this.queryParams.typeTree
      //   params.parentId = this.queryParams.parentId
      //   params.equipmentId = this.queryParams.equipmentId
      //   this.loading = true;
      //   getAction(this.url.list, params).then((res) => {
      //     if (res.success) {
      //       this.dataSource = res.result.records||res.result;
      //     }else{
      //       this.$message.warning(res.message)
      //     }
      //   }).finally(() => {
      //     this.loading = false
      //   })
      // },
      // searchQuery(){
      //   if(this.queryParams.typeTree == "1"){
      //     this.queryParams.parentId =  this.queryParamEquip.parentId
      //     // this.queryParams.equipmentId =  this.queryParamEquip.equipmentId
      //
      //   }else{
      //     this.queryParams.parentId = this.queryParamPeople.parentId
      //
      //     // this.queryParams.equipmentId = ""
      //   }
      //   this.dataSource = [];
      //   //获取查询条件
      //   let  param = {}
      //   param.parentId = this.queryParams.parentId;
      //   param.equipmentId = this.queryParams.equipmentId;
      //   param.startTime = this.queryParam.startTime;
      //   param.driveType = this.queryParam.driveType;
      //   param.endTime =  this.queryParam.endTime;
      //   getAction(this.url.list,param).then((res) => {
      //     if(res.success){
      //       this.dataSource = res.result.records||res.result;
      //     }else{
      //       this.$message.warning(res.message)
      //     }
      //   }).finally(() => {
      //     this.loading = false
      //   })
      // },
      // loadData() {
      //   if(!this.url.list){
      //     this.$message.error("请设置url.list属性!")
      //     return
      //   }
      //   //加载数据 若传入参数1则加载第一页的内容
      //   var params = {}
      //   this.loading = true;
      //   params.startTime = this.queryParam.startTime;
      //   params.endTime =  this.queryParam.endTime;
      //   params.typeTree = this.queryParams.typeTree
      //   getAction(this.url.list, params).then((res) => {
      //     if (res.success) {
      //       this.dataSource = res.result.records||res.result;
      //     }else{
      //       this.$message.warning(res.message)
      //     }
      //   }).finally(() => {
      //     this.loading = false
      //   })
      // },
      deviceSearch() {
        console.log('触发')
        this.$refs.selectDeviceDrawer.visible = true
        this.$refs.selectDeviceDrawer.selectedRowKeys = []
        this.$refs.selectDeviceDrawer.selectedRows = []
@@ -450,14 +351,20 @@
       * @param data 已选择的设备
       */
      selectOK(data) {
        // let params = {}
        // params.equipmentIdList = []
        // for (var a = 0; a < data.length; a++) {
        //   params.equipmentIdList.push(data[a])
        // }
        console.log('data=', data)
        this.queryParam.equipmentId = data.join(',')
        console.log('queryParam', this.queryParam.equipmentId)
      },
      selectChange(value, key) {
        this.queryParam[key] = value
      },
      tabChange(val) {
        this.activeKey = val
      },
      dateParamChange(v1, v2) {
        this.queryParam.startTime = v2[0]
        this.queryParam.endTime = v2[1]
      }
    },
    created() {
@@ -465,8 +372,11 @@
      this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD')
      this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD')
      this.queryParam.typeTree = '1'
      this.loadAnalysis()
      this.loadAnalysis(this.queryParam)
      this.getDriveTypeByApi()
      this.queryGroup()
      this.initDictData('device_level')
      this.initDictData('device_importance_level')
    }
  }
</script>
@@ -523,10 +433,6 @@
    display: flex !important;
    height: 100% !important;
    flex-direction: column !important;
  }
  .device_list .table-page-search-wrapper {
    height: 6% !important;
  }
  .device_list #DeviceList {