82 lines
2.8 KiB
TypeScript
82 lines
2.8 KiB
TypeScript
import { Base64 } from 'js-base64'
|
||
|
||
export const wxInfo = wx.getSystemInfoSync()
|
||
export const mpInfo = wx.getAccountInfoSync()
|
||
export const miniProgramVersion = mpInfo.miniProgram.version || '1.0.0'
|
||
|
||
// 获取微信小程序token
|
||
export const getWxToken = async() => {
|
||
return new Promise(resolve => {
|
||
wx.showLoading({ title: '加载中' })
|
||
wx.getStorage({
|
||
key: 'user_info',
|
||
async success(res) {
|
||
if (res.data.token) {
|
||
wx.hideLoading()
|
||
const envParams = { linktoken: 'miniProgram' }
|
||
// 获取经纬度
|
||
const locationDataObj = wx.getStorageSync('locationData')
|
||
if (locationDataObj) Object.assign(envParams, { ...locationDataObj })
|
||
|
||
// 获取小程序启动时的参数
|
||
const launchOptions = wx.getStorageSync('launch_options')
|
||
if (launchOptions) Object.assign(envParams, { wxXcxLaunchOptions: launchOptions })
|
||
|
||
// 获取系统信息
|
||
Object.assign(envParams, {
|
||
phoneType: wxInfo.model,
|
||
devType: wxInfo.platform === 'ios' ? 0 : 1,
|
||
devOS: wxInfo.platform,
|
||
devOSVersion: wxInfo.system,
|
||
devVersion: wxInfo.version,
|
||
appVersion: miniProgramVersion.replace(/\./g, '')
|
||
})
|
||
|
||
const extendParams = {
|
||
lzCode: 'CJTG_XCX_LZ',
|
||
uniqueCode: res.data.uniqueCode,
|
||
userName: res.data.userName,
|
||
userId: res.data.userId,
|
||
token: res.data.token
|
||
}
|
||
wx.getStorage({
|
||
key: 'unique_code',
|
||
success(res) {
|
||
if (res) {
|
||
Object.assign(extendParams, { uniqueCode: res })
|
||
}
|
||
}
|
||
})
|
||
const obj = { envParams, extendParams }
|
||
const returnDataValue = encodeURIComponent(Base64.encode(JSON.stringify(obj)))
|
||
resolve(returnDataValue)
|
||
}
|
||
},
|
||
fail() {
|
||
wx.hideLoading()
|
||
wx.navigateTo({ url: '/pages/login/index' })
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
// 跳转H5页面
|
||
export const onGoH5Page = (params: any) => {
|
||
// url跳转链接,is_need_login是否需要登录:true是、false否,type页面类型:third三方
|
||
const { type, url, is_need_login } = params
|
||
if (is_need_login) {
|
||
getWxToken().then((res: any) => {
|
||
if (res) {
|
||
const targetUrl = `${url}${/\?/.test(url) ? '&' : '?'}returnData=${res}`
|
||
wx.navigateTo({ url: `/pages/H5/index?url=${encodeURIComponent(targetUrl)}` })
|
||
}
|
||
})
|
||
} else {
|
||
if (type === 'third') {
|
||
wx.navigateTo({ url: `/pages/H5/index?url=${encodeURIComponent(url)}` })
|
||
} else {
|
||
const targetUrl = `${url}${/\?/.test(url) ? '&' : '?'}jumpData=${encodeURIComponent(Base64.encode(JSON.stringify({ is_need_login: false })))}`
|
||
wx.navigateTo({ url: `/pages/H5/index?url=${encodeURIComponent(targetUrl)}` })
|
||
}
|
||
}
|
||
}
|