<template>
  <div class="abroad_detail">
    <div class="header">
      <van-swipe class="my-swipe" indicator-color="white" v-if="detailData.coverList && detailData.coverList.length > 0">
        <van-swipe-item v-for="n in detailData.coverList" :key="n.id">
          <video
            v-if="n.cover_url.indexOf('.mp4') > -1"
            id="video"
            :src="n.cover_url"
            poster=""
            controls="controls"
            windowlessvideo="true"
            playsinline="true"
            webkit-playsinline="true"
            x5-playsinline="true"
            x-webkit-airplay="allow"
            width="100%"
            height="260px"
            type="video/mp4"
          ></video>
          <img v-if="n.cover_url.indexOf('.mp4') == -1" :src="n.cover_url" />
        </van-swipe-item>
      </van-swipe>
      <img v-else src="@/assets/service/defCoure.jpg" alt="" />
    </div>

    <div class="uni_text" v-if="initPackageArr">
      <div class="course_price" v-if="packageArr.length > 0">
        <span v-if="$route.query.bindId">¥ {{ bottomBoxData.showPrice }}</span>
        <span v-else>¥ {{ detailData.showPrice }}</span
        ><span class="redmini">起{{ detailData.unitName ? '/' : '' }}{{ detailData.unitName }}</span
        ><span class="tint">{{ detailData.productPrice }}</span>
      </div>
      <div class="course_price_free" v-else>
        <span>{{ detailData.price > 0 ? '¥' : '' }} {{ detailData.price == 0 || detailData.price == '免费' ? '' : detailData.price }}</span>
        <!-- <span class="des" v-if="BindType != 2">正在排期</span> -->
      </div>
      <!-- 优惠券 -->
      <abroad-coupon v-if="detailData && centerNo" :detailDataId="detailData.id" :centerNo="centerNo"></abroad-coupon>

      <p class="course_name">{{ detailData.course_name }}</p>
      <p class="course_info">{{ detailData.course_info }}</p>
      <p class="address" v-if="detailData.provinceAddress">
        <van-icon name="location" class="icon" />
        {{ detailData.provinceAddress + detailData.cityAddress + detailData.areaAddress + ' ' + detailData.addressDetail }}
      </p>
      <!-- 课程评价 -->
      <abroad-evaluate v-if="courseId" :courseId="courseId"></abroad-evaluate>
      <!-- 课程标签 -->
      <div class="tag_box">
        <template v-for="(tag, index) in detailData.course_labels">
          <span class="tag" v-if="tag != ''" :key="index">{{ tag }}</span>
        </template>
      </div>
    </div>
    <package v-if="courseId" :courseId="courseId" :packageArr="packageArr"></package>
    <p class="tip" @click="handleContact">如有特殊需求请联系【客服】</p>
    <div class="package top_border" v-if="packageArr.length > 0 && packageArr[packageActive].comboInfoList.length > 1">
      <div class="package_box">
        <div style="overflow: auto">
          <div
            class="package_item package_item_type"
            :class="packageTypeActive == index ? 'active' : ''"
            v-for="(item, index) in packageArr[packageActive].comboInfoList"
            :key="index"
            @click="packageTypeActive = index"
          >
            <p class="price">
              <span class="index">套餐{{ index + 1 }}</span
              ><span>¥</span>{{ item.actualPrice }}
            </p>
            <p class="name">{{ item.comboName }}</p>
            <img class="select" src="@/assets/service/select.png" alt="" />
          </div>
        </div>
      </div>
      <!-- 套餐说明 -->
      <p class="package_des" v-if="packageArr[packageActive] && packageArr[packageActive].comboInfoList[packageTypeActive].comboDescrption">
        套餐说明<br />{{ packageArr[packageActive].comboInfoList[packageTypeActive].comboDescrption }}
      </p>
    </div>
    <!-- 课程详情 -->
    <abroad-des v-if="detailData" :detailData="detailData"></abroad-des>
    <!-- 基地信息 -->
    <abroad-base v-if="detailData" :baseId="detailData.baseId"></abroad-base>

    <div class="contact_btn" @click="handleContact">联系客服</div>

    <!-- <div class="Collection" v-if="detailData">
      <ShareBox type="button" :detailData="detailData" v-if="showShareBox" @hiddenShare="showShareBox=false" @showShareDes="showShareDes=true"></ShareBox>
      <div class="box box1">
        <div class="icon icon_service" @click="backHome">
          <p>
            <van-icon name="wap-home-o" />
          </p>
          <p>首页</p>
        </div>
        <div class="icon icon_service" @click="handleService">
          <p>
            <van-icon name="service-o" />
          </p>
          <p>客服</p>
        </div>
      </div>
      <bottom-btn
        ref="bottomBtn"
        :bottomBoxData="bottomBoxData"
        :packageArrLength="packageArr.length"
        @handleNext="checkDatePackage()"
        @handleShare="handleShare"
        :bindId="bindId"
      ></bottom-btn>
    </div> -->
    <div class="share_mask" v-if="showShareDes" @click="showShareDes = false">
      <img class="share_des" src="@/assets/home/share.png" alt="" />
    </div>
  </div>
</template>
<script>
import AbroadDes from './AbroadDes'
import AbroadBase from './AbroadBase'
import AbroadEvaluate from './AbroadEvaluate'
import CountDown from './CountDown'
import AbroadCoupon from './AbroadCoupon'
import Package from './c_Package'
import ShareBox from './c_ShareBox'
import BottomBtn from '../component/c_BottomBtn'
import wx from 'weixin-js-sdk'
import './AbroadDetail.scss'
export default {
  name: 'ServiceAbroadDetailNext',
  components: {
    AbroadDes,
    AbroadBase,
    AbroadEvaluate,
    CountDown,
    AbroadCoupon,
    BottomBtn,
    Package,
    ShareBox,
  },
  data() {
    return {
      courseId: '',
      courseTypeLableId: '',
      BindType: '', //普通出行1 定制出行2
      bindId: '',
      inviteCode: '', //达人邀请码
      orderId: '', //集体定制id
      isShowpic: false, //是否显示达人邀请码邀请图标
      detailData: '',
      bottomBoxData: '', //底部成团状态
      packageData: [], //未处理过格式的套餐表
      packageActive: 0,
      packageTypeActive: 0,
      packageArr: [], //套餐时间价格
      initPackageArr: false, //packageArr已生成
      showCourseTable: true,
      showCustomized: false, //我要定制弹窗
      AagentUser: '', //代理人联系方式
      unionId: '',
      appId: 'wx1305e88d2bc74073',
      centerNo: '',
      copyUrl: '', //达人分享链接
      showShareDes: false,
      nowDate: '', //当前时间
      codeStep: 0, //邀请码进度
      expectMoney: '', //预计赚多少钱
      feeFlag: 1, //0达人,1志愿者
      showShareBox: false, //分享框
      baseDetailData: '',
    }
  },
  mounted() {
    this.nowDate = this.Moment().format('YYYY-MM-DD  HH:mm:ss')
    console.log(this.nowDate)
    localStorage.removeItem('useCard')

    this.courseId = this.$route.query.courseId
    this.bindId = this.$route.query.bindId
    this.BindType = this.$route.query.BindType
    this.entrance = this.$route.query.entrance
    this.inviteCode = this.$route.query.inviteCode
    this.orderId = this.$route.query.orderId
    this.ProgramType = this.$route.query.ProgramType
    this.productSceneId = this.$route.query.productSceneId
    this.DateComboType = this.$route.query.DateComboType
    this.ZZCTCanBuy = this.$route.query.ZZCTCanBuy
    this.courseTypeLableId = this.$route.query.courseTypeLableId
    if (this.inviteCode) {
      this.codeStep = 1
    }

    localStorage.setItem('prePage', 'ServiceAbroadDetailNext')
    localStorage.setItem(
      'prePageQuery',
      JSON.stringify({
        courseId: this.courseId,
        bindId: this.bindId,
        entrance: this.entrance,
        inviteCode: this.inviteCode,
        BindType: this.BindType,
        orderId: this.orderId,
        ProgramType: this.ProgramType,
        productSceneId: this.productSceneId,
        DateComboType: this.DateComboType,
        ZZCTCanBuy: this.ZZCTCanBuy,
      })
    )

    this.unionId = localStorage.getItem('unionId')
    this.getUserInfo()

    this.GetCourseDetail()
    if (this.entrance == 'school') {
      this.getAgentInfoBySchool() //校代联系方式
    } else {
      this.getAagentUser() //代理人联系方式
    }
  },
  methods: {
    // 点击套餐日期
    handlePackageDay(index) {
      this.packageActive = index
      this.packageTypeActive = 0 //重置套餐类型选择
      this.getDateInfoById()
      //TODO 获取该日所包含的套餐

      this.setShare()
    },
    // 点击去定制
    handleCustomMade() {
      this.$router.push({ name: 'CustomMade', query: { courseId: this.courseId } })
    },
    // 获取用户信息
    getUserInfo() {
      let userInfo = localStorage.getItem('userInfo')
      if (userInfo) {
        userInfo = JSON.parse(userInfo)
        this.centerNo = userInfo.centerNo
      } else {
        this.$toast.loading({
          message: '加载中...',
          duration: 0,
          forbidClick: true,
        })
        this.yxAxios.get(`${this.proxyUrl}/api/wx/${this.appId}/getUserInfo?unionId=${this.unionId}`).then((res) => {
          this.$toast.clear()
          if (res.data.data) {
            this.centerNo = res.data.data.centerNo
            localStorage.setItem('userInfo', JSON.stringify(res.data.data))

            if (res.data.data.schoolNames || res.data.data.schoolNames == [] || res.data.data.schoolNames == 'null') {
              localStorage.setItem('schoolNames', JSON.stringify(res.data.data.schoolNames))
              this.$store.commit('changeSchool', res.data.data.schoolNames)
              if (!localStorage.getItem('schoolNamesChoose')) {
                localStorage.setItem('schoolNamesChoose', JSON.stringify(res.data.data.schoolNames[0]))
              }
            } else {
              localStorage.setItem('schoolNames', [])
              this.$store.commit('changeSchool', [])
            }
          }
        })
      }
    },

    // 点击预约
    checkDatePackage() {
      // if (this.packageArr[0].date == date) {
      //   if (this.detailData.applyCount >= this.detailData.stockCount && this.packageArr[0].date == date) {
      //     this.$toast('已满团')
      //     return;
      //   }
      // }
      const tagIndex = this.packageArr[this.packageActive].comboInfoList[this.packageTypeActive].tagIndex
      console.log(this.packageArr[this.packageActive])
      let query = { date: this.packageArr[this.packageActive].date, Index1: tagIndex[0], Index2: tagIndex[1] }
      this.$router.push({ name: 'ServiceDatePackage', query: query })
    },
    // 获取产品详情
    GetCourseDetail() {
      if (!this.courseId) {
        this.$toast.fail('产品id缺失,请从正确的途径访问')
        return
      }
      this.$toast.loading({
        message: '加载中...',
        duration: 0,
        forbidClick: true,
      })
      this.yxAxios.get(`${this.yanxueUrl}/api/StudiesWap/GetCourseDetail?id=${this.courseId}&cs=绍兴市`).then((res) => {
        this.$toast.clear()
        if (res.data.data && res.data.data.id !== 0) {
          let detailData = res.data.data
          console.log('产品详情:', detailData)
          detailData.course_labels = detailData.course_labels?.split(',')
          this.detailData = detailData
          localStorage.setItem(
            'showCourseData',
            JSON.stringify({
              course_name: detailData.course_name,
              course_img: detailData.coverList[0].cover_url,
              id: detailData.id,
              marketPrice: detailData.marketPrice,
              price: detailData.price,
              baseId: detailData.baseId,
              course_labels: detailData.course_labels,
            })
          )
          if (this.orderId) {
            localStorage.setItem(
              'customizedOrder',
              JSON.stringify({
                courseId: detailData.id,
                orderId: this.orderId,
                dateComboBindId: detailData.dateComboBindId,
                isSkipPay: detailData.isSkipPay,
              })
            )
          }
          this.getPackageData() //获取套餐列表
          this.getPeriod()
          this.setShare()
          this.GetBaseDetail(detailData.baseId)
        } else {
          let message = res.data.message
          if (!message) {
            message = '产品不存在'
          }
          this.$toast.fail(message)
        }
      })
    },
    // 获取产品详情
    GetBaseDetail(baseId) {
      this.yxAxios.get(`${this.yanxueUrl}/api/Manage/GetOneBase?id=${baseId}`).then((res) => {
        this.$toast.clear()
        if (res.data.status == 1) {
          this.baseDetailData = res.data.data
        } else {
          this.$toast.fail(res.data.message)
        }
      })
    },
    // 根据选择的档期显示成团状态
    getDateInfoById() {
      const productId = this.detailData.id
      const bindId = this.packageArr[this.packageActive]?.comboInfoList[this.packageTypeActive].bindId
      const comboId = this.packageArr[this.packageActive]?.comboInfoList[this.packageTypeActive].id
      if (!bindId || !comboId) {
        return
      }
      // this.getExpectMoney(comboId)
      // console.log(productId, bindId, comboId)
      this.yxAxios
        .get(`${this.yanxueUrl}/api/Product/DateInfo/ById?productId=${productId}&bindId=${bindId}&comboId=${comboId}`)
        .then((res) => {
          // console.log(res.data)
          if (res.data.status == 1) {
            let data = res.data.data
            // console.log(data.clusterTime)
            data.clusterTime = this.Moment(new Date(data.clusterTime.replace(/\-/g, '/')))
              .add(1, 'days')
              .subtract(1, 'seconds')
              .format('YYYY/MM/DD HH:mm:ss')
            data.periodOfValidity = this.Moment(new Date(data.periodOfValidity.replace(/\-/g, '/')))
              .add(1, 'days')
              .subtract(1, 'seconds')
              .format('YYYY/MM/DD HH:mm:ss')
            this.bottomBoxData = data
          } else {
            this.$toast('获取成团状态失败')
          }
        })
    },
    setShare() {
      // 设置分享
      const userInfo = JSON.parse(localStorage.getItem('userInfo'))
      this.$emit('getWxConfig', {
        title: `${this.detailData?.course_name}`, // 分享标题
        desc: '', // 分享描述
        link: location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: 'https://payment.myjxt.com/share_qxy.png', // 分享图标
      })
    },
    // 获取套餐列表
    getPackageData() {
      let startDate = this.Moment().format('YYYY-MM-DD')
      let endDate = this.Moment().add(3, 'month').format('YYYY-MM-DD')
      let bindId = this.bindId
      let ProgramType = this.ProgramType
      let params = {
        productId: this.detailData.id,
        startDate: startDate,
        endDate: endDate,
        BindType: this.BindType ? this.BindType : 1,
      }
      if (bindId !== 'undefined' && bindId != '') {
        params.bindId = bindId
      }
      if (ProgramType !== 'undefined' && ProgramType != '') {
        params.ProgramType = ProgramType
      }
      this.yxAxios.post(`${this.yanxueUrl}/api/Product/DateComboBindList/ByTime/List`, params).then((res) => {
        console.log('套餐列表:', res.data.data)
        if (res.data.data) {
          let allPackage = res.data.data
          let usefulPackage = []
          for (let i in allPackage) {
            if (allPackage[i]?.comboList?.length > 0) {
              usefulPackage.push(allPackage[i])
            }
          }
          this.packageData = usefulPackage
          localStorage.setItem('packageData', JSON.stringify(usefulPackage))
          this.setPackageArr()
        }
      })
    },
    // 设置套餐价格
    setPackageArr() {
      console.log('含套餐的日期:', this.packageData)
      let packageArr = []
      for (let i in this.packageData) {
        let packageDate = this.Moment(new Date(this.packageData[i]?.dayName.replace(/\-/g, '/')))
        let week = packageDate.format('d')
        week =
          week == 1
            ? '周一'
            : week == 2
            ? '周二'
            : week == 3
            ? '周三'
            : week == 4
            ? '周四'
            : week == 5
            ? '周五'
            : week == 6
            ? '周六'
            : week == 0
            ? '周日'
            : ''
        let comboInfoList = []
        let comboList = JSON.parse(JSON.stringify(this.packageData[i]?.comboList))
        // 为套餐添加下标
        let marketPrice = 9999
        for (let j in comboList) {
          // 添加课程已报名数量,过期请删除start
          if (this.$route.query.bindId == 3816) {
            comboList[j].applyCount = comboList[j].applyCount + 521
          }
          // 添加课程已报名数量,过期请删除end
          for (let k in comboList[j].comboInfoList) {
            comboList[j].comboInfoList[k].tagIndex = [j, k]
            comboList[j].comboInfoList[k].bindId = comboList[j].id
            if (comboList[j].comboInfoList[k].actualPrice < marketPrice) {
              marketPrice = comboList[j].comboInfoList[k].actualPrice
            }
          }
          comboInfoList.push(...comboList[j].comboInfoList)
        }
        packageArr.push({
          day: packageDate.format('M/D'),
          date: packageDate.format('YYYY-MM-DD'),
          week: week,
          marketPrice: marketPrice,
          comboInfoList: comboInfoList,
        })
      }
      this.packageArr = packageArr
      console.log('111', packageArr)
      this.initPackageArr = true
      this.getDateInfoById()
    },
    // 获取代理人联系方式
    getAagentUser() {
      let schoolName = localStorage.getItem('schoolNamesChoose') ? JSON.parse(localStorage.getItem('schoolNamesChoose')) : ''
      if (!schoolName) {
        schoolName = JSON.parse(localStorage.getItem('userInfo'))?.schoolNames[0]
      }
      this.yxAxios
        .post(`${this.proxyUrl}/manage/agentUser/list`, {
          schoolName: schoolName?.schoolName,
          type: 2,
        })
        .then((res) => {
          if (res.data.rows.length > 0) {
            let data = res.data.rows
            let AagentUser = data[0]
            for (let i in data) {
              if (data[i].mainLinkman == 1) {
                AagentUser = data[i]
              }
            }
            console.log('代理人联系方式:', AagentUser)
            this.AagentUser = AagentUser
          }
        })
    },
    // 获取校代联系方式(通过我的学校栏目进入)
    getAgentInfoBySchool() {
      let schoolRecommendShowStudent = localStorage.getItem('schoolRecommendShowStudent')
        ? JSON.parse(localStorage.getItem('schoolRecommendShowStudent'))
        : ''
      let schoolName = schoolRecommendShowStudent.schoolName
      this.yxAxios.get(`${this.proxyUrl}/api/agent/getAgentInfoBySchool?schoolName=${schoolName}`).then((res) => {
        if (res.data.data.length > 0) {
          let data = res.data.data
          let AagentUser = data[0]
          for (let i in data) {
            if (data[i].mainLinkman == 1) {
              AagentUser = data[i]
            }
          }
          console.log('代理人联系方式:', AagentUser)
          this.AagentUser = AagentUser
        }
      })
    },
    // 点击客服
    handleService() {
      this.$refs.bottomBtn.active = 1
      this.$refs.bottomBtn.showCustomized = true
    },
    // 返回首页
    backHome() {
      this.$router.push({ name: 'Home' })
    },
    // 获取可使用行程套餐
    getPeriod() {
      let date = this.Moment().format('YYYY-MM-DD')
      let weekOfday = this.Moment().format('E') // 计算今天是这周第几天
      // 如果为限时团购,就传星期三的日期
      if (this.$route.query.ProgramType == 1) {
        let TGMSTabActive = localStorage.getItem('TGMSTabActive')
        if (TGMSTabActive == 1) {
          date = this.Moment()
            .add(weekOfday == 7 ? 3 : 10 - weekOfday, 'days')
            .format('YYYY-MM-DD')
        } else {
          date = this.Moment()
            .add(weekOfday == 7 ? -4 : 3 - weekOfday, 'days')
            .format('YYYY-MM-DD')
        }
      }
      let param = {
        productId: this.detailData.id,
        state: '1',
        pageIndex: 1,
        pageSize: 999,
        date: date,
      }
      if (this.$route.query.productSceneId) {
        param.productSceneId = this.$route.query.productSceneId
      }
      if (this.$route.query.DateComboType) {
        param.DateComboType = this.$route.query.DateComboType
      }
      if (this.$route.query.ProgramType) {
        param.ProgramType = this.$route.query.ProgramType
      }
      if (this.$route.query.ZZCTCanBuy) {
        param.ZZCTCanBuy = this.$route.query.ZZCTCanBuy
      }
      this.yxAxios.post(`${this.yanxueUrl}/api/Product/ProductScene/List`, param).then((res) => {
        let data = res.data.data.data
        let periodArr = []
        for (let i in data) {
          if (data[i].groupPeriodActivityList) {
            // 如果是直通车产品,不显示常规拼团套餐
            if (this.$route.query.ProgramType && data[i].dateBindTypeName == '常规拼团') {
            } else {
              periodArr.push(data[i])
            }
          }
        }
        this.periodArr = periodArr.sort(this.sortUpDate)
        this.getExpectMoney()
        // this.periodArr = periodArr
        console.log('套餐列表:', periodArr)
      })
    },
    //获取达人推广 预计赚钱
    getExpectMoney() {
      if (!localStorage.getItem('talentData')) {
        return
      }
      const expertLevel = JSON.parse(localStorage.getItem('talentData')).expertLevel
      this.feeFlag = JSON.parse(localStorage.getItem('talentData')).feeFlag
      if (this.feeFlag == 1) {
        return
      } //0达人(显示),1志愿者(不显示)
      const userInfo = JSON.parse(localStorage.getItem('userInfo'))
      let query = {
        courseId: this.courseId,
        loginPhone: userInfo.phone,
        shareId: this.periodArr[0].groupPeriodActivityList.id,
      }
      this.yxAxios.post(`${this.proxyUrl}/user/settle/getProductFee`, query).then((res) => {
        if (res.data.code) {
          this.expectMoney = res.data.data
        } else {
          this.$toast.fail(res.data.message)
        }
      })
    },
    // 分享
    handleShare() {
      // this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlCourseShareRecord`,{
      this.yxAxios.post(`https://zlyx.shunzhi.net/api/BaseManage/ZlCourseShareRecord`, {
        courseId: this.courseId,
        courseTypeLableId: this.courseTypeLableId,
        baseName: this.baseDetailData.baseName,
        courseName: this.detailData.course_name,
        location: this.detailData.address,
        area: this.detailData.areaAddress,
      })
      this.showShareDes = true
    },
    // 点击联系方式
    handleContact() {
      let mobile = this.baseDetailData.mobile[0]
      if (mobile) {
        this.$dialog.confirm({
          title: '提示',
          message: '是否拨打客服电话',
        })
          .then(() => {
            ZWJSBridge.phoneCall({
              corpId: mobile,
            })
              .then((res) => {
                console.log(res)
              })
              .catch((err) => {
                console.log(err)
              })
          })
          .catch(() => {
            // on cancel
          })
      } else {
        this.$toast('暂无联系方式')
      }
    },
  },
}
</script>
<style lang="scss">
.elder {
  .abroad_detail .uni_text .address,
  .abroad_detail .uni_text .rate > span,
  .package .period_nodata,
  .abroad_detail .package .package_title,
  .abroad_detail .tip,
  .abroad_detail .cardCont .day_tag,
  .abroad_detail .cardCont table td,
  .abroad_detail .tag_item .tag_title,
  .abroad_detail .tag_item .tag_text,
  .abroad_detail .base .center .address,
  .abroad_detail .base .center .tag {
    font-size: 36px !important;
  }
}
</style>