<template>
  <div class="PersonnelSetting">
    <div class="title">
      <h2>拍摄人</h2>
      <span>*选择拍摄人后，相册只能上传该拍摄人照片</span>
    </div>
    <div class="cell-group">
      <div class="cell-item" hover-class="bg-hover" @click="userList = [], currIndex = 0">
        <div class="cell-item__left">
          <h2>不限</h2>
        </div>
        <div class="cell-item__check" :class="[currIndex === 0 ? 'active' : '']"></div>
      </div>
      <div class="cell-item" hover-class="bg-hover" @click="toChoose">
        <div class="cell-item__left">
          <h2>根据条件选择</h2>
        </div>
        <div class="cell-item__check" :class="[currIndex === 1 ? 'active' : '']"></div>
      </div>
    </div>
    <div class="user-wrapper" v-if="userList.length">
      <div class="user" v-for="(item, index) in userList" :key="index">
        <h2 class="user-left">
          <AiOpenData v-if="item" type="userName" :openid="item"></AiOpenData>
        </h2>
        <image src="./images/remove.png" @click="remove(index)" />
      </div>
    </div>
    <div class="tips">注：如选中人员未展示，可能是未授权该成员应用权限，需要先对这些成员进行应用授权。 </div>
    <div class="form-btn" hover-class="text-hover" @click="save">保存</div>
  </div>
</template>

<script>
  import { mapActions } from 'vuex'
  export default {
    name: 'PersonnelSetting',

    appName: '拍摄人选择',

    data () {
      return {
        currIndex: 0,
        userList: [],
        ticket: '',
        count: 0
      }
    },

    onLoad (query) {
      this.getInfo(query.id)
    },

    methods: {
      ...mapActions(['selectPrivilegedContact']),

      linkTo (url) {
        uni.navigateTo({
          url
        })
      },

      remove (index) {
        this.userList.splice(index, 1)
      },

      save () {
        if (this.currIndex === 1 && !this.userList.length) {
          return this.$u.toast('请选择人员')
        }

        uni.$emit('watermarkChange', {
          type: 'personnel',
          value: this.userList.length ? this.userList : []
        })
        uni.navigateBack({
          delta: 1
        })
      },

      getInfo (id) {
        this.$http.post(`/api/appalbum/queryDetailById?id=${id}`).then(res => {
          if (res.code === 0) {
            this.userList = res.data.albumUserList || []
            this.currIndex = (res.data.albumUserList && res.data.albumUserList.length) ? 1 : 0
          }
        })
      },

      toChoose () {
        this.$loading()
        this.currIndex = 1
        this.selectPrivilegedContact({
          fromDepartmentId: 0,
          selectedTickets: this.ticket ? [this.ticket] : [],
          selectedOpenUserIds: this.userList
        }).then(res => {
          uni.hideLoading()
          this.userList = res.userList.map(e => e.openUserId) || []
          this.ticket = res.selectedTicket || ''

          console.log(res)
        }).catch(() => {
          uni.hideLoading()
        })
      }
    }
  }
</script>

<style lang="scss" scoped>
  .PersonnelSetting {
    padding-bottom: 130px;

    * {
      box-sizing: border-box;
    }

    .user-wrapper {
      background: #fff;

      .user {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 88px;
        padding: 0 32px;
        border-bottom: 1px solid #DDDDDD;

        .user-left {
          color: #333333;
          font-size: 28px;
          font-weight: 600;
        }

        image {
          width: 32px;
          height: 32px;
        }
      }
    }

    .form-btn {
      position: fixed;
      bottom: 0;
      left: 0;
      z-index: 1;
      width: 100%;
      height: 112px;
      line-height: 112px;
      text-align: center;
      color: #fff;
      font-size: 32px;
      background: #1365DD;

      &:active {
        opacity: 0.8;
      }
    }

    .tips {
      line-height: 44px;
      margin: 32px;
      font-size: 28px;
      color: #999999;
      white-space: pre-line;
    }

    .title {
      display: flex;
      padding: 20px 32px;
      line-height: 1.3;

      h2 {
        font-weight: normal;
        color: #666666;
        font-size: 32px;
      }

      span {
        flex: 1;
        margin-left: 16px;
        color: #999999;
        font-size: 30px;
        text-align: justify;
      }
    }

    .cell-group {
      .cell-item {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 108px;
        margin-bottom: 16px;
        padding: 0 32px;
        background: #FFFFFF;

        &:active {
          background: #eee;
        }

        image {
          width: 32px;
          height: 32px;
        }

        &:last-child {
          margin-bottom: 0;
        }

        h2 {
          margin-bottom: 12px;
          color: #333333;
          font-size: 32px;
        }

        p {
          color: #999999;
          font-size: 28px;
        }

        .cell-item__check {
          flex-shrink: 1;
          width: 32px;
          height: 32px;
          border-radius: 50%;
          border: 4px solid #CCCCCC;
          transition: all ease 0.3s;

          &.active {
            border: 10px solid #1365DD;
          }
        }
      }
    }
  }
</style>
