<template>
  <div class="AppCheckpointRegistration">
    <AiTopFixed>
      <div class="header">
        <div class="tab-item">
          <h2 style="color:#5AAD6A;">{{totalInfo['今日登记']}}</h2>
          <p>今日返乡</p>
        </div>
        <div class="tab-item">
          <h2 style="color:#F5A319;">{{totalInfo['今日风险']}}</h2>
          <p>今日风险</p>
        </div>
        <div class="tab-item">
          <h2 style="color:#CD413A;border-right:0;">{{totalInfo['风险处理']}}</h2>
          <p>风险处理</p>
        </div>
      </div>
      <div class="tab-select">
        <div class="item" :class="!tabIndex ? 'active' : ''" @click="tabClick(0)">返乡人员<span></span></div>
        <div class="item" :class="tabIndex ? 'active' : ''" @click="tabClick(1)">异常人员<span></span></div>
      </div>
      <div class="top-search">
        <div class="left">
          <AiAreaPicker v-model="areaId" :areaId="cropAreaId" @select="areaSelect" :name.sync="areaName" style="color: #666" selectRoot>
            <span style="margin-left: 4px" v-if="areaName">{{ areaName }}</span>
            <span v-else>地区选择</span>
            <u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" />
          </AiAreaPicker>
        </div>
        <div class="right">
          <u-search v-model="keyword" :clearabled="true" placeholder="请输入姓名/手机号/身份证号" :show-action="false" bg-color="#F5F5F5"
            search-icon-color="#999" color="#333" height="58" @search="getListInit" @clear="getListInit">
          </u-search>
        </div>
      </div>
      <div class="top-select">
        <div class="item gateway-type" @click="showGateSelect=true">
          <div v-if="gatewayId" class="gateway-name">{{gatewayName || '卡口选择'}}</div>
          <u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" v-if="gatewayId" />
          <span v-else>卡口选择<u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" /></span>
        </div>
        <div class="item gateway-type" @click="showhandleSelect=true">
          <div v-if="handleType" class="gateway-name">{{handleName || '处置方式'}}</div>
          <u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" v-if="handleType" />
          <span v-else>处置方式<u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" /></span>
        </div>
      </div>
    </AiTopFixed>
    <div class="user-list" v-if="list.length">
      <div class="item" v-for="(item,index) in list" :key="index" @click="toUser(item)">
        <div class="top">
          <h2 class="name">{{item.name}}
            <div class="status" :class="'status'+item.riskLevel">{{ $dict.getLabel('EP_riskLevel', item.riskLevel) }} </div>
          </h2>
          <p class="color-999 idnumber-flex">
            <span>{{item.idNumber}}</span>
            <span class="del-btn" @click.stop="del(item.id)"> <u-icon name="trash" color="#f46" size="40" /></span>
          </p>
          <p><img src="./components/img/org-icon.png" alt=""><span class="start-name">{{item.startAreaName}}</span></p>
          <p><img src="./components/img/blue-icon.png" alt=""><span class="start-name">{{item.arriveAreaName}}</span></p>
          <p><img src="./components/img/time-icon.png" alt="">{{item.arriveTime}}</p>
          <img :src="statusImgList[item.handleType]" alt="" class="status-img" v-if="item.handleType!= 7">
        </div>
        <div class="bottom" v-if="item.handleType>0">
          <div class="text">处置人：<span>{{item.handleUserName}}</span></div>
        </div>
      </div>
    </div>
    <AiEmpty v-if="!list.length"></AiEmpty>
    <u-select v-model="showGateSelect" :list="gateList" label-name="name" value-name="id" @confirm="gatewayconfirm"></u-select>
    <u-select v-model="showhandleSelect" :list="handleList" label-name="dictName" value-name="dictValue" @confirm="handleconfirm"></u-select>
  </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  name: 'AppCheckpointRegistration',
  appName: '卡口登记',
  data() {
    return {
      cropAreaId: '',
      areaId: '',
      areaName: '',
      tabIndex: 0,
      current: 1,
      pages: 2,
      list: [],
      totalInfo: {},
      keyword: '',
      gatewayId: '',
      gatewayName: '',
      showGateSelect: false,
      gateList: [],
      statusImgList: [
        require('./components/img/status0.png'),
        require('./components/img/status1.png'),
        require('./components/img/status2.png'),
        require('./components/img/status3.png'),
        require('./components/img/status4.png'),
        require('./components/img/status5.png'),
        require('./components/img/status6.png'),
        require('./components/img/status6.png'),
        require('./components/img/status8.png'),
        require('./components/img/status9.png'),
        require('./components/img/status10.png'),
      ],
      options: [
        {
          text: '删除',
          style: {
            backgroundColor: '#dd524d'
          }
        }
      ],

      handleType: '',
      handleName: '',
      showhandleSelect: false,
      handleList: [],
    }
  },
  computed: { ...mapState(['user']) },
  created() {
    // this.areaId = this.user.areaId
    // this.areaName = this.user.areaName
    this.getCropAreaId()
    this.getGatewayList()
    this.$dict.load(['EP_handleType', 'EP_riskLevel']).then(() => {
      this.handleList = this.$dict.getDict('EP_handleType')
      this.handleList.unshift({dictValue: '', dictName: '全部'})
      this.getList()
      this.getTotal()
    })
  },
  onShow() {
    document.title = '卡口登记'
    uni.$on('updateList', () => {
      this.getListInit()
    })
  },
  methods: {
    getCropAreaId() {
      this.$http.post(`/app/appdvcpconfig/getCorpArea`).then((res) => {
        if (res.code == 0) {
          this.areaId = res.data
          this.cropAreaId = res.data
        }
      })
    },
    getListInit() {
      this.current = 1
      this.list = []
      this.getList()
    },
    getList() {
      this.$http.post(`/app/appepidemicpreventionregisterinfo/list?infoType=0&current=${this.current}&size=10&listType=${this.tabIndex}&gatewayId=${this.gatewayId}&name=${this.keyword}&arriveAreaId=${this.areaId}&handleType=${this.handleType}`)
      .then((res) => {
        if (res.code == 0) {

          this.list = this.current > 1 ? [...this.list, ...res.data.records.map(v => {
              return {
                ...v,
                show: false,
                idNumber: v.idNumber.replace(/(.{6}).*(.{4})/,"$1********$2")
              }
            })] : res.data.records.map(v => {
              return {
                ...v,
                show: false,
                idNumber: v.idNumber.replace(/(.{6}).*(.{4})/,"$1********$2")
              }
            })
            this.pages = res.data.pages
        }
      })
    },
    del(id) {
      this.$confirm(`确认删除该数据`).then(() => {
        this.$http.post(`/app/appepidemicpreventionregisterinfo/delete?id=${id}`).then((res) => {
          if (res.code == 0) {
            this.$u.toast('删除成功')
            this.getListInit()
          }else {
            this.$u.toast(res.msg)
          }
        }).catch((err) => {
          this.$u.toast(err)
        })
      })
    },
    getTotal() {
      this.$http.post(`/app/appepidemicpreventionregisterinfo/listStatistics?areaId=${this.areaId}&infoType=0`).then((res) => {
        if (res.code == 0) {
          this.totalInfo = res.data
        }
      })
    },
    getGatewayList() {
      this.$http.post(`/app/appepidemicpreventiongateway/list?size=300&status=0`).then((res) => {
        if (res.code == 0) {
          this.gateList = res.data.records
          this.gateList.unshift({name: '全部', id: ''})
        }
      })
    },
    areaSelect(e) {
      this.areaId =e
      this.$nextTick(() => {
        this.getListInit()
      })
      this.getTotal()
    },
    tabClick(index) {
      this.tabIndex = index
      this.getListInit()
    },
    gatewayconfirm(e) {
      this.gatewayName = e[0].label
      this.gatewayId = e[0].value
      this.getListInit()
    },
    handleconfirm(e) {
      console.log(e)
      this.handleName = e[0].label
      this.handleType = e[0].value
      this.getListInit()
    },
    toUser(row) {
      uni.navigateTo({url: `./UserInfo?id=${row.id}`})
    },
    clearGateway() {
      this.gatewayName = ''
      this.gatewayId = ''
      this.getListInit()
    },
    onClick(index) {
      this.del(this.list[index].id)
    },
    onOpen(index) {
      this.list[index].show = true
      this.list.map((val, i) => {
        if(index != i) {
          this.list[i].show = false
        }
      })
    },
  },
  onReachBottom() {
    this.current ++
    this.getList()
  }
}
</script>

<style lang="scss" scoped>
.AppCheckpointRegistration {
  .header{
    padding: 54px 32px 48px 32px;
    display: flex;
    background-color: #fff;
    margin-bottom: 4px;
    .tab-item{
      flex: 1;
      text-align: center;

      h2{
        font-size: 52px;
        font-family: DINAlternate-Bold, DINAlternate;
        font-weight: bold;
        height: 80px;
        margin-bottom: 8px;
        letter-spacing: -4px;
        border-right: 1px solid #ddd;
        line-height: 44px;
      }
      p{
        font-size: 28px;
        font-family: PingFangSC-Regular, PingFang SC;
        color: #999;
        line-height: 40px;
        margin-top: -22px;
      }
    }
    .tab-item:nth-last-of-type(1) {
      border-right: 0;
    }
  }
  .search{
    width: 100%;
    height: 112px;
    padding: 32px;
    box-sizing: border-box;
    background: #FFF;
    display: flex;
    margin-bottom: 8px;
    .left{
      width: calc(100% - 402px);
    }
  }
  .tab-select{
    width: 100%;
    height: 96px;
    background: #FFF;
    display: flex;
    margin-bottom: 4px;
    .item{
      flex: 1;
      font-size: 32px;
      line-height: 96px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #333;
      text-align: center;
    }
    .active{
      color: #135AB8;
      position: relative;
      span{
        position: absolute;
        bottom: 0;
        left: 50%;
        width: 192px;
        margin-left: -96px;
        border-bottom: 4px solid #135AB8;
      }
    }
  }
  .top-search {
    padding: 20px 32px;
    background-color: #fff;
    display: flex;
    .left {
      width: 240px;
    }
    .right {
      width: calc(100% - 240px);
    }
  }
  .top-select {
    display: flex;
    padding: 28px 0;
    background-color: #fff;
    .item {
      flex: 1;
      padding: 0 8px;
      text-align: center;
      span {
        display: inline-block;
        font-family: PingFangSC-Medium;
        font-weight: 500;
        font-size: 28px;
        color: #666;
        line-height: 40px;
      }
    }
  }
  .user-list{
    background-color: #F3F6F9;
    padding: 32px 32px 0;
    .item{
      background-color: #fff;
      border-radius: 16px;
      margin-bottom: 24px;
      .top {
        padding: 32px 32px 24px;
        position: relative;
        .status-img{
          width: 200px;
          height: 200px;
          position: absolute;
          bottom: 0;
          right: 0;
        }
        .name{
          font-size: 36px;
          font-family: PingFangSC-Medium, PingFang SC;
          font-weight: 500;
          color: #333;
          line-height: 50px;
          margin-bottom: 8px;
          .status{
            float: right;
            font-size: 28px;
            font-family: PingFangSC-Regular, PingFang SC;
            line-height: 40px;
          }
          .status0 {
            color: #00D25D;
          }
          .status1 {
            color: #FF6300;
          }
          .status2 {
            color: #f46;
          }
        }
        p{
          width: calc(100% - 200px);
          font-size: 28px;
          font-family: PingFangSC-Regular, PingFang SC;
          color: #333;
          line-height: 40px;
          margin-bottom: 8px;
          img{
            width: 32px;
            height: 32px;
            margin-right: 18px;
            vertical-align: top;
          }
        }
        .idnumber-flex {
          width: 100%;
          display: flex;
          justify-content: space-between;
          .del-btn {
            display: inline-block;
            padding: 8px;
          }
        }
        .start-name{
          display: inline-block;
          width: calc(100% - 50px);
        }
        .color-999{
          margin-bottom: 24px;
          color: #999;
        }
      }
      .bottom {
        border-top: 2px solid #D8DDE6;
        padding: 32px;
        .text {
          line-height: 40px;
          font-family: PingFangSC-Regular;
          font-size: 28px;
          color: #666;
          letter-spacing: 0.58px;
        }
        span {
          display: inline-block;
          color: #3975C6;
          margin-right: 32px;
        }
      }
    }
  }
  ::v-deep .AiTopFixed {
    .placeholder {
      .content {
        padding: 0 !important;

      }
    }
    .fixed {
      margin: 0 !important;
      background-color: #f5f5f5!important;
      .content {
        padding: 0 !important;
      }
    }
  }
  .gateway-name {
    max-width: calc(100% - 48px);
    word-break: break-all;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    font-family: PingFangSC-Medium;
    font-weight: 500;
    font-size: 28px;
    color: #666;
    line-height: 40px;
  }
  .gateway-type {
    display: flex;
    justify-content: center;
  }
}
</style>
