quanyawei
2024-11-15 f752f50a484f63fc3786ab1c7ad563f3b17cce77
src/views/Listdata/index.vue
@@ -31,7 +31,7 @@
          :props="props"
          collapse-tags
          clearable
        ></el-cascader>
        />
      </div>
      <div>
        <el-select
@@ -44,37 +44,70 @@
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
          />
        </el-select>
      </div>
      <component
        :is="dataType"
        style="padding-left: 0; margin-left: 20px; width: 160px"
        @sendPickerChild="showPickerChild"
        class="select11"
        @sendPickerChild="showPickerChild"
      />
      <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
      <!-- <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
        >导出</el-button
      > -->
      <!-- <el-dropdown @command="handleCommand">
        <el-button type="primary" @click="toExcel()" style="margin-left: 20px"
          >导出<i class="el-icon-arrow-down el-icon--right"></i
        ></el-button>
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item command="expNew">导出(新)</el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown> -->
      <el-dropdown
        split-button
        type="primary"
        style="margin-left: 20px"
        @click="toExcel()"
        @command="handleCommand"
      >
      <el-button @click="exportMon">查询</el-button>
        导出
        <el-dropdown-menu slot="dropdown">
          <el-dropdown-item command="expNew">
            导出(新)
          </el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
      <el-button
        style="margin-left: 10px"
        @click="exportMon"
      >
        查询
      </el-button>
    </div>
    <el-table
      :data="dateList"
      id="exportTab"
      :data="dateList"
      style="margin-top: 20px"
      border
      max-height="800"
    >
      <el-table-column
        v-for="item in columnList"
        :key="item"
        :prop="item"
        :label="item"
        width="180px"
        :key="item"
      />
      <!-- <el-table-column
        v-for="item in columnList"
        :prop="item.props"
        :label="item.label"
        width="180px"
        :key="item.label"
      >
      </el-table-column>
      </el-table-column> -->
    </el-table>
  </div>
</template>
@@ -102,7 +135,7 @@
    TimePicker1,
    HourPicker1,
  },
  data() {
  data () {
    // 这里存放数据
    return {
      props: { multiple: true },
@@ -111,7 +144,7 @@
      newMac: '',
      newMac1: [],
      newSensor: [] /* 因子数组 */,
      columnList: [], //表头的数组
      columnList: [], // 表头的数组
      dateList: [],
      timevalue: [],
      select1: '日报',
@@ -142,7 +175,7 @@
  computed: {},
  // 监控data中的数据变化
  watch: {
    select1(nv, ov) {
    select1 (nv, ov) {
      if (nv === '日报') {
        this.dataType = 'HourPicker'
        this.unit = 'day'
@@ -161,7 +194,7 @@
      }
    },
    // 监听设备的数据更新
    newMac(newVal, oldval) {
    newMac (newVal, oldval) {
      this.newMac1 = []
      for (let i = 0; i < newVal.length; i++) {
        // console.log(newVal[i], 111)
@@ -173,29 +206,73 @@
    // 监听dataType的数据更新
  },
  // 生命周期 - 创建完成(可以访问当前 this 实例)
  created() {
  created () {
    this.getData()
    // for (let key in this.timess[0]) {
    //   this.columnList.push(key)
    // }
  },
  // 生命周期 - 挂载完成(可以访问 DOM 元素)
  // mounted() {
  //
  // },
  beforeCreate() {}, // 生命周期 - 创建之前
  beforeMount() {}, // 生命周期 - 挂载之前
  beforeUpdate() {}, // 生命周期 - 更新之前
  updated() {}, // 生命周期 - 更新之后
  beforeDestroy() {}, // 生命周期 - 销毁之前
  destroyed() {}, // 生命周期 - 销毁完成
  activated() {},
  beforeCreate () {}, // 生命周期 - 创建之前
  beforeMount () {}, // 生命周期 - 挂载之前
  beforeUpdate () {}, // 生命周期 - 更新之前
  updated () {}, // 生命周期 - 更新之后
  beforeDestroy () {}, // 生命周期 - 销毁之前
  destroyed () {}, // 生命周期 - 销毁完成
  activated () {},
  // 方法集合
  methods: {
    showPickerChild(data) {
    handleCommand (command) {
      if (this.newMac1 == '') {
        this.$message.warning('请选择站点')
        return
      }
      if (this.value == '') {
        this.$message.warning('请选择因子')
        return
      }
      this.dateList = []
      this.columnList = []
      this.$request({
        url: 'monitorPoint/exlOut',
        method: 'post',
        data: {
          macs: this.newMac1,
          sensors: this.value.toString(),
          // startTime: this.timevalue[0],
          // endTime: this.timevalue[1],
          type: this.unit,
          times: this.newData instanceof Array ? this.newData : [this.newData],
        },
        responseType: 'blob',
      }).then((res) => {
        console.log('导出成功', res)
        this.getOutExcel('列表数据导出.xlsx', res)
      })
    },
    getOutExcel (fileName, res) {
      let blob = new Blob([res], { type: 'application/x-xls' })
      if (window.navigator.msSaveOrOpenBlob) {
        // 兼容 IE & EDGE
        navigator.msSaveBlob(blob, fileName)
      } else {
        var link = document.createElement('a')
        // 兼容不同浏览器的URL对象
        const url = window.URL || window.webkitURL || window.moxURL
        // 创建下载链接
        link.href = url.createObjectURL(blob)
        // 命名下载名称
        link.download = fileName
        // 点击触发下载
        link.click()
        // 下载完成进行释放
        url.revokeObjectURL(link.href)
      }
    },
    showPickerChild (data) {
      this.newData = data
    },
    getData() {
    getData () {
      this.$request({
        url: '/monitorPoint/queryMonitorPoints',
        method: 'get',
@@ -213,14 +290,16 @@
              label: this.defaultData[i].name,
            })
            this.options[i].children = []
            for (let j = 0; j < this.defaultData[i].devices.length; j++) {
              this.options[i].children.push({
                value: [
                  this.defaultData[i].devices[j].name,
                  this.defaultData[i].devices[j].mac,
                ],
                label: this.defaultData[i].devices[j].name,
              })
            if (this.defaultData[i].devices) {
              for (let j = 0; j < this.defaultData[i].devices.length; j++) {
                this.options[i].children.push({
                  value: [
                    this.defaultData[i].devices[j].name,
                    this.defaultData[i].devices[j].mac,
                  ],
                  label: this.defaultData[i].devices[j].name,
                })
              }
            }
          }
        })
@@ -229,7 +308,7 @@
        })
    },
    // 通过设备号获得因子数据
    getSensor() {
    getSensor () {
      this.newSensor = []
      this.$request({
        url: '/deviceInfo/getMacSensors',
@@ -250,8 +329,7 @@
          console.log(err)
        })
    },
    exportMon() {
      console.log(this.timevalue)
    exportMon () {
      if (this.newMac1 == '') {
        this.$message.warning('请选择站点')
        return
@@ -274,18 +352,34 @@
          times: this.newData instanceof Array ? this.newData : [this.newData],
        },
      }).then((res) => {
        console.log(res, 11)
        // console.log(res, 11)
        this.tableData = res.data
        // console.log(this.tableData, 'this.tableData')
        for (let key in this.tableData[0]) {
          this.columnList.push(key)
        }
        for (let item of this.tableData) {
          this.dateList.push(item)
        }
        // this.tableData = res.data
        // for (let key in this.tableData[0]) {
        //   let prop = key
        //   if (String(key).indexOf('.') > -1) {
        //     prop = key.replace(/\./g, '')
        //   }
        //   this.columnList.push({ label: key, props: prop })
        // }
        // for (let item of this.tableData) {
        //   for (let key in this.tableData[0]) {
        //     if (String(key).indexOf('.') > -1) {
        //       let newKey = key.replace(/\./g, '')
        //       item[newKey] = item[key]
        //     }
        //   }
        //   this.dateList.push(item)
        // }
      })
    },
    toExcel() {
    toExcel () {
      let wb = XLSX.utils.table_to_book(document.querySelector('#exportTab'), {
        sheet: '分组表',
      })
@@ -303,9 +397,9 @@
      }
      return ws
    },
    setExlStyle(data) {
    setExlStyle (data) {
      let borderAll = {
        //单元格外侧框线
        // 单元格外侧框线
        top: {
          style: 'thin',
        },
@@ -325,7 +419,7 @@
          data[key].s = {
            border: borderAll,
            alignment: {
              horizontal: 'center', //水平居中对齐
              horizontal: 'center', // 水平居中对齐
              vertical: 'center',
            },
            font: {