报名工具小程序初始代码
This commit is contained in:
32
common/Back.js
Normal file
32
common/Back.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const back = () => {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
|
||||
const onActivityResult = () => {
|
||||
var pages = getCurrentPages();
|
||||
var currPage = pages[pages.length - 1]; //当前页面
|
||||
let res = currPage.data;
|
||||
return res.onActivityResult
|
||||
}
|
||||
|
||||
// 返回数据到onShow()方法,取值 onActivityResult
|
||||
const setResult = (options) => {
|
||||
|
||||
var pages = getCurrentPages();
|
||||
var prevPage = pages[pages.length - 2]; //上一个页面
|
||||
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
|
||||
// 上一个页面最后设置userdata
|
||||
let res = prevPage.data;
|
||||
res.onActivityResult = options
|
||||
uni.navigateBack({ //返回
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
back,
|
||||
setResult,
|
||||
onActivityResult
|
||||
}
|
||||
79
common/ChooseUpload.js
Normal file
79
common/ChooseUpload.js
Normal file
@@ -0,0 +1,79 @@
|
||||
const chooseUpload = (num, url, type, formData) => {
|
||||
|
||||
if (num == undefined || num == null || num == "")
|
||||
num = 1
|
||||
|
||||
if (url == undefined || url == null || url == "")
|
||||
url = "aos/file/batchUploadImage"
|
||||
|
||||
if (type == undefined || type == null || type == "")
|
||||
type = "files"
|
||||
|
||||
if (formData == undefined || formData == null || formData == "")
|
||||
formData = {}
|
||||
|
||||
let totalImgs = 0;
|
||||
let httpUrl = [];
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
||||
uni.chooseImage({
|
||||
count: num, //默认1
|
||||
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: function(res) {
|
||||
|
||||
let chooseImgs = res.tempFilePaths;
|
||||
totalImgs = chooseImgs.length;
|
||||
console.log("chooseImgs", res.tempFilePaths)
|
||||
if (totalImgs > 0)
|
||||
uni.showLoading({
|
||||
title: '请稍后...',
|
||||
mask: true
|
||||
});
|
||||
|
||||
for (var i = 0; i < chooseImgs.length; i++) {
|
||||
uni.uploadFile({
|
||||
url: getApp().globalData.baseURL + url, //仅为示例,非真实的接口地址
|
||||
filePath: chooseImgs[i],
|
||||
name: type,
|
||||
formData: formData,
|
||||
success: (uploadFileRes) => {
|
||||
let data = JSON.parse(uploadFileRes.data)
|
||||
console.log("data", data)
|
||||
if (data.success) {
|
||||
if (data.data != undefined && data.data.length != 0)
|
||||
// 必须用变量去接受
|
||||
httpUrl = httpUrl.concat(data.data)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log("err-->", err)
|
||||
},
|
||||
complete: () => {
|
||||
totalImgs--;
|
||||
if (totalImgs <= 0) {
|
||||
uni.hideLoading();
|
||||
resolve({
|
||||
"num": chooseImgs.length,
|
||||
"urls": httpUrl
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
fail: function(res) {
|
||||
resolve({
|
||||
"num": 0,
|
||||
"urls": []
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
export default chooseUpload
|
||||
37
common/Distance.js
Normal file
37
common/Distance.js
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @desc 根据两点间的经纬度计算距离
|
||||
* @param float $lat 纬度值
|
||||
* @param float $lng 经度值
|
||||
*/
|
||||
const getDistance = (lat1, lon1, lat2, lon2) => {
|
||||
console.log(lat1)
|
||||
console.log(lon1)
|
||||
console.log(lat2)
|
||||
console.log(lon2)
|
||||
let ew1, ns1, ew2, ns2;
|
||||
let distance;
|
||||
// 角度转换为弧度
|
||||
ew1 = lon1 * 0.01745329252;
|
||||
ns1 = lat1 * 0.01745329252;
|
||||
ew2 = lon2 * 0.01745329252;
|
||||
ns2 = lat2 * 0.01745329252;
|
||||
distance = distance = Math.sin(ns1) * Math.sin(ns2) + Math.cos(ns1) * Math.cos(ns2) *
|
||||
Math.cos(ew1 - ew2);
|
||||
// 调整到[-1..1]范围内,避免溢出
|
||||
if (distance > 1.0)
|
||||
distance = 1.0;
|
||||
else if (distance < -1.0)
|
||||
distance = -1.0;
|
||||
// 求大圆劣弧长度
|
||||
distance = 6370693.5 * Math.acos(distance);
|
||||
let isBig = false; // 是否为大于等于1000m
|
||||
if (distance >= 1000) {
|
||||
distance /= 1000;
|
||||
isBig = true;
|
||||
}
|
||||
|
||||
return distance.toFixed(2) + (isBig ? "km" : "m");
|
||||
|
||||
}
|
||||
|
||||
export default getDistance
|
||||
72
common/GameCache.js
Normal file
72
common/GameCache.js
Normal file
@@ -0,0 +1,72 @@
|
||||
const writeGameCahce = (gameData) => {
|
||||
gameData.isCache = true
|
||||
uni.setStorageSync("cache", true);
|
||||
uni.setStorageSync("cacheData", gameData);
|
||||
console.log('保存game缓存成功')
|
||||
}
|
||||
|
||||
const clearGameCache = (gameData) => {
|
||||
if (gameData.isCache) {
|
||||
uni.setStorageSync("cache", false);
|
||||
uni.setStorageSync("cacheData", {});
|
||||
console.log('清除game缓存成功')
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用读取时 最好 hasCache() 返回True 在进行调用
|
||||
*/
|
||||
const readGameCahce = () => {
|
||||
|
||||
let value
|
||||
try {
|
||||
value = uni.getStorageSync("cacheData");
|
||||
if (value) {
|
||||
console.log(value);
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
value = null
|
||||
console.log("error");
|
||||
}
|
||||
|
||||
if (value == undefined || value == null || value === "" || value === "null") {
|
||||
return {};
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有缓存
|
||||
*/
|
||||
const hasCache = () => {
|
||||
|
||||
let value
|
||||
try {
|
||||
value = uni.getStorageSync("cache");
|
||||
if (value) {
|
||||
console.log(value);
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
value = null
|
||||
console.log("error");
|
||||
}
|
||||
|
||||
if (value == undefined || value == null || value === "" || value === "null") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
export {
|
||||
writeGameCahce,
|
||||
clearGameCache,
|
||||
readGameCahce,
|
||||
hasCache
|
||||
}
|
||||
465
common/Http.js
Normal file
465
common/Http.js
Normal file
@@ -0,0 +1,465 @@
|
||||
const baseImgURL = 'https://www.ourpyw.com/static/uni-app/';
|
||||
|
||||
import {
|
||||
isEmpty
|
||||
} from './TextUtils.js'
|
||||
/**
|
||||
* 通用网络请求
|
||||
* loading: 是否显示网络请求时的loading,默认不提示【允许不传值】
|
||||
* showError: 是否显示错误信息,默认显示(如有特殊code需要自己判断逻辑时,请改成false)【允许不传值】
|
||||
* method: 网络请求方式 GET/POST/PUT【禁止不传值】
|
||||
* paramsType: 网络请求传参方式 JSON/FORM【禁止不传值】
|
||||
* autoUrl: 自动拼接网址,默认是 getApp().globalData.baseURL+ 相对地址【允许不传值】false认为非本项目域名是第三方接口
|
||||
* 响应:
|
||||
* 响应到success则代表网络请求成功,直接返回对象,需自行判断逻辑
|
||||
* 响应到fail则代表无网络或无连接情况
|
||||
*/
|
||||
const http = (options) => {
|
||||
|
||||
console.log(getApp().globalData.token)
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络请求info', options)
|
||||
}
|
||||
|
||||
if (isEmpty(options.loading)) {
|
||||
// 显示loading(默认不显示loading)
|
||||
options.loading = false
|
||||
}
|
||||
|
||||
if (isEmpty(options.showError)) {
|
||||
// 失败弹出提示(默认提示错误信息)
|
||||
options.showError = true
|
||||
}
|
||||
// if (isEmpty(options.method) || (options.method != "POST" && options.method != "GET"&& options.method != "PUT")) {
|
||||
if (isEmpty(options.method) || (options.method != "POST" && options.method != "GET" && options.method != "PUT" && options.method != "DELETE")) {
|
||||
uni.showToast({
|
||||
title: "网络请求 'method' 为 POST/GET/PUT",
|
||||
icon: 'none',
|
||||
duration: 4000
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if ("JSON" == options.paramsType) {
|
||||
options.paramsType = "application/json"
|
||||
} else if ("FORM" == options.paramsType) {
|
||||
options.paramsType = "application/x-www-form-urlencoded"
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "网络请求 'paramsType' 为 JSON/FORM",
|
||||
icon: 'none',
|
||||
duration: 4000
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (isEmpty(options.autoUrl)) {
|
||||
// 默认拼接网址
|
||||
options.autoUrl = true
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
if (options.loading) {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
// 默认遮罩出现可以继续操作
|
||||
mask: options.load || true
|
||||
});
|
||||
}
|
||||
|
||||
var url = options.autoUrl ? getApp().globalData.baseURL + options.url : options.url
|
||||
|
||||
uni.request({
|
||||
// 组装请求地址
|
||||
url: url,
|
||||
// 请求方式 GET POST
|
||||
method: options.method,
|
||||
header: {
|
||||
// 传参方式
|
||||
'content-type': options.paramsType,
|
||||
'token': getApp().globalData.token
|
||||
},
|
||||
// 具体参数
|
||||
data: options.data,
|
||||
success: res => {
|
||||
|
||||
// 关闭显示框
|
||||
uni.hideLoading();
|
||||
|
||||
console.log(res)
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络路径', url)
|
||||
console.log('Http网络请求结果', JSON.parse(JSON.stringify(res.data)))
|
||||
}
|
||||
|
||||
if (res.statusCode == 200) {
|
||||
// 自动拼接类型,认为是公司后台提供接口服务,按照规定标准进行检查返回内容
|
||||
|
||||
if (options.autoUrl) {
|
||||
|
||||
// 进行success字段检查
|
||||
|
||||
if (!res.data.success) {
|
||||
|
||||
|
||||
if ("5000" == res.data.code) {
|
||||
|
||||
uni.setStorageSync("memberSid", null);
|
||||
getApp().globalData.isLogin = false
|
||||
getApp().globalData.memberSid = null
|
||||
|
||||
uni.showToast({
|
||||
title: "出错了,请重试",
|
||||
// 保证文字长度
|
||||
icon: "none",
|
||||
duration: 3000
|
||||
})
|
||||
|
||||
return
|
||||
|
||||
} else {
|
||||
// 错误提示
|
||||
if (options.showError) {
|
||||
|
||||
if (isEmpty(res.data)) {
|
||||
// 未成功获取到服务器返回的json
|
||||
uni.showToast({
|
||||
// 不能超过7个字
|
||||
title: "服务器响应为空",
|
||||
icon: "error"
|
||||
})
|
||||
} else {
|
||||
let errorMsg = res.data.msg
|
||||
|
||||
if (isEmpty(errorMsg)) {
|
||||
errorMsg = url + "服务器未返回错误信息"
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: errorMsg,
|
||||
// 保证文字长度
|
||||
icon: "none",
|
||||
duration: 3000
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 直接返回Response
|
||||
resolve(res.data)
|
||||
} else {
|
||||
|
||||
uni.showToast({
|
||||
title: res.statusCode + ":" + res.data.error,
|
||||
// 保证文字长度
|
||||
icon: "none",
|
||||
duration: 3000
|
||||
})
|
||||
|
||||
// 返回错误数据
|
||||
reject(res.data.error)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
// 关闭显示框
|
||||
uni.hideLoading();
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log("Http网络请求fail", err)
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: '请检查网络',
|
||||
icon: 'error'
|
||||
})
|
||||
// 返回错误数据
|
||||
reject(err)
|
||||
},
|
||||
complete: () => {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
const upload = (options) => {
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络请求info', options)
|
||||
}
|
||||
|
||||
if (options.loading == undefined || options.loading == null || options.loading === "") {
|
||||
options.loading = false
|
||||
}
|
||||
|
||||
|
||||
if (options.key == undefined || options.key == null || options.key === "") {
|
||||
options.key = "file"
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
if (options.loading) {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask: options.load || true // 默认遮罩出现可以继续操作
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
uni.uploadFile({
|
||||
|
||||
url: getApp().globalData.baseURL + options.url,
|
||||
filePath: options.filePath,
|
||||
name: options.key,
|
||||
formData: options.data,
|
||||
|
||||
success: (res) => {
|
||||
uni.hideLoading();
|
||||
|
||||
// 不知道什么谜之操作 需要手动转换成json对象
|
||||
res.data = JSON.parse(res.data)
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络路径', url)
|
||||
console.log('Http网络请求结果', JSON.stringify(res.data))
|
||||
}
|
||||
|
||||
if (res.data.success) {
|
||||
|
||||
// 成功提示
|
||||
if (options.toast) {
|
||||
uni.showToast({
|
||||
title: res.data.msg,
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
|
||||
// 成功数据返回
|
||||
resolve(res.data)
|
||||
} else {
|
||||
|
||||
// 错误提示
|
||||
uni.showToast({
|
||||
title: res.data.msg,
|
||||
icon: "none"
|
||||
})
|
||||
// 返回错误数据
|
||||
reject(res.data)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.hideLoading();
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: '请检查网络连接',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
// 返回错误数据
|
||||
reject(err)
|
||||
},
|
||||
complete: () => {
|
||||
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '服务端异常',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
// 返回错误数据
|
||||
reject(err)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
const httpCookie = (options) => {
|
||||
|
||||
if (isDebug) {
|
||||
console.log('Http网络请求info', options)
|
||||
}
|
||||
|
||||
if (options.loading == undefined || options.loading == null || options.loading === "") {
|
||||
options.loading = false
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
if (options.loading) {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask: options.load || true // 默认遮罩出现可以继续操作
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
uni.request({
|
||||
|
||||
url: baseURL + options.url,
|
||||
method: 'POST',
|
||||
header: {
|
||||
'content-type': 'application/x-www-form-urlencoded',
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
'Cookie': options.cookie
|
||||
// #endif
|
||||
|
||||
},
|
||||
data: options.data,
|
||||
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
|
||||
if (isDebug) {
|
||||
console.log('Http网络路径', url)
|
||||
console.log('Http网络请求结果', res.data)
|
||||
}
|
||||
|
||||
if (res.data.success) {
|
||||
|
||||
// 成功提示
|
||||
if (options.toast) {
|
||||
uni.showToast({
|
||||
title: res.data.msg,
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
|
||||
// 成功数据返回
|
||||
resolve(res.data)
|
||||
} else {
|
||||
|
||||
// 错误提示
|
||||
uni.showToast({
|
||||
title: res.data.msg,
|
||||
icon: "none"
|
||||
})
|
||||
// 返回错误数据
|
||||
reject(res.data)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
uni.hideLoading();
|
||||
|
||||
if (isDebug) {
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: '请检查网络连接',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
// 返回错误数据
|
||||
reject(err)
|
||||
},
|
||||
complete: () => {
|
||||
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '服务端异常',
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
// 返回错误数据
|
||||
reject(err)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 加载其他网站的地址
|
||||
const httpOtherUrl = (options) => {
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http第三方网络请求info', options)
|
||||
}
|
||||
|
||||
if (options.loading == undefined || options.loading == null || options.loading === "") {
|
||||
options.loading = false
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
if (options.loading) {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask: options.load || true // 默认遮罩出现可以继续操作
|
||||
});
|
||||
}
|
||||
|
||||
try {
|
||||
uni.request({
|
||||
url: options.url,
|
||||
method: 'GET',
|
||||
data: options.data,
|
||||
success: res => {
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http第三方网络请求结果', res.data)
|
||||
}
|
||||
|
||||
uni.hideLoading();
|
||||
resolve(res.data)
|
||||
},
|
||||
fail: (err) => {
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http第三方网络请求错误', err)
|
||||
}
|
||||
|
||||
uni.hideLoading();
|
||||
|
||||
reject(err)
|
||||
|
||||
uni.showToast({
|
||||
title: '请检查网络连接',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
complete: () => {
|
||||
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
uni.hideLoading();
|
||||
|
||||
reject(e)
|
||||
|
||||
uni.showToast({
|
||||
title: '服务端异常',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
export {
|
||||
http,
|
||||
httpOtherUrl,
|
||||
baseImgURL,
|
||||
httpCookie,
|
||||
upload
|
||||
}
|
||||
48
common/PreferenceHelper.js
Normal file
48
common/PreferenceHelper.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const write = (keyStr, keyValue) => {
|
||||
uni.setStorageSync(keyStr, keyValue);
|
||||
console.log('保存' + keyStr + '成功')
|
||||
}
|
||||
|
||||
const write2 = (keyStr, objectValue) => {
|
||||
uni.setStorageSync(keyStr, objectValue);
|
||||
console.log('保存' + keyStr + '成功')
|
||||
}
|
||||
|
||||
const read = (keyStr) => {
|
||||
|
||||
let value
|
||||
try {
|
||||
value = uni.getStorageSync(keyStr);
|
||||
if (value) {
|
||||
console.log(value);
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
value = null
|
||||
console.log("error");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
const read2 = (keyStr) => {
|
||||
|
||||
let value
|
||||
try {
|
||||
value = uni.getStorageSync(keyStr);
|
||||
if (value) {
|
||||
console.log(value);
|
||||
}
|
||||
} catch (e) {
|
||||
// error
|
||||
value = null
|
||||
console.log("error");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
export {
|
||||
write,
|
||||
read,
|
||||
write2,
|
||||
read2
|
||||
}
|
||||
5
common/PxToRpxOrPxToUpx.js
Normal file
5
common/PxToRpxOrPxToUpx.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const px2Upx = (windowWidth, px) => {
|
||||
return px / (windowWidth / 750)
|
||||
}
|
||||
|
||||
export default px2Upx
|
||||
11
common/TextUtils.js
Normal file
11
common/TextUtils.js
Normal file
@@ -0,0 +1,11 @@
|
||||
const isEmpty = (obj) => {
|
||||
if (obj == undefined || obj == null || obj === "" || obj === "null") {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
isEmpty
|
||||
}
|
||||
201
common/Time.js
Normal file
201
common/Time.js
Normal file
@@ -0,0 +1,201 @@
|
||||
const timeText = (time, format) => {
|
||||
|
||||
if (format == null) {
|
||||
format = "yyyy-MM-dd HH:mm:ss"
|
||||
}
|
||||
|
||||
let timeStr = "";
|
||||
|
||||
let todayEndTime = getTodayEndTime();
|
||||
let todayStartTime = getTodayStartTime();
|
||||
let thisWeekStartTime = getThisWeekStartTime();
|
||||
|
||||
console.log("kaishi" + todayStartTime)
|
||||
console.log("jieshu" + thisWeekStartTime)
|
||||
|
||||
|
||||
// 今天23:59:59:999之后
|
||||
if (time > todayEndTime) {
|
||||
// 显示年月日
|
||||
timeStr = timeFormat(time, format)
|
||||
} else if (thisWeekStartTime > time) {
|
||||
// 此周前(本周星期一之前)
|
||||
|
||||
let i = format.indexOf(" ");
|
||||
let formatStyle = format.substring(i + 1);
|
||||
let formatNew = timeFormat(time, formatStyle);
|
||||
|
||||
if (time > todayStartTime - 86399999 && time < todayStartTime) {
|
||||
// 显示昨天
|
||||
timeStr = "昨天 " + formatNew;
|
||||
} else {
|
||||
timeStr = timeFormat(time, format)
|
||||
}
|
||||
|
||||
} else {
|
||||
// 显示星期 时分
|
||||
let i = format.indexOf(" ");
|
||||
let formatStyle = format.substring(i + 1);
|
||||
let formatNew = timeFormat(time, formatStyle);
|
||||
|
||||
if (todayStartTime - 86399999 > time) {
|
||||
// 显示星期
|
||||
timeStr = getWeekStr(time) + " " + formatNew
|
||||
} else if (time > todayStartTime - 86399999 && time < todayStartTime) {
|
||||
// 显示昨天
|
||||
timeStr = "昨天 " + formatNew;
|
||||
} else {
|
||||
// 显示
|
||||
timeStr = formatNew;
|
||||
}
|
||||
}
|
||||
|
||||
return timeStr
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本周开始时间
|
||||
*/
|
||||
const getThisWeekStartTime = () => {
|
||||
|
||||
let todayEndTime = getTodayEndTime();
|
||||
|
||||
var date = new Date();
|
||||
var weekDays = date.getDay();
|
||||
var weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
|
||||
var week = weeks[weekDays];
|
||||
|
||||
return todayEndTime + 1 - weekDays * 86400000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取今天是周几
|
||||
*/
|
||||
const getWeekStr = (time) => {
|
||||
|
||||
|
||||
if (time instanceof Date) {
|
||||
|
||||
} else {
|
||||
let temp = new Date(time);
|
||||
time = temp;
|
||||
}
|
||||
|
||||
let todayEndTime = getTodayEndTime();
|
||||
|
||||
var weekDays = time.getDay();
|
||||
var weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
|
||||
var week = weeks[weekDays];
|
||||
|
||||
return week;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取今天开始时间
|
||||
*/
|
||||
const getTodayStartTime = () => {
|
||||
|
||||
let startTime = 0;
|
||||
|
||||
let myDate = new Date();
|
||||
|
||||
let current = myDate.getTime();
|
||||
|
||||
try {
|
||||
|
||||
let format = timeFormat(myDate);
|
||||
let split = format.split(" ");
|
||||
let time = split[1].split(":");
|
||||
|
||||
startTime = current - time[0] * 60 * 60 * 1000 - time[1] * 60 * 1000 - time[2] * 1000 - time[3]
|
||||
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
return startTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取今天结束时间
|
||||
*/
|
||||
const getTodayEndTime = () => {
|
||||
|
||||
let endTime = 0;
|
||||
|
||||
let myDate = new Date();
|
||||
|
||||
let current = myDate.getTime();
|
||||
|
||||
try {
|
||||
|
||||
let format = timeFormat(myDate);
|
||||
let split = format.split(" ");
|
||||
let time = split[1].split(":");
|
||||
|
||||
let startTime = current - time[0] * 60 * 60 * 1000 - time[1] * 60 * 1000 - time[2] * 1000 - time[3]
|
||||
endTime = startTime + 86399999;
|
||||
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
return endTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化时间
|
||||
* 支持时间戳 以及 date类型
|
||||
*/
|
||||
const timeFormat = (date, formoat) => {
|
||||
|
||||
if (date == undefined || date == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (date instanceof Date) {
|
||||
console.log("正确")
|
||||
} else {
|
||||
let temp = new Date(Number(date));
|
||||
date = temp;
|
||||
}
|
||||
|
||||
let fmt = formoat;
|
||||
|
||||
if (fmt == null) {
|
||||
fmt = "yyyy-MM-dd HH:mm:ss:SSS"
|
||||
}
|
||||
|
||||
|
||||
let ret;
|
||||
const opt = {
|
||||
"y+": date.getFullYear().toString(), // 年
|
||||
"M+": (date.getMonth() + 1).toString(), // 月
|
||||
"d+": date.getDate().toString(), // 日
|
||||
"H+": date.getHours().toString(), // 时
|
||||
"m+": date.getMinutes().toString(), // 分
|
||||
"s+": date.getSeconds().toString(), // 秒
|
||||
"S+": date.getMilliseconds().toString()
|
||||
|
||||
};
|
||||
for (let k in opt) {
|
||||
ret = new RegExp("(" + k + ")").exec(fmt);
|
||||
if (ret) {
|
||||
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
|
||||
};
|
||||
};
|
||||
return fmt;
|
||||
}
|
||||
|
||||
const currentMillions = () => {
|
||||
let current = new Date().getTime();
|
||||
return current;
|
||||
}
|
||||
|
||||
export {
|
||||
timeText,
|
||||
timeFormat,
|
||||
currentMillions,
|
||||
getWeekStr,
|
||||
getTodayEndTime
|
||||
}
|
||||
8
common/Toast.js
Normal file
8
common/Toast.js
Normal file
@@ -0,0 +1,8 @@
|
||||
const toast = (msg) => {
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
|
||||
export default toast
|
||||
12
common/intent.js
Normal file
12
common/intent.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const putWEBExtra = (url) => {
|
||||
return encodeURIComponent(url)
|
||||
}
|
||||
|
||||
const getWEBExtra = (options) => {
|
||||
return decodeURIComponent(options.url)
|
||||
}
|
||||
|
||||
export {
|
||||
putWEBExtra,
|
||||
getWEBExtra
|
||||
}
|
||||
353
common/utils.js
Normal file
353
common/utils.js
Normal file
@@ -0,0 +1,353 @@
|
||||
/**
|
||||
* @说明:工具集
|
||||
* @作者:陈万照
|
||||
* @公司:山东标梵互动技术有限公司
|
||||
* @官网:http://biaofun.com/
|
||||
* @版本:v1.0.0
|
||||
* @时间:2020年4月28日11:28:13
|
||||
*/
|
||||
export default {
|
||||
/**
|
||||
* 同步 try catch 的进一步封装处理
|
||||
* 使用方法:
|
||||
* let [err, res] = await this.$utils.asyncTasks(Promise函数);
|
||||
* if(res) 成功
|
||||
* if(err) 失败
|
||||
*/
|
||||
asyncTasks(promise) {
|
||||
return promise.then(data => {
|
||||
return [null, data];
|
||||
}).catch(err => [err]);
|
||||
},
|
||||
|
||||
/**
|
||||
* 精确判断数据是否是 Object 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isObject(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Object]' && val !== null && val !== undefined;
|
||||
},
|
||||
|
||||
/**
|
||||
* 判断数据是否是 Array 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isArray(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Array]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 判断数据是否是 String 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isString(val) {
|
||||
return Object.prototype.toString.call(val) === '[object String]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 精确判断数据是否是 Date 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isDate(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Date]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 精确判断数据是否是 Function 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isFunction(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Function]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 精确判断数据是否是 Number 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isNumber(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Number]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 精确判断数据是否是 Boolean 类型
|
||||
* @param {Any} val 要判断的数据
|
||||
* @returns {Boolean} true:是;false:不是;
|
||||
*/
|
||||
isBoolean(val) {
|
||||
return Object.prototype.toString.call(val) === '[object Boolean]';
|
||||
},
|
||||
|
||||
/**
|
||||
* 判断 URL 是否是绝对 URL。
|
||||
* @param {String} url 要判断的 URL
|
||||
* @return {Boolean} true:是绝对URL;false:不是绝对URL;
|
||||
*/
|
||||
isAbsoluteURL(url) {
|
||||
// 如果 URL 以 “<scheme>://” 或 “//”(协议相对URL)开头,则认为它是绝对的
|
||||
// RFC 3986 将方案名称定义为以字母开头的字符序列,然后是字母,数字,加号,句点或连字符的任意组合
|
||||
return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
|
||||
},
|
||||
|
||||
/**
|
||||
* 合并 baseURL 和相对 URL 成一个完整的 URL
|
||||
* @param {String} baseURL baseURL
|
||||
* @param {String} relativeURL 相对 URL
|
||||
* @returns {String} 返回组合后的完整 URL
|
||||
*/
|
||||
combineURLs(baseURL, relativeURL) {
|
||||
return relativeURL && this.isString(relativeURL) && this.isString(baseURL) ? baseURL.replace(/\/+$/, '') + '/' +
|
||||
relativeURL.replace(/^\/+/, '') : baseURL;
|
||||
},
|
||||
|
||||
/**
|
||||
* 深度合并对象,只支持合并两个对象,该方法不会改变原有的对象
|
||||
* @param {Object} FirstOBJ 第一个对象
|
||||
* @param {Object} SecondOBJ 第二个对象
|
||||
* @return {Object} 返回深度合并后的对象
|
||||
*/
|
||||
deepMargeObject(FirstOBJ, SecondOBJ) {
|
||||
let ResultOBJ = {};
|
||||
for (let key in FirstOBJ) {
|
||||
ResultOBJ[key] = ResultOBJ[key] && ResultOBJ[key].toString() === "[object Object]" ? this.deepMargeObject(
|
||||
ResultOBJ[
|
||||
key], FirstOBJ[key]) : ResultOBJ[key] = FirstOBJ[key];
|
||||
}
|
||||
for (let key in SecondOBJ) {
|
||||
ResultOBJ[key] = ResultOBJ[key] && ResultOBJ[key].toString() === "[object Object]" ? this.deepMargeObject(
|
||||
ResultOBJ[
|
||||
key], SecondOBJ[key]) : ResultOBJ[key] = SecondOBJ[key];
|
||||
}
|
||||
return ResultOBJ;
|
||||
},
|
||||
|
||||
/**
|
||||
* 生成指定长度的随机字符串
|
||||
* @param {Number} min 最小程度
|
||||
* @param {Number} max 最大长度
|
||||
* @return {String} 返回生成的字符串
|
||||
*/
|
||||
randomString(min, max) {
|
||||
let returnStr = "",
|
||||
range = (max ? Math.round(Math.random() * (max - min)) + min : min),
|
||||
arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
'k', 'l',
|
||||
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
|
||||
'H', 'I',
|
||||
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
|
||||
];
|
||||
for (let i = 0; i < range; i++) {
|
||||
let index = Math.round(Math.random() * (arr.length - 1));
|
||||
returnStr += arr[index];
|
||||
}
|
||||
return returnStr;
|
||||
},
|
||||
|
||||
/**
|
||||
* 格式化日期
|
||||
* @param {Date|String} date 日期或日期字符串
|
||||
*/
|
||||
formatDate(date) {
|
||||
let YYYY = null;
|
||||
let M = null;
|
||||
let MM = null;
|
||||
let D = null;
|
||||
let DD = null;
|
||||
let h = null;
|
||||
let hh = null;
|
||||
let m = null;
|
||||
let mm = null;
|
||||
let s = null;
|
||||
let ss = null;
|
||||
let ms = null;
|
||||
let ms2 = null;
|
||||
let ms3 = null;
|
||||
let ms4 = null;
|
||||
let dt = null;
|
||||
|
||||
// 如果 date 是 String 类型
|
||||
if (date && this.isString(date)) {
|
||||
// 真机运行时,如果直接用 new Date('YYYY-MM-DD hh:mm:ss') 会报 Invalid Date 错误,所以采用下面的方式创建日期
|
||||
let dtArr = date.replace(/\//g, '.').replace(/-/g, '.').replace(/:/g, '.').replace(/T/g, ' ').replace(' ',
|
||||
'.').replace(
|
||||
'Z', '').split('.');
|
||||
|
||||
let year = 2020;
|
||||
let month = 12;
|
||||
let day = 18;
|
||||
let hour = 0;
|
||||
let minute = 0;
|
||||
let second = 0;
|
||||
let millisecond = 0;
|
||||
|
||||
// 年
|
||||
if (dtArr.length > 0 && !isNaN(dtArr[0])) {
|
||||
year = parseInt(dtArr[0]);
|
||||
}
|
||||
// 月
|
||||
if (dtArr.length > 1 && !isNaN(dtArr[1])) {
|
||||
month = parseInt(dtArr[1]);
|
||||
}
|
||||
// 日
|
||||
if (dtArr.length > 2 && !isNaN(dtArr[2])) {
|
||||
day = parseInt(dtArr[2]);
|
||||
}
|
||||
// 时
|
||||
if (dtArr.length > 3 && !isNaN(dtArr[3])) {
|
||||
hour = parseInt(dtArr[3]);
|
||||
}
|
||||
// 分
|
||||
if (dtArr.length > 4 && !isNaN(dtArr[4])) {
|
||||
minute = parseInt(dtArr[4]);
|
||||
}
|
||||
// 秒
|
||||
if (dtArr.length > 5 && !isNaN(dtArr[5])) {
|
||||
second = parseInt(dtArr[5]);
|
||||
}
|
||||
// 毫秒
|
||||
if (dtArr.length > 6 && !isNaN(dtArr[6])) {
|
||||
millisecond = parseInt(dtArr[6]);
|
||||
}
|
||||
|
||||
date = new Date(year, month - 1, day, hour, minute, second, millisecond);
|
||||
}
|
||||
|
||||
// 如果 date 是 Date 类型
|
||||
if (date && this.isDate(date)) {
|
||||
YYYY = date.getFullYear();
|
||||
M = date.getMonth() + 1;
|
||||
MM = M >= 10 ? M : '0' + M;
|
||||
D = date.getDate();
|
||||
DD = D >= 10 ? D : '0' + D;
|
||||
h = date.getHours();
|
||||
hh = h >= 10 ? h : '0' + h;
|
||||
m = date.getMinutes();
|
||||
mm = m >= 10 ? m : '0' + m;
|
||||
s = date.getSeconds();
|
||||
ss = s >= 10 ? s : '0' + s;
|
||||
ms = date.getMilliseconds();
|
||||
ms2 = ms;
|
||||
ms3 = ms;
|
||||
ms4 = ms;
|
||||
if (ms < 10) {
|
||||
ms2 = '0' + ms;
|
||||
ms3 = '00' + ms;
|
||||
ms4 = '000' + ms;
|
||||
} else if (ms < 100) {
|
||||
ms3 = '0' + ms;
|
||||
ms4 = '00' + ms;
|
||||
} else {
|
||||
ms4 = '0' + ms;
|
||||
}
|
||||
}
|
||||
|
||||
// 返回的数据对象
|
||||
let result = {
|
||||
YYYY: YYYY,
|
||||
MM: MM,
|
||||
M: M,
|
||||
DD: DD,
|
||||
D: D,
|
||||
hh: hh,
|
||||
h: h,
|
||||
mm: mm,
|
||||
m: m,
|
||||
ss: ss,
|
||||
s: s,
|
||||
ms: ms,
|
||||
ms2: ms2,
|
||||
ms3: ms3,
|
||||
ms4: ms4,
|
||||
dt: date,
|
||||
f1: `${YYYY}-${MM}-${DD}`,
|
||||
f2: `${YYYY}年${M}月${D}日`,
|
||||
f3: `${YYYY}-${M}-${D} ${hh}:${mm}`,
|
||||
f4: `${h}:${m}:${s}`,
|
||||
f5: `${MM}-${DD}`,
|
||||
f6: `${YYYY}-${MM}`,
|
||||
f7: `${YYYY}年${M}月`,
|
||||
f8: `${h}:${m}`,
|
||||
f9: `${M}月${D}日`,
|
||||
notes: 'YYYY(年),MM(月,补0),M(月,不补0),DD(日,补0),D(日,不补0),hh(时,补0),h(时,不补0),mm(分,补0),m(分,不补0),ss(秒,补0),s(秒,不补0),ms(毫秒,不补0),ms2(毫秒,补0到2位),ms3(毫秒,补0到3位),ms4(毫秒,补0到4位),其余的f1,f2,... 看格式就知道了!'
|
||||
};
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* 数字转中文
|
||||
* @param {Number} num 数字
|
||||
*/
|
||||
numberToChinese(num) {
|
||||
if (!/^\d*(\.\d*)?$/.test(num)) return "Number is wrong!";
|
||||
let AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
|
||||
let BB = new Array("", "十", "百", "千", "万", "亿", "点", "");
|
||||
let a = ("" + num).replace(/(^0*)/g, "").split("."),
|
||||
k = 0,
|
||||
re = "";
|
||||
for (let i = a[0].length - 1; i >= 0; i--) {
|
||||
switch (k) {
|
||||
case 0:
|
||||
re = BB[7] + re;
|
||||
break;
|
||||
case 4:
|
||||
if (!new RegExp("0{4}\\d{" + (a[0].length - i - 1) + "}$").test(a[0]))
|
||||
re = BB[4] + re;
|
||||
break;
|
||||
case 8:
|
||||
re = BB[5] + re;
|
||||
BB[7] = BB[5];
|
||||
k = 0;
|
||||
break;
|
||||
}
|
||||
if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0) re = AA[0] + re;
|
||||
if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re;
|
||||
k++;
|
||||
}
|
||||
if (a.length > 1) //加上小数部分(如果有小数部分)
|
||||
{
|
||||
re += BB[6];
|
||||
for (let i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)];
|
||||
}
|
||||
return re;
|
||||
},
|
||||
|
||||
/**
|
||||
* 计算两个经纬度点之间的距离
|
||||
* @param {Number} lng1 第一个点的经度
|
||||
* @param {Number} lat1 第一个点的纬度
|
||||
* @param {Number} lng2 第二个点的经度
|
||||
* @param {Number} lat2 第二个点的纬度
|
||||
*/
|
||||
calcDistance(lng1, lat1, lng2, lat2) {
|
||||
var radLat1 = lat1 * Math.PI / 180.0;
|
||||
var radLat2 = lat2 * Math.PI / 180.0;
|
||||
var a = radLat1 - radLat2;
|
||||
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
|
||||
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
|
||||
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
|
||||
s = s * 6378.137; // EARTH_RADIUS;
|
||||
s = Math.round(s * 10000) / 10000;
|
||||
return s;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取数组最小值的下标
|
||||
* @param {Array} arr 数组
|
||||
*/
|
||||
getArrayMixValueIndex(arrar) {
|
||||
let min = arrar[0];
|
||||
let index = 0;
|
||||
for (let i = 0; i < arrar.length; i++) {
|
||||
if (min > arrar[i]) {
|
||||
min = arrar[i];
|
||||
index = i;
|
||||
}
|
||||
}
|
||||
return index;
|
||||
}
|
||||
}
|
||||
170
common/wxAuthLogin.js
Normal file
170
common/wxAuthLogin.js
Normal file
@@ -0,0 +1,170 @@
|
||||
import {
|
||||
isEmpty
|
||||
} from './TextUtils.js'
|
||||
|
||||
const wxAuthLogin = () => {
|
||||
// 判断是否已经登陆
|
||||
if (getApp().globalData.isLogin) {
|
||||
return new Promise((resolve, reject) => {
|
||||
resolve(getApp().globalData.sysUserSid)
|
||||
})
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
// 授权登录
|
||||
wx.login({
|
||||
success: function(res) {
|
||||
if (res.code) {
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络请求info', {
|
||||
"wxCode": res.code
|
||||
})
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask: true
|
||||
});
|
||||
|
||||
uni.request({
|
||||
// 组装请求地址
|
||||
url: getApp().globalData.wxAuthLoginURL,
|
||||
// 请求方式 GET POST
|
||||
method: "GET",
|
||||
header: {
|
||||
// 传参方式
|
||||
'content-type': "application/x-www-form-urlencoded"
|
||||
},
|
||||
// 具体参数
|
||||
data: {
|
||||
"wxCode": res.code
|
||||
},
|
||||
|
||||
success: res => {
|
||||
|
||||
// 关闭显示框
|
||||
uni.hideLoading();
|
||||
|
||||
console.log(res)
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络路径', getApp().globalData.wxAuthLoginURL)
|
||||
console.log('Http网络请求结果', JSON.parse(JSON.stringify(
|
||||
res.data)))
|
||||
}
|
||||
|
||||
|
||||
if (res.statusCode == 200) {
|
||||
// 下面是接口返回的数据
|
||||
if (!res.data.success) {
|
||||
if ("A01001" == res.data.code || "A01002" == res.data.code ) {
|
||||
// 绑定手机号
|
||||
uni.navigateTo({
|
||||
url: '../index/BindPhone?sysUserWxAuthSid=' + res.data.data
|
||||
})
|
||||
// reject("绑定手机号")
|
||||
}
|
||||
else {
|
||||
// 错误提示
|
||||
if (isEmpty(res.data)) {
|
||||
// 未成功获取到服务器返回的json
|
||||
uni.showToast({
|
||||
// 不能超过7个字
|
||||
title: "服务器响应为空",
|
||||
icon: "error"
|
||||
})
|
||||
reject("服务器响应为空")
|
||||
} else {
|
||||
|
||||
let errorMsg = res.data.msg
|
||||
|
||||
if (isEmpty(errorMsg)) {
|
||||
errorMsg = url+"服务器未返回错误信息"
|
||||
}
|
||||
|
||||
uni.showToast({
|
||||
title: errorMsg,
|
||||
// 保证文字长度
|
||||
icon: "none",
|
||||
duration: 3000
|
||||
})
|
||||
}
|
||||
|
||||
reject(errorMsg)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 保存
|
||||
uni.setStorageSync("sysUserSid", res.data.data.sysUserSid);
|
||||
uni.setStorageSync("isLogin", res.data.data.isLogin);
|
||||
getApp().globalData.isLogin = res.data.data.isLogin
|
||||
getApp().globalData.sysUserSid = res.data.data.sysUserSid
|
||||
getApp().globalData.token = res.data.data.token
|
||||
|
||||
// 直接返回Response
|
||||
resolve(getApp().globalData.sysUserSid)
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
uni.showToast({
|
||||
title: res.statusCode + ":" + res
|
||||
.errMsg,
|
||||
// 保证文字长度
|
||||
icon: "none",
|
||||
duration: 3000
|
||||
})
|
||||
|
||||
reject(res.errMsg)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
// 关闭显示框
|
||||
uni.hideLoading();
|
||||
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log("Http网络请求fail", err)
|
||||
}
|
||||
|
||||
|
||||
uni.showToast({
|
||||
title: '请检查网络',
|
||||
icon: 'error'
|
||||
})
|
||||
|
||||
reject(err)
|
||||
|
||||
},
|
||||
complete: () => {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
uni.showToast({
|
||||
title: "授权登录获取code失败:" + res.errMsg,
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
reject(res.errMsg)
|
||||
}
|
||||
},
|
||||
fail: function(res) {
|
||||
uni.showToast({
|
||||
title: "授权登录失败:" + res.errMsg,
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
reject(res.errMsg)
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
export default wxAuthLogin
|
||||
73
common/wxSilentLogin.js
Normal file
73
common/wxSilentLogin.js
Normal file
@@ -0,0 +1,73 @@
|
||||
// 静默登录
|
||||
import {
|
||||
isEmpty
|
||||
} from './TextUtils.js'
|
||||
const wxSilentLogin = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.login({
|
||||
success: function(res) {
|
||||
if (res.code) {
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络请求信息', {
|
||||
"wxCode": res.code
|
||||
})
|
||||
}
|
||||
uni.request({
|
||||
// 组装请求地址
|
||||
url: getApp().globalData.wxSilentLoginURL,
|
||||
// 请求方式 GET POST
|
||||
method: "GET",
|
||||
header: {
|
||||
// 传参方式
|
||||
'content-type': "application/x-www-form-urlencoded"
|
||||
},
|
||||
// 具体参数
|
||||
data: {
|
||||
"wxCode": res.code
|
||||
},
|
||||
success: res => {
|
||||
console.log(res)
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log('Http网络路径', getApp().globalData.wxSilentLoginURL)
|
||||
}
|
||||
if (res.statusCode == 200) {
|
||||
if (!res.data.success) {
|
||||
return
|
||||
}
|
||||
else
|
||||
{
|
||||
uni.setStorageSync("sysUserSid", res.data.data.sysUserSid);
|
||||
uni.setStorageSync("token", res.data.data.token);
|
||||
uni.setStorageSync("isLogin", res.data.data.isLogin);
|
||||
|
||||
getApp().globalData.isLogin = res.data.data.isLogin
|
||||
getApp().globalData.sysUserSid = res.data.data.sysUserSid
|
||||
resolve(res.data.data.sysUserSid)
|
||||
}
|
||||
}else
|
||||
{
|
||||
getApp().globalData.isLogin = false
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
if (getApp().globalData.isDebug) {
|
||||
console.log("Http网络请求fail", err)
|
||||
}
|
||||
},
|
||||
complete: () => {
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
fail: function(res) {
|
||||
uni.showToast({
|
||||
title: "静默登录失败:" + res.errMsg,
|
||||
icon: 'none'
|
||||
})
|
||||
|
||||
reject(res.errMsg)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
export default wxSilentLogin
|
||||
Reference in New Issue
Block a user