import { $wxSdkSign } from '@/service/pay'

const wx = require('weixin-js-sdk')

export default {
  methods: {
    async wechatShare(info) {
      // 判断苹果手机
      let _url = ''

      if (window.__wxjs_is_wkwebview === true) {
        _url = window.location.href.split('#')[0] || window.location.href
      } else {
        _url = window.location.href
      }
      // 这里是封装的axios，换成任意请求皆可
      $wxSdkSign({ url: _url }).then(res => {
        wx.config({
          // beta: true,
          debug: false,
          appId: res.appId, // 必填，公众号的唯一标识
          timestamp: res.timestamp, // 必填，生成签名的时间戳
          nonceStr: res.nonceStr, // 必填，生成签名的随机串
          signature: res.signature, // 必填，签名，见附录1
          jsApiList: [
            'checkJsApi',
            'scanQRCode',
            'updateTimelineShareData',
            'updateAppMessageShareData',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'getLocation',
            'openLocation',
            'chooseWXPay'
          ] // 必填，需要使用的 JS 接口列表，所有JS接口列表见附录2
        })
        wx.ready(() => {
          // info 接口返回的数据，用来配置分享内容
          // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
          // 分享给朋友圈
          const shareTitle = '软件分享'
          const shareLink = window.location.href
          const shareDesc = '是一款方便司机用户加气的手机软件，整合全xxx家LNG加气站信息，提供包括位置、电话、气价参考、在线充值加气优惠折扣等全面服务，用户开通定位功能后会自动帮助用户推荐附近的加气站，并且提供加气导航'

          wx.checkJsApi({
            jsApiList: ['getLocation'],
            success: function (res) {
              if (res.checkResult.getLocation == false) {
                alert('你的微信版本太低，不支持微信JS接口，请升级到最新的微信版本！')
              }
            }
          })

          wx.updateTimelineShareData({
            title: shareTitle, // 分享标题
            link: shareLink, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            // imgUrl: require('../assets/'), // 分享图标
            success: function () {
              // 设置成功
            }
          })
          // 分享给朋友
          wx.updateAppMessageShareData({
            title: shareTitle, // 分享标题
            desc: shareDesc, // 分享描述
            link: shareLink, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            // imgUrl: require('../assets/'), // 分享图标
            success: function () {
              // 设置成功
            }
          })
          // 获取地理位置
          wx.getLocation({
            type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
            success: function (res) {
              localStorage.setItem('location_pointer', JSON.stringify({
                latitude: res.latitude,
                longitude: res.longitude
              }))
            }
          })
        })

        wx.error(function (res) {
          // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
          console.log(JSON.stringify(res))
        })
      })
    },
    // 调用扫码摄像头
    wxScanCode(callback) {
      wx.scanQRCode({
        needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
        scanType: ['qrCode'], // 可以指定扫二维码还是一维码，默认二者都有
        success: function (res) {
          callback(res.resultStr)
          // 扫码后获取结果参数赋值给Input
        },
        fail: function (err) {
          alert(JSON.stringify(err))
        }
      })
    },
    // 获取地理位置
    getLocation(callback) {
      wx.ready(function (res) {
        wx.getLocation({
          type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
          success: function (res) {
            if (typeof callback === 'function') {
              console.log(res, '获取地理位置成功')
              callback(res.latitude, res.longitude)
            }
          }
        })
      })
    },
    openLocation(options) {
      wx.ready(function (res) {
        wx.openLocation({
          latitude: options.la, // 纬度，浮点数，范围为90 ~ -90
          longitude: options.lo, // 经度，浮点数，范围为180 ~ -180。
          name: options.name, // 位置名
          address: options.desc, // 地址详情说明
          scale: 12, // 地图缩放级别,整形值,范围从1~28。默认为最大
          infoUrl: options.url // 在查看位置界面底部显示的超链接,可点击跳转
        })
      })
    }
  }
}
