<template>
  <transition
    appear
    name="animate__animated animate__move"
    enter-active-class="animate__slideInRight"
    leave-active-class="animate__slideOutRight"
  >
    <div class="widget-ProjectSituationofQM">
      <div class="head">
        <div class="title">
          <div class="icon"></div>
          <span class="site-info">近期工程情况</span>
          <div class="dateRange">{{ beginTime }}～{{ endTime }}</div>
        </div>
      </div>
      <div class="content-info">
        <!---->
        <!-- <div class="projectContent">
          <div class="pc-topContent">
            <div class="ptc-item">
              <span>分部工程验收：</span><span>5<i>个</i></span>
            </div>
            <div class="ptc-item">
              <span>分项工程验收：</span><span>5<i>个</i></span>
            </div>
          </div>
          <div class="pc-bottomContent">
            <div class="pbc-item">
              <span>224<i>个</i></span> <span>完成功能性试验</span>
            </div>
            <div class="pbc-item">
              <span>224<i>个</i></span> <span>申请检验批</span>
            </div>
            <div class="pbc-item">
              <span>224<i>个</i></span> <span>完成检验批</span>
            </div>
          </div>
        </div> -->
        <!---->
        <div class="bottom3Content">
          <!---->
          <div class="bottom2Content">
            <!---->
            <div class="overallProjectProgress">
              <div class="oppContent">
                <div class="oppItem">
                  <div class="oppItem-content">
                    {{ weeklyInfo }}
                  </div>
                </div>
              </div>
            </div>
            <!---->
            <div class="scanCodeNumber">
              <div class="title">
                <div class="icon"></div>
                <span class="item-name">质量验评记录</span>
              </div>
              <div class="recordsContent">
                <div class="records-item" v-for="(item, index) in recordsList" :key="index">
                  <div class="ri-title">
                    <span>{{ index + 1 }}、</span>
                    <span>{{ item.create_time.split(' ')[0] || '' }}</span>
                    <span>{{ `【${item.name}】` }}</span>
                    <span class="qualityGrade" :class="{ disqualification: item.quality_grade_str == '不合格' }">{{
                      item.quality_grade_str || '暂无'
                    }}</span>
                  </div>
                  <div class="ri-content">{{ item.project_name }}-{{ item.name }}</div>
                </div>
              </div>
            </div>
          </div>
          <!---->
          <div class="constructionRecords">
            <div class="title">
              <div class="icon"></div>
              <span class="item-name">施工记录</span>
              <!-- <span class="item-type">（沟槽开挖）</span> -->
            </div>
            <div class="constructionRecordsContent">
              <el-carousel ref="picCarousel" indicator-position="none" :autoplay="true" @change="changeCarousel">
                <el-carousel-item v-for="(item, index) in pictureList" :key="index">
                  <!-- <div class="consName">
                    <div class="nameWrap">
                      <div class="prjName">白洋冲片区排水管网综合治理工程{{ item.index }}</div>
                      <div class="isQualified">合格</div>
                    </div>
                  </div> -->
                  <div class="consInfo">
                    <div class="infoWrap">
                      <!-- <div class="pipeInfo">排水管网WS01-WS03</div> -->
                      <div class="pipeInfo"></div>
                      <div class="timeInfo">{{ item.createTime }}</div>
                    </div>
                  </div>
                  <!-- <img class="consImg" src="@/views/groupPage/images/项目图册/质量现场.jpg" /> -->
                  <el-image
                    class="consImg"
                    :src="item.img"
                    :preview-src-list="pictureList.map((i) => i.img)"
                  ></el-image>
                </el-carousel-item>
              </el-carousel>
              <div class="switchWidget">
                <div class="leftArrow" @click="clickPrev()"><i class="el-icon-caret-left"></i></div>
                <div class="middleNumber">
                  <div class="activeNum">{{ currentActive }}</div>
                  /{{ pictureList.length }}
                </div>
                <div class="rightArrow" @click="clickNext()"><i class="el-icon-caret-right"></i></div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </transition>
</template>

<script lang="ts">
import moment from 'moment'
import { Vue, Component, Prop, Watch } from 'vue-property-decorator'
import PercentGaugeChart from '../../../components/GaugeChart/percentGaugeChart.vue'
import SupAndConsNumChartVue from '../../../components/ComprehensiveChart/supAndConsNumChart.vue'
import { getImgFiles, getEpcQbsDetailPage } from '../../../apis'
import request from '@/utils/request'
//近期工程情况-质量
@Component({
  name: 'ProjectSituationofQM',
  components: { PercentGaugeChart, SupAndConsNumChartVue }
})
export default class ProjectSituationofQM extends Vue {
  @Prop({ type: Object, default: () => {} }) dataInfo!: any
  beginTime = moment(new Date().setDate(new Date().getDate() - 6)).format('YYYY.MM.DD')
  endTime = moment(new Date()).format('YYYY.MM.DD')
  // beginTime = null
  // endTime = null
  pictureList: Array<any> = []
  currentActive = 1

  weeklyInfo = ''

  recordsList = []

  clickPrev() {
    ;(this.$refs['picCarousel'] as any).prev()
  }
  clickNext() {
    ;(this.$refs['picCarousel'] as any).next()
  }
  changeCarousel(active, prev) {
    this.currentActive = active + 1
  }
  get projectCode() {
    return this.$store.state.bigScreen.currentProjectCode
  }
  @Watch('dataInfo')
  onChangMehod() {
    this.getPageData()
  }
  mounted() {
    this.getImgData()
  }
  async getPageData() {
    if (!this.dataInfo) return
    const { start_date, end_date, quality_content } = this.dataInfo || {}
    // this.beginTime = start_date.split(' ')[0]
    // this.endTime = end_date.split(' ')[0]
    this.weeklyInfo = quality_content
    const res = await getEpcQbsDetailPage({ project_code: this.projectCode })
    let { code, result } = res
    if (code != 1) return
    result.records.sort((a, b) => {
      return b.create_time.localeCompare(a.create_time)
    })
    result.records = result.records.filter(
      (item) => moment(new Date()).diff(moment(item.create_time), 'days') < moment(new Date()).daysInMonth()
    )
    this.recordsList = result.records
  }
  async getImgData() {
    const res = await getImgFiles({ size: 999, imgType: 'tjfxzl', groupCode: this.projectCode, isShow: 1 })
    const { code, result } = res
    if (code != 1) return
    let list = []
    result.records.forEach((item) => {
      item.img =
        request.defaults.baseURL +
        'base/file/loadImg' +
        '?remotePath=' +
        item.path +
        '&access_token=' +
        sessionStorage.getItem('token')
      list.push(item)
    })
    this.pictureList = list
  }
}
</script>

<style lang='scss' scoped>
.animate__slideInRight,
.animate__slideOutRight {
  animation-duration: 3s; //动画持续时间
  animation-delay: 0s; //动画延迟时间
}
.widget-ProjectSituationofQM {
  z-index: 2;
  //position
  bottom: $size10 /* 10/192 */;
  margin-right: $size20 /* 20/192 */;
  right: 0;
  position: absolute;
  //size
  height: calc(100% - 0.557292rem /* 107/192 */);
  width: 2.083333rem /* 400/192 */;
  .head {
    height: 0.166667rem /* 32/192 */;
    width: 100%;
    background: linear-gradient(-90deg, rgba(43, 167, 255, 0.2) 0%, rgba(43, 167, 255, 0.08) 100%);
    font-family: Source Han Sans CN-HEAVY;
    .title {
      width: 100%;
      height: 100%;
      display: flex;
      font-weight: 400;
      align-items: center;
      .icon {
        height: 0.166667rem /* 32/192 */;
        width: 0.34375rem /* 66/192 */;
        background: url('~@/views/groupPage/images/模块图标/统计分析/工程情况.png') no-repeat center center;
        background-size: 100% 100%;
      }
      span {
        flex: 1;
        font-weight: bold;
        font-size: 0.083333rem /* 16/192 */;
        color: #ffffff;
        padding: 0.041667rem /* 8/192 */;
        background: linear-gradient(0deg, #9bd2fa 0%, #ffffff 100%);
        background-clip: text;
        -webkit-text-fill-color: transparent;
      }
      .dateRange {
        height: 0.0625rem /* 12/192 */;
        font-size: 0.072917rem /* 14/192 */;
        font-family: Source Han Sans CN;
        font-weight: 400;
        color: #ffffff;
      }
    }
  }
  .content-info {
    width: 100%;
    height: calc(100% - 0.166667rem);
    font-family: Source Han Sans CN;
    .projectContent {
      height: 0.755208rem /* 145/192 */;
      margin-top: 0.052083rem /* 10/192 */;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-flow: column;
      background: rgba(6, 34, 57, 0.76);
      padding: 0 0.104167rem /* 20/192 */;
      font-size: 0.072917rem /* 14/192 */;
      font-weight: 400;
      color: #84bde5;
      .pc-topContent {
        height: 0.3125rem /* 60/192 */;
        width: 100%;
        display: flex;
        justify-content: space-between;
        position: relative;
        .ptc-item {
          display: flex;
          align-items: center;
          & span:nth-of-type(2) {
            font-size: 0.104167rem /* 20/192 */;
            font-family: Agency FB;
            font-weight: bold;
            color: #ffffff;
            background: linear-gradient(90deg, #1e9dff 0%, #01eae2 100%);
            background-clip: text;
            -webkit-text-fill-color: transparent;
            i {
              font-family: Source Han Sans CN-MEDIUM;
              font-size: 0.09375rem /* 18/192 */;
            }
          }
        }
        .ptc-item:last-child > span:nth-of-type(2) {
          background: linear-gradient(90deg, #fdb332 0%, #01eae2 100%);
          background-clip: text;
          -webkit-text-fill-color: transparent;
        }
      }
      .pc-topContent::before {
        content: '';
        position: absolute;
        margin: auto 0;
        bottom: 0;
        width: 100%;
        height: 0.005208rem /* 1/192 */;
        background: rgba(255, 255, 255, 0.24);
      }
      .pc-bottomContent {
        height: calc(100% - 0.3125rem /* 60/192 */);
        width: 100%;
        display: flex;
        justify-content: space-between;
        .pbc-item {
          display: flex;
          flex-flow: column;
          align-items: center;
          justify-content: center;
          & span:first-of-type {
            font-size: 0.083333rem /* 16/192 */;
            font-family: Agency FB;
            font-weight: bold;
            color: #ffffff;
            margin-bottom: 0.0625rem /* 12/192 */;
            i {
              font-family: Source Han Sans CN-HEAVY;
              font-size: 0.072917rem /* 14/192 */;
            }
          }
        }
      }
    }
    .title {
      width: 100%;
      display: flex;
      align-items: center;
      .icon {
        height: 0.072917rem /* 14/192 */;
        width: 0.078125rem /* 15/192 */;
        margin-right: 0.046875rem /* 9/192 */;
        background: url('~@/views/groupPage/images/三角.png') no-repeat center center;
        background-size: 100% 100%;
      }
      .item-name,
      .item-type {
        font-family: Source Han Sans CN;
        color: #0ea7ff;
        font-size: 0.072917rem /* 14/192 */;
        font-weight: 500;
      }
      .item-type {
        color: #89c3ec !important;
      }
      .symbol {
        margin-left: 0.052083rem /* 10/192 */;
        width: 0.208333rem /* 40/192 */;
        height: 0.104167rem /* 20/192 */;
        font-size: 0.072917rem /* 14/192 */;
        font-family: Source Han Sans CN;
        font-weight: 400;
        color: #ffffff;
        background: linear-gradient(90deg, #2188d3, #9c2bec);
        border-radius: 2px;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    }
    .bottom3Content {
      height: 100%;
      // height: calc(100% - 0.807292rem /* 155/192 */);
      width: 100%;
      background: linear-gradient(0deg, rgba(14, 167, 255, 0.16) 0%, rgba(14, 167, 255, 0) 100%);
    }
    .overallProjectProgress {
      margin-top: 0.052083rem /* 10/192 */;
      width: 100%;
      height: calc(100% - 1.380208rem /* 265/192 */);
      .oppContent {
        width: 100%;
        height: 100%;
        background: rgba(6, 34, 57, 0.76);
        overflow: auto;
        .oppItem {
          width: 100%;
          padding: 0.052083rem /* 10/192 */;
          color: #feffff;
          font-family: Source Han Sans CN;
          font-size: 0.072917rem /* 14/192 */;
          .oppItem-title {
            color: #17aaff;
          }
          .oppItem-content {
            // padding: 0.026042rem /* 5/192 */ 0;
            line-height: 0.114583rem /* 22/192 */;
          }
        }
      }
    }
    .scanCodeNumber {
      margin-top: 0.052083rem /* 10/192 */;
      width: 100%;
      height: 1.25rem /* 240/192 */;
      .recordsContent {
        margin-top: 0.052083rem /* 10/192 */;
        height: calc(100% - 0.125rem /* 24/192 */);
        width: 100%;
        background: rgba(6, 34, 57, 0.76);
        overflow-y: auto;
        .records-item {
          width: 100%;
          display: flex;
          flex-flow: column;
          padding: 0.052083rem /* 10/192 */;
          .ri-title {
            width: 100%;
            font-size: 0.072917rem /* 14/192 */;
            font-family: Source Han Sans CN;
            font-weight: 400;
            color: #feffff;
            line-height: 0.09375rem /* 18/192 */;
            & span:first-of-type {
              font-family: Source Han Sans CN-Medium;
              color: #16aaff;
            }
            .qualityGrade {
              display: inline-block;
              min-width: 0.166667rem /* 32/192 */;
              height: 0.09375rem /* 18/192 */;
              background: linear-gradient(-90deg, #09be78, #069161);
              border-radius: 2px;
            }
            .disqualification {
              background: linear-gradient(-90deg, #e95555, #f22840);
            }
          }
          .ri-content {
            margin-top: 0.026042rem /* 5/192 */;
            width: 100%;
            font-size: 0.072917rem /* 14/192 */;
            font-family: Source Han Sans CN;
            font-weight: 400;
            color: #84bde5;
            padding: 0 0.104167rem /* 20/192 */;
            line-height: 0.09375rem /* 18/192 */;
          }
        }
      }
    }
    .bottom2Content {
      width: 100%;
      height: calc(100% - 1.40625rem /* 270/192 */);
      overflow: auto;
    }
    .constructionRecords {
      margin-top: 0.052083rem /* 10/192 */;
      width: 100%;
      height: 1.354167rem /* 260/192 */;
      .constructionRecordsContent {
        width: 100%;
        height: calc(100% - 0.072917rem /* 14/192 */);
        display: flex;
        flex-flow: column;
        align-items: center;
        justify-content: flex-end;
        .el-carousel {
          width: 90%;
          height: 80%;
          /deep/ .el-carousel__container {
            height: 100% !important;
          }
          .consImg {
            height: 100%;
            width: 100%;
          }
          .consName,
          .consInfo {
            position: absolute;
            background: rgba(0, 0, 0, 0.4);
            width: 100%;
            height: 0.177083rem /* 34/192 */;
            line-height: 0.177083rem /* 34/192 */;
            font-size: 0.072917rem /* 14/192 */;
            font-family: Source Han Sans CN;
            font-weight: 500;
            color: #ffffff;
          }
          .consName {
            top: 0;
          }
          .consInfo {
            bottom: 0;
            z-index: 999;
          }
          .nameWrap {
            display: flex;
            align-items: center;
            justify-content: space-between;
            .isQualified {
              width: 0.322917rem /* 62/192 */;
              text-align: center;
              background: rgba(13, 162, 100, 0.9);
              border-radius: 0px 0px 0px 30px;
            }
          }
          .infoWrap {
            display: flex;
            align-items: center;
            justify-content: space-between;
          }
        }
        .switchWidget {
          display: flex;
          align-items: center;
          justify-content: space-between;
          width: 0.557292rem /* 107/192 */;
          color: rgba(137, 195, 236, 1);
          height: 0.072917rem /* 14/192 */;
          margin: 0.052083rem /* 10/192 */;
          .leftArrow,
          .rightArrow {
            font-size: 0.072917rem /* 14/192 */;
            cursor: pointer;
          }
          .middleNumber {
            display: flex;
            .activeNum {
              color: #2ba7ff;
            }
          }
        }
      }
    }
  }
}
</style>