//app.js
|
const QQMapWX = require('./utils/qqmap-wx-jssdk')
|
// const apiHost = 'http://39.108.148.228:80/user';
|
// const apiHost = 'https://okyueche.com:443/user'
|
// const apiHost = 'http://120.220.4.138:9591/user'
|
const apiHost = ' https://lianyudata.cn/user'
|
|
|
// const apiHost = 'https://zhentonggongsi.com/user'
|
|
App({
|
// 这里这么写,是要在其他界面监听,而不是在app.js中监听,而且这个监听方法,需要一个回调方法。
|
watch(method) {
|
var obj = this.globalData;
|
Object.defineProperty(obj, "resData", {
|
configurable: true,
|
enumerable: true,
|
set: function(value) {
|
this._resData = value;
|
method(value);
|
},
|
get: function() {
|
// 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.name的时候,这里就会执行。
|
console.log(this._resData)
|
return this._resData;
|
},
|
});
|
},
|
//初始化socket
|
initSocket() {
|
let that = this;
|
that.globalData.localSocket = wx.connectSocket({
|
// url: "ws://192.168.0.80:9090/websocket",
|
url: "wss://lianyudata.cn/websocket",
|
// url: "wss://okyueche.com:9090/websocket",
|
});
|
that.globalData.localSocket.onOpen(function(res) {
|
console.log(that.globalData.localSocket)
|
console.log("WebSocket连接已打开!readyState=" + that.globalData.localSocket.readyState);
|
that.globalData.sockTaskStatus = true;
|
let msg = {
|
code: 200,
|
method: "PING",
|
msg: "SUCCESS",
|
data: {
|
type: 1, //1:乘客,2:司机
|
userId:wx.getStorageSync('userId'), //登录人员id
|
token:wx.getStorageSync("token")||''
|
},
|
};
|
setInterval(()=>{
|
that.sendSocketMessage(JSON.stringify(msg));
|
},5000)
|
});
|
that.globalData.localSocket.onMessage(function(res) {
|
that.globalData.callback(res);
|
that.globalData.resData = res.data; // JSON.parse(res.data);
|
});
|
that.globalData.localSocket.onError(function(res) {
|
console.log("readyState=" + that.globalData.localSocket.readyState, res);
|
});
|
that.globalData.localSocket.onClose(function(res) {
|
that.globalData.sockTaskStatus = false;
|
console.log("WebSocket连接已关闭!readyState=" + that.globalData.localSocket.readyState, res);
|
if (that.globalData.sockTaskStatus == true) {
|
that.initSocket();
|
}
|
});
|
},
|
|
//统一发送消息
|
sendSocketMessage: function(msg) {
|
if (this.globalData.localSocket.readyState === 1) {
|
this.globalData.localSocket.send({
|
data: msg,
|
});
|
}
|
},
|
|
//关闭socket
|
closeSocket() {
|
this.globalData.localSocket.close();
|
},
|
getFloatStr: function(num){
|
num += '';
|
num = num.replace(/[^0-9|\.]/g, ''); //清除字符串中的非数字非.字符
|
if(/^0+/) //清除字符串开头的0
|
num = num.replace(/^0+/, '');
|
if(!/\./.test(num)) //为整数字符串在末尾添加.00
|
num += '.00';
|
if(/^\./.test(num)) //字符以.开头时,在开头添加0
|
num = '0' + num;
|
num += '00'; //在字符串末尾补零
|
num = num.match(/\d+\.\d{2}/)[0];
|
console.log(num)
|
},
|
onShow(options) {
|
//socket
|
if(!this.globalData.sockTaskStatus){
|
this.initSocket()
|
}
|
var obj = wx.getEnterOptionsSync()
|
if(options.scene==1069){
|
return false
|
}
|
var comparisonToken= setInterval(()=>{
|
this.globalData.comparisonToken=comparisonToken
|
if(wx.getStorageSync('token')!==''){
|
this.getsetTime()
|
}
|
},5000)
|
},
|
|
//单点登录接口
|
getsetTime (){
|
let token = wx.getStorageSync('token')
|
let header = {
|
"Content-Type": "application/json;charset=UTF-8,",
|
Authorization: "Bearer" + " " + token,
|
};
|
wx.request({
|
url: this.globalData.Url+'/api/user/comparisonToken',
|
header,
|
method:'POST',
|
success:(res)=>{
|
if(res.data.code==600 &&token!==''&&token!=='quit'){
|
wx.setStorageSync('token', '')
|
wx.showModal({
|
title: '提示',
|
content: '您在其他地方登录了,是否重新登录',
|
showCancel: false,
|
confirmText:"确定",//默认是“确定”
|
confirmColor: '#F07207',//确定文字的颜色
|
success: (res) =>{
|
if (res.cancel) {
|
//点击取消,默认隐藏弹框
|
} else {
|
wx.redirectTo({
|
url: '/pages/home/home',
|
})
|
clearInterval(this.globalData.comparisonToken)
|
}
|
},
|
fail: function (res) { },//接口调用失败的回调函数
|
complete: function (res) { },//接口调用结束的回调函数(调用成功、失败都会执行)
|
})
|
|
}
|
}
|
})
|
},
|
onLaunch: function (options) {
|
wx.getSystemInfo({
|
success: res=>{
|
console.log(res)
|
// console.log('手机信息res'+res.model)
|
let modelmes = res.model;
|
if (modelmes.search('iPhone X') != -1 ||modelmes.search('iPhone 11') != -1) {
|
this.globalData.isIphoneX = true
|
}
|
}
|
})
|
// // 展示本地存储能力
|
// var logs = wx.getStorageSync('logs') || []
|
// logs.unshift(Date.now())
|
// wx.setStorageSync('logs', logs)
|
wx.setStorageSync('height', wx.getSystemInfoSync().windowHeight||'')
|
// 登录
|
wx.login({
|
success: res => {
|
// 发送 res.code 到后台换取 openId, sessionKey, unionId
|
}
|
})
|
// 获取用户信息
|
wx.getSetting({
|
success: res => {
|
if (res.authSetting['scope.userInfo']) {
|
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
|
wx.getUserInfo({
|
success: res => {
|
// 可以将 res 发送给后台解码出 unionId
|
this.globalData.userInfo = res.userInfo
|
|
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
|
// 所以此处加入 callback 以防止这种情况
|
if (this.userInfoReadyCallback) {
|
this.userInfoReadyCallback(res)
|
}
|
}
|
})
|
}
|
}
|
})
|
|
},
|
|
|
getQQMap() {
|
return new QQMapWX({
|
key: "PCMBZ-KGC65-TNAIK-INZ3F-2UJKO-PCFXU",
|
});
|
},
|
//showToast--弹出框
|
showToastSuccess:function(value,images,status,time){
|
try{
|
let image=images||''
|
wx.showToast({
|
title: value,
|
image,
|
icon:status,
|
duration:time
|
})
|
}catch(err){
|
console.log(err)
|
}
|
},
|
|
//正则手机号验证
|
testPhone:function(phoneNum){
|
var myreg = /^1[3456789]\d{9}$/
|
if(phoneNum.length==0){
|
wx.showToast({
|
title: '输入手机号',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else if(phoneNum.length<11||phoneNum.length>11){
|
wx.showToast({
|
title: '手机号有误',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else if(!myreg.test(phoneNum)){
|
wx.showToast({
|
title: '手机号错误1',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else{
|
return true
|
}
|
},
|
//验证码手机号验证
|
testPhoneCode:function(phoneNum){
|
var myreg = /^1[3456789]\d{9}$/
|
if(phoneNum.length==0){
|
wx.showToast({
|
title: '输入手机号',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else if(phoneNum.length<11||phoneNum.length>11){
|
wx.showToast({
|
title: '手机号有误',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else if(!myreg.test(phoneNum)){
|
wx.showToast({
|
title: '手机号错误',
|
icon:'none',
|
duration:1500
|
})
|
return false
|
}else{
|
console.log("1")
|
return true
|
}
|
},
|
//request请求
|
apiRequest(url, data, method, upload) {
|
let that = this;
|
let token = wx.getStorageSync("token");
|
let header = "";
|
let havePhone = wx.getStorageSync("havePhone")
|
if(!havePhone){
|
wx.redirectTo({
|
url: '/pages/wxChatPhone/wxChatPhone',
|
})
|
return false
|
}
|
if (token) {
|
header = {
|
"Content-Type": "application/json;charset=UTF-8,",
|
Authorization: "Bearer" + " " + token,
|
};
|
if (method == "PUT" || method == "POST") {
|
if (upload == 1) {
|
header = {
|
"content-type": "multipart/form-data",
|
Authorization: "Bearer" + " " + token,
|
};
|
} else {
|
header = {
|
"content-type": "application/x-www-form-urlencoded",
|
Authorization: "Bearer" + " " + token,
|
};
|
}
|
}
|
} else {
|
header = {
|
"Content-Type": "application/json;charset=UTF-8,",
|
Authorization: "",
|
};
|
if (method == "PUT" || method == "POST") {
|
header = {
|
"content-type": "application/x-www-form-urlencoded",
|
Authorization: "",
|
};
|
}
|
}
|
|
return new Promise((resolve, reject) => {
|
if (upload != 2) {
|
wx.showLoading({
|
mask: true,
|
});
|
}
|
|
// 上传图片文件
|
if (upload == 1) {
|
// console.log(data);
|
wx.uploadFile({
|
url: apiHost + url,
|
header: header,
|
filePath: data,
|
name: "file",
|
formData: {},
|
success: res => {
|
let data = JSON.parse(res.data);
|
//do something
|
resolve(data);
|
},
|
fail: res => {
|
reject(res);
|
},
|
});
|
} else {
|
wx.request({
|
url: apiHost + url,
|
data: data || {},
|
header: header,
|
method: method || "GET",
|
dataType: "json",
|
responseType: "text",
|
success: res => {
|
// console.log(res);
|
if (upload != 2) {
|
wx.hideLoading();
|
}
|
resolve(res);
|
if (res.data.code == 200) {
|
} else if (res.data.code == 500) {
|
if (res.data.msg == "Token失效") {
|
// 清空本地token
|
wx.setStorageSync("token", "");
|
wx.showModal({
|
title: "登录失效,是否登录",
|
content: "",
|
showCancel: true,
|
cancelText: "取消",
|
cancelColor: "#000000",
|
confirmText: "确定",
|
confirmColor: "#ff3a3a",
|
success: result => {
|
if (result.confirm) {
|
wx.navigateTo({
|
url: "/pages/index/index",
|
});
|
}
|
},
|
});
|
} else if (res.data.msg == "验证码已失效") {
|
wx.setStorageSync("token", "");
|
wx.showToast({
|
title: "验证码有误,请重新输入",
|
icon: "none",
|
duration: 1500,
|
mask: true,
|
});
|
}
|
} else if (res.data.code==600||res.data.code == 700) {
|
// 清空本地token
|
if(wx.getStorageSync('token')==""){
|
wx.showModal({
|
title: "您还未登录,是否登录",
|
content: "",
|
showCancel:false,
|
cancelColor: "#000000",
|
confirmText: "确定",
|
confirmColor: "#F07207",
|
success: result => {
|
if (result.confirm) {
|
wx.navigateTo({
|
url: "/pages/index/index",
|
});
|
}
|
},
|
});
|
setTimeout(()=>{
|
this.setData({
|
btnDisabled:false
|
})
|
},2000)
|
return
|
}else{
|
wx.showModal({
|
title: "登录失效,是否登录",
|
content: "",
|
showCancel:false,
|
cancelColor: "#000000",
|
confirmText: "确定",
|
confirmColor: "#F07207",
|
success: result => {
|
if (result.confirm) {
|
wx.navigateTo({
|
url: "/pages/index/index",
|
});
|
}
|
},
|
});
|
setTimeout(()=>{
|
this.setData({
|
btnDisabled:false
|
})
|
},2000)
|
return
|
}
|
|
} else {
|
wx.showToast({
|
title: res.data.msg,
|
icon: "none",
|
duration: 1500,
|
});
|
}
|
},
|
fail: res => {
|
console.log(res);
|
if (upload != 2) {
|
wx.hideLoading();
|
}
|
wx.showToast({
|
title: "网络异常,请检查网络",
|
icon: "none",
|
duration: 1500,
|
});
|
reject(res);
|
},
|
complete: res => {},
|
});
|
}
|
});
|
},
|
|
globalData: {
|
userInfo: null,
|
cityName:wx.getStorageSync('cityName')||'',
|
userLatitude:wx.getStorageSync('latitude')||'',
|
userLongitude:wx.getStorageSync('longitude')||'',
|
// Url:'http://192.168.0.80:80/user',
|
// Url:'http://39.108.148.228:80/user',
|
// Url:'https://okyueche.com:443/user',
|
// Url:'http://120.220.4.138:9591/user',
|
Url:' https://lianyudata.cn/user',
|
|
localSocket: {},
|
callback: function() {},
|
sockTaskStatus: false,
|
resData: {},
|
isIphoneX:false,
|
state:0,
|
comparisonToken:'',
|
timer: require('./utils/wxTime')
|
}
|
})
|