优化h5微信授权逻辑;修改CountDown组件报错的问题

This commit is contained in:
Gaoxs
2020-09-22 17:32:13 +08:00
parent 0605a2b4c9
commit 59055982ab
4 changed files with 176 additions and 172 deletions

View File

@ -1,65 +1,67 @@
<template>
<view class="time">
<text v-if="rtipText">{{ rtipText }}</text>
<text class="styleAll" v-if="risDay === true">{{ rday }}</text>
<text class="timeTxt" v-if="rdayText">{{ rdayText }}</text>
{{ tipText }}
<text class="styleAll" v-if="isDay === true">{{ day }}</text>
<text class="timeTxt">{{ dayText }}</text>
<text class="styleAll">{{ hour }}</text>
<text class="timeTxt" v-if="rhourText">{{ rhourText }}</text>
<text class="timeTxt">{{ hourText }}</text>
<text class="styleAll">{{ minute }}</text>
<text class="timeTxt" v-if="rminuteText">{{ rminuteText }}</text>
<text class="timeTxt">{{ minuteText }}</text>
<text class="styleAll">{{ second }}</text>
<text class="timeTxt" v-if="rsecondText">{{ rsecondText }}</text>
<text class="timeTxt">{{ secondText }}</text>
</view>
</template>
<script>
export default {
name: "CountDown",
props: [
props: {
//距离开始提示文字
'tipText',
'dayText',
'hourText',
'minuteText',
'secondText',
'datatime',
'isDay'
],
tipText: {
type: String,
default: "倒计时"
},
dayText: {
type: String,
default: "天"
},
hourText: {
type: String,
default: "时"
},
minuteText: {
type: String,
default: "分"
},
secondText: {
type: String,
default: "秒"
},
datatime: {
type: Number,
default: 0
},
isDay: {
type: Boolean,
default: true
}
},
data: function () {
return {
day: "00",
hour: "00",
minute: "00",
second: "00",
rtipText: "倒计时",
rdayText: "天",
rhourText: "时",
rminuteText: "分",
rsecondText: "秒",
rdatatime: 0,
risDay: true
second: "00"
};
},
created: function () {
// this.show_time();
},
mounted: function() {
this.rtipText = this.$props.tipText;
this.rdayText = this.$props.dayText;
this.rhourText = this.$props.hourText;
this.rminuteText = this.$props.minuteText;
this.rsecondText = this.$props.secondText;
this.rdatatime = this.$props.datatime;
this.risDay = this.$props.isDay;
this.show_time();
},
mounted: function () {},
methods: {
show_time: function () {
let that = this;
this.runTime();
setInterval(this.runTime, 1000);
},
runTime() {
let that = this;
function runTime() {
//时间函数
let intDiff = that.datatime - Date.parse(new Date()) / 1000; //获取数据中的时间戳的时间差;
let day = 0,
@ -94,6 +96,9 @@ export default {
that.second = "00";
}
}
runTime();
setInterval(runTime, 1000);
}
}
};
</script>

View File

@ -88,7 +88,7 @@ let wechatObj;
let appId
let wechatLoading = false
export async function wechat() {
export function wechat() {
console.log('初始化微信配置')
wechatLoading = false
return new Promise((resolve, reject) => {
@ -148,7 +148,7 @@ export async function oAuth() {
})
}
export function auth(code) {
export async function auth(code) {
console.log('获取微信授权')
return new Promise((resolve, reject) => {
let loginType = cookie.get(LOGINTYPE);
@ -170,7 +170,7 @@ export function auth(code) {
})
}
export function toAuth() {
export async function toAuth() {
if (wechatLoading) {
return
}
@ -187,7 +187,6 @@ function getAuthUrl(appId) {
// #ifdef H5
// #endif
debugger
cookie.set('redirect', window.location.href)
const redirect_uri = encodeURIComponent(`${location.origin}/pages/Loading/index`);
// const redirect_uri = encodeURIComponent(`${location.origin}/pages/Loading/index?path=${encodeURIComponent(window.location.href)}`);

141
main.js
View File

@ -82,77 +82,7 @@ Object.defineProperty(Vue.prototype, '$yroute', {
Vue.prototype.$VUE_APP_RESOURCES_URL = VUE_APP_RESOURCES_URL
Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL
Vue.component('cu-custom', cuCustom);
// #ifdef H5
// H5编译的代码
import {
wechat,
clearAuthStatus,
oAuth,
auth,
toAuth,
pay,
openAddress,
openShareAll,
openShareAppMessage,
openShareTimeline,
wechatEvevt,
ready,
wxShowLocation,
} from '@/libs/wechat'
import { isWeixin } from '@/utils'
const CACHE_KEY = "clear_0.0.1";
if (!cookie.has(CACHE_KEY)) {
cookie.clearAll();
cookie.set(CACHE_KEY, 1);
}
var urlSpread = parseQuery()["spread"];
if (urlSpread !== undefined) {
var spread = cookie.get("spread");
urlSpread = parseInt(urlSpread);
if (!Number.isNaN(urlSpread) && spread !== urlSpread) {
cookie.set("spread", urlSpread || 0);
} else if (spread === 0 || typeof spread !== "number") {
cookie.set("spread", urlSpread || 0);
}
}
Vue.prototype.wechat = wechat
Vue.prototype.clearAuthStatus = clearAuthStatus
Vue.prototype.oAuth = oAuth
Vue.prototype.auth = auth
Vue.prototype.toAuth = toAuth
Vue.prototype.pay = pay
Vue.prototype.openAddress = openAddress
Vue.prototype.openShareAll = openShareAll
Vue.prototype.openShareAppMessage = openShareAppMessage
Vue.prototype.openShareTimeline = openShareTimeline
Vue.prototype.wechatEvevt = wechatEvevt
Vue.prototype.ready = ready
Vue.prototype.wxShowLocation = wxShowLocation
// 判断是否是微信浏览器
if (isWeixin()) {
Vue.prototype.$deviceType = 'weixin'
store.commit('updateDevicetype', 'weixin')
let wechat = await wechat()
if (wechat) {
await oAuth()
}
} else {
Vue.prototype.$deviceType = 'weixinh5'
store.commit('updateDevicetype', 'weixinh5')
}
// #endif
// #ifdef APP-PLUS
// App平台编译的代码
@ -174,4 +104,75 @@ store.commit('updateDevicetype', 'routine')
// ...mapState(['$deviceType'])
// },
// #ifdef H5
// H5编译的代码
import {
wechat,
clearAuthStatus,
oAuth,
auth,
toAuth,
pay,
openAddress,
openShareAll,
openShareAppMessage,
openShareTimeline,
wechatEvevt,
ready,
wxShowLocation,
} from '@/libs/wechat'
import { isWeixin } from '@/utils'
const CACHE_KEY = "clear_0.0.1";
if (!cookie.has(CACHE_KEY)) {
cookie.clearAll();
cookie.set(CACHE_KEY, 1);
}
var urlSpread = parseQuery()["spread"];
if (urlSpread !== undefined) {
var spread = cookie.get("spread");
urlSpread = parseInt(urlSpread);
if (!Number.isNaN(urlSpread) && spread !== urlSpread) {
cookie.set("spread", urlSpread || 0);
} else if (spread === 0 || typeof spread !== "number") {
cookie.set("spread", urlSpread || 0);
}
}
// #endif
async function init() {
// #ifdef H5
// H5编译的代码
// 判断是否是微信浏览器
if (isWeixin()) {
Vue.prototype.$deviceType = 'weixin'
store.commit('updateDevicetype', 'weixin')
let wechatInit = await wechat()
console.log(wechatInit)
if (wechatInit) {
await oAuth()
app.$mount()
}
} else {
Vue.prototype.$deviceType = 'weixinh5'
store.commit('updateDevicetype', 'weixinh5')
app.$mount()
}
// #endif
// #ifndef H5
app.$mount()
// #endif
}
init()

View File

@ -204,25 +204,25 @@ export const authorize = (authorizeStr) => {
}
export const login = () => {
debugger;
console.log(Vue.prototype)
return new Promise((resolve, reject) => {
if (Vue.prototype.$deviceType == 'weixin') {
// 微信授权登录
const { code } = parseQuery()
debugger;
if (code) {
auth(code)
.then(() => {
// location.replace(
// decodeURIComponent(decodeURIComponent(this.$route.params.url))
// );
let redirect = cookie.get('redirect')
console.log(redirect)
debugger;
location.href = decodeURIComponent(
decodeURIComponent(this.$route.params.url)
);
if (redirect) {
redirect = redirect.split('/pages')[1]
reLaunch({
path: '/pages' + redirect,
});
} else {
reLaunch({
path: '/pages/home/index',
});
}
})
.catch(() => {
reject('当前运行环境为微信浏览器')
@ -866,7 +866,6 @@ export const handleLoginFailure = () => {
store.commit("updateAuthorization", false);
let currentPageUrl = getCurrentPageUrl()
debugger
if (store.state.$deviceType == 'weixin') {
// 如果不是授权页面,
if (!store.getters.isAuthorizationPage) {