<template>
  <div class="selectResident">
    <AiTopFixed>
      <u-search placeholder="搜索" v-model="name" :show-action="false" @change="getList"></u-search>
    </AiTopFixed>
    <div class="user-list">
      <template v-if="list.length>0">
        <div class="item" v-for="(item, index) in list" :key="index">
          <div class="select-img" @click="checkClick(index)">
            <img :src="item.isCheck ? checkIcon : cirIcon" alt="">
          </div>
          <div class="user-info">
            <img :src="item.photo" alt="" v-if="item.photo">
            <img src="./img/user-img.png" alt="" v-else>{{ item.name }}
          </div>
        </div>
      </template>
      <AiEmpty v-else/>
    </div>
    <div class="pad-b118"></div>
    <div class="footer">
      <div class="btn" @click="confirm">确定选择</div>
    </div>
  </div>
</template>

<script>
import {mapState} from 'vuex'

export default {
  name: "selectResident",
  appName: "人员选择器(居民档案)",
  data() {
    return {
      current: 1,
      name: '',
      list: [],
      cirIcon: require('./img/xz.png'),
      checkIcon: require('./img/xzh.png'),
      selected: []
    }
  },
  computed: {...mapState(['user'])},
  onLoad(query) {
    if (query.selected) {
      this.selected = query.selected?.split(",") || []
    }
    this.getList()
  },
  methods: {
    getList() {
      this.$http.post(`/app/appresident/list`, null, {
        params: {
          current: this.current,
          size: 20,
          areaId: this.user.areaId,
          con: this.name
        }
      }).then(res => {
        if (res?.data) {
          res.data.records.forEach(e => {
            e.isCheck = this.selected.includes(e.idNumber)
          })
          if (this.current > 1 && this.current > res.data.pages) {
            return
          }
          this.list = this.current > 1 ? [...this.list, ...res.data.records] : res.data.records
        }
      })
    },
    checkClick(index) {
      this.list[index].isCheck = !this.list[index].isCheck
    },
    confirm() {
      let checkList = []
      this.list.map((item) => {
        if (item.isCheck) {
          checkList.push(item)
        }
      })
      if (!checkList.length) {
        return this.$u.toast('请先选择人员')
      } else {
        uni.navigateBack({
          success: () => {
            uni.$emit("pagePicker", checkList)
          }
        })
      }
    }
  },
  onReachBottom() {
    this.current++
    this.getList()
  },
}
</script>

<style lang="scss" scoped>
.selectResident {
  ::v-deep .AiTopFixed .u-search {
    margin-bottom: 0 !important;
  }

  .pad-b118 {
    padding-bottom: 118px;
  }

  .user-list {
    background-color: #fff;

    .item {
      .select-img {
        display: inline-block;

        img {
          width: 48px;
          height: 48px;
          margin: 12px 36px 12px 30px;
          vertical-align: middle;
        }
      }

      .user-info {
        display: inline-block;
        padding: 20px 0 20px 0;
        width: calc(100% - 114px);
        height: 100%;
        border-bottom: 1px solid #E4E5E6;
        font-size: 36px;
        font-family: PingFangSC-Medium, PingFang SC;
        font-weight: 500;
        color: #333;
        line-height: 74px;

        img {
          width: 74px;
          height: 74px;
          border-radius: 8px;
          margin-right: 34px;
          vertical-align: bottom;
        }
      }
    }
  }

  .footer {
    width: 100%;
    height: 118px;
    background: #F4F8FB;
    position: fixed;
    left: 0;
    bottom: 0;
    text-align: right;

    .btn {
      display: inline-block;
      width: 192px;
      height: 80px;
      line-height: 80px;
      background: #1365DD;
      border-radius: 4px;
      text-align: center;
      font-size: 32px;
      font-family: PingFangSC-Regular, PingFang SC;
      color: #FFF;
      margin: 20px 34px 0 0;
    }
  }
}
</style>
