|
|
/*
|
|
|
* 公共方法
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
//时间
|
|
|
export function formatDate(date, fmt) {
|
|
|
if (/(y+)/.test(fmt)) {
|
|
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
|
}
|
|
|
let o = {
|
|
|
'M+': date.getMonth() + 1,
|
|
|
'd+': date.getDate(),
|
|
|
'h+': date.getHours(),
|
|
|
'm+': date.getMinutes(),
|
|
|
's+': date.getSeconds()
|
|
|
};
|
|
|
for (let k in o) {
|
|
|
if (new RegExp(`(${k})`).test(fmt)) {
|
|
|
let str = o[k] + '';
|
|
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
|
|
|
}
|
|
|
}
|
|
|
return fmt;
|
|
|
};
|
|
|
|
|
|
function padLeftZero(str) {
|
|
|
return ('00' + str).substr(str.length);
|
|
|
};
|
|
|
|
|
|
|
|
|
export function getAgeByIdcard(identityCard) {
|
|
|
let len = (identityCard + "").length;
|
|
|
if (len == 0) {
|
|
|
return 0;
|
|
|
} else {
|
|
|
if ((len != 15) && (len != 18)) //身份证号码只能为15位或18位其它不合法
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
let strBirthday = "";
|
|
|
if (len == 18) //处理18位的身份证号码从号码中得到生日和性别代码
|
|
|
{
|
|
|
strBirthday = identityCard.substr(6, 4) + "/" + identityCard.substr(10, 2) + "/" + identityCard.substr(12, 2);
|
|
|
}
|
|
|
if (len == 15) {
|
|
|
strBirthday = "19" + identityCard.substr(6, 2) + "/" + identityCard.substr(8, 2) + "/" + identityCard.substr(10,
|
|
|
2);
|
|
|
}
|
|
|
//时间字符串里,必须是“/”
|
|
|
let birthDate = new Date(strBirthday);
|
|
|
let nowDateTime = new Date();
|
|
|
let age = nowDateTime.getFullYear() - birthDate.getFullYear();
|
|
|
//再考虑月、天的因素;.getMonth()获取的是从0开始的,这里进行比较,不需要加1
|
|
|
if (nowDateTime.getMonth() < birthDate.getMonth() || (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime
|
|
|
.getDate() < birthDate.getDate())) {
|
|
|
age--;
|
|
|
}
|
|
|
return age;
|
|
|
}
|
|
|
|
|
|
export function getSexByIdcard (idCard) {
|
|
|
let sexStr;
|
|
|
if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
|
|
|
sexStr = '男';
|
|
|
}
|
|
|
else {
|
|
|
sexStr = '女';
|
|
|
}
|
|
|
return sexStr;
|
|
|
}
|
|
|
|
|
|
export const base64ToFile = (dataurl, filename = 'file') => {
|
|
|
|
|
|
let arr = dataurl.split(',')
|
|
|
|
|
|
let mime = arr[0].match(/:(.*?);/)[1]
|
|
|
|
|
|
let suffix = mime.split('/')[1]
|
|
|
|
|
|
let bstr = atob(arr[1])
|
|
|
|
|
|
let n = bstr.length
|
|
|
|
|
|
let u8arr = new Uint8Array(n)
|
|
|
|
|
|
while (n--) {
|
|
|
|
|
|
u8arr[n] = bstr.charCodeAt(n)
|
|
|
|
|
|
}
|
|
|
|
|
|
return new File([u8arr], `${filename}.${suffix}`, {
|
|
|
|
|
|
type: mime
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
export const writeFile = (base64Str) => new Promise((resolve, reject) => {
|
|
|
// 后台返回的base64格式数据的回车换行换为空字符''
|
|
|
const base64Image = base64Str.split(',')[1].replace(/[\r\n]/g, '')
|
|
|
// 文件管理器
|
|
|
const fsm = uni.getFileSystemManager()
|
|
|
// 文件名
|
|
|
const FILE_BASE_NAME = 'tmp_base64src'
|
|
|
// 文件后缀
|
|
|
const format = 'png'
|
|
|
// 获取当前时间戳用于区分小程序码,防止多次写进的小程序码图片都一样,建议通过不同的列表ID来区分不同的小程序码
|
|
|
const timestamp = (new Date()).getTime()
|
|
|
// base转二进制
|
|
|
const buffer = uni.base64ToArrayBuffer(base64Image)
|
|
|
// 文件名
|
|
|
const filePath = `${wx.env.USER_DATA_PATH}/${timestamp}share.${format}`
|
|
|
// 写文件
|
|
|
fsm.writeFile({
|
|
|
filePath,
|
|
|
data: buffer,
|
|
|
encoding: 'binary',
|
|
|
success () {
|
|
|
// 读取图片
|
|
|
uni.getImageInfo({
|
|
|
src: filePath,
|
|
|
success (res) {
|
|
|
const img = res.path
|
|
|
// 把需要画出来的图片的临时url暴露出去
|
|
|
resolve(img)
|
|
|
reject()
|
|
|
},
|
|
|
fail (e) {
|
|
|
console.log('读取图片报错')
|
|
|
console.log(e)
|
|
|
},
|
|
|
error (res) {
|
|
|
console.log(res)
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
fail (e) {
|
|
|
console.log(e)
|
|
|
}
|
|
|
})
|
|
|
}).catch((e) => {
|
|
|
console.log(e)
|
|
|
})
|
|
|
|
|
|
// 删除存储的垃圾数据
|
|
|
export const removeSave = () => new Promise((resolve) => {
|
|
|
// 文件管理器
|
|
|
const fsm = uni.getFileSystemManager()
|
|
|
// 获取文件列表
|
|
|
fsm.readdir({
|
|
|
dirPath: wx.env.USER_DATA_PATH, // 当时写入的文件夹
|
|
|
success (res) {
|
|
|
res.files.forEach((el) => { // 遍历文件列表里的数据
|
|
|
// 删除存储的垃圾数据
|
|
|
if (el !== 'miniprogramLog') { // 过滤掉miniprogramLog
|
|
|
fsm.unlink({
|
|
|
filePath: `${wx.env.USER_DATA_PATH}/${el}`, // 文件夹也要加上,如果直接文件名会无法找到这个文件
|
|
|
fail (e) {
|
|
|
console.log('readdir文件删除失败:', e)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
resolve()
|
|
|
}
|
|
|
})
|
|
|
})
|