<template>
  <div class="auth-page">
    <u-popup
      v-model="showDialog"
      mode="center"
      :mask-close-able="false"
      custom-style="padding:0;background:none;"
    >
      <img :src="pageinfo.pic_url" mode="widthFix" />
      <!-- #ifdef 	MP-WEIXIN -->
      <button
        :style="sureStyle"
        class="hotsopt"
        open-type="getUserInfo"
        v-if="canIUseGetUserProfile == false"
        @getuserinfo="showLogin == true ? getoldUser() : ''"
      ></button>
      <button
        :style="sureStyle"
        class="hotsopt"
        v-if="canIUseGetUserProfile == true"
        @tap="showLogin == true ? getUserProfile() : ''"
      ></button>
      <!-- #endif -->
      <!-- #ifdef 	MP-ALIPAY -->
      <button
        :style="sureStyle"
        class="hotsopt"
        open-type="getAuthorize"
        @getAuthorize="onGetAuthorize"
        scope="userInfo"
      ></button>
      <!-- #endif -->
      <button :style="cancelStyle" class="hotsopt" @click="close"></button>
    </u-popup>
    <coupon
      v-if="showCoupons"
      :coupon-message="couponMessage"
      :cform="ComeFrom"
      @goLook="goLook"
      @closeBtn="closeBtn"
    ></coupon>
  </div>
</template>

<script>
import coupon from "@/components/coupons/coupons";
export default {
  components: {
    coupon,
  },
  data() {
    return {
      pageinfo: {},
      sureStyle: "",
      cancelStyle: "",
      showDialog: true,
      showCoupons: false,
      couponMessage: "",
      ComeFrom: "",
      showLogin: true,
      canIUseGetUserProfile: false,
      msg: {},
    };
  },
  created() {
    this.pageinfo = uni.getStorageSync("basedata")
      ? uni.getStorageSync("basedata").auth_page
      : {};
    if (wx.getUserProfile) {
      console.log("进入新的");
      this.canIUseGetUserProfile = true;
    }
    // #ifdef MP-ALIPAY
    this.canIUseGetUserProfile = true;
    // #endif
    let x = this.pageinfo.hotspot;
    let y = this.pageinfo.hotspot_cancel;
    this.sureStyle = `height:${x.height}rpx;width:${x.width}rpx;left:${x.left}rpx;top:${x.top}rpx;`;
    this.cancelStyle = `height:${y.height}rpx;width:${y.width}rpx;left:${y.left}rpx;top:${y.top}rpx;`;
  },
  methods: {
    getoldUser() {
      //旧的 兼容电脑端
      //4.27注释掉 给予新的提示不能在电脑端登录
      // var that = this;
      // uni.login({
      //   provider: 'weixin',
      //   success: function (loginRes) {
      //     console.log(loginRes.authResult);
      //     // 获取用户信息
      //     uni.getUserInfo({
      //       provider: 'weixin',
      //       success: function (infoRes) {
      //         console.log(infoRes,'infoRes')
      // 		that.getUserInfo(infoRes)
      //       }
      //     });
      //   }
      // });
      uni.showToast({
        title: "电脑端暂时不能获取用户信息,请转到手机端使用！",
        icon: "none",
      });
      this.showDialog = false;
      this.$emit("gbAuth");
    },
    getUserProfile() {
      //新的获取用户资料
      var that = this;
      wx.getUserProfile({
        desc: "用于完善资料", // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
        success: (info) => {
          console.log(info);
          this.msg = {
            Id: 0,
            AliasName: info.userInfo.nickName,
            Photo: info.userInfo.avatarUrl,
          };
          that.getUserInfo(info);
        },
        fail: () => {
          uni.showToast({
            title: "微信登录授权失败",
            icon: "none",
          });
        },
      });
    },
    getUserInfo(info) {
      var that = this;
      that.showDialog = true;
      uni.getProvider({
        service: "oauth",
        success: function (res) {
          if (~res.provider.indexOf("weixin")) {
            uni.login({
              provider: "weixin",
              success: (res) => {
                //这里请求接口
                let obj = {
                  Source: 1,
                  OpenId: "",
                  Name: info.userInfo.nickName,
                  Photo: info.userInfo.avatarUrl,
                  Gender: info.userInfo.gender,
                  Moblie: "",
                  SuperiorId: 0,
                  code: res.code,
                };
                that.getCode(obj);
              },
              fail: () => {
                uni.showToast({
                  title: "微信登录授权失败",
                  icon: "none",
                });
              },
            });
          } else {
            uni.showToast({
              title: "请先安装微信或升级版本",
              icon: "none",
            });
          }
        },
      });
    },
    close() {
      this.showDialog = false;
      this.$emit("gbAuth");
    },
    //调用获取code
    getCode(obj) {
      var that = this;
      uni.showLoading({
        title: "登录中",
      });
      //这里请求接口
      var OpenId = "";
      that.request2(
        {
          url: "/api/mall/GetWeChatOpenId",
          data: {
            Code: obj.code,
          },
        },
        (res) => {
          if (res.resultCode == 1) {
            obj.OpenId = res.data;
            that.getLogin(obj);
          }
        }
      );
    },
    //登录
    getLogin(obj) {
      var that = this;
      that.showLogin = false;

      let pid = uni.getStorageSync("pid") ? uni.getStorageSync("pid").pid : 0;
      let Up = uni.getStorageSync("Up") ? uni.getStorageSync("Up").Up : 0;
      let SmallShopId = uni.getStorageSync("SmallShopId")
        ? uni.getStorageSync("SmallShopId").SmallShopId
        : 0;
      let CounponPassword = uni.getStorageSync("CounponPassword")
        ? uni.getStorageSync("CounponPassword").CounponPassword
        : 0;
      let KeyWord = uni.getStorageSync("KeyWord")
        ? uni.getStorageSync("KeyWord").KeyWord
        : "";
      that.request2(
        {
          url: "/api/AppletLogin/Login",
          data: {
            Source: 1,
            OpenId: obj.OpenId,
            Name: obj.Name,
            Photo: obj.Photo,
            Gender: obj.Gender,
            Moblie: "",
            SuperiorId: pid,
            SmallShopId: SmallShopId,
            UserPageType: Up,
            CounponPassword: CounponPassword,
            KeyWord: KeyWord,
          },
        },
        (res) => {
          uni.hideLoading();
          that.showLogin = true; //防止多次点击登录
          if (res.resultCode == 1) {
            this.showDialog = false;
            uni.setStorageSync("mall_UserInfo", res.data);
            that.$emit("changeuserinfo");
            if (res.couponResultCode == 1) {
              if (uni.getStorageSync("ComeFrom")) {
                that.ComeFrom = uni.getStorageSync("ComeFrom").ComeFrom;
              }
              that.showCoupons = true;
              that.couponMessage = res.couponMessage;
            }
            uni.removeStorageSync("pid");
            uni.removeStorageSync("SmallShopId");
            uni.removeStorageSync("Up");
            uni.removeStorageSync("CounponPassword");
            uni.removeStorageSync("KeyWord");
            let uid = uni.getStorageSync("mall_UserInfo").UserId;
            that.msg.Id = uid;
            let IsOpenMiAi = uni.getStorageSync("basedata")
              ? uni.getStorageSync("basedata").mall.setting.is_show_miai
              : 0; //是否开启相亲模式
            if (IsOpenMiAi == 0) {
              //不是相亲模式的时候去更新头像和昵称
              // #ifdef MP-WEIXIN
              that.updateuserinfo(that.msg); //更新用户头像
              // #endif
            }
          }
        }
      );
    },
    updateuserinfo(msg) {
      this.request2(
        {
          url: "/api/MemberUser/SetMemberPhoto",
          data: msg,
        },
        (res) => {
          //静默处理不做任何提示
        },
        (error) => {}
      );
    },
    goLook() {
      this.showCoupons = false;
    },
    closeBtn() {
      this.showCoupons = false;
    },

    // -------------------------------支付宝登录---------------------------------
    onGetAuthorize(res) {
      let that = this;
      my.getOpenUserInfo({
        success: (_res) => {
          let userInfo = JSON.parse(_res.response).response; // 以下方的报文格式解析两层 response
          that.getUserInfoAli(userInfo);
        },
      });
    },
    getUserInfoAli(info) {
      var that = this;
      that.showDialog = true;
      my.getAuthCode({
        scopes: "auth_base", // 主动授权（弹框）：auth_user，静默授权（不弹框）：auth_base
        success: (res) => {
          console.log(296, res);
          if (res.authCode) {
            let obj = {
              Name: info.nickName,
              Photo: info.avatar ? info.avatar : "123",
              Gender: info.gender === "m" ? 1 : info.gender === "f" ? 2 : 0,
              Moblie: "",
              code: res.authCode,
            };
            that.getCodeAli(obj);
          }
        },
        fail: () => {
          uni.showToast({
            title: "授权失败",
            icon: "none",
          });
        },
      });
    },
    //调用获取code
    getCodeAli(obj) {
      var that = this;
      uni.showLoading({
        title: "登录中",
      });
      //这里请求接口
      that.request2(
        {
          url: "/api/mall/GetAliCode",
          data: {
            Code: obj.code,
          },
        },
        (res) => {
          if (res.resultCode == 1) {
            obj.OpenId = res.data;
            that.getLoginAli(obj);
          }
        }
      );
    },
    //登录
    getLoginAli(obj) {
      var that = this;
      that.showLogin = false;

      let pid = uni.getStorageSync("pid") ? uni.getStorageSync("pid").pid : 0;
      let Up = uni.getStorageSync("Up") ? uni.getStorageSync("Up").Up : 0;
      let SmallShopId = uni.getStorageSync("SmallShopId")
        ? uni.getStorageSync("SmallShopId").SmallShopId
        : 0;
      let CounponPassword = uni.getStorageSync("CounponPassword")
        ? uni.getStorageSync("CounponPassword").CounponPassword
        : 0;
      let KeyWord = uni.getStorageSync("KeyWord")
        ? uni.getStorageSync("KeyWord").KeyWord
        : "";
      that.request2(
        {
          url: "/api/AppletLogin/Login",
          data: {
            Source: 2,
            OpenId: obj.OpenId,
            Name: obj.Name,
            Photo: obj.Photo,
            Gender: obj.Gender,
            Moblie: "",
            SuperiorId: pid,
            SmallShopId: SmallShopId,
            UserPageType: Up,
            CounponPassword: CounponPassword,
            KeyWord: KeyWord,
          },
        },
        (res) => {
          console.log("AppletLogin/Login", res);
          uni.hideLoading();
          that.showLogin = true; //防止多次点击登录
          if (res.resultCode == 1) {
            this.showDialog = false;
            uni.setStorageSync("mall_UserInfo", res.data);
            that.$emit("changeuserinfo");
            if (res.couponResultCode == 1) {
              if (uni.getStorageSync("ComeFrom")) {
                that.ComeFrom = uni.getStorageSync("ComeFrom").ComeFrom;
              }
              that.showCoupons = true;
              that.couponMessage = res.couponMessage;
            }
            uni.removeStorageSync("pid");
            uni.removeStorageSync("SmallShopId");
            uni.removeStorageSync("Up");
            uni.removeStorageSync("CounponPassword");
            uni.removeStorageSync("KeyWord");
            let uid = uni.getStorageSync("mall_UserInfo").UserId;
            that.msg.Id = uid;
            let IsOpenMiAi = uni.getStorageSync("basedata")
              ? uni.getStorageSync("basedata").mall.setting.is_show_miai
              : 0; //是否开启相亲模式
            if (IsOpenMiAi == 0) {
              //不是相亲模式的时候去更新头像和昵称
              //  #ifdef MP-WEIXIN
              that.updateuserinfo(that.msg); //更新用户头像
              // #endif
            }
          }
        }
      );
    },
  },
};
</script>

<style>
.auth-page img {
  width: 650rpx;
  height: 700rpx;
}

.auth-page .hotsopt {
  position: absolute;
  background: transparent;
  border: none;
  outline: none;
}

.auth-page .hotsopt::after {
  border: none;
}
</style>