quanyawei
2023-11-23 25aaab3aabb463d73015a1d051799692a24ed04d
src/views/air/index.vue
@@ -1,144 +1,186 @@
<template>
  <div class="analyseAir">
<!--    头部-->
    <!--    头部-->
    <div class="exTop">
      <div class="cascader-demo">
        <el-select v-model="value" clearable placeholder="请选择地区">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
        </el-select>
      </div>
      <el-date-picker
          v-model="value3"
          style="margin-right: 5%"
          align="right"
          type="date"
          placeholder="选择日期">
        v-model="value3"
        style="margin-right: 5%"
        align="right"
        type="date"
        placeholder="选择日期"
      >
      </el-date-picker>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload1"
          action=""
          accept="xlsx"
          :on-change="handleChange"
          :on-remove="handleRemove"
          :file-list="fileList"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip" v-if="value==='gx'">上传四国控及市区均值</div>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload1"
        action=""
        accept="xlsx"
        :on-change="handleChange"
        :on-remove="handleRemove"
        :file-list="fileList"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip" v-if="value === 'gx'">
          上传四国控及市区均值
        </div>
        <div slot="tip" class="el-upload__tip" v-else></div>
      </el-upload>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload2"
          action=""
          accept="xlsx"
          :on-change="handleChange2"
          :on-remove="handleRemove2"
          :file-list="fileList2"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip" v-if="value==='gx'">上传乡镇街道日数据</div>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload2"
        action=""
        accept="xlsx"
        :on-change="handleChange2"
        :on-remove="handleRemove2"
        :file-list="fileList2"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip" v-if="value === 'gx'">
          上传乡镇街道日数据
        </div>
        <div slot="tip" class="el-upload__tip" v-else></div>
      </el-upload>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload3"
          action=""
          accept="xlsx"
          :on-change="handleChange3"
          :on-remove="handleRemove3"
          :file-list="fileList3"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip" v-if="value==='gx'">上传乡镇街道月累计</div>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload3"
        action=""
        accept="xlsx"
        :on-change="handleChange3"
        :on-remove="handleRemove3"
        :file-list="fileList3"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip" v-if="value === 'gx'">
          上传乡镇街道月累计
        </div>
        <div slot="tip" class="el-upload__tip" v-else></div>
      </el-upload>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload4"
          action=""
          accept="xlsx"
          :on-change="handleChange4"
          :on-remove="handleRemove4"
          :file-list="fileList4"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip" v-if="value==='gx'">上传乡镇街道改善数据</div>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload4"
        action=""
        accept="xlsx"
        :on-change="handleChange4"
        :on-remove="handleRemove4"
        :file-list="fileList4"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip" v-if="value === 'gx'">
          上传乡镇街道改善数据
        </div>
        <div slot="tip" class="el-upload__tip" v-else></div>
      </el-upload>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload5"
          action=""
          accept="xlsx"
          :on-change="handleChange5"
          :on-remove="handleRemove5"
          :file-list="fileList5"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip" v-if="value==='gx'">上传国控改善数据</div>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload5"
        action=""
        accept="xlsx"
        :on-change="handleChange5"
        :on-remove="handleRemove5"
        :file-list="fileList5"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip" v-if="value === 'gx'">
          上传国控改善数据
        </div>
        <div slot="tip" class="el-upload__tip" v-else></div>
      </el-upload>
      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload6"
          action=""
          accept="xlsx"
          :on-change="handleChange6"
          :on-remove="handleRemove6"
          :file-list="fileList6"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false">
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        v-if="value === 'gx'"
        class="upload-demo"
        ref="upload6"
        action=""
        accept="xlsx"
        :on-change="handleChange6"
        :on-remove="handleRemove6"
        :file-list="fileList6"
        :limit="1"
        :on-exceed="handleExceed"
        multiple
        :auto-upload="false"
      >
        <el-button slot="trigger" type="primary" size="small"
          >选取文件</el-button
        >
        <div slot="tip" class="el-upload__tip">上传餐饮油烟超标数据</div>
      </el-upload>
      <div v-if="value==='hn'" style="position: relative">
      <div v-if="value === 'hn'" style="position: relative">
        <el-upload
            class="upload-demo"
            ref="upload7"
            action=""
            accept="xlsx"
            :on-change="handleChange7"
            :on-remove="handleRemove7"
            :file-list="fileList7"
            :limit="1"
            :on-exceed="handleExceed"
            multiple
            :auto-upload="false">
          <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
          <div slot="tip" class="el-upload__tip">请上传国控点位日污染物浓度及AQI文件</div>
          class="upload-demo"
          ref="upload7"
          action=""
          accept="xlsx"
          :on-change="handleChange7"
          :on-remove="handleRemove7"
          :file-list="fileList7"
          :limit="1"
          :on-exceed="handleExceed"
          multiple
          :auto-upload="false"
        >
          <el-button slot="trigger" type="primary" size="small"
            >选取文件</el-button
          >
          <div slot="tip" class="el-upload__tip">
            请上传国控点位日污染物浓度及AQI文件
          </div>
        </el-upload>
        <el-button type="success" @click="submitUpload" :disabled="idDisabled" size="small" style="position: absolute;right: 20%;bottom: -100%">提交文件</el-button>
        <el-button
          type="success"
          @click="submitUpload"
          :disabled="idDisabled"
          size="small"
          style="position: absolute; right: 20%; bottom: -100%"
          >提交文件</el-button
        >
      </div>
<!--      <el-upload
      <!--      <el-upload
          v-if="value==='gx'"
          class="upload-demo"
          ref="upload8"
@@ -154,40 +196,51 @@
        <el-button slot="trigger" type="primary" size="small">选取文件</el-button>
        <div slot="tip" class="el-upload__tip">上传数据</div>
      </el-upload>-->
<!--      <div style="position: absolute; bottom: 2%; right: 20%">-->
      <div style="position: absolute; right: 20%">
        <el-button v-if="value==='gx'" type="success" @click="submitUpload" size="small">提交文件</el-button>
<!--        <el-button type="primary" @click="exportReport" size="small">下载报告</el-button>-->
      <!--      <div style="position: absolute; bottom: 2%; right: 20%">-->
      <div style="position: absolute; right: 20%; padding-top: 20px">
        <el-button
          v-if="value === 'gx'"
          type="success"
          @click="submitUpload"
          size="small"
          >提交文件</el-button
        >
      </div>
    </div>
    <div class="exDown">
      <el-card class="box-card" style="position: relative">
        <div class="block" style="margin-bottom: 30px;">
        <div class="block" style="margin-bottom: 30px">
          <el-date-picker
              v-model="value2"
              type="daterange"
              align="right"
              unlink-panels
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :picker-options="pickerOptions">
            v-model="value2"
            type="daterange"
            align="right"
            unlink-panels
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            :picker-options="pickerOptions"
          >
          </el-date-picker>
          <el-select v-model="valueSelect" clearable placeholder="请选择地区">
            <el-option
                v-for="item in optionsSelect"
                :key="item.valueSelect"
                :label="item.label"
                :value="item.valueSelect">
              v-for="item in optionsSelect"
              :key="item.valueSelect"
              :label="item.label"
              :value="item.valueSelect"
            >
            </el-option>
          </el-select>
          <el-button type="primary" @click="selectReport(1)" size="small" class="selectBtn">查询</el-button>
<!--          <el-button type="primary" @click="selectReport" size="small" class="selectBtn">下载多个</el-button>-->
          <el-button
            type="primary"
            @click="selectReport(1)"
            size="small"
            class="selectBtn"
            >查询</el-button
          >
          <!--          <el-button type="primary" @click="selectReport" size="small" class="selectBtn">下载多个</el-button>-->
        </div>
        <div style="overflow-y: auto; height: 82%;margin-bottom: 2%;">
          <el-table
              :data="tableData"
              style="width: 100%">
        <div style="overflow-y: auto; height: 82%; margin-bottom: 2%">
          <el-table :data="tableData" style="width: 100%">
            <!--          <el-table-column
                      width="100"
                      align="center">
@@ -203,41 +256,48 @@
                              @change="handleCheckOneChange(scope.row)"></el-checkbox>
                        </template>
                      </el-table-column>-->
            <el-table-column
                prop="name"
                label="报告名称"
            >
            </el-table-column>
            <el-table-column
                prop="time"
                label="提交时间"
            >
            </el-table-column>
            <el-table-column
                prop="date"
                label="创建时间"
            >
            </el-table-column>
            <el-table-column prop="name" label="报告名称"> </el-table-column>
            <el-table-column prop="time" label="提交时间"> </el-table-column>
            <el-table-column prop="date" label="创建时间"> </el-table-column>
            <el-table-column label="操作">
              <template slot-scope="scope">
                <el-button type="text" size="medium" v-if="valueSelect==='gx'" @click="expReport(scope.row)">下载</el-button>
                <el-button
                  type="text"
                  size="medium"
                  v-if="valueSelect === 'gx'"
                  @click="expReport(scope.row)"
                  >下载</el-button
                >
                <!--导出excel-->
                <img src="../../assets/icon/hn_excel.png" alt="蓝天计划excel" v-if="valueSelect==='hn'" @click="hnExcel(scope.row)" style="margin-left:0; cursor:pointer;">
                <img
                  src="../../assets/icon/hn_excel.png"
                  alt="蓝天计划excel"
                  v-if="valueSelect === 'hn'"
                  @click="hnExcel(scope.row)"
                  style="margin-left: 0; cursor: pointer"
                />
                <!--导出word -->
                              <img src="../../assets/icon/hn_word.png" alt="浑南区环境空气质量报告" v-if="valueSelect==='hn'" @click="hnExpReport(scope.row)" style="cursor:pointer;">
                <img
                  src="../../assets/icon/hn_word.png"
                  alt="浑南区环境空气质量报告"
                  v-if="valueSelect === 'hn'"
                  @click="hnExpReport(scope.row)"
                  style="cursor: pointer"
                />
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div class="block" v-if="isDisplay">
          <el-pagination
              background
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page.sync="currentPage3"
              :page-size="onePageCount"
              layout="total, prev, pager, next, jumper"
              :total="totalNumber">
            background
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page.sync="currentPage3"
            :page-size="onePageCount"
            layout="total, prev, pager, next, jumper"
            :total="totalNumber"
          >
          </el-pagination>
        </div>
      </el-card>
@@ -267,42 +327,47 @@
      file7: null,
      file8: null,
      pickerOptions: {
        shortcuts: [{
          text: '最近一周',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一个月',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三个月',
          onClick(picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            picker.$emit('pick', [start, end])
          }
        }]
        shortcuts: [
          {
            text: '最近一周',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            },
          },
          {
            text: '最近一个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            },
          },
          {
            text: '最近三个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              picker.$emit('pick', [start, end])
            },
          },
        ],
      },
      value2: [new Date(), new Date()], // 查询报告日期时间
      value3: new Date(), // 提交文件的时间日期
      options: [
        {
          value: 'hn',
          label: '浑南区'
        }, {
          label: '浑南区',
        },
        {
          value: 'gx',
          label: '高新区'
        }
          label: '高新区',
        },
      ],
      value: 'gx', // 地区
      valueSelect: 'gx',
@@ -310,11 +375,12 @@
      optionsSelect: [
        {
          valueSelect: 'hn',
          label: '浑南区'
        }, {
          label: '浑南区',
        },
        {
          valueSelect: 'gx',
          label: '高新区'
        }
          label: '高新区',
        },
      ],
      tableData: [],
      sensorTime: [], // 提交文件的日期
@@ -332,7 +398,7 @@
      currentPage3: 1, // 前往第几页
      totalNumber: 0, // 总条数
      onePageCount: 8, // 一页多少条
      isDisplay: false // 是否显示分页
      isDisplay: false, // 是否显示分页
    }
  },
  watch: {
@@ -343,7 +409,7 @@
    },
    valueSelect(newName, oldName) {
      this.tableData = []
    }
    },
  },
  methods: {
    // 分页
@@ -356,8 +422,11 @@
    },
    // 上传
    handleChange(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
        this.$refs.upload.handleRemove(file)
      if (
        file.raw.type !==
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      ) {
        this.$refs.upload1.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
      }
@@ -369,7 +438,10 @@
      this.file1 = fileList[0]
    },
    handleChange2(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
      if (
        file.raw.type !==
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      ) {
        this.$refs.upload2.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -382,7 +454,10 @@
      this.file2 = fileList[0]
    },
    handleChange3(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
      if (
        file.raw.type !==
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      ) {
        this.$refs.upload3.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -395,7 +470,10 @@
      this.file3 = fileList[0]
    },
    handleChange4(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
      if (
        file.raw.type !==
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      ) {
        this.$refs.upload4.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -408,7 +486,10 @@
      this.file4 = fileList[0]
    },
    handleChange5(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
      if (
        file.raw.type !==
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      ) {
        this.$refs.upload5.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -421,7 +502,11 @@
      this.file5 = fileList[0]
    },
    handleChange6(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' && file.raw.type !== 'application/vnd.ms-excel') {
      if (
        file.raw.type !==
          'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' &&
        file.raw.type !== 'application/vnd.ms-excel'
      ) {
        this.$refs.upload6.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -434,7 +519,11 @@
      this.file6 = fileList[0]
    },
    handleChange7(file, fileList) {
      if (file.raw.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' && file.raw.type !== 'application/vnd.ms-excel') {
      if (
        file.raw.type !==
          'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' &&
        file.raw.type !== 'application/vnd.ms-excel'
      ) {
        this.$refs.upload7.handleRemove(file)
        this.$message.warning(`上传文件格式不符合`)
        return
@@ -447,26 +536,39 @@
      this.file7 = fileList[0]
    },
    handleExceed(files, fileList) {
      this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
      this.$message.warning(
        `当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
          files.length + fileList.length
        } 个文件`
      )
    },
    submitUpload() {
      this.formData2 = []
      if (!this.value3) {
        this.$message({
          message: '请选择时间',
          type: 'warning'
          type: 'warning',
        })
        return
      }
      if (this.value === 'gx') { // 高新区表格导入
      if (this.value === 'gx') {
        // 高新区表格导入
        this.gxSubmit()
      } else { // 浑南区表格导入
      } else {
        // 浑南区表格导入
        this.hnSubmit()
      }
    },
    // 提交高新区表格数据
    gxSubmit() {
      if (this.file1 && this.file2 && this.file3 && this.file4 && this.file5 && this.file6) {
      if (
        this.file1 &&
        this.file2 &&
        this.file3 &&
        this.file4 &&
        this.file5 &&
        this.file6
      ) {
        const formData = new FormData()
        formData.append(`code`, this.value)
        this.sensorTime = this.newTime(this.value3, 'submit')
@@ -483,20 +585,24 @@
        // formData.append(`file7`, this.file7.raw)
        // formData.append(`file8`, this.file8.raw)
        // 后端上传接口
        this.MultipartFile(formData).then(res => {
          if (res.code === 0) {
            var reportInfo = res.data
            this.value2 = [this.value3, this.value3]
            reportInfo.name = '高新区空气质量分析报告' + reportInfo.time.split('-').join('')
            this.tableData = [reportInfo]
          }
        }).catch(err => {
          console.log(err)
        })
        this.MultipartFile(formData)
          .then((res) => {
            if (res.code === 0) {
              var reportInfo = res.data
              this.value2 = [this.value3, this.value3]
              reportInfo.name =
                '高新区空气质量研判总结报告' +
                reportInfo.time.split('-').join('')
              this.tableData = [reportInfo]
            }
          })
          .catch((err) => {
            console.log(err)
          })
      } else {
        this.$message({
          message: '提交文件数量不符合',
          type: 'warning'
          type: 'warning',
        })
      }
    },
@@ -512,27 +618,30 @@
        formData.append(`date`, date)
        formData.append(`files`, this.file7.raw)
        // 后端上传接口
        this.MultipartFile(formData).then(res => {
          this.idDisabled = false
          if (res.code === 0) {
            this.$message({
              message: '提交成功!',
              type: 'success'
            })
            var reportInfo = res.data
            this.value2 = [this.value3, this.value3]
            reportInfo.name = '浑南区报告' + reportInfo.time.split('-').join('')
            this.tableData = [reportInfo]
          } else {
            this.$message.error('提交失败!')
          }
        }).catch(err => {
          console.log(err)
        })
        this.MultipartFile(formData)
          .then((res) => {
            this.idDisabled = false
            if (res.code === 0) {
              this.$message({
                message: '提交成功!',
                type: 'success',
              })
              var reportInfo = res.data
              this.value2 = [this.value3, this.value3]
              reportInfo.name =
                '浑南区报告' + reportInfo.time.split('-').join('')
              this.tableData = [reportInfo]
            } else {
              this.$message.error('提交失败!')
            }
          })
          .catch((err) => {
            console.log(err)
          })
      } else {
        this.$message({
          message: '提交文件数量不符合',
          type: 'warning'
          type: 'warning',
        })
      }
    },
@@ -544,14 +653,14 @@
          url: '/excel/excelImport',
          method: 'post',
          headers: { 'Content-Type': 'multipart/form-data' }, // 多文件上传这一句必须加
          data
          data,
        })
      } else {
        return this.$request({
          url: '/excel/syExcelImport',
          method: 'post',
          headers: { 'Content-Type': 'multipart/form-data' }, // 多文件上传这一句必须加
          data
          data,
        })
      }
    },
@@ -567,7 +676,7 @@
        return y + '-' + m + '-' + d
      } else {
        var arr = []
        timeArr.map(v => {
        timeArr.map((v) => {
          var date = new Date(v)
          var y = date.getFullYear()
          var m = date.getMonth() + 1
@@ -598,7 +707,7 @@
    handleCheckAllChange(val) {
      // console.info('check all change is ', val)
      this.isIndeterminate = false
      this.tableData.forEach(item => {
      this.tableData.forEach((item) => {
        item.checked = val
        this.dateArr.push(item.date)
      })
@@ -613,7 +722,7 @@
    handleCheckOneChange(obj) {
      // console.info('check one change is ', obj)
      if (obj.checked === false) {
        this.dateArr = this.dateArr.filter(v => {
        this.dateArr = this.dateArr.filter((v) => {
          return v !== obj.date
        })
      } else {
@@ -621,13 +730,14 @@
      }
      var totalCount = this.tableData.length
      let someStatusCount = 0
      this.tableData.forEach(item => {
      this.tableData.forEach((item) => {
        if (item.checked === obj.checked) {
          someStatusCount++
        }
      })
      this.count = someStatusCount
      this.checkAll = totalCount === someStatusCount ? obj.checked : !obj.checked
      this.checkAll =
        totalCount === someStatusCount ? obj.checked : !obj.checked
      this.isIndeterminate = someStatusCount > 0 && someStatusCount < totalCount
    },
    // 高新区报告下载
@@ -636,58 +746,82 @@
        url: '/excel/excelExport',
        method: 'get',
        params: {
          id: obj.id
        }
      }).then(res => {
        var getData = {}
        getData = res.data
        // 苏州市区放最后
        getData.list1 = this.cityLast(getData.list1)
        getData.list5 = this.cityLast(getData.list5)
        // 高新区放最前边
        getData.list2 = this.cityFirst(getData.list2)
        getData.list3 = this.cityFirst(getData.list3)
        getData.list4 = this.cityFirst(getData.list4)
        this.airData = getData
        var monthZero = res.data.time.split('月')[0]
        if (monthZero.substr(0, 1) === '0') {
          this.airData.month = monthZero.substr(1)
        } else {
          this.airData.month = res.data.time.split('月')[0]
        }
        var dayZero = res.data.time.split('月')[1].split('日')[0]
        if (dayZero.substr(0, 1) === '0') {
          this.airData.day = dayZero.substr(1)
        } else {
          this.airData.day = dayZero
        }
        var arr = obj.date.split('-')
        if (arr[2].substr(0, 1) === '0') {
          arr[2] = arr[2].substr(1)
        }
        if (arr[1].substr(0, 1) === '0') {
          arr[1] = arr[1].substr(1)
        }
        this.airData.currentTime = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
        this.airData.currentYear = arr[0]
        var time1DayZero = ''
        var time1MonthZero = ''
        if (res.data.time1.split('年')[1].split('月')[0].substr(0, 1) === '0') {
          time1MonthZero = res.data.time1.split('年')[1].split('月')[0].substr(1)
        } else {
          time1MonthZero = res.data.time1.split('年')[1].split('月')[0]
        }
        if (res.data.time1.split('月')[1].split('日')[0].substr(0, 1) === '0') {
          time1DayZero = res.data.time1.split('月')[1].split('日')[0].substr(1)
        } else {
          time1DayZero = res.data.time1.split('月')[1].split('日')[0]
        }
        this.airData.time1 = res.data.time1.split('年')[0] + '年' + time1MonthZero + '月' + time1DayZero + '日'
        ExportBriefDataDocx('/airQuality.docx', this.airData, `${obj.name}.docx`)
      }).catch(err => {
        console.log(err)
          id: obj.id,
        },
      })
        .then((res) => {
          console.log(res, 'xia')
          var getData = {}
          getData = res.data
          // 苏州市区放最后
          getData.list1 = this.cityLast(getData.list1)
          getData.list5 = this.cityLast(getData.list5)
          // 高新区/国控站放最前边
          getData.list2 = this.cityFirst2(getData.list2)
          getData.list3 = this.cityFirst2(getData.list3)
          getData.list4 = this.cityFirst(getData.list4)
          this.airData = getData
          var monthZero = res.data.time.split('月')[0]
          if (monthZero.substr(0, 1) === '0') {
            this.airData.month = monthZero.substr(1)
          } else {
            this.airData.month = res.data.time.split('月')[0]
          }
          var dayZero = res.data.time.split('月')[1].split('日')[0]
          if (dayZero.substr(0, 1) === '0') {
            this.airData.day = dayZero.substr(1)
          } else {
            this.airData.day = dayZero
          }
          var arr = obj.date.split('-')
          if (arr[2].substr(0, 1) === '0') {
            arr[2] = arr[2].substr(1)
          }
          if (arr[1].substr(0, 1) === '0') {
            arr[1] = arr[1].substr(1)
          }
          this.airData.currentTime =
            arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
          this.airData.currentYear = arr[0]
          var time1DayZero = ''
          var time1MonthZero = ''
          if (
            res.data.time1.split('年')[1].split('月')[0].substr(0, 1) === '0'
          ) {
            time1MonthZero = res.data.time1
              .split('年')[1]
              .split('月')[0]
              .substr(1)
          } else {
            time1MonthZero = res.data.time1.split('年')[1].split('月')[0]
          }
          if (
            res.data.time1.split('月')[1].split('日')[0].substr(0, 1) === '0'
          ) {
            time1DayZero = res.data.time1
              .split('月')[1]
              .split('日')[0]
              .substr(1)
          } else {
            time1DayZero = res.data.time1.split('月')[1].split('日')[0]
          }
          this.airData.time1 =
            res.data.time1.split('年')[0] +
            '年' +
            time1MonthZero +
            '月' +
            time1DayZero +
            '日'
          ExportBriefDataDocx(
            '/airQuality1.docx',
            this.airData,
            `${obj.name}.docx`
          )
        })
        .catch((err) => {
          console.log(err)
        })
    },
    // 苏州市区放最后
    cityLast(list) {
@@ -698,7 +832,9 @@
          list.splice(i, 1)
        }
      })
      list.push(obj)
      if (obj.place) {
        list.push(obj)
      }
      return list
    },
    // 高新区放最前边
@@ -710,7 +846,27 @@
          list.splice(i, 1)
        }
      })
      list.unshift(obj)
      if (obj.place) {
        list.unshift(obj)
      }
      return list
    },
    // 第二个和第三个表格是国控站/高新区
    cityFirst2(list) {
      var obj = {}
      list.map((v, i) => {
        if (v.place === '国控站') {
          obj = v
          list.splice(i, 1)
        }
        if (v.place === '高新区') {
          obj = v
          list.splice(i, 1)
        }
      })
      if (obj.place) {
        list.unshift(obj)
      }
      return list
    },
    // 浑南区报告下载
@@ -719,33 +875,39 @@
        url: '/excel/hnExcelExport',
        method: 'get',
        params: {
          id: obj.id
          id: obj.id,
          // id: 68
        }
      }).then(res => {
        // console.log(res)
        this.hunNanAirData = res.data
        // currentTime时间
        var arr = res.data.time2.split('-')
        var currentTime = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
        var currentYear = arr[0]
        this.hunNanAirData.currentTime = currentTime
        this.hunNanAirData.currentYear = currentYear
        // 对后端传来的09月26日,yearDate进行分割
        var month = res.data.time.split('-')[0]
        if (month.substr(0, 1) === '0') {
          month = month.substr(1)
        }
        this.hunNanAirData.month = month
        var day = res.data.time.split('-')[1]
        if (day.substr(0, 1) === '0') {
          day = day.substr(1)
        }
        this.hunNanAirData.day = day
        ExportBriefDataDocx('/hunnan.docx', this.hunNanAirData, `浑南区${arr[1]}月${arr[2]}日环境空气质量报告.docx`)
      }).catch(err => {
        console.log(err)
        },
      })
        .then((res) => {
          // console.log(res)
          this.hunNanAirData = res.data
          // currentTime时间
          var arr = res.data.time2.split('-')
          var currentTime = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
          var currentYear = arr[0]
          this.hunNanAirData.currentTime = currentTime
          this.hunNanAirData.currentYear = currentYear
          // 对后端传来的09月26日,yearDate进行分割
          var month = res.data.time.split('-')[0]
          if (month.substr(0, 1) === '0') {
            month = month.substr(1)
          }
          this.hunNanAirData.month = month
          var day = res.data.time.split('-')[1]
          if (day.substr(0, 1) === '0') {
            day = day.substr(1)
          }
          this.hunNanAirData.day = day
          ExportBriefDataDocx(
            '/hunnan.docx',
            this.hunNanAirData,
            `浑南区${arr[1]}月${arr[2]}日环境空气质量报告.docx`
          )
        })
        .catch((err) => {
          console.log(err)
        })
    },
    // 浑南区excel下载
    hnExcel(obj) {
@@ -753,184 +915,55 @@
        url: '/excel/syExcelExport',
        method: 'get',
        params: {
          id: obj.id
        }
      }).then(res => {
        var code2 = res.data.code2.substr(0, 2) + '\n' + res.data.code2.substr(2)
        var code4 = res.data.code4.substr(0, 2) + '\n' + res.data.code4.substr(2)
        var table1Data = [['', '目标值', '进度', '进度', '同比'], ['', '', '', '', ''], ['优良天', '300', res.data.code1, '', code2], ['', '', '', '', ''], ['PM2.5', '41', res.data.code3, '', code4], ['', '', '', '', '']]
        var table3Data = [['', '目标值', '目标值', '进度', '进度'], ['', '目标值', '目标值', '进度', '进度'], ['优良天', '80', '80', res.data.code5, ''], ['', '', '', '', ''], ['PM2.5', '23', '23', res.data.code6, ''], ['', '', '', '', '']]
        var table2Data = [
          res.data.list.sy1,
          res.data.list.sy2,
          res.data.list.hnd1,
          res.data.list.hnd2,
          res.data.list.xxj1,
          res.data.list.xxj2,
          res.data.list.hnq1,
          res.data.list.hnq2
        ]
        var data = new Date()
        var currentYearData = data.getFullYear()
        var jd = res.data.season
        ExportHunnanExcel(`蓝天计划挂图作战${obj.time.split('-').join('')}`, table1Data, table3Data, table2Data, currentYearData, jd)
      }).catch(err => {
        console.log(err)
          id: obj.id,
        },
      })
    },
    // 导出报告
    exportReport() {
      // 导出excel报告
      // table1的数据:
      /* var table1Data = [['', '目标值', '进度', '进度', '同比'], ['', '', '', '', ''], ['优良天', '300', '215', '', '增加\n11天'], ['', '', '', '', ''], ['PM2.5', '41', '33', '33', '改善\n20.7%'], ['', '', '', '', '']]
      var table3Data = [['', '目标值', '目标值', '进度', '进度'], ['', '目标值', '目标值', '进度', '进度'], ['优良天', '80', '80', '61', '61'], ['', '', '', '', ''], ['PM2.5', '23', '23', '18', '18'], ['', '', '', '', '']]
      var table2Data = [
        ['优良天数', '21', '25', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '增加9天'],
        ['PM2.5浓度微克/立方', '11', '30', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '改善17.9%'],
        ['优良天数', '21', '25', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '增加9天'],
        ['PM2.5浓度微克/立方', '22', '25', '23', '37', '34', '36', '38', '18', '5', '', '', '', '215', '改善17.9%'],
        ['优良天数', '21', '25', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '增加9天'],
        ['PM2.5浓度微克/立方', '28', '69', '39', '27', '24', '26', '28', '18', '5', '', '', '', '215', '改善17.9%'],
        ['优良天数', '21', '25', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '增加9天'],
        ['PM2.5浓度微克/立方', '32', '20', '29', '27', '24', '26', '28', '18', '5', '', '', '', '215', '改善17.9%']
      ]
      var data = new Date()
      var currentYearData = data.getFullYear()
      var jd = '四'
      ExportHunnanExcel('蓝天计划挂图作战', table1Data, table3Data, table2Data, currentYearData, jd)*/
      // 导出word报告
      // 时间
      /* var arr = this.newTimeNotZero(this.value3).split('-')
      var currentTime = arr[0] + ' 年' + arr[1] + ' 月' + arr[2] + ' 日'
      var currentYear = arr[0]
      this.hunNanAirData.currentTime = currentTime
      this.hunNanAirData.currentYear = currentYear
      // 以下是后端传来数据
      var yearDate = '09月26日'
      var list1 = {
        sy: {
          AQI: 127,
          PM25: 38,
          PM10: 75,
          CO: 1.1,
          O38H: 21,
          SO2: 189,
          NO2: 20,
          ZH: 32,
          PaiM: '-'
        },
        hnd: {
          AQI: 71,
          PM25: 38,
          PM10: 75,
          CO: 1.1,
          O38H: 21,
          SO2: 189,
          NO2: 20,
          ZH: 32,
          PaiM: '-'
        },
        xxj: {
          AQI: 72,
          PM25: 38,
          PM10: 75,
          CO: 1.1,
          O38H: 21,
          SO2: 189,
          NO2: 20,
          ZH: 32,
          PaiM: '-'
        }
      }
      var hnd = {
        hnd1: {
          nd: '2022',
          yl: '226',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        },
        hnd2: {
          nd: '2021',
          yl: '222',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        },
        hnd3: {
          nd: '变化幅度',
          yl: '4',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        }
      }
      var xxj = {
        xxj1: {
          nd: '2022',
          yl: '226',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        },
        xxj2: {
          nd: '2021',
          yl: '222',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        },
        xxj3: {
          nd: '变化幅度',
          yl: '4',
          excellent: '92',
          good: '134',
          slightPol: '36',
          moderatePol: '6',
          heavyPol: '1',
          seriousPol: '0'
        }
      }
      var datafor = {
        so2: '23%',
        no2: '25%',
        co: '-23'
      }
      // var airQua = '二级良'
      var airQua = '一级优'
      this.hunNanAirData.list1 = list1
      this.hunNanAirData.hnd = hnd
      this.hunNanAirData.xxj = xxj
      this.hunNanAirData.airQua = airQua
      // 对后端传来的9月26日进行分割
      var month = yearDate.split('月')[0]
      if (month.substr(0, 1) === '0') {
        month = month.substr(1)
      }
      this.hunNanAirData.month = month
      var day = yearDate.split('月')[1].split('日')[0]
      if (day.substr(0, 1) === '0') {
        day = day.substr(1)
      }
      this.hunNanAirData.day = day
      this.hunNanAirData.datafor = datafor
      ExportBriefDataDocx('/HunnanReport.docx', this.hunNanAirData, `浑南区${month}月${day}日环境空气质量报告.docx`)*/
        .then((res) => {
          var code2 =
            res.data.code2.substr(0, 2) + '\n' + res.data.code2.substr(2)
          var code4 =
            res.data.code4.substr(0, 2) + '\n' + res.data.code4.substr(2)
          var table1Data = [
            ['', '目标值', '进度', '进度', '同比'],
            ['', '', '', '', ''],
            ['优良天', '300', res.data.code1, '', code2],
            ['', '', '', '', ''],
            ['PM2.5', '41', res.data.code3, '', code4],
            ['', '', '', '', ''],
          ]
          var table3Data = [
            ['', '目标值', '目标值', '进度', '进度'],
            ['', '目标值', '目标值', '进度', '进度'],
            ['优良天', '69', '69', res.data.code5, ''],
            ['', '', '', '', ''],
            ['PM2.5', '40', '40', res.data.code6, ''],
            ['', '', '', '', ''],
          ]
          var table2Data = [
            res.data.list.sy1,
            res.data.list.sy2,
            res.data.list.hnd1,
            res.data.list.hnd2,
            res.data.list.xxj1,
            res.data.list.xxj2,
            res.data.list.hnq1,
            res.data.list.hnq2,
          ]
          var data = new Date()
          var currentYearData = data.getFullYear()
          var jd = res.data.season
          ExportHunnanExcel(
            `蓝天计划挂图作战${obj.time.split('-').join('')}`,
            table1Data,
            table3Data,
            table2Data,
            currentYearData,
            jd
          )
        })
        .catch((err) => {
          console.log(err)
        })
    },
    // 查询报告
    selectReport(val) {
@@ -947,103 +980,107 @@
          startTime: this.sensorTime2[0],
          endTime: this.sensorTime2[1],
          code: this.valueSelect,
          pageCount: page
        }
      }).then(res => {
        if (res.code === 0) {
          var info = []
          if (this.isDisplay) {
            this.totalNumber = res.data.total
            info = res.data.item
          } else {
            info = res.data
          }
          info.map(v => {
            if (this.valueSelect === 'gx') {
              v.name = '高新区空气质量分析报告' + v.time.split('-').join('')
            } else {
              v.name = '浑南区报告' + v.time.split('-').join('')
            }
          })
          info.sort((a, b) => { return b.time.split('-').join('') - a.time.split('-').join('') })
          this.tableData = info
        }
      }).catch(err => {
        console.log(err)
          pageCount: page,
        },
      })
    }
  }
        .then((res) => {
          if (res.code === 0) {
            var info = []
            if (this.isDisplay) {
              this.totalNumber = res.data.total
              info = res.data.item
            } else {
              info = res.data
            }
            info.map((v) => {
              if (this.valueSelect === 'gx') {
                v.name = '高新区空气质量分析报告' + v.time.split('-').join('')
              } else {
                v.name = '浑南区报告' + v.time.split('-').join('')
              }
            })
            info.sort((a, b) => {
              return b.time.split('-').join('') - a.time.split('-').join('')
            })
            this.tableData = info
          }
        })
        .catch((err) => {
          console.log(err)
        })
    },
  },
}
</script>
<style scoped>
.analyseAir{
.analyseAir {
  width: 100%;
  height: 100%;
  display: flex;
  padding-top: 22px;
}
  .exTop{
    width: 30%;
    /*height: 95%;*/
    position: relative;
    overflow: auto;
    margin-bottom: 2%;
  }
  .cascader-demo{
    float: left;
    padding: 0% 2%;
  }
  .upload-demo{
    margin-left: 2%;
    /*float: left;*/
    margin-top: 4%;
    height: 65px;
  }
  .upload-demo /deep/ .el-upload-list__item{
    font-size: 15px;
  }
.upload-demo /deep/ .el-upload-list__item:first-child{
.exTop {
  width: 30%;
  /*height: 95%;*/
  position: relative;
  overflow: auto;
  margin-bottom: 2%;
}
.cascader-demo {
  float: left;
  padding: 0% 2%;
}
.upload-demo {
  margin-left: 2%;
  /*float: left;*/
  margin-top: 4%;
  height: 65px;
}
.upload-demo /deep/ .el-upload-list__item {
  font-size: 15px;
}
.upload-demo /deep/ .el-upload-list__item:first-child {
  margin-top: 2px;
}
  .exDown {
    width: 50%;
    height: 95%;
    margin-left: 2%;
    font-size: 18px;
  }
  .exDown /deep/ .el-card{
    width: 100%;
    height: 100%;
  }
  .divPadding{
    width: 80%;
    margin: auto;
  }
  .textCenter{
    text-align: center;
  }
  .fontS14{
    font-size: 14px;
  }
  .upload-demo button{
    margin-right: 10%;
  }
  .upload-demo /deep/ .el-upload{
    margin-right: 10%;
  }
  .selectBtn{
    margin-left: 5%;
  }
  .el-card /deep/ .el-card__body{
    height: 815px;
  }
  .paginationDemo{
    position: absolute;
    left: 0;
    bottom: 3%;
  }
  .el-upload__tip{
    color: red;
  }
.exDown {
  width: 50%;
  height: 95%;
  margin-left: 2%;
  font-size: 18px;
}
.exDown /deep/ .el-card {
  width: 100%;
  height: 100%;
}
.divPadding {
  width: 80%;
  margin: auto;
}
.textCenter {
  text-align: center;
}
.fontS14 {
  font-size: 14px;
}
.upload-demo button {
  margin-right: 10%;
}
.upload-demo /deep/ .el-upload {
  margin-right: 10%;
}
.selectBtn {
  margin-left: 5%;
}
.el-card /deep/ .el-card__body {
  height: 815px;
}
.paginationDemo {
  position: absolute;
  left: 0;
  bottom: 3%;
}
.el-upload__tip {
  color: red;
}
</style>