Files
app-govern/common/js/util.js
2023-07-24 08:47:20 +08:00

234 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import request from './request'
import cache from './cacheKey.js'
import { queryDictDataCache } from '../api/dictionary.js'
import cacheKey from './cacheKey.js'
const toast = (title, duration = 1500, call, mask = false, icon = 'none') => {
if (Boolean(title) === false) {
return
}
uni.showToast({
title,
duration,
mask,
icon,
})
setTimeout(() => {
call && call()
}, duration)
}
/**
* @description 格式化时间
* @param time
* @param cFormat
* @returns {string|null}
*/
function parseTime(time, cFormat) {
if (arguments.length === 0) {
return null
}
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
time = parseInt(time)
}
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay(),
}
return format.replace(/{([ymdhisa])+}/g, (result, key) => {
let value = formatObj[key]
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
}
/**
* @description 格式化时间
* @param time
* @param option
* @returns {string}
*/
function formatTime(time, option) {
if (('' + time).length === 10) {
time = parseInt(time) * 1000
} else {
time = +time
}
if (option) {
return parseTime(time, option)
} else {
const d = new Date(time)
const now = Date.now()
const diff = (now - d) / 1000
if (diff < 30) {
return '刚刚'
} else if (diff < 3600) {
// less 1 hour
return Math.ceil(diff / 60) + '分钟前'
} else if (diff < 3600 * 24) {
return Math.ceil(diff / 3600) + '小时前'
} else if (diff < 3600 * 24 * 2) {
return '1天前'
}
return (
d.getMonth() + 1 + '月' + d.getDate() + '日'
// +
// d.getHours() +
// '时'
// +
// d.getMinutes() +
// '分'
)
}
}
const h5Helper = {
isAndroid: function () {
return window.navigator.appVersion.toLowerCase().indexOf('android') != -1
},
isIOS: function () {
return window.navigator.appVersion.toLowerCase().indexOf('iphone') != -1
},
isWeiXinWeb: function () {
var ua = window.navigator.userAgent.toLowerCase()
return ua.match(/MicroMessenger/i) == 'micromessenger'
},
}
// 验证手机号格式
const validatePhoneNumber = (phone) => {
if (!phone) return false
var testReg = /^1[23456789]\d{9}$/
return testReg.test(phone)
}
const getUserLocation = (call) => {
uni.getLocation({
type: 'wgs84',
success: function (address) {
call(address)
},
fail: (err) => {
uni.showModal({
title: '提示',
content: '定位失败,请打开定位权限',
success: function (res) {
if (res.confirm) {
uni.openSetting({
success: (resSett) => {
if (resSett.authSetting['scope.userLocation']) {
uni.getLocation({
success: (address) => {
call && call(address)
},
})
}
},
})
}
},
})
},
})
}
// 加载用户配置
var globalConfigIsLoading = false,
global_config = null,
globalConfigCallbacks = []
/**
* 加载用户配置
* @param call 加载成功后的回调
* @param need_fresh 是否及时刷新用户配置
*/
const loadConfig = (call, need_fresh = false) => {
if (call && global_config && !need_fresh) {
call(global_config)
return
}
if (globalConfigIsLoading) {
globalConfigCallbacks.push(call)
return
}
globalConfigIsLoading = true
request({
url: '/org/userResource/userMsg',
})
.then((rs) => {
globalConfigIsLoading = false
global_config = rs.data
uni.setStorage({
key: 'userInfo',
data: global_config,
})
if (call) {
call(global_config)
}
for (var i = 0; i < globalConfigCallbacks.length; i++) {
globalConfigCallbacks[i](global_config)
}
globalConfigCallbacks = []
})
.catch((err) => {
globalConfigIsLoading = false
console.warn(err)
// uni.reLaunch({ url: '/pages/user/login' })
})
}
const prePage = () => {
let pages = getCurrentPages()
let prePage = pages[pages.length - 2]
return prePage
}
const loginSuccess = (data) => {
console.log(data);
uni.setStorageSync('access_token', data.token_type + ' ' + data.access_token)
uni.setStorageSync('refresh_token', data.refresh_token)
let strings = data.access_token.split('.') //截取token获取载体
console.log(escape,atob);
var userInfo = JSON.parse(decodeURIComponent(escape(atob(strings[1].replace(/-/g, '+').replace(/_/g, '/')))))
userInfo.authorities = userInfo.authorities[0]
uni.setStorageSync('userInfo', userInfo)
console.log('reLaunch');
queryDictDataCache().then((res) => {
uni.setStorageSync(cacheKey.dictData, res.data)
uni.reLaunch({
url: '/pages/index/index',
fail: (err) => {
console.log(err);
}
})
})
}
export default {
validatePhoneNumber,
toast,
formatTime,
parseTime,
h5Helper,
getUserLocation,
loadConfig,
prePage,
loginSuccess,
}