You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.4 KiB
99 lines
2.4 KiB
/*
|
|
* @Author: ch
|
|
* @Date: 2021-07-26 23:22:16
|
|
* @LastEditors: ch
|
|
* @LastEditTime: 2022-06-20 17:38:48
|
|
* @Description: file content
|
|
*/
|
|
import Vue from 'vue';
|
|
import App from './App';
|
|
|
|
import {router,RouterMount} from '@/common/router/index.js';
|
|
import uView from 'uview-ui';
|
|
import store from '@/common/store';
|
|
import {FormatSearchJson} from '@/common/utils';
|
|
import {ApiGetOpenId, ApiGetAuthUrl} from '@/common/api/wx';
|
|
import {ApiGetCurrentUser} from '@/common/api/account';
|
|
import {Im, ImInit} from '@/common/utils';
|
|
import { ApiSktSysGetSession, ApiSktSysHeart } from './common/api/im';
|
|
|
|
const socketInit = () => {
|
|
if (!store.state.userInfo.id) {
|
|
setTimeout(() => {
|
|
socketInit();
|
|
},10000)
|
|
return false;
|
|
}
|
|
// 初始化IM
|
|
ImInit().then(() => {
|
|
// 获取到会话列表
|
|
Im.getSessionList();
|
|
});
|
|
|
|
}
|
|
|
|
const getUserInfo = async () => {
|
|
const { error, result } = await ApiGetCurrentUser();
|
|
if (error) {
|
|
uni.$u.toast(error.message);
|
|
return false;
|
|
}
|
|
store.commit('SET_USER_INFO', result);
|
|
};
|
|
|
|
if (store.state.token) {
|
|
socketInit();
|
|
getUserInfo();
|
|
}
|
|
|
|
|
|
|
|
// 微信打开需要授权
|
|
const ua = navigator ? navigator.userAgent.toLowerCase() : '';
|
|
if(ua.includes('micromessenger')) {
|
|
if(!store.state.openId){
|
|
let query = FormatSearchJson(window.location.search)
|
|
if(query.code){
|
|
ApiGetOpenId({
|
|
code : query.code
|
|
}).then(({error, result}) => {
|
|
if(error){
|
|
uni.$u.toast(error.message);
|
|
return false;
|
|
}
|
|
store.commit('SET_OPEN_ID', result.openId);
|
|
})
|
|
}else{
|
|
ApiGetAuthUrl({
|
|
redirectUrl : window.location.href,
|
|
scope : 'snsapi_base'
|
|
}).then(({result, error}) => {
|
|
if(error){
|
|
uni.$u.toast(error.message);
|
|
return false;
|
|
}
|
|
window.location.href = result;
|
|
})
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Vue.use(router);
|
|
Vue.use(uView);
|
|
Vue.prototype.$store = store;
|
|
|
|
Vue.config.productionTip = false;
|
|
|
|
App.mpType = 'app'
|
|
const app = new Vue({
|
|
...App
|
|
})
|
|
// #ifdef H5
|
|
RouterMount(app,router,'#app')
|
|
// #endif
|
|
|
|
// #ifndef H5
|
|
app.$mount(); //为了兼容小程序及app端必须这样写才有效果
|
|
// #endif
|