<template>
  <view class="container my-container" v-if="haveData">
    <view class="top-content-box">
      <view class="nav-bar-wrap" :style="{ height: navBarStyle.height, paddingTop: navBarStyle.paddingTop, paddingBottom: navBarStyle.paddingBottom }">
        <van-icon custom-class="search-icon" name="arrow-left" size="24px" @click="goBack" />
      </view>
    </view>
    <view class="my-background">
      <view class="my-notice" v-if="myNotice">
        添加到我的小程序，做您手边的研究素材库👆
        <van-icon @click="myNotice = false" class="my-icon" name="cross" />
      </view>
    </view>
    <view class="my-info">
      <view class="my-top-info">
        <view class="info">
          <view class="info-img">
            <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
              <image class="avatar" v-if="headimgurl" :src="headimgurl"></image>
              <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/logo.png" class="avatar" v-else></image>
            </button>
          </view>
          <view class="info-list">
            <block v-if="isLogin">
              <text class="name">{{ userInfo.RealName || "--" }}</text>
              <text class="mobile">{{ userInfo.Mobile || userInfo.Email }}</text>
              <text class="company-name">{{ userInfo.CompanyName || "--" }}</text>
            </block>
            <block v-else>
              <text class="name">Hi，请绑定联系方式～</text>
              <text class="bind-btn" @click="loginHandle">绑定联系方式</text>
            </block>
          </view>
        </view>
        <view class="auth-info">
          <template v-if="isLogin">
            <scroll-view scroll-x="true" scroll-with-animation class="auth-ul" v-if="userInfo.HasPermission === 0">
              <text class="auth-li" v-for="item in authList" :key="item">{{ item }}</text>
            </scroll-view>
            <block v-else>
              <button class="auth-btn" @click="applyAuth" v-if="userInfo.HasPermission != 3">申请开通权限</button>
            </block>
          </template>
          <text v-else class="no-auth">暂无品种权限信息</text>
        </view>
        <view class="info-item">
          <view class="item" @click="itemClickHandle('mySchedulepage')">
            <text class="item-number">{{ userInfo.ScheduleNum }}</text>
            <text class="item-text">活动日程</text>
          </view>
          <view class="item item-label" @click="itemClickHandle('myCollection')">
            <text class="item-number">{{ userInfo.ConNum }}</text>
            <text class="item-text">收藏</text>
          </view>
          <view class="item" @click="itemClickHandle('browseHistory')">
            <text class="item-number">{{ userInfo.HistoryNum }}</text>
            <text class="item-text">足迹</text>
          </view>
        </view>
      </view>
      <view class="info-bot">
        <view class="list-item border_bottom" v-for="type in typeArr" :key="type" @click="itemClickHandle(type)">
          <text>{{ type }}</text>
          <view class="my-bot-box">
            <block v-if="type == '外呼号码'">
              <text v-if="userInfo.OutboundCountryCode && userInfo.OutboundMobile" style="margin-right: 40rpx; font-size: 28rpx">{{ userInfo.OutboundCountryCode }}-{{ userInfo.OutboundMobile }}</text>
              <text v-else style="margin-right: 40rpx; font-size: 28rpx">未设置</text>
            </block>
            <block v-if="type == '关注公众号'">
              <text style="margin-right: 20rpx; font-size: 28rpx">查研观向小助手</text>
            </block>
            <block v-if="type == 'PC网页版'">
              <text @click="copyPcWebUrl" style="margin-right: 20rpx; font-size: 28rpx; color: #3385ff">web.hzinsights.com</text>
            </block>
            <u-icon v-if="type != 'PC网页版'" name="arrow-right" color="#BDBDBD" size="34"></u-icon>
          </view>
        </view>
      </view>
      <view class="bottom-text">您手边的研究素材库</view>
    </view>

    <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
  </view>
</template>

<script>
import { uploadurl, Mine, checkToken, User } from "@/config/api.js";
import freeCharge from "@/components/freeCharge";
let app = getApp();
export default {
  components: {
    freeCharge,
  },
  data() {
    return {
      isLogin: false, //是否绑定且授权
      haveData: null, //显示页面
      typeArr: ["外呼号码", "活动提问", "我的留言", "优化建议", "关注公众号", "PC网页版"],
      typeObj: new Map([
        ["外呼号码", "editOutbound"],
        ["活动提问", "myAskPage"],
        ["我的留言", "myLeavingMessage"],
        ["优化建议", "advice"],
        ["关注公众号", "accountsOfficial"],
        ["PC网页版", "web.hzinsights.com"],
      ]),
      userInfo: {},
      authList: [],
      myNotice: true,
      headimgurl: "",
    };
  },
  async onShow() {
    await this.$store.dispatch("checkHandle", "noGO");
    this.haveData = true;
    if (!this.$store.state.isAuth && !this.$store.state.isBind) {
      //已授权已绑定
      this.isLogin = true;
      this.getUser();
    } else {
      this.isLogin = false;
    }
  },
  methods: {
    //获取胶囊位置
    initNavBar() {
      let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
      this.navBarStyle = {
        height: menuButtonInfo.height + menuButtonInfo.top + 8 + "px",
        paddingTop: menuButtonInfo.top - 4 + "px",
        paddingBottom: "4px",
      };
    },
    // 返回
    goBack() {
      uni.navigateBack();
    },
    //点击了头像
    onChooseAvatar(e) {
      this.getRecordTracking("头像");
      let token = this.$db.get("access_token");
      let authHeader = token || "";
      let that = this;
      uni.uploadFile({
        url: uploadurl,
        filePath: e.detail.avatarUrl,
        header: {
          "Content-Type": "multipart/form-data",
          Authorization: authHeader,
        },
        name: "file",
        success(res) {
          let data = JSON.parse(res.data);
          that.headimgurl = data.Data.ResourceUrl;
          User.headimgurlUpdate({ Headimgurl: data.Data.ResourceUrl });
        },
      });
    },
    /* 检查状态 */
    /* 获取用户信息 */
    getUser() {
      Mine.getInfo().then((res) => {
        if (res.Ret === 200) {
          this.authList = res.Data.PermissionName && res.Data.PermissionName.split(",");
          this.userInfo = res.Data;
          this.headimgurl = res.Data.Headimgurl;
          res.Data.Mobile && this.$db.set("mobile", res.Data.Mobile);
        }
      });
    },
    /* 点击登录 检验是否绑定或是否授权*/
    loginHandle() {
      /* 先授权再绑定 */
      if (this.$store.state.isAuth) {
        uni.navigateTo({
          url: "/pageMy/authGuide/authGuide",
        });
      } else {
        this.$store.state.isBind &&
          uni.navigateTo({
            url: "/pageMy/login/login",
          });
      }
    },
    /* 申请开通权限 */
    applyAuth() {
      /* 查看是否是潜在用户 */
      this.userInfo.HasPermission === 1
        ? User.applyTry({
            ApplyMethod: 3,
          }).then((res) => {
            if (res.Ret === 200) {
              uni.navigateTo({
                url: "/pageMy/applyResult/applyResult",
              });
            }
          })
        : this.userInfo.HasPermission === 2
        ? uni.navigateTo({
            url: "/pageMy/applyTrial/applyTrial",
          })
        : this.userInfo.HasPermission === 3
        ? uni.showModal({
            title: "",
            content: "您已经提交过申请了，请耐心等待",
            showCancel: false,
            confirmColor: "#365595",
            success: function (res) {},
          })
        : "";
    },
    /* 路径跳转 */
    itemClickHandle(type) {
      let istype = type === "关注公众号" || type === "优化建议" || type === "外呼号码" ? type : "";
      istype && this.getRecordTracking("istype");
      /* 是否登录 */
      if (this.isLogin) {
        switch (type) {
          case "外呼号码":
            uni.navigateTo({
              url: "/activityPages/editOutbound/editOutbound?title=设置外呼号码&identification=我的",
            });
            break;
          case "活动提问":
            uni.navigateTo({
              url: "/reportPages/myAskPage/myAskPage",
            });
            break;
          case "我的留言":
            uni.navigateTo({
              url: "/pageMy/myLeavingMessage/myLeavingMessage",
            });
            break;
          case "关注公众号":
            uni.navigateTo({
              url: "/activityPages/accountsOfficial/accountsOfficial",
            });
            break;
          case "PC网页版":
            "";
            break;
          case "myCollection":
            uni.navigateTo({
              url: `/pageMy/myCollection/myCollection`,
            });
            break;
          case "browseHistory":
            uni.navigateTo({
              url: `/pageMy/browseHistory/browseHistory`,
            });
            break;
          case "mySchedulepage":
            uni.navigateTo({
              url: `/pageMy/mySchedulepage/mySchedulepage`,
            });
            break;
          default:
            let path = this.typeObj.get(type);
            uni.navigateTo({
              url: `/pageMy/${path}/${path}`,
            });
        }
      } else {
        this.loginHandle();
      }
    },
    // 复制网页链接
    copyPcWebUrl() {
      uni.setClipboardData({
        data: "web.hzinsights.com",
        success: function () {
          uni.showToast({
            title: "已复制到剪贴板",
            icon: "none",
            duration: 2000,
          });
        },
      });
    },
  },
  onLoad() {
    this.initNavBar();
  },
};
</script>

<style lang="scss" scoped>
.my-container {
  background: #f9f9f9;
  position: relative;
  .top-content-box {
    position: sticky;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 9;
  }
  .nav-bar-wrap {
    width: 100%;
    padding-left: 35rpx;
    display: flex;
    align-items: center;
    position: relative;
    .search-icon {
      position: absolute;
      left: 34rpx;
      top: 50%;
      transform: translateY(-50%);
    }
  }
  .nav-bar-wrap {
    color: #fff;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 999;
  }
  .my-background {
    height: 480rpx;
    width: 100%;
    background: url("https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/my_bg.jpg") no-repeat;
    background-size: 100% 100%;
    padding-top: 206rpx;
    .my-notice {
      height: 55rpx;
      width: 690rpx;
      margin: 0 auto;
      background: rgba(255, 255, 255, 0.5);
      border-radius: 8px;
      line-height: 55rpx;
      text-align: center;
      color: #ffffff;
      position: relative;
      padding-right: 20rpx;
      .my-icon {
        position: absolute;
        right: 20rpx;
        top: 50%;
        transform: translateY(-50%);
        font-weight: bold;
        font-size: 16px;
      }
    }
  }
  .my-info {
    position: absolute;
    top: 301rpx;
    left: 50%;
    transform: translateX(-50%);
    .my-top-info {
      width: 690rpx;
      margin: 0 auto;
      height: 436rpx;
      background: url("https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/my_log.png") no-repeat;
      background-color: #ffffff;
      background-position: right top;
      background-size: 267rpx 274rpx;
      box-sizing: border-box;
      box-shadow: 0px 0rpx 7rpx 1rpx #f0f3f5;
      border-radius: 8rpx;
      .info {
        padding: 61rpx 0 0 30rpx;
        display: flex;
        .info-img {
          width: 126rpx;
          height: 126rpx;
          background: #c4c4c4;
          border-radius: 50%;
          overflow: hidden;
          .avatar-wrapper {
            width: 126rpx;
            height: 126rpx;
          }
          .avatar {
            width: 126rpx;
            height: 126rpx;
            border-radius: 50%;
          }
        }
        .info-list {
          display: flex;
          flex-direction: column;
          justify-content: space-between;
          margin-left: 32rpx;
          font-size: 24rpx;
          font-weight: 400;
          color: #666666;
          .name {
            font-size: 30rpx;
            color: #000000;
            line-height: 35rpx;
            font-weight: 500;
          }
          .bind-btn {
            color: #3385ff;
            width: 181rpx;
            height: 49rpx;
            background: #ffffff;
            border-radius: 8rpx;
            border: 2rpx solid #3385ff;
            text-align: center;
            line-height: 47rpx;
          }
        }
      }
      .auth-info {
        width: 100%;
        overflow: hidden;
        margin-top: 36rpx;
        .auth-ul {
          white-space: nowrap;
          padding: 0 30rpx;
          color: #3385ff;
          .auth-li {
            display: inline-block;
            padding: 1rpx 20rpx;
            border: 1rpx solid #3385ff;
            border-radius: 4rpx;
            font-size: 24rpx;
            margin-right: 20rpx;
            background: #edf4ff;
            &:last-child {
              margin-right: 50rpx;
            }
          }
        }
        .no-auth {
          text-align: center;
          font-size: 28rpx;
          color: #999999;
        }
        .auth-btn {
          width: 181rpx;
          height: 49rpx;
          margin: 0 auto;
          color: #3385ff;
          font-size: 24rpx;
          line-height: 47rpx;
          border: 2rpx solid #3385ff;
        }
      }
      .info-item {
        display: flex;
        padding-left: 30rpx;
        margin: 36rpx auto 0;
        .item {
          width: 208rpx;
          height: 76rpx;
          display: flex;
          flex-direction: column;
          justify-content: space-between;
          text-align: center;
          .item-number {
            font-size: 40rpx;
            font-weight: 500;
          }
        }
        .item-label {
          border-right: 1rpx solid #ececec;
          border-left: 1rpx solid #ececec;
        }
      }
    }

    .info-bot {
      padding: 0 20rpx;
      background-color: #fff;
      box-shadow: 0px 0rpx 7rpx 1rpx #f0f3f5;
      border-radius: 8rpx;
      margin-top: 20rpx;
      .list-item {
        display: flex;
        align-items: center;
        justify-content: space-between;
        font-size: 34rpx;
        color: #4a4a4a;
        padding: 33rpx 34rpx;
        .icon-area {
          width: 100rpx;
        }
        &:last-child {
          position: static;
        }
      }
      .my-bot-box {
        display: flex;
      }
    }
  }
  .bottom-text {
    position: absolute;
    bottom: -80rpx;
    right: 0;
    z-index: 9;
    margin-top: 30px;
    font-size: 20rpx;
    color: #999999;
    width: 100%;
    text-align: center;
  }
}
</style>
