<template>
  <div class="L-task-info">
    <div class="info-left" id="L-size-main">
      <div class="content-info" id="L-header">
        <div class="info-title">任务详情</div>
        <div class="teshu-top-info">
          <div class="top-info">
            <el-row class="top-row">
              <!-- <el-col :span="8">
                任务编号:<span>{{ titleInfoObj.id }}</span>
              </el-col> -->
              <el-col :span="8">
                任务名称:<span>{{ titleInfoObj.taskName }}</span>
              </el-col>
              <el-col :span="8">
                任务状态:<span>{{ taskstatus(titleInfoObj.taskStatus) }}</span>
              </el-col>
              <el-col :span="8">
                任务期限:<span>{{ titleInfoObj.taskDeadline }}</span>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="8">
                任务下发时间:<span>{{ titleInfoObj.taskTime }}</span>
              </el-col>
              <el-col :span="16">
                核查资产类型:<span>{{ listTow.join(",") }}</span>
              </el-col>
            </el-row>
          </div>
        </div>
      </div>
      <div class="info-cut-off-rule" id="L-tab">
        <div class="left-tab" :class="index == 1 ? 'active-tab' : ''" @click="activeTab(1)">资产核查信息</div>
        <div :class="index == 2 ? 'active-tab' : ''" @click="activeTab(2)">单位完成情况</div>
      </div>
      <div class="info-bottom-box">
        <el-form :inline="true" :model="formInline" size="small" class="demo-form-inline" v-if="index == 1">
          <el-row>
            <el-col :span="7">
              <el-form-item label="核查单位:">
                <el-input v-model="formInline.dwmc" placeholder="请输入"></el-input>
              </el-form-item>
            </el-col>
            <!-- <el-col :span="9">
              <el-form-item label="系统类型:">
                <el-select v-model="formInline.xtlx" placeholder="请选择">
                  <el-option v-for="dict in dict.type.zc_xtlx" :key="dict.label" :label="dict.label"
                    :value="dict.value">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col> -->
            <el-col :span="7">
              <el-form-item label="审核状态:">
                <el-select v-model="formInline.status" placeholder="请选择">
                  <el-option label="待核查" value="0">
                  </el-option>
                  <el-option label="待审核" value="1">
                  </el-option>
                  <el-option label="审核通过" value="3">
                  </el-option>
                  <el-option label="审核不通过" value="4">
                  </el-option>
                  <!-- <el-option label="已关停" value="5">
                  </el-option> -->
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item>
                <el-button size="mini" type="primary" @click="handleQuery()">查询</el-button>
                <el-button size="mini" @click="resetQuery()">重置</el-button>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <el-form :inline="true" :model="formInlineTwo" size="small" class="demo-form-inline" v-if="index == 2">
          <el-row>
            <el-col :span="7">
              <el-form-item label="单位名称:">
                <el-input v-model="formInlineTwo.dwmc" placeholder="请输入"></el-input>
                <!-- <el-select v-model="formInline.unit" placeholder="请选择"> -->
                <!-- <el-option
                        v-for="dict in dict.type.bms_approval_status"
                        :key="dict.value"
                        :label="dict.label"
                        :value="dict.value">
                      </el-option> -->
                <!-- </el-select> -->
              </el-form-item>
            </el-col>
            <el-col :span="7">
              <el-form-item label="完成状态:">
                <el-select v-model="formInlineTwo.taskStatus" placeholder="请选择">

                  <el-option label="进行中" value="1">
                  </el-option>
                  <el-option label="正常完成" value="2">
                  </el-option>
                  <el-option label="超期完成" value="3">
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item>
                <el-button size="mini" type="primary" @click="handleQuery()">查询</el-button>
                <el-button size="mini" @click="resetQuery()">重置</el-button>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <section v-if="index == 1">
          <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane :label="item.conent" :name="item.lable" :xtmcName="item.xtmcName"
              v-for="item in chanckListTow">
            </el-tab-pane>
          </el-tabs>
          <el-table v-loading="loading" :data="tableData" :height="tabHeader" :row-class-name="tableRowClassName">
            <el-table-column type="index" width="50" label="序号" align="center" />
            <!-- <el-table-column label="资产编号" key="id" width="200px" prop="id" align="center" /> -->
            <el-table-column :label="xtmcName" key="xtmc" prop="xtmc" align="center" />
            <!-- <el-table-column label="系统类型" key="xtlx" prop="xtlx" align="center">
              <template slot-scope="scope" >
                <div v-if='scope.row.xtlx'>
                  <dict-tag :options="dict.type.zc_xtlx" :value="scope.row.xtlx" />

                </div>
              </template>
</el-table-column> -->
            <el-table-column label="核查单位" key="zcdwmc" prop="zcdwmc" align="center" />
            <el-table-column label="审核状态" key="status" width="200px" prop="status" class-name="table-status"
              align="center">
              <template slot-scope="scope">
                <span v-if="scope.row.status == 0" style="color: #e6a230;">
                  待核查
                </span>
                <span v-if="scope.row.status == 1" style="color: #E6A23C;">
                  待审核
                </span>
                <span v-if="scope.row.status == 3" style="color: #67C23A;">
                  审核通过
                </span>
                <span v-if="scope.row.status == 4" style="color: #F56C6C;">
                  审核不通过
                </span>
                <span v-if="scope.row.status == 5" style="color: #F56C6C;">
                  已关停
                </span>
              </template>
            </el-table-column>
            <el-table-column label="操作" prop="userId" class-name="table-operation" align="center">
              <template slot-scope="scope">
                <div style="display: flex;align-items: center;justify-content: center;">
                  <div style="display: flex;align-items: center;cursor: pointer;" @click="goInfo(1, scope.row)"
                    v-if="scope.row.status != 1 || ($route.query.pageType == 'look' || $route.meta.pageType == 'look')">
                    <img src="@/assets/images/icon-ck@2x.png" alt="" style="width: 20px;margin-right: 5px;">
                    <span class="look-info" style="color: #1485EF;">查看</span>
                  </div>
                  <div style="display: flex;align-items: center;cursor: pointer;margin-left: 5px;"
                    @click="goInfo(2, scope.row)"
                    v-if="$route.query.pageType == 'info' || $route.meta.pageType == 'info'"
                    v-show='scope.row.status == 1'>
                    <img src="@/assets/images/icon-shenhe@2x.png" alt="" style="width: 15px;margin-right: 5px;">
                    <span class="look-info" style="color: #1485EF;">审核</span>
                  </div>
                  <div style="display: flex;align-items: center;cursor: pointer;margin-left: 5px;"
                    @click="goInfo(3, scope.row)" v-show='scope.row.status == 4'>
                    <img src="@/assets/images/icon-ck@2x.png" alt="" style="width: 20px;margin-right: 5px;">
                    <span class="look-info" style="color: #1485EF;">查看原因</span>
                  </div>
                </div>
              </template>
            </el-table-column>
          </el-table>
        </section>
        <section v-if="index == 2" class="shuangchongbox">
          <div class="shuangchongboxleftbox" :class="isshow ? '' : 'shuangchongboxleftboxShow'">
            <div style="margin-bottom: 10px;">
              <el-button size="mini" type="primary" @click="daochu()">导出</el-button>
            </div>
            <el-table v-loading="loading" :data="tableDataTwo" :height="tabHeader" :max-height="tabHeader"
              :row-class-name="tableRowClassName" style="width: 100%">
              <el-table-column type="index" width="50" label="序号" align="center" />
              <el-table-column label="单位名称" key="dwmc" width="150px" prop="dwmc" align="center" />
              <el-table-column label="完成状态" key="taskStatus" prop="taskStatus" class-name="table-status" align="center">
                <template slot-scope="scope">
                  <span v-if="scope.row.taskStatus == 0" style="color: #F56C6C;">
                    已关闭
                  </span>
                  <span v-if="scope.row.taskStatus == 1" style="color: #E6A23C;">
                    进行中
                  </span>
                  <span v-if="scope.row.taskStatus == 2" style="color: #67C23A;">
                    正常完成
                  </span>
                  <span v-if="scope.row.taskStatus == 3" style="color:#67C23A;">
                    超期完成
                  </span>
                  <span v-if="scope.row.taskStatus == 4" style="color: #F56C6C;">
                    审核不通过
                  </span>
                  <span v-if="scope.row.taskStatus == 5" style="color: #F56C6C;">
                    审核驳回
                  </span>
                </template>
              </el-table-column>
              <el-table-column label="核查资产数量" key="total" width="120px" prop="total" align="center" />
              <el-table-column label="待核查数量" key="total" width="120px" prop="notChecked" align="center" />
              <el-table-column label="待审批数量" key="total" width="120px" prop="dsp" align="center" />
              <el-table-column label="完成数量" key="checked" prop="checked" align="center">
                <!-- <template slot-scope="scope">
                    <dict-tag :options="dict.type.project_middle_type" :value="scope.row.projectMiddleType"/>
                  </template> -->
              </el-table-column>
              <!-- <el-table-column label="未完成数量" key="wwcsl" prop="notChecked" align="center" /> -->
              <el-table-column label="审核退回次数" key="wwcsl" width="180px" prop="shthcs" align="center" />
              <el-table-column label="完成比例" key="checkedRatio" prop="checkedRatio" align="center">
                <template slot-scope="scope">
                  <span style="color: #192A92;">{{ scope.row.checkedRatio }}%</span>
                </template>
              </el-table-column>
            </el-table>
          </div>
          <div class="shouqiwenzi" @click="shouqiisis">{{ isshow ? "收起" : '展开' }}>></div>
          <div v-show="isshow" class="myEcharts" id="myEcharts" ref="myEcharts" :style="{ height: tabHeader }">
            <!-- 123 -->
          </div>
        </section>
        <my-pagination id="L-pagination" :total="total" :page="pagination.current" :limit="pagination.size"
          @pagination="getPagination" :current-page.sync="pagination.current"></my-pagination>
      </div>
    </div>
    <div class="info-right" v-if="$route.query.pageType == 'look' || $route.meta.pageType == 'look'">
      <div class="info-title">任务流程节点</div>
      <div class="timeline">
        <div class="timeline-items" v-for="(item, index) in timeLineData">
          <div class="left-box">
            <img class="main-img" :src="returnidimg(item.assetName)" alt="">
            <!-- <img class="main-img" v-if="item.status == 2" src="" alt="">
            <img class="main-img" v-if="item.status == 3" src="" alt="">
            <img class="main-img" v-if="item.status == 4" src="" alt=""> -->
            <img class="icon-jt" v-if="(index + 1) != timeLineData.length" src="@/assets/images/icon-jt@2x.png" alt="">
          </div>
          <div class="right-box">
            <span class="span-title">{{ item.assetName }}:</span>
            <span class="span-time">{{ item.xfTime }}</span>
          </div>
        </div>
      </div>

    </div>
    <my-dialog title="查看原因" ref="liebiaoDialog" @close="importClose" class="taskDialogBox" width="40%">
      <el-descriptions>
        <el-descriptions-item label="不通过原因">
          {{ chakanyuanyin }}
        </el-descriptions-item>
      </el-descriptions>
    </my-dialog>
  </div>
</template>
<script>
import myPagination from "@/views/components/Pagination/index.vue"
import { getassetTaskid, geassetTaskcHc, assetTaskdwHc, assetLcpage, assetTaskdwHcBl } from "@/api/renwuApi/index.js"
import myDialog from "@/views/components/myDialog/index.vue"
import * as echarts from 'echarts';

export default {
  dicts: ['zc_xtlx'],
  components: { myPagination, myDialog },
  data() {
    return {
      index: 1,
      formInline: {
        xtlx: "",
      },
      formInlineTwo: {
        dwmc: "",
        taskStatus: ""
      },
      total: 0,
      pagination: {
        current: 1,
        size: 10,
      },
      tableData: [

      ],
      tableDataTwo: [

      ],
      loading: false,
      tabHeader: undefined,
      timeLineData: [],
      titleInfoObj: {},
      chakanyuanyin: "",
      activeName: "0",
      xtmcName: "系统名称",
      chanckList: [
        {
          lable: "0",
          conent: "web资产",
          xtmcName: "系统名称",
        },
        {
          lable: "1",
          conent: "小程序资产",
          xtmcName: "小程序名称",
        },
        {
          lable: "2",
          conent: "公众号资产",
          xtmcName: "公众号名称",
        },
        {
          lable: "3",
          conent: "电子邮件资产",
          xtmcName: "电子邮箱后缀",
        },
        {
          lable: "4",
          conent: "移动应用程序资产",
          xtmcName: "移动应用程序名称",
        },
      ],
      chanckListTow: [],
      listTow: [],
      option: null,
      myChart: null,
      isshow: true,
      echartsdata: [
        { value: 0, name: '进行中', taskStatus: "1" },
        { value: 0, name: '正常完成', taskStatus: "2" },
        { value: 0, name: '超期完成', taskStatus: "3" },
      ]
    }
  },
  mounted() {
    this.cancalDebounce();
    window.addEventListener('resize', this.cancalDebounce);
    // 获取详情
    this.titleInfo()
    //获取流程节点数据
    this.assetLcpageList()
    //获取饼状图数据
    this.getEchartsdata()

  },
  destroyed() {
    window.removeEventListener('resize', this.cancalDebounce);
  },

  methods: {
    shouqiisis() {
      console.log(123);
      this.isshow = !this.isshow
      // this.myEchartsis()
    },
    // 导出按钮
    daochu() {
      this.formInlineTwo.taskId = this.$route.query.id
      this.download('/unit/assetTask/export', {
        ...this.formInlineTwo
      }, `单位完成情况${new Date().getTime()}.xlsx`)
    },
    //切换资产核查tab
    handleClick(tab, event) {
      this.formInline = {
        xtlx: "",
      }
      this.activeName = tab.name
      this.xtmcName = tab.$attrs.xtmcName,
        localStorage.setItem("activeName", this.activeName)

      this.handleQuery()
    },
    //返回图片
    returnidimg(iswenzi) {
      // let obj = {
      //   '下发':require('@/assets/images/rwxf.png'),
      //   "提交":require('@/assets/images/wctj.png'),
      //   "驳回,不通过":require('@/assets/images/shbh.png'),
      //   "审核通过":require('@/assets/images/shtg.png'),
      // }

      let listsna = [
        {
          name: "下发",
          imgdata: require('@/assets/images/rwxf.png'),
        }, {
          name: "提交",
          imgdata: require('@/assets/images/wctj.png'),
        }, {
          name: "不通过",
          imgdata: require('@/assets/images/shbh.png'),
        }, {
          name: "审核通过",
          imgdata: require('@/assets/images/shtg.png'),
        }, {
          name: "驳回",
          imgdata: require('@/assets/images/shbh.png'),
        }
      ]
      let item = listsna.find(item => iswenzi.includes(item.name))
      if (item) {
        return item.imgdata
      } else {
        return require('@/assets/images/wctj.png')
      }

    },
    //获取流程
    assetLcpageList() {
      let obj = {
        taskId: this.$route.query.id || this.$route.meta.id
      }
      assetLcpage(obj).then(res => {
        this.timeLineData = res.data
      })
    },
    importClose() { },

    goInfo(type, row) {
      // 查看
      if (type == 1) {
        this.$router.push({
          name: 'taskAuditInfo', query: {
            pageType: "look",
            taskId: row.taskId,
            assetId: row.id,
            type: this.activeName,

          }
        })
      }
      //审核
      if (type == 2) {
        this.$router.push({
          name: 'taskAuditInfo', query: {
            pageType: "change",
            taskId: row.taskId,
            assetId: row.id,
            type: this.activeName,
            zcdwmc: row.zcdwmc,
            taskInfo: 'taskInfo'
          }
        })
      }
      //查看不通过原因
      if (type == 3) {
        this.chakanyuanyin = row.btgyy
        this.$refs.liebiaoDialog.open()

      }
      // getassetTaskid(row.id)

    },
    taskstatus(id) {
      if (id) {
        let obj = {
          0: "已关闭",
          1: "进行中",
          2: "正常完成", 3: "超期完成", 4: "正常完成", 5: "审核驳回"
        }
        return obj[id]
      } else {
        return "-"
      }
    },
    titleInfoObjtype(type = "0,1") {
      console.log(type);
      let list = type.split(",")
      this.listTow = []
      this.chanckListTow = []
      this.chanckList.forEach(res => {
        list.forEach(element => {
          if (element == res.lable) {
            this.listTow.push(res.conent)
            this.chanckListTow.push(res)
          }
        });
      })
      this.activeName = this.chanckListTow[0].lable
      // this.xtmcName = tab.$attrs.xtmcName

      if (localStorage.getItem("activeName")) {
        this.activeName = localStorage.getItem("activeName")
        localStorage.setItem("activeName", this.activeName)
      }
      let listname = this.chanckListTow.filter(item => item.lable == this.activeName)
      if (listname) {
        this.xtmcName = listname[0].xtmcName

      }
      this.handleQuery();

    },
    titleInfo() {
      // console.log(this.$route.query);
      getassetTaskid(this.$route.query.id || this.$route.meta.id).then(res => {
        if (res.code == 200) {
          this.titleInfoObj = res.data
          this.titleInfoObjtype(this.titleInfoObj.type)
        }
      })

    },
    // 重置
    resetQuery() {
      this.activeName = this.chanckListTow[0].lable
      this.xtmcName = "系统名称",

        this.pagination = {
          current: 1,
          size: 10,
          type: this.activeName,
        }
      if (this.index == 1) {
        this.formInline = {
          xtlx: "",
          type: this.activeName,

        }
        this.getList();
      } else if (this.index == 2) {
        this.formInlineTwo = {
          dwmc: "",
          taskStatus: ""
        }
        this.getListTwo();
      }
    },
    // 查询
    handleQuery() {
      this.pagination = {
        current: 1,
        size: 10,
        type: this.activeName,
      }
      if (this.index == 1) {
        this.pagination = { ...this.pagination, ...this.formInline };
        this.getList();
      } else if (this.index == 2) {
        this.pagination = { ...this.pagination, ...this.formInlineTwo };
        this.getListTwo();
      }
    },
    // 获取页码
    getPagination(pages) {
      this.pagination.current = pages.page;
      this.pagination.size = pages.limit;
      if (this.index == 1) {
        this.getList();
      } else if (this.index == 2) {
        this.getListTwo();
      }
    },
    // 切换tab
    activeTab(id) {
      this.pagination.current = 1;
      this.pagination.size = 10;
      this.total = 0
      this.index = id
      console.log(id);

      this.resetQuery()
      if (id == 2) {
        setTimeout(() => {
          this.myEchartsis()

        }, 100);

      }
    },
    getList() {
      this.loading = true
      this.pagination.taskId = this.$route.query.id || this.$route.meta.id
      geassetTaskcHc(this.pagination).then(res => {
        this.tableData = res.data.records
        this.total = res.data.total
        this.loading = false

      })
    },
    getListTwo() {
      this.loading = true
      this.pagination.taskId = this.$route.query.id || this.$route.meta.id
      assetTaskdwHc(this.pagination).then(res => {
        this.tableDataTwo = res.data.records
        this.total = res.data.total
        this.loading = false
      })
    },
    //获取Echarts数据
    getEchartsdata() {
      assetTaskdwHcBl({ taskId: this.$route.query.id }).then(res => {
        if (res.code == 200) {
          let datalsit = res.data
          this.echartsdata.forEach(res => {
            datalsit.forEach(datares => {
              if (res.taskStatus == datares.taskStatus) {
                res.value = datares.count
              }

            })
          })
          // this.echartsdata = this.echartsdata.filter(item => item.value != "");
        }

      })
    },
    myEchartsis() {
      // var chartDom = document.querySelector('.myEcharts');
      console.log(this.$refs.myEcharts);

      this.myChart = echarts.init(this.$refs.myEcharts);
      this.option = {

        legend: {
          top: 'bottom'
        },
        toolbox: {
          show: true,
        },
        tooltip: {
          trigger: 'item',
          formatter: '{b}:{c}({d}%)'
        },
        series: [
          {
            name: 'Access From',
            type: 'pie',
            radius: '50%',
            data: this.echartsdata,

            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          }
        ]
      };

      this.option && this.myChart.setOption(this.option);
      this.myChart.on('click', (params) => {
        // params 包含了事件的数据和图表的信息
        console.log(params.data.taskStatus);
        this.formInlineTwo.taskStatus = params.data.taskStatus
        this.handleQuery()
        // 可以在这里添加你的逻辑,比如弹窗显示详细信息等
      });

    },
    // 修改table背景色
    tableRowClassName({ row, rowIndex }) {
      if (rowIndex % 2 !== 0) {
        return 'evenNumber-row';
      }
      return '';
    },
    // 屏幕尺寸变化
    cancalDebounce() {
      const element = document.getElementById('L-size-main'); // 通过元素的 ID 获取元素
      const header = document.getElementById('L-header'); // 通过元素的 ID 获取元素
      const tab = document.getElementById('L-tab'); // 通过元素的 ID 获取元素
      const pagination = document.getElementById('L-pagination'); // 通过元素的 ID 获取元素
      const elementHeight = element.offsetHeight;
      const headerHeight = header.offsetHeight;
      const paginationtHeight = pagination.offsetHeight;
      const tabHeight = tab.offsetHeight;
      this.tabHeader = elementHeight - headerHeight - paginationtHeight - tabHeight - 160;

    }
  },
  beforeRouteEnter(to, from, next) {
    if (to.query.pageType == 'info') {
      to.meta.title = '任务审核'
      to.meta.pageType = to.query.pageType
      to.meta.id = to.query.id
    } else if (to.query.pageType == 'look') {
      to.meta.title = '任务详情'
      to.meta.pageType = to.query.pageType
      to.meta.id = to.query.id
    }
    next();
  },
}
</script>
<style lang="scss" scoped>
::v-deep .el-timeline {
  padding-left: 0;
  font-size: 12px;
}

::v-deep .el-form-item__label {
  padding-right: 3px;
}

.look-info {}

::v-deep .el-dialog {
  margin-top: 20vh !important;
}

.shuangchongbox {
  width: 100%;
  display: flex;
  position: relative;

  .shuangchongboxleftbox {
    width: 70%;
  }

  .shuangchongboxleftboxShow {
    width: 100%;
  }

  .myEcharts {
    width: 30%;
    // height: 100%;

  }
}

.shouqiwenzi {
  position: absolute;
  top: 10px;
  right: -30px;
  width: 100px;
  font-size: 14px;
  font-weight: bold;
  color: #409EFF;
  cursor: pointer;
  z-index: 999;

}
</style>