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

View File

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

143
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_RESOURCES_URL = VUE_APP_RESOURCES_URL
Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL
Vue.component('cu-custom', cuCustom); 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 // #ifdef APP-PLUS
// App平台编译的代码 // App平台编译的代码
@ -174,4 +104,75 @@ store.commit('updateDevicetype', 'routine')
// ...mapState(['$deviceType']) // ...mapState(['$deviceType'])
// }, // },
app.$mount()
// #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 = () => { export const login = () => {
debugger;
console.log(Vue.prototype)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (Vue.prototype.$deviceType == 'weixin') { if (Vue.prototype.$deviceType == 'weixin') {
// 微信授权登录 // 微信授权登录
const { code } = parseQuery() const { code } = parseQuery()
debugger;
if (code) { if (code) {
auth(code) auth(code)
.then(() => { .then(() => {
// location.replace(
// decodeURIComponent(decodeURIComponent(this.$route.params.url))
// );
let redirect = cookie.get('redirect') let redirect = cookie.get('redirect')
console.log(redirect) console.log(redirect)
debugger; if (redirect) {
location.href = decodeURIComponent( redirect = redirect.split('/pages')[1]
decodeURIComponent(this.$route.params.url) reLaunch({
); path: '/pages' + redirect,
});
} else {
reLaunch({
path: '/pages/home/index',
});
}
}) })
.catch(() => { .catch(() => {
reject('当前运行环境为微信浏览器') reject('当前运行环境为微信浏览器')
@ -866,7 +866,6 @@ export const handleLoginFailure = () => {
store.commit("updateAuthorization", false); store.commit("updateAuthorization", false);
let currentPageUrl = getCurrentPageUrl() let currentPageUrl = getCurrentPageUrl()
debugger
if (store.state.$deviceType == 'weixin') { if (store.state.$deviceType == 'weixin') {
// 如果不是授权页面, // 如果不是授权页面,
if (!store.getters.isAuthorizationPage) { if (!store.getters.isAuthorizationPage) {