<template>
  <div class="detail">
    <template v-if="!list">
      <div class="card">
        <header>{{ detail.title }}</header>
        <u-gap height="16"></u-gap>
        <u-row>
          <u-avatar :src="$cdn + 'common/xzh.png'" v-if="false"></u-avatar>
          <div class="u-avatar__img" v-else>{{ detail.userName && detail.userName.substr(-2) }}</div>
          <span>{{ detail.userName }}</span>
        </u-row>
        <u-gap height="32"></u-gap>
        <u-row>
          <img :src="$cdn + 'common/meeting.png'" alt="">
          <span :style="{color:color(detail.status)}">{{ $dict.getLabel('meetStatus', detail.status) }}</span>
        </u-row>
        <u-gap height="8"></u-gap>
        <u-row>
          <img :src="$cdn + 'common/date.png'" alt="">
          <span>{{ detail.startTime && detail.startTime.substr(0, 16) }} 至 {{ detail.endTime && detail.endTime.substr(0, 16) }}</span>
        </u-row>
        <u-gap height="8"></u-gap>
        <u-row>
          <img :src="$cdn + 'common/location.png'" alt="">
          <span>{{ detail.address }}</span>
        </u-row>
      </div>
      <div class="card">
        <span>{{ detail.content }}</span>
      </div>
      <div class="card" v-if="detail.files && detail.files.length">
        <div class="label">相关附件</div>
        <div class="file" v-for="(item,index) in detail.files" @click="preFile(item)" :key="index">
          <u-row justify="between">
            <label class="left">
              <img :src="$cdn + 'common/appendix.png'" alt="">
              <span>{{ item.fileName }}.{{ item.postfix }}</span>
            </label>
            <span>{{ item.fileSizeStr }}</span>
          </u-row>
        </div>
      </div>
      <div class="card item-wrap">
        <u-row justify="between">
          <span>参会人</span>
          <label class="right" @click="list=true">
            查看全部<em>{{ detail.attendees && detail.attendees.length }}</em>人
            <div class="right-arrow"></div>
          </label>
        </u-row>
      </div>

      <div class="footer" v-if="['1','2'].includes(detail.status) && detail.joinStatus==0">
        <div @click="updateStatus(0)">请假</div>
        <div @click="updateStatus(1)">确认会议</div>
      </div>

      <div class="footer" v-if="['1','2'].includes(detail.status) && detail.joinStatus!=0">
        <label>{{ detail.joinStatus|transform }}</label>
        <img :src="$cdn + tag(detail.joinStatus)" alt="">
      </div>

    </template>
    <template v-else>
      <div class="att-list">
        <AiTopFixed>
          <u-tabs :list="tabs" :current="current" height="96" :is-scroll="false" bar-width="192"
                  @change="change"></u-tabs>
        </AiTopFixed>
        <div v-for="(item,index) in detail.attendees && detail.attendees.filter(e=>e.joinStatus==current)" :key="index"
             class="att-wrap">
          <div class="left">
            <u-avatar :src="item.avatar || (($cdn + 'common/xztx.png'))" size="74" mode="square"></u-avatar>
            <text class="name" style="margin-left: 8px">{{ item.name }}</text>
          </div>
          <img :src="$cdn + 'common/phone.png'" alt="" @click="call(item)">
        </div>
      </div>
    </template>
    <AiBack visible eventName="back" @back="list=false"/>
  </div>
</template>

<script>
  import AiBack from "../../../components/AiBack";
  import {mapActions} from "vuex";
  import AiTopFixed from "../../../components/AiTopFixed";

  export default {
    name: "detail",
    components: {AiBack, AiTopFixed},
    props: {
      params: {
        type: [String, Number]
      }
    },
    data() {
      return {
        detail: {},
        list: false,
        current: 0,
      }
    },
    computed: {
      tabs() {
        return [
          {name: this.count(0) + "人未确认"},
          {name: this.count(1) + "人已确认"},
          {name: this.count(2) + "人已请假"},
        ]
      },
    },
    methods: {
      count(sta) {
        return this.detail.attendees?.filter(e => e.joinStatus == sta)?.length;
      },
      change(index) {
        this.current = index;
      },
      call(item) {
        if (item.phone) {
          uni.makePhoneCall({
            phoneNumber: item.phone
          });
        }
      },
      ...mapActions(['previewFile', 'injectJWeixin']),
      preFile(e) {
        if ([".jpg", ".png", ".gif"].includes(e.postfix.toLowerCase())) {
          uni.previewImage({
            current: e.url,
            urls: [e.url]
          })
        } else {
          this.previewFile({...e})
        }
      },
      tag(status) {
        return {
          "1": "common/2confirmed2.png",
          "2": "common/2absent2.png"
        }[status]
      },
      updateStatus(status) {
        this.$http.post(status == 0 ? "/app/appmeetinginfo/absent" : "/app/appmeetinginfo/confirm", null, {
          params: {
            meetingId: this.id,
            reason: status == 0 ? "" : null
          }
        }).then(res => {
          if (res.code == 0) {
            this.$u.toast(status == 0 ? "请假成功" : "确认成功")
            this.getDetail()
          }
        })
      },
      color(status) {
        if (status == 1) {
          return "#FF8822"
        }

        if (status == 2) {
          return "#1365DD"
        }

        if (status == 3) {
          return "#FF4466"
        }

        return "#343D65"
      },
      getDetail() {
        this.$http.post("/app/appmeetinginfo/info-id", null, {
          params: {id: this.params}
        }).then(res => {
          if (res && res.data) {
            this.detail = res.data
          }
        })
      }
    },
    created() {
      this.getDetail();
    },
    filters: {
      transform(status) {
        if (status == 1) {
          return "已确认"
        }
        if (status == 2) {
          return "已请假"
        }
      }
    }
  }
</script>

<style lang="scss" scoped>
  .detail {
    min-height: 100%;
    background-color: #F5F5F5;
    padding-bottom: 140px;


    ::v-deep .AiTopFixed {
      margin-bottom: 16px;

      .content {
        padding: 0 !important;
      }
    }


    .att-list {
      min-height: 100%;

      .att-wrap {
        display: flex;
        height: 112px;
        align-items: center;
        justify-content: space-between;
        background-color: #ffffff;
        box-sizing: border-box;
        padding: 0 50px;
        border-bottom: 1px solid #E4E5E6;

        .left {
          display: flex;
          align-items: center;

          &:after {
            content: "";
            position: absolute;
            right: 0;
            bottom: 0;
            width: 622px;
            height: 2px;
            background-color: rgba(216, 221, 230, 0.5);
          }

          .name {
            font-size: 30px;
            font-weight: 600;
            color: #333333;
          }
        }

        & > img {
          width: 48px;
          height: 48px;
        }
      }
    }

    .card {
      background-color: #FFFFFF;
      margin-bottom: 8px;
      box-sizing: border-box;
      padding: 16px 32px;

      header {
        font-size: 40px;
        font-weight: 600;
        color: #333333;
        line-height: 64px;
        letter-spacing: 1px;
      }

      .u-row {
        & > div {
          background-color: #2266FF;
          border-radius: 50%;
          text-align: center;
          font-size: 22px;
          font-weight: bold;
          color: #FFFFFF;
          display: flex;
          align-items: center;
          justify-content: center;
        }

        & > span {
          font-size: 30px;
          color: #343D65;
          margin-left: 16px;
        }

        ::v-deep .u-avatar__img {
          width: 56px;
          height: 56px;
          vertical-align: middle;
        }

        img {
          width: 48px;
          height: 48px;
        }
      }

      & > span {
        font-size: 32px;
        color: #333333;
        line-height: 48px;
        letter-spacing: 1px;
        display: inline-block;
        box-sizing: border-box;
        padding: 16px 0;
      }

      .label {
        height: 96px;
        font-size: 32px;
        color: #333333;
        display: flex;
        align-items: center;
        margin-bottom: 16px;
      }

      .file {
        height: 128px;
        background: #FFFFFF;
        border-radius: 8px;
        border: 1px solid #CCCCCC;
        box-sizing: border-box;
        padding: 0 16px;
        margin-bottom: 32px;

        & > .u-row {
          height: 100%;

          .left {
            width: 522px;
            display: flex;
            align-items: center;

            & > img {
              width: 96px;
              height: 96px;
            }

            & > span {
              font-size: 32px;
              color: #333333;
              display: inline-block;
              line-height: 44px;
            }
          }

          & > span {
            font-size: 28px;
            color: #999999;
          }
        }
      }

      .active {
        background-color: #F3F6F9;
      }

      .name {
        font-size: 32px;
        font-weight: 400;
        color: #333333;
      }

      .wrap {
        height: 112px;
        display: flex;
        align-items: center;
        position: relative;

        &:after {
          content: "";
          position: absolute;
          right: 0;
          bottom: 0;
          width: 622px;
          height: 2px;
          background-color: rgba(216, 221, 230, 0.5);
        }

        & > label {
          width: 80px;
          height: 80px;
          border-radius: 50%;
          background-color: #4E8EEE;
          font-size: 28px;
          font-weight: 600;
          color: #FFFFFF;
          display: flex;
          align-items: center;
          justify-content: center;
        }
      }
    }

    .item-wrap {
      height: 112px;
      padding: 0 32px;

      .u-row {
        height: 100%;

        & > span {
          font-size: 32px;
          font-weight: 400;
          color: #333333;
        }
      }

      .right {
        font-size: 28px;
        color: #999999;
        display: flex;
        align-items: center;

        em {
          font-style: normal;
          color: #1365DD;
        }

        .right-arrow {
          width: 16px;
          height: 16px;
          border-top: 5px solid #CCCCCC;
          border-right: 5px solid #CCCCCC;
          transform: rotate(45deg);
        }
      }
    }

    .footer {
      height: 112px;
      width: 100%;
      position: fixed;
      left: 0;
      bottom: 0;
      background-color: #FFFFFF;
      display: flex;
      align-items: center;
      justify-content: center;

      & > div {
        font-size: 36px;
        color: #333333;
      }

      & > div:first-child {
        width: 270px;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }

      & > div:last-child {
        width: calc(100% - 270px);
        height: 100%;
        color: #FFFFFF;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: #1365DD;
      }

      & > label {
        font-size: 36px;
        font-weight: 400;
        color: #999999;
      }

      img {
        width: 158px;
        height: 104px;
        position: absolute;
        right: 0;
        top: 0;
      }
    }
  }
</style>
