<template>
  <view>
    <custom-nav-bar :left-text="option.name" left-arrow />
    <swiper class="people-custom-swiper" :indicator-dots="!imageList.length" :indicator-color="indicatorColor"
      :indicator-active-color="indicatorActiveColor">
      <block v-for="(item, index) in imageList" :key="index">
        <swiper-item>
          <navigator v-if="item.clickUrl" class="line-navigator" :url="util.updateQuery(item.clickUrl, item)"
            hover-class="none"></navigator>
          <image class="custom-swiper-img" :src="item.icon"></image>
        </swiper-item>
      </block>
    </swiper>
    <view class="guide-list flex" v-if="option.name === '五星党员'">
      <view class="guide-item flex flex-col flex-v-center" :data-id="item.id" @tap="jumpDetail"
        v-for="(item, index) in doctorPageList" :key="index">
        <image class="guide-img" :src="item.photo"></image>

        <text class="guide-name">{{ item.name }}</text>
        <van-rate readonly icon="/src/images/void-icon2.png" :size="14" void-icon="/src/images/rate-icon.png" v-model="item.star" />
      </view>
    </view>
    <view class="rural-list flex"
      v-if="option.path === 'sonGuide4' || option.path === 'sonGuide5' || option.path === 'sonGuide3'">
      <view class="guide-item flex flex-col flex-v-center" :data-item="item" @tap="toArea"
        v-for="(item, index) in agencyPageList" :key="index">
        <image class="guide-img" :src="item.image"></image>

        <text class="guide-name">{{ item.agencyName }}</text>
      </view>
    </view>
    <view class="second-section" v-if="option.path === 'sonGuide1'">
      <view class="section-item flex flex-between" :data-item="item" @tap="toArea"
        v-for="(item, index) in partyBranchList" :key="index">
        <image class="section-item-right" :src="item.image" mode="aspectFill"></image>

        <view class="section-item-left flex1 flex flex-col">
          <view class="consult-content-title text-line-2">{{ item.name }}</view>
        <van-rate readonly icon="/src/images/void-icon2.png" :size="14" void-icon="/src/images/rate-icon.png" v-model="item.star" />
        </view>
      </view>
    </view>

    <view class="rural-list flex" v-if="option.name === '家庭医生团队'">
      <view class="guide-item flex flex-col flex-v-center" :data-item="item" @tap="toArea"
        v-for="(item, index) in agencyPageList" :key="index">
        <image class="guide-img" :src="item.image"></image>

        <text class="guide-name">{{ item.agencyName }}</text>
      </view>
    </view>
  </view>
</template>
<!-- <script module="util" lang="wxs" src="@/wxs/util.wxs"></script> -->
<script>
import * as peopleApi from '@/api/peopleApi';
import * as publicApi from '@/api/publicApi';
export default {
  components: {},
  data() {
    return {
      indicatorColor: 'rgba(255,255,255,0.4)',
      indicatorActiveColor: '#FFFFFF',
      option: {
        name: '',
        path: ''
      },
      imageList: [],
      doctorPageList: [],
      agencyPageList: [],
      partyBranchList: [],
      pageNo: 1,
      pageSize: 10,
      total: 0
    };
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(option) {
    this.option = option
    console.log(option)
    this.recursionApi();
    this.callFcuntion();
  },
  onReachBottom() {
    const data = {
      sonGuide2: () => {
        if (this.doctorPageList.length === this.total) {
          return;
        }
        this.excellentPartMemberPageApi(false);
      },
      sonGuide4: () => {
        console.log(2);
        if (this.agencyPageList.length === this.total) {
          return;
        }
        this.agencyPageApi(false);
      },
      sonGuide3: () => {
        console.log(1);
        if (this.agencyPageList.length === this.total) {
          return;
        }
        this.agencyPageApi(false);
      },
      sonGuide1: () => {
        if (this.partyBranchList.length === this.total) {
          return;
        }
        this.partyBranchApi(false);
      }
    };
    if (data[this.option.path]) {
      data[this.option.path]();
    }
  },
  methods: {
    // 获取轮播图
    async recursionApi() {
      const res = await publicApi.recursionApi({
        bannerType: 1,
        parentId: this.option.parentId
      });
      if (res.data) {
        this.imageList = res.data[0].children
      }
    },

    async excellentPartMemberPageApi(reset = true) {
      const params = this.generalQueryData(reset);
      const res = await peopleApi.excellentPartMemberPageApi(params);
      let _goodsList = []
      if (res.data) {
        const {
          list = [], total = 0
        } = res.data;
        if (reset) {
          _goodsList = list;
        } else {
          _goodsList = this.doctorPageList.concat(list);
        }
        this.pageNo = params.pageNo || 1;
        this.total = total;
        this.doctorPageList = _goodsList
      }
    },

    async agencyPageApi(reset = true) {
      const params = this.generalQueryData(reset);
      const res = await peopleApi.agencyPageApi(params);
      let _goodsList = []
      if (res.data) {
        const {
          list = [], total = 0
        } = res.data;
        if (reset) {
          _goodsList = list;
        } else {
          _goodsList = this.agencyPageList.concat(list);
        }
        this.pageNo = params.pageNo || 1;
        this.total = total;
        this.agencyPageList = _goodsList
      }
    },

    async partyBranchApi(reset = true) {
      const params = this.generalQueryData(reset);
      const res = await peopleApi.partyBranchApi(params);
      if (res.data) {
        const {
          list = [], total = 0
        } = res.data;
        const _goodsList = reset ? list : this.partyBranchList.concat(list);
        this.pageNo = params.pageNo || 1;
        this.total = total;
        this.partyBranchList = _goodsList
      }
    },

    // 调用函数
    callFcuntion() {
      const ApiConfig = {
        sonGuide1: {
          api: this.partyBranchApi
        },
        '五星党员': {
          api: this.excellentPartMemberPageApi
        },
        sonGuide3: {
          api: this.agencyPageApi
        },
        sonGuide4: {
          api: this.agencyPageApi
        },
        sonGuide5: {
          api: this.agencyPageApi
        }
      };
      const obj = ApiConfig[this.option.path || this.option.name];
      if (obj.api) {
        obj.api();
      }
    },

    // 分页参数处理事件
    generalQueryData(reset = false) {
      const {
        pageNo,
        pageSize
      } = this;
      const params = {
        pageNo: 1,
        pageSize: 10
      };
      if (this.option.path === 'sonGuide4') {
        params.agencyType = 1;
      }
      if (this.option.path === 'sonGuide5') {
        params.agencyType = 2;
      }
      if (this.option.path === 'sonGuide3') {
        params.agencyType = 3;
      }
      if (reset) {
        return params;
      }
      return {
        ...params,
        pageNo: pageNo + 1,
        pageSize
      };
    },

    jumpDetail(event) {
      const {
        id
      } = event.currentTarget.dataset;
      uni.navigateTo({
        url: `/packages/people/pages/guide-detail/guide-detail?id=${id}`
      });
    },

    toArea(event) {
      const {
        item
      } = event.currentTarget.dataset;
      if (this.option.path === 'sonGuide1') {
        item.agencyName = '支部详情';
        item.agencyType = '12101';
      }
      uni.navigateTo({
        url: `/packages/people/pages/area/area?orgId=${item.orgId}&name=${item.agencyName}&type=${item.agencyType}&id=${item.id}`
      });
    }
  }
};
</script>
<style lang="less">
page {
  --rate-icon-size: 26rpx; // 评分大小
  --rate-icon-full-color: var(--item-dominant-color); // 评分选中颜色
  --rate-icon-gutter: 3rpx; // 评分图标之前的距离
}

.people-custom-swiper {
  width: 100%;
  height: 330rpx;
  position: relative;

  .custom-swiper-img {
    width: 100%;
    height: 100%;
    display: block;
  }
}

.guide-list {
  margin-top: 28rpx;
  padding: 0 32rpx;
  flex-wrap: wrap;

  .guide-item {
    flex-shrink: 0;
    width: 218rpx;
    height: 100%;
    margin-right: 16rpx;
    margin-top: 27rpx;

    &:nth-child(3n) {
      margin-right: 0;
    }

    .guide-img {
      width: 218rpx;
      height: 218rpx;
      margin-bottom: 16rpx;
    }

    .guide-name {
      margin-bottom: 17rpx;
      font-size: 32rpx;
      font-weight: 400;
      color: #333333;
      line-height: 32rpx;
    }
  }
}

.rural-list {
  margin-top: 45rpx;
  padding: 0 40rpx;
  flex-wrap: wrap;

  .guide-item {
    flex-shrink: 0;
    width: 326rpx;
    height: 100%;
    margin-right: 16rpx;
    margin-bottom: 40rpx;

    &:nth-child(2n) {
      margin-right: 0;
    }

    .guide-img {
      width: 326rpx;
      height: 168rpx;
      margin-bottom: 24rpx;
    }

    .guide-name {
      font-size: 32rpx;
      font-weight: 400;
      color: #333333;
      line-height: 32rpx;
    }
  }
}

.second-section {
  margin-top: 55rpx;
  padding: 0 40rpx 0;

  .section-item {
    padding: 14rpx 0;
    border-bottom: 1px solid #e1e1e1;

    &:first-child {
      padding-top: 0;
    }

    .section-item-left {
      margin-left: 32rpx;

      .consult-content-title {
        font-size: 32rpx;
        font-weight: 400;
        color: #333333;
        line-height: 40rpx;
        margin-bottom: 24rpx;
      }

      // .consult-content-block {
      //   font-size: 24rpx;
      //   font-weight: 400;
      //   color: #999999;
      // }
    }

    .section-item-right {
      width: 300rpx;
      height: 140rpx;
      border-radius: 8rpx;
    }
  }
}
</style>