<template>
  <div class="in-activity-wrap">
    <div :style="{width: '100%',height: padTop + 'px', background: '#fff'}"></div>
    <h5header 
      v-if="!isWeb" 
      title="云鹊奖2019"
      :isOpacity="false"
      :shareObj="shareObj"
      :isCheckAuth="true" 
      :isStageTwoHomePage="true"
      @checkAuth="handleLoginCheck"
      @getHeaderHeight="getHeaderHeight"
    />
    <!-- 顶部的四个阶段 进度条 -->
    <ul class="top-process-bar">
      <li v-for="(item, index) in stageDateList" :class="returnStageClass(item, index)" :key="index">
        <p class="title">{{ item.title }}</p>
        <p class="date">{{ item.date }}</p>
      </li>
    </ul>

    
    <div class="award-wrap">
      <div class="stage-rule">
        <img class="stage-text" :src="returnStageText()" alt="">
        <img class="rule-btn" src="../assets/img/stage-two/rule-btn.png" alt="" @click="handleRuleBtnClick">
      </div>
      <img class="reward-pic" :src="returnAwardPic()" alt="">
    </div>

    

    <!-- 邀请医生好友学课程 -->
    <div class="invite-doctor-wrap">
      <img class="top-head-icon" src="../assets/img/stage-two/invite-doctor-top.png" alt="">
      <p class="invite-tips">每邀请1位医生好友领取课程，+{{ eachInviteAward.mark }}勤奋分 +{{ eachInviteAward.bean }}云鹊豆</p>
      <div class="invite-list-wrap">
        <ul class="invite-list">
          <template v-if="!isLogin || !isJoin">
            <li>
              <div class="add-btn" @click="eachDoctorClick">
                <img src="../assets/img/stage-two/add-pic-icon.png" alt="">
                <p class="text">昵称</p>
              </div>
            </li>
            <li>
              <div class="add-btn" @click="eachDoctorClick">
                <img src="../assets/img/stage-two/add-pic-icon.png" alt="">
                <p class="text">昵称</p>
              </div>
            </li>
            <li>
              <div class="add-btn" @click="eachDoctorClick">
                <img src="../assets/img/stage-two/add-pic-icon.png" alt="">
                <p class="text">昵称</p>
              </div>
            </li>
            <li>
              <div class="add-btn" @click="eachDoctorClick">
                <img src="../assets/img/stage-two/add-pic-icon.png" alt="">
                <p class="text">昵称</p>
              </div>
            </li>
          </template>
          <template v-if="isLogin && isJoin">
            <!-- 已邀请的 -->
            <li v-for="(item, index) in inviteList" :key="index">
              <img @click="eachDoctorClick" v-if="item.avatarImageUrl" class="doctor-icon" :src="item.avatarImageUrl" alt="">   
              <img @click="eachDoctorClick" v-else class="doctor-icon" src="../assets/img/stage-two/default-doctor-icon.png" alt="">   
              <p class="text">{{ item.doctorName ? item.doctorName : item.mobile }}</p>
            </li>
            <!-- 未邀请的 -->
            <template v-if="inviteList && inviteList.length < 4">
              <li v-for="(item, index) in notInviteShowList" :key="index">
                <div class="add-btn" @click="eachDoctorClick">
                  <img src="../assets/img/stage-two/add-pic-icon.png" alt="">
                  <p class="text">昵称</p>
                </div>
              </li>
            </template>
          </template>
          <!-- 查看更多 -->
          <li>
            <div @click="eachDoctorClick(1)" class="add-btn">
              <img class="right-icon-big" src="../assets/img/stage-two/right-icon-big.png" alt="">
            </div>
            <p class="text see-more">查看更多</p>
          </li>
        </ul>
      </div>
      <div class="invite-btn">
        <img src="../assets/img/stage-two/invite-btn.png" alt="" class="invite-btn">
        <p @click="handleInviteClick" class="text">去邀请</p>
      </div>
      <div class="login-tips">被邀请好友登录APP，收益X9倍</div>
    </div>

    <!-- 每日任务 -->
    <div class="daily-task">
      <div class="top-center-bar">每日任务</div>
      <ul class="task-list">
        <!-- taskList -->
        <li v-for="(item, index) in taskList" :key="index">
          <img class="left-icon" :src="returnEachTaskIcon(item)" alt="">
          <div class="center-wrap">
            <p class="title">{{ item.ruleName }}</p>
            <p class="detail-text">{{returnUnderAwardTips(item)}}</p>
          </div>
          <div @click="goToFinish(item)" :class="returnEachTaskStatus(item)">{{ returnIconText(item) }}</div>
        </li>
      </ul>
    </div>

    <!-- 未登录 -->
    <div v-if="!isLogin" class="not-login-wrap">
      <img class="head-icon" src="../assets/img/stage-two/default-login-icon.png" alt="">  
      <div class="content-info">
        <p class="not-login-text">您还未登录</p>
        <p class="tips">登录并加入机构参加活动</p>
      </div>
      <div class="go-login login-but-no-join" @click="goToLogin">去登录<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
    </div> 

    <!-- 已登录，但没有加入机构  -->
    <div v-if="isLogin && !isJoin" class="not-login-wrap ">
      <img class="head-icon" v-if="doctorInfo.avatarImageUrl" :src="doctorInfo.avatarImageUrl" alt="">
      <img class="head-icon" v-else src="../assets/img/stage-two/default-login-icon.png" alt="">  
      <div class="content-info">
        <p class="not-login-text">{{ doctorInfo.name }}</p>
        <p class="tips">尚未加入一个机构</p>
      </div>
      <div class="go-login login-but-nojoin" @click="goToJoin">加入机构<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
    </div> 


    <!-- 已登录 且 已加入机构 -->
    <div v-if="isLogin && isJoin" class="user-info-wrap">
      <div class="basic-info">
        <div class="head-icon">
          <img v-if="doctorInfo.avatarImageUrl" :src="doctorInfo.avatarImageUrl" alt="">
          <img v-else src="../assets/img/stage-two/default-login-icon.png" alt="">
        </div>
        <div class="name-info">
          <p class="name">{{ doctorInfo.name }}</p>
          <p class="company">{{ doctorInfo.hospital }}</p>
        </div>
        <div @click="goToUserDetail" class="detail">个人明细<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
      </div>

      <ul class="billboard-wrap">
        <li>
          <p class="title">个人今日勤奋分</p>
          <p class="score">{{doctorInfo.userDayScore}}</p>
          <p class="rank"><img src="../assets/img/stage-two/billboard-flag.png" alt="">今日排名{{doctorInfo.userDayRank ? doctorInfo.userDayRank : '-'}}</p>
          <div @click="goToUserBoard" class="billboard-btn">查看个人榜单<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
        </li>
        <li class="organ">
          <p class="title">机构累计勤奋分</p>
          <p class="score">{{doctorInfo.hospitalScore}}</p>
          <p class="rank"><img src="../assets/img/stage-two/billboard-flag.png" alt="">累计排名{{doctorInfo.hospitalRank ? doctorInfo.hospitalRank : '-'}}</p>
          <div @click="goToOrganBoard" class="billboard-btn">查看机构榜单<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
        </li>
      </ul>
      <p class="score-tips">{{ scoreAwardTips }}</p>
      <div class="bean-wrap">
        <p class="personal-total-get">累计个人获得：<span>{{doctorInfo.userTotalBonus}}云鹊豆</span></p>
        <div @click="goToBeanCenter" class="bean-center">云鹊豆中心<img src="../assets/img/stage-two/right-icon-small.png" alt=""></div>
      </div>
      <p class="bean-tips">机构勤奋分达成目标，全员可获云鹊豆</p>
      <div class="bean-stage">
        <img :src="returnBeanImg" alt="">
        <ul class="score-list">
          <li v-for="(item, index) in doctorInfo.hospitalLevelScore" :key="index">达{{item}}分</li>
          <li>12月30日</li>
        </ul>
      </div>
    </div>

    <!-- 底部云鹊logo -->
    <div class="bottom-logo"></div>

    <!-- 打卡成功 弹窗 -->
    <div v-if="clockSuccessVisible" class="toast-wrap" @touchmove.prevent>
      <div class="full-screen-mask"></div>
      <div class="content-wrap">
        <img class="back-image" src="../assets/img/stage-two/clock-success-bg.png" alt="">
        <p class="title">打卡成功</p>
        <p class="message">已获得: <span>{{clockAward.mark}}</span>勤奋分, <span>{{clockAward.bean}}</span>云鹊豆</p>
        <div @click="hideClockModal" class="bottom-btn">我知道了</div>
      </div>
    </div>

    <!-- 获奖弹窗 -->
    <div v-if="awardModalShow" class="toast-wrap" @touchmove.prevent>
      <div class="full-screen-mask"></div>
      <div class="content-wrap">
        <img class="back-image" src="../assets/img/stage-two/win-award-bg.png" alt="">
        <p class="title" style="color: #EC592B;">昨日个人排名获奖啦！</p>
        <p class="message">恭喜您获得了{{yestodayAwards}}*1台</p>
        <div @click="goQuest" class="bottom-btn">领奖</div>
        <div class="close-btn" @click="awardModalShow=false"></div>
      </div>
    </div>

    <!-- 活动结束 弹窗-->
    <div v-if="!awardModalShow && activityEndVisible" class="toast-wrap" @touchmove.prevent>
      <div class="full-screen-mask"></div>
      <div class="content-wrap activity-end">
        <p class="content-text">本次活动已结束，感谢您的参与，最终获奖排名将于12月30日10点公布，届时查看</p>
        <ul class="btn-list">
          <li @click="goBack">我知道了</li>
          <li @click="goToYesterdayPrize" class="high-light">查看昨日获奖</li>
        </ul>
      </div>
    </div>

  </div>
</template>

<script>
  import { getActivityId, getBEServerTime, getUserScoreInfo, getInviteList, getClockStatus, goToUpdateClock, getTimsActivityInfo, selectAppModuleParam, checkToken, getRole, sayHello, getEncryptId } from '@/service/activityMainpage';
  import { checkHospitalStatus } from '@/service';
  import h5header from '@/components/h5header';
  import { getShareUrl } from '@/utils/index';
  import { Toast } from 'vant';
  import { setEventByModuleCode, getFirstAwards } from '@/utils';
  import { ENV_CONFIG } from '@/utils/enumerate';
  import { wxShare } from '@/configs/wxShare';
  const cookies = require('cookie-universal')();
  import { Base64 } from 'js-base64';
  import { setCookie, getCookie, delCookie } from '@/utils/cookieFun';

  let vm = null;
  export default {
    data () {
      return {
        canClick: true,       // 课程、smo防止连续点击
        canClockClick: true,  // 打卡防止多次点击
        hospital: '',         // 加入机构审核中 显示的机构名称
        awardModalShow: false, // 根据排名是否显示中奖弹窗
        showAwadModal: true, // 根据活动时间是否展示中奖弹层以及查看昨日榜单逻辑
        yestodayAwards: '', // 昨日可获得
        token: '',
        activityId: '',    // 上线前等产品通知修改默认值

        scoreAwardTips: '',
        encryptId: '',    // 加密后的id，（分享传参用）
        serverTime: '',
        isLogin: false,  // 是否 已登录
        isJoin: false,    // 是否 已加入机构  默认为false
        joinStatus: 3,    // 1-已加入机构 2-机构在审核中状态 3-未加入机构
        currentStage: 0, // 当前处于第几阶段  0表示不在四个阶段里，1-4表示对应阶段，取图片地址用
        stageDateList: [
          { date: '12月16至19日', beginDate: '2019/12/16 00:00:00', endDate: '2019/12/19 23:59:59', title: '高血压学习', award: '小米电视' },
          { date: '12月20至23日', beginDate: '2019/12/20 00:00:00', endDate: '2019/12/23 23:59:59', title: '糖尿病学习', award: '米家洗衣机' },
          { date: '12月24至26日', beginDate: '2019/12/24 00:00:00', endDate: '2019/12/26 23:59:59', title: '中医学习', award: '米家两门冰箱' },
          { date: '12月27至29日', beginDate: '2019/12/27 00:00:00', endDate: '2019/12/29 23:59:59', title: '全科学习', award: '荣耀手机' },
        ],
        awardList: {
          No1: '',
          No3: '欧姆龙血压计',
          No10: '欧姆龙体温计',
        },
        appUserInfo: {
          userName: '',
          userMobile: '',
          doctorId: '',
          userToken: '',
        },
        eachInviteAward: {  // 每邀请1位医生好友领取课程，+??勤奋分 +??云鹊豆 （默认均为20）
          mark: 10,  // 勤奋分 
          bean: 10,  // 云鹊豆
          taskId: '', 
          activityId: '',
        },
        doctorInfo: {
          name: '',                              // 接口返回用户名字或者手机号带遮掩
          hospital: '',                          // 机构名称
          avatarImageUrl: '',                    // 头像URL
          userDayScore: '',                  // 用户当日勤奋分
          userDayRank: '',                      // 用户当日排名
          hospitalScore: '',                 // 机构累计勤奋分
          hospitalRank: '',                     // 机构累计排名
          userTotalBonus: '',                // 个人累计获得云鹊豆
          hospitalLevelScore: [],   // 三阶段达标分值, 数组返回
          targetRequiredScore: '',             // 再获得多少分  // 再获得10勤奋分即可上升到前10名获得欧姆龙温度计
          targetRank: '',                       // 上升到多少名
          todayDate: 0, // 今日服务器时间（用来展示对应奖项）
          yesterdayDate: 0, // 昨日服务器时间（用来展示对应奖项）
          userYesterdayRank: 0, // 用戶昨日排名
        },

        clockSuccessVisible: false,    // 是否显示 打卡成功 弹窗
        activityEndVisible: false,     // 是否显示 活动结束 弹窗
        yesterdayWinVisible: false,

        inviteList: [],                // 已邀请的用户列表
        notInviteShowList: [],         // 未邀请的默认显示
        
        taskList: [],   // 打卡、课程、SMO
        taskObj: {
          clock: null,   // 打卡
          lesson: null,  // 课程
          smo: null,     // 患者招募
        },
        isClockFinish: false,  // 是否打卡
        clockAward: {          // 打卡的奖励 默认都是5
          mark: 5,
          bean: 5,
          activityId: '',
          id: '',
        },
        isWeb: false,
        shareObj: wxShare,
        padTop: 0
      }
    },
    components: {
      h5header,
    },
    computed: {
      returnBeanImg() {
        let hospitalScore = vm.doctorInfo.hospitalScore;
        let arr = vm.doctorInfo.hospitalLevelScore;
        if(arr && arr.length < 1){
          return;
        }
        if( hospitalScore < arr[0]){
          return require(`../assets/img/stage-two/bean-stage-0.png`);
        }else if( (arr[0] <= hospitalScore) && (hospitalScore < arr[1]) ){
          return require(`../assets/img/stage-two/bean-stage-1.png`);
        }else if( (arr[1] <= hospitalScore) && (hospitalScore < arr[2]) ){
          return require(`../assets/img/stage-two/bean-stage-2.png`);
        }else if( arr[2] <= hospitalScore ){
          return require(`../assets/img/stage-two/bean-stage-3.png`);
        }else{
          return require(`../assets/img/stage-two/bean-stage-0.png`);
        }
      },
      
    },
    created() {
      vm = this;
      
    },
    mounted() {
      vm.isWeb = vm.$rocNative.isWeb;

       // 取服务器时间，切换不同时间段的显示
      vm.getServerTime();
      // 请求接口获取activityId (经与后端产品确认，默认没传id的话，就取接口；默认有的话就不取接口)
      vm.handleGetActivityId();
      // vm.returnScoreAwardTips();   //返回 个人信息模块下面的提示文案

      vm.$rocNative.appInit();
      vm.getUserInfo();   // 判断是否登录

      if (process.client) {
          window.__refresh = function(params) {
            vm.getUserInfo();   // 判断是否登录
            
          }
      }
    },
    
    methods: {
      // 获取服务器时间
      getServerTime(cb) {
        // 调取接口获取服务器时间
        getBEServerTime().then(res => {
          // alert('服务器时间');
          // alert(JSON.stringify(res))
          if(res && res.code == '000000' ){
            vm.serverTime = res.data;
          }else{
            vm.serverTime = new Date().getTime();
          }
          cb && cb(vm.serverTime);
        })
      },
      hideClockModal() {
        vm.clockSuccessVisible = false;
      },
      returnScoreAwardTips() {
        let award = '';
        if( vm.doctorInfo ) {
          // 16号之前或者30号之后  提示：不在活动期间内
          let msecSixteen = new Date('2019/12/16 00:00:00').getTime();
          let msecThirty = new Date('2019/12/29 23:59:59').getTime();
          let notInActivityTips = (msec) => {
            if( msec < msecSixteen || msec > msecThirty ){
              // alert('不在活动期间内')
              vm.scoreAwardTips = '不在活动期间内';
            }else{
              // alert('在活动期间内')
              vm.scoreAwardTips = '';
              let userDayRank = vm.doctorInfo.userDayRank;
              if( userDayRank == 0 ){
                vm.scoreAwardTips = `再获${vm.doctorInfo.targetRequiredScore}分即可上升到第${vm.doctorInfo.targetRank}名并可获得${vm.awardList.No10}`;
              }else if( userDayRank == 1 ){
                vm.scoreAwardTips = `今日保持第1名，即可获得${vm.awardList.No1}`;
              }else{
                if( userDayRank > 1 && userDayRank < 4 ){  // 2-3 提示 再获得X勤奋分即可上升到前Y名获得 第1名奖品
                  award = vm.awardList.No1;
                }else if( userDayRank > 3 && userDayRank < 11 ){ // 4-10 提示 再获得X勤奋分即可上升到前Y名获得 第3名奖品
                  award = vm.awardList.No3;
                }else if( userDayRank > 10 ){  // 10名以后 提示：再获得X勤奋分即可上升到前Y名获得 第10名奖品
                  award = vm.awardList.No10;
                }
                vm.scoreAwardTips = `再获${vm.doctorInfo.targetRequiredScore}分即可上升到第${vm.doctorInfo.targetRank}名并可获得${award}`
              }
            }
          }
          vm.getServerTime(notInActivityTips)
         
        }
      },
      handleGetActivityId(cb){
        if( !vm.activityId ){
          getActivityId().then(res => {
            if(res && res.code == '000000' ){
              let data = res.data ;
              for(let i in data){
                if(data[i] == 'ID'){
                  vm.activityId = i;
                }
              }
              cb && cb();
            }
          })
        }
      },
      goQuest(){
        // window.location.href = 'https://wj.qq.com/s2/5112128/18be/';
        // let url = 'https://wj.qq.com/s2/5112128/18be/';
        let url = 'https://www.wenjuan.com/s/BVVnueb/';
        let paramList = [
          {
            "key":"pageUrl",
            "value": url,
            "type":4,
            "seqNo":1
          },{
            "key":"showTitle",
            "value": true,
            "type":1,
            "seqNo":2
          },{
            "key":"title",
            "value": '',
            "type":1,
            "seqNo":3
          }
        ]
        vm.$rocNative.dispatchEventByModuleCode && vm.$rocNative.dispatchEventByModuleCode({
            modeCode: 'M300',
            jsonString: paramList
        })
      },
      returnStageText() {
        if(vm.currentStage == 0){
          return require(`../assets/img/stage-two/stage-01-text.png`);
        }else{
          return require(`../assets/img/stage-two/stage-0${vm.currentStage}-text.png`);
        }
      },
      returnAwardPic() {
        if(vm.currentStage == 0){
          return require(`../assets/img/stage-two/award-01-pic.png`)
        }else{
          return require(`../assets/img/stage-two/award-0${vm.currentStage}-pic.png`)
        }
      },
      returnStageClass(item, index){    // 返回顶部四个时间进度条状态 
        // debugger;
        // 获取当前服务器时间  获取失败则用本地时间 ***************************************************
        let currentTime = vm.serverTime || new Date().getTime();


        let beginTime = new Date(item.beginDate).getTime();
        let endTime = new Date(item.endDate).getTime();
        let status = '';
        if( currentTime < beginTime ){  // 未开始
          status = '';
        }else if( (currentTime == beginTime) || (beginTime < currentTime && currentTime < endTime) || (currentTime == endTime) ){  // 活动中
          status = 'active';
          vm.awardList.No1 = item.award;  // 根据时间段来设置第1名奖品
          vm.currentStage = index + 1; // 决定显示第几张图片
        }else{  // 已结束
          status = 'over';
        };
        return status;
      },
      // 判断用户是否登录？
      getUserInfo() {
        // cookies.remove('token');  // 部分手机这个cookie会存两次，所以先移除
        delCookie('token');

        vm.$rocNative 
        .getUserInfo()
        .then(params => {
          // _seft.userToken = params.userToken;  // 存到store里
          if(params && params.userToken){
            setCookie('token', params.userToken);
            vm.token = params.userToken;
          }
          // alert(JSON.stringify(params));
          if(params && params.userMobile){   // 已登录 （有手机号表示 已登录，无手机号表示 未登录）
            vm.isLogin = true;
            vm.appUserInfo = params;
            vm.loginCallback();
          }else{  // 未登录
            vm.isLogin = false;
          }
          // 登录状态确定后，再调任务接口，以便获取打卡状态
          if(vm.activityId){
            vm.getTasks();  
          }else{
            vm.handleGetActivityId(vm.getTasks);
          }
        });
      },
      
      // 调用APP登录弹窗
      appLogin() {
        vm.$rocNative.gotoLogin();
      },
      // 登陆ok后 回调： 获取邀请的医生列表 & 检查是否加入机构
      loginCallback() {
        vm.getUserActivityInfo();  
        vm.goToCheckJoin();
        getEncryptId().then(res => {
          if( res && res.code && res.code == '000000' ){
            vm.encryptId = res.data;
          }else{
            vm.$toast(res.message);
          }
        })
      },
      getUserActivityInfo() {  // 获取用户及参加活动的具体信息
        getUserScoreInfo().then(res => {
          if(res && res.code && res.code == '000000'){
            vm.doctorInfo = res.data;
            vm.returnScoreAwardTips();

            // alert('getUserScoreInfo'); alert(JSON.stringify(res));
            // 添加当天弹出一次后，就不再弹出 "昨日弹窗"
            let isYesterdayRankShow = getCookie('isYesterdayRankShow'); 
            // alert(isYesterdayRankShow); alert(res.data.nowToTodayEndMillis)
            if( isYesterdayRankShow ){
              return;
            }else{
              if(res.data && res.data.nowToTodayEndMillis){
                setCookie('isYesterdayRankShow', 1, 7, '.yunqueyi.com', res.data.nowToTodayEndMillis);
              }
            }
            
            if(vm.doctorInfo.userYesterdayRank==1){
              vm.awardModalShow = true;
              vm.yestodayAwards = getFirstAwards(vm.doctorInfo.yesterdayDate);
            }else if(vm.doctorInfo.userYesterdayRank>=2 && vm.doctorInfo.userYesterdayRank<=3){
              vm.awardModalShow = true;
              vm.yestodayAwards = vm.awardList.No3;
            }else if(vm.doctorInfo.userYesterdayRank>=4 && vm.doctorInfo.userYesterdayRank<=10){
              vm.awardModalShow = true;
              vm.yestodayAwards = vm.awardList.No10;
            }else{
              vm.awardModalShow = false;
            }
          }else{
            vm.$toast(res.message);
          }

        });
      },
      goToCheckJoin() {   // 检查是否加入结构
        checkHospitalStatus(vm.appUserInfo.userToken).then(res => {
          // alert('检查是否加入结构')
          // alert(JSON.stringify(res))
          if(res && res.code == '000000' ){
            const status = res.data.status;
            // const status = 15;  // test。。。。。。。。。。。。。。。。。
            if (status && status == 1) { // 机构状态正常
              vm.isJoin = true;
              vm.joinStatus = 1;
              // *******************************************
              vm.handleGetInviteList();   //登录且已加入机构才获取医生邀请了的列表 
            }else if (status && status == 15) { // 15创建机构审核中
              vm.hospital = '默认机构名称';
              if (res.data && res.data.hospital) {
                vm.hospital = res.data.hospital
              }
              vm.isJoin = false;
              vm.joinStatus = 2;
            }else {  // 除了1,15 都是未加入机构
              vm.isJoin = false;
              vm.joinStatus = 3;
            }
          }else{
            vm.$toast(res.message);
          }
        });
      },
      handleGetInviteList() {
        getInviteList().then(res => {
          // alert(JSON.stringify('获取邀请的列表 OK'));
          // alert(JSON.stringify(res));
          if(res && res.code == '000000'){
            if(res.data && res.data.list){
              vm.inviteList = res.data.list;
              vm.notInviteShowList = [];
              if( vm.inviteList.length > 4 || vm.inviteList.length == 4 ){
                vm.inviteList.length = 4;
              }else{
                let notInviteLength = 4 - vm.inviteList.length;
                for(let i=0; i<notInviteLength; i++){
                  vm.notInviteShowList.push({
                    notInvite: true
                  })
                }
              }
            }else{
              vm.inviteList = [];
            }
          }else{
            vm.$toast(res.message);
          }
        })
      },
      // 活动规则
      handleRuleBtnClick() {
        vm.$sendBuriedData({
          component_tag: `302#302003`
        });
        let url = 'https://phome.yunqueyi.com/template_v2/?id=599&token=9D4E3E66DC214776A523752AC26D4329&wx_code=7519926147';
        // alert(url)
        let paramList = [
          {
            "key":"pageUrl",
            "value": url,
            "type":4,
            "seqNo":1
          },{
            "key":"showTitle",
            "value": false,
            "type":1,
            "seqNo":2
          },{
            "key":"title",
            "value": '',
            "type":1,
            "seqNo":3
          }
        ]
        vm.$rocNative.dispatchEventByModuleCode && vm.$rocNative.dispatchEventByModuleCode({
            modeCode: 'M300',
            jsonString: paramList
        })
      },
      // 去登录
      goToLogin() {
        vm.appLogin();
      },
      // 去加入机构
      goToJoin() {
        // 用户点击【加入机构】，继续判断用户是否有创建机构在审核状态，若有，则弹出弹窗提示。若无则跳转加入机构页面
        if( vm.joinStatus == 2 ){        // 机构审核中
          this.$dialog.confirm({
            title: '提醒',
            message: `抱歉，您创建的机构【${vm.hospital}】正在审核中，审核通过后可参与活动<br/><br/>如有疑问可联系客：<span>400-920-8877</span><br/>(周一至周五9:00-18:00)`,
            confirmButtonText: '查看进度',
            cancelButtonText: '我知道了',
            className: 'remind-success',
          }).then(() => {
            this.checkVersion(()=>{
              if (this.$rocNative.isAndroid) {
                this.$rocNative.setNeedClearUrl({ url: 'year_end_ssr' });
              }
              this.$rocNative.gotoInstitutionalReview({ url: window.location.href });
            });
          });

        }else if( vm.joinStatus == 3 ){  // 未加入机构
          this.checkVersion(()=>{
            if (this.$rocNative.isAndroid) {
              this.$rocNative.setNeedClearUrl({ url: 'year_end_ssr' });
            }
            this.$rocNative.gotoActivityHospital({ url: window.location.href });
          })
        }

      },
      checkVersion(callback){
        this.$rocNative.getAppVersionCode().then(res => {
          const appVersion = parseFloat(res.versionCode.replace(/\./g, ''));
          if(appVersion>=317){
            callback();
          }else{
            this.$dialog.alert({
              message: '当前app版本过低，请升级版本后继续操作',
              className: 'version-toast'
            });
          }
        });
      },
      handleLoginCheck(cb, taskItem) {    // taskItem： 只有是打卡、课程、SMO任务时才传
        vm.shareObj.shareUrl = vm.shareWxUrl();
        if( !this.isLogin ){                       // 未登录 >>>  去登录
          this.goToLogin();
        }else if( this.isLogin && !this.isJoin ){  // 已登录 && 未加入机构  >>>>  去加入机构 ; 已完成情况不触发
          if( taskItem && taskItem.resourceType == 6 ){  // 打卡
            if( vm.isClockFinish ){  // 已打卡，不执行
              return;
            }
          }else{  // 去课程或者患者招募
            if(taskItem && taskItem.isFinish == 1){  // 已完成 不可点
              return;
            }
          }
          this.goToJoin();
        }else if( this.isLogin && this.isJoin ){   // 已登录 && 已加入机构  
          cb && cb();
        }
      },

      // 跳转至 个人明细 
      goToUserDetail() {
        vm.$sendBuriedData({
          component_tag: `302#302004`
        });
        this.$router.push({
          name: 'person-detail',
          query: {
            activityId: vm.activityId
          }
        });
      },
      // 查看个人榜单
      goToUserBoard() {
        vm.$sendBuriedData({
          component_tag: `302#302005`
        });
        this.$router.push({
          name: 'person-ranking',
        });
      },
      // 查看机构榜单
      goToOrganBoard() {
        vm.$sendBuriedData({
          component_tag: `302#302006`
        });
        this.$router.push({
          name: 'hospital-ranking',
        });
      },
      goBack(){
        this.$rocNative.goBack();
      },
      // 昨日获奖
      goToYesterdayPrize() {
        if(!this.showAwadModal){
          return;
        }else{
          this.$router.push({
            name: 'yesterday-prize',
          });
        }
      },
      // 云鹊豆中心
      goToBeanCenter() {
        vm.$sendBuriedData({
          component_tag: `302#302007`
        });
        let url = getShareUrl() + 'integral/#/chirpCenter';
        // alert(url)
        let paramList = [
          {
            "key":"pageUrl",
            "value": url,
            "type":4,
            "seqNo":1
          },{
            "key":"showTitle",
            "value": false,
            "type":1,
            "seqNo":2
          },{
            "key":"title",
            "value": '',
            "type":1,
            "seqNo":3
          }
        ]
        vm.$rocNative.dispatchEventByModuleCode && vm.$rocNative.dispatchEventByModuleCode({
            modeCode: 'M300',
            jsonString: paramList
        })

      },

      // “邀请医生好友学课程” 列表中的每一个医生点击事件 跳转至邀请详情页
      eachDoctorClick(isSeeMore) {
        if(isSeeMore && isSeeMore == 1){
          vm.$sendBuriedData({
            component_tag: `302#302009`
          });
        }
        let cb = this.goToDoctorPage;
        this.handleLoginCheck(cb);
      },
      // 跳转至邀请详情页
      goToDoctorPage() {  //“被邀请的用户模块“点击逻辑，点击用户头像、“+“或者查看更多，都跳转至邀请详情页
      // alert('跳转至邀请详情页')
        // alert(vm.encryptId+'-'+vm.eachInviteAward.taskId+'-'+vm.eachInviteAward.activityId)
        this.$router.push({
          name: 'invite-details',
          query: {
            encryptId: vm.encryptId,
            taskId: vm.eachInviteAward.taskId,
            activityId: vm.eachInviteAward.activityId
          }
        });
      },

      shareWxUrl() {
        let obj = {
          encryptId: vm.encryptId,
          taskId: vm.eachInviteAward.taskId,
          activityId: vm.eachInviteAward.activityId
        };
        // alert(JSON.stringify(obj))
        const paramstr = Base64.encode(`id=${vm.encryptId}&taskId=${vm.eachInviteAward.taskId}&activityId=${vm.eachInviteAward.activityId}&`)
        return `${getShareUrl()}year_end_ssr/shareActive?${paramstr}`
        // return `${getShareUrl()}year_end_ssr/shareActive?id=${vm.encryptId}&taskId=${vm.eachInviteAward.taskId}&activityId=${vm.eachInviteAward.activityId}`
      },
      // 去邀请 按钮
      handleInviteClick() {
        vm.$sendBuriedData({
          component_tag: `302#302008`
        });
        vm.shareObj.shareUrl = vm.shareWxUrl();
        let cb = this.goToShare;
        this.handleLoginCheck(cb);
      },
      goToShare() {
        // 调用APP分享
        this.$rocNative.shareWechat(this.shareObj);

      },

      // 去完成任务 按钮
      goToFinish(item) {
        let cb = () => {
          vm.goToFinishCB(item);
        };
        this.handleLoginCheck(cb, item);
      },
      goToFinishCB(item) {
        // resourceType 业务类型  1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
        if( item.resourceType == 6 ){
          // 执行打卡接口
          if( vm.isClockFinish ){  // 已打卡，不执行，未打卡，去调用打卡接口
            // 已打卡，不处理
          }else{ // 未打卡，去打卡
            if(vm.canClockClick){
              vm.$sendBuriedData({
                component_tag: `302#302010`
              });
              let params = {
                activityId: item.activityId,
                taskId: item.id,
              };
  
              setTimeout(() => {
                if(!vm.clockSuccessVisible){
                  vm.$toast({
                    duration: 3000, // 持续展示 toast
                    forbidClick: true,
                    message: '网络错误，请检查网络'
                  });
                }
              }, 15000)
              goToUpdateClock(params).then(res => {
                if(res && res.code == '000000'){
                  if(res.data){  // 打卡成功
                    vm.clockSuccessVisible = true;
                    vm.isClockFinish = true;
                  }else{ 
                    vm.$toast(res.message);
                  }
                }else{
                  vm.$toast('打卡发生错误，请重新进入活动，再次尝试打卡');
                }
              })
              vm.canClockClick = false;
            }
            setTimeout(() => {
              vm.canClockClick = true;
            }, 2000)

          }
        }else{  // 非打卡，直接走积木tims跳转逻辑
          // alert('去课程或者患者招募 。。。。。。')
          if(item.isFinish == 1){  // 已完成 不可点
            return;
          }else{
            if(vm.canClick){
              if(item.resourceType == 1){  // 课程
                vm.$sendBuriedData({
                  component_tag: `302#302011`
                });
              }else if(item.resourceType == 4){  // SMO 
                vm.$sendBuriedData({
                  component_tag: `302#302012`
                });
              }
              vm.jumpPage(item.linkId);
              vm.canClick = false;
            }
            setTimeout(() => {
              vm.canClick = true;
            }, 2000)
          }
        }
      },



      // 每个任务的跳转点击
      handleTaskClick() {
        let cb = this.goToTask;
        this.handleLoginCheck(cb);
      },
      goToTask() {
        console.log('do每个任务的跳转逻辑')
      },
      // 获取每日任务 及 邀请医生好友学课程里的 邀请1位医生的勤奋分及云鹊豆个数
      getTasks() {
        getTimsActivityInfo(vm.activityId).then(res => {
          // alert('^^^^^获取任务信息…………………………')
          // alert(JSON.stringify(res))
          if(res && res.code == '000000'){
            if(!vm.checkTimeStatus(res.data)){
              this.activityEndVisible = true;
            }
            let data = res.data;
            let taskRuleData = data.taskRuleData || [];
            
            for(let i=0; i<taskRuleData.length; i++){
              let item = taskRuleData[i];
              let rewardList = [];
              // 获取 邀请节点，进行中 此时获取邀请1个医生对应的 分数 和 豆子 
              if( item.resourceType == 7 && item.resourceId == 1){
                vm.eachInviteAward.taskId = item.id;
                vm.eachInviteAward.activityId = item.activityId;
                if( item.timeStatus == 1 ){
                  rewardList = JSON.parse(item.rewardJsonInfo) || [];
                  for( let j=0; j<rewardList.length; j++ ){
                    if( rewardList[j].rewardType == 3 ){        // 勤奋分
                      vm.eachInviteAward.mark = rewardList[j].rewardQuantity;
                    }else if( rewardList[j].rewardType == 1 ){  // 云鹊豆
                      vm.eachInviteAward.bean = rewardList[j].rewardQuantity;
                    }
                  }
                }  
              }else if( item.resourceType == 6 && item.timeStatus == 1 ){   // 打卡 默认奖励 5分 5豆
                item.eachInviteAwardMark = 5;  
                item.eachInviteAwardBean = 5;  
                item = vm.formatEachTaskAward(item);
                vm.clockAward = {
                  mark: item.eachInviteAwardMark,
                  bean: item.eachInviteAwardBean,
                  activityId: item.activityId,
                  id: item.id,
                };
                vm.taskObj.clock = item;

                if(vm.isLogin){  // 登录后，获取打卡状态
                  vm.goToGetClockStatus(vm.clockAward);
                }
              }else if( item.resourceType == 1 && item.timeStatus == 1 ){  // 课程 默认奖励 20分 20豆
                item.eachInviteAwardMark = 20;  
                item.eachInviteAwardBean = 20;  
                item = vm.formatEachTaskAward(item);

                vm.taskObj.lesson = item;
              }else if( item.resourceType == 4 && item.timeStatus == 1 ){  // smo 没奖励分 默认奖励100豆
                item.eachInviteAwardBean = 100;  
                item = vm.formatEachTaskAward(item);

                vm.taskObj.smo = item;
              }
            };
            vm.taskList = [];
            if( vm.taskObj.clock ){
              vm.taskList.push( vm.taskObj.clock );
            }
            if( vm.taskObj.lesson ){
              vm.taskList.push( vm.taskObj.lesson );
            }
            if( vm.taskObj.smo ){
              vm.taskList.push( vm.taskObj.smo );
            }
          }else{
            vm.$toast(res.message);
          }
        })
      },
      // 校验活动是否结束
      checkTimeStatus(data){
        const { timeStatus } = data.activityData;
        // timeStatus  活动时间状态 1:在活动时间范围 2.已经结束 3.未开始
        if(timeStatus==2){
          return false;
        }
        return true;
      },
      goToGetClockStatus(params) {
        vm.isClockFinish = false;
        getClockStatus(params).then(res => {
          if(res && res.code == '000000'){
            vm.isClockFinish = !!res.data;  
          }else{
            vm.$toast(res.message);
          }
        })
      },
      returnUnderAwardTips(item) {
        if( typeof item.eachInviteAwardMark != 'undefined' && item.eachInviteAwardMark != '0' ){
          return `+${item.eachInviteAwardMark}勤奋分 +${item.eachInviteAwardBean}云鹊豆`;
        }else{
          return `+${item.eachInviteAwardBean}云鹊豆`;
        }
      },

      // 格式化数据
      formatEachTaskAward(item) {
        let rewardList = JSON.parse(item.rewardJsonInfo) || [];
        for( let j=0; j<rewardList.length; j++ ){
          if( rewardList[j].rewardType == 3 ){        // 勤奋分
            item.eachInviteAwardMark = rewardList[j].rewardQuantity;
          }else if( rewardList[j].rewardType == 1 ){  // 云鹊豆
            item.eachInviteAwardBean = rewardList[j].rewardQuantity;
          }
        };
        return item;
      },

      // ddd
      // 返回每个任务 icon
      returnEachTaskIcon(item) {    // resourceType 业务类型  1.课程 2.考试 3.调查问卷 4.患者招募 5.宣教漫画 6.打卡 7.邀请
         if( item.resourceType == 6 ){  
           return require('../assets/img/task-icon/daily-clock-icon.png');
         }else if( item.resourceType == 1 ) {
           return require('../assets/img/task-icon/lesson-icon.png');
         }else if( item.resourceType == 4 ){
           return require('../assets/img/task-icon/smo-icon.png');
         }else{
           return require('../assets/img/task-icon/daily-clock-icon.png');
         }
      },
      returnEachTaskStatus(item) {
        if( item.resourceType == 6 ){
          return vm.isClockFinish ? 'right-btn done' : 'right-btn'
        }else{
          return item.isFinish == 1 ? 'right-btn done' : 'right-btn'
        }
      },

      // 返回任务右边的按钮文案
      returnIconText(item) {
        let text = '去完成';
        if( item.resourceType == 6 ){
          return vm.isClockFinish ? '已打卡' : '去打卡';
        }
        if( item.resourceType == 1 ){  // 1-课程
          text = item.isFinish == 1 ? '已完成' : '去学习';  // isFinish 最终确定为：1-已完成  0-未完成
        }else if( item.resourceType == 4 ){  // 4-smo
          text = item.isFinish == 1 ? '已完成' : '去完成';
        }
        return text;
      },
      async jumpPage(url, id) {
        const _this = this;
        if (!!url) {
          // 判断是否有跳转
          const { token } = _this;
          const { data } = await selectAppModuleParam({
            id: url,
            token
          });
          // alert('inJumpage'); alert(JSON.stringify(data))
          const itemData = data.model;
          
          // 增加点击图片时候，是否有loginFlag参数，有，则校验并登录。如未登录去登录，已登录，老逻辑。
          const loginFlag = this.checkLoginFlag(itemData.paramList);
          if(loginFlag){
            _this.refreshFlag = true;
            _this.$rocNative.getToken().then(res => {
              const { userToken } = res;
              // alert('APP拿到的token=:'+userToken)
              checkToken({ token: userToken }).then(res=>{
                if(res.code == '200000' || res.code == '200006') {
                  _this.$rocNative.gotoLogin();
                }else{
                  _this.oldJumpHandle(itemData, userToken);
                }
              })
            });
          }else{
            _this.oldJumpHandle(itemData, _this.token);
          }

        }
      },
      // 增加一个点击图片请求selectAppModuleParam这个接口时候的 loginFlag 字段校验
      checkLoginFlag(paramList){
        let flag = false;
        for(let i=0;i<paramList.length;i++){
          if(paramList[i].key === 'loginFlag' && paramList[i].value === '1'){
            flag = true;
            break;
          }
        }
        return flag;
      },
      // 原先的点击图片跳转逻辑
      oldJumpHandle(itemData, token){ 
        // 不改动原先逻辑
        if (itemData.code == 'M301') {
          itemData.code = 'M300';
          //鉴权 自己调用token
          delCookie('token');
          delCookie('headToken');

          this.$rocNative.getToken().then(res => {
            const { userToken } = res;
            setCookie('token', userToken);
            setCookie('headToken', userToken);
          });
        } else {
          const paramList = setEventByModuleCode(
            itemData,
            token
          );
          this.$rocNative.dispatchEventByModuleCode({
            modeCode: itemData.code,
            jsonString: paramList
          });
        }
      },
      getHeaderHeight(val){
        this.padTop = val;
      },
      // 校验活动结束后1天还是2天，用以判断是否展示【昨日弹层】以及【昨日榜单】逻辑
      checkActiveOver() {
        const time2 = new Date('2019-12-31 00:00:00').getTime(); // 活动结束 二天
        const nowTime = new Date().getTime(); // 当前时间戳
        if(nowTime >= time2){ // 活动结束2天以上
          this.showAwadModal = false;
        }
      }
    },  
  }
</script>

<style lang="less">
  @import '../assets/style/in-activity.less';
</style>
<style lang="less">
  @import '../assets/style/revant.less';
</style>