Files
app-govern/common/js/util.js

259 lines
6.4 KiB
JavaScript
Raw Normal View History

2023-01-11 16:33:13 +08:00
import request from './request'
import config from './config.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/login/login' })
})
}
// 获取表单信息
const getInstanceData = (params) => {
return new Promise((resolve, reject) => {
request({
url: '/bpm/instance/getInstanceData',
data: params,
method: 'POST',
}).then(rs => {
resolve(rs.data)
}).catch(err => {
reject(err)
})
})
}
// 获取表单信息
const getNextIdByAlias = (alias, call) => {
return new Promise((resolve, reject) => {
request({
url: '/sys/serialNo/getNextIdByAlias',
data: {
alias: alias,
},
method: 'POST',
}).then(rs => {
resolve(rs.data)
}).catch(err => {
reject(err)
})
})
}
// 获取流程信息
const getFlowImageInfo = (params) => {
return new Promise((resolve, reject) => {
request({
url: '/bpm/instance/getFlowImageInfo',
data: params,
method: 'POST',
}).then(rs => {
resolve(rs.data)
}).catch(err => {
reject(err)
})
})
}
export default {
validatePhoneNumber,
toast,
formatTime,
parseTime,
h5Helper,
getUserLocation,
loadConfig,
getNextIdByAlias,
getInstanceData,
getFlowImageInfo
}