<template>
  <!-- v-if="setting&&setting.is_show_auth==1" -->
  <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" />
      <button
        :style="sureStyle"
        class="hotsopt"
        open-type="getUserInfo"
        v-if="canIUseGetUserProfile == false"
        @getuserinfo="showLogin == true ? getoldUser() : ''"
      ></button>
      <template v-else>
		  <button 
		    :style="sureStyle"
		    class="hotsopt"
		    v-if="AppConfig.TenantId!=18"
		    @tap="showLogin == true ? getUserProfile() : ''"
		  ></button>
			<button v-else
			  :style="sureStyle"
			  class="hotsopt"
			  open-type="getPhoneNumber"
			  @getphonenumber="handleGetPhoneNumber"
			></button>
	  </template>

      <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: {},
	  AppConfig:{
		  TenantId:0
	  },
      setting: {},
    };
  },
  created() {
    this.AppConfig.TenantId=this.GetMiniAppId().TenantId;
    this.pageinfo = uni.getStorageSync("basedata")
      ? uni.getStorageSync("basedata").auth_page
      : {};
    if (wx.getUserProfile) {
      console.log("进入新的");
      this.canIUseGetUserProfile = true;
    }
    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;`;
    let set = uni.getStorageSync("basedata") ?
				uni.getStorageSync("basedata").mall.setting : {};
    this.setting = set;
  },
  methods: {
	  //授权获取手机号码
	  handleGetPhoneNumber(e) {
		var that=this;
	    if (e.detail.errMsg !== 'getPhoneNumber:ok') {
	      uni.showToast({
	               title: "需要授权手机号才能登录",
	               icon: "none",
	             });
	       return;
	    }
	    //获取手机号专用的 code
	    const phoneCode = e.detail.code;
	    //调用 wx.login 获取登录用的 code
	    wx.login({
	      success: (loginRes) => {
	        const loginCode = loginRes.code;
			that.request2(
			  {
			    url: "/api/mall/GetWeChatOpenId",
			    data: {
					Code: loginCode,   // 用于换取 openid
					phoneCode: phoneCode    // 用于换取手机号
			    },
			  },
			  (res) => {
			    if (res.resultCode == 1) {
			      let resObj = {OpenId:res.data};
			      that.getLogin(resObj);
			    }
			  }
			);
	      },
	      fail: (err) => {
	        console.log('wx.login 失败', err);
	      }
	    });
	},
    getoldUser() {
      uni.showToast({
        title: "电脑端暂时不能获取用户信息,请转到手机端使用！",
        icon: "none",
      });
      this.showDialog = false;
      this.$emit("gbAuth");
    },
    getUserProfile() {
      //新的获取用户资料
      var that = this;
	  wx.login({
		  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: (err) => {
		       console.log(err,'=====err');
		 },
	  })
    },
    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
        : "";
      let EduSchoolId = uni.getStorageSync("EduSchoolId")
        ? uni.getStorageSync("EduSchoolId").EduSchoolId
        : 0;
		let EduId = uni.getStorageSync("jxhData")
		  ? uni.getStorageSync("jxhData").Id
		  : 0;
      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,
            EduSchoolId: EduSchoolId,
		    EduId:EduId
          },
        },
        (res) => {
          uni.hideLoading();
          that.showLogin = true; //防止多次点击登录
          if (res.resultCode == 1) {
            this.showDialog = false;
            uni.setStorageSync("mall_UserInfo", res.data);
            that.$emit("changeuserinfo");
            // ----------橙霜---------------
            let AppletID = this.GetMiniAppId().TenantId;
            if (AppletID === 24) {
              this.updateData();
            }
            // --------------------------------
            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;
            uni.removeStorageSync("EduSchoolId");
            that.msg.Id = uid;
            let IsOpenMiAi = uni.getStorageSync("basedata")
              ? uni.getStorageSync("basedata").mall.setting.is_show_miai
              : 0; //是否开启相亲模式
            if (IsOpenMiAi == 0) {
              //不是相亲模式的时候去更新头像和昵称
              that.updateuserinfo(that.msg); //更新用户头像
            }
            if(uni.getStorageSync('jzTravelOpenId')){
                that.SetMemberBindCustomer()
            }
          }
        }
      );
    },
    SetMemberBindCustomer(){
      let that = this;
      that.request2({
          url: "/api/MemberUser/SetMemberBindCustomer",
          data: {
            Id: that.msg.Id,
            CustomerOpenId: uni.getStorageSync('jzTravelOpenId')
          },
        },
        (res) => {
          if (res.resultCode == 1) {
            uni.removeStorageSync('jzTravelOpenId');
          }
        },(err) => {
          // uni.showToast({
          //     title: err.message,
          //     icon: "none",
          //   });
        }
      );
    },
    updateuserinfo(msg) {
      this.request2(
        {
          url: "/api/MemberUser/SetMemberPhoto",
          data: msg,
        },
        (res) => {
          //静默处理不做任何提示
        },
        (error) => {}
      );
    },
    goLook() {
      this.showCoupons = false;
    },
    closeBtn() {
      this.showCoupons = false;
    },
    updateData() {
      this.request2(
        {
          url: "/api/Mall/GetHome",
          data: {},
        },
        (res) => {
          uni.setStorageSync("basedata", res.data);
          let basedata = uni.getStorageSync("basedata");
          let isAttestation = basedata?.user_info?.isAttestation ?? 0;
          let IsOpenGuide =
            wx.getStorageSync("basedata")?.mall?.setting?.IsOpenGuide ?? 0;
          if (isAttestation === 0 && IsOpenGuide === 1) {
            uni.navigateTo({
              url: "/pages/user-center/user-center",
            });
          }
        }
      );
    },
  },
};
</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>