411 lines
9.3 KiB
JavaScript
411 lines
9.3 KiB
JavaScript
import {getBaseURL} from '@/request/http.js'
|
||
|
||
export function uploadImg(path)
|
||
{
|
||
return new Promise ((resolve,reject)=>
|
||
{
|
||
let token = uni.getStorageSync('token')
|
||
uni.uploadFile({
|
||
url: getBaseURL()+'/file-upload',
|
||
filePath: path,
|
||
name: 'file',
|
||
header:{
|
||
'Authorization':token?('Bearer '+token):''
|
||
},
|
||
success: (res) => {
|
||
console.log(res)
|
||
var result = JSON.parse(res.data);//返回的结果,可能不同项目结果不一样
|
||
resolve(result.url)
|
||
},
|
||
fail: (error) => {
|
||
console.log('上传失败'+error.errMsg)
|
||
reject()
|
||
}
|
||
});
|
||
})
|
||
}
|
||
|
||
export async function uploadImgs(paths, success)
|
||
{
|
||
for (let path of paths) {
|
||
try {
|
||
const uploadData = await uploadImg(path)
|
||
success(uploadData)
|
||
} catch (e) {
|
||
//TODO handle the exception
|
||
console.log(e)
|
||
uni.showToast({
|
||
title: e || '上传失败',
|
||
icon: 'error'
|
||
})
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
export function isValidJSON(jsonString) {
|
||
// 先做基础类型校验,排除非字符串的情况
|
||
if (typeof jsonString !== 'string') {
|
||
console.warn('输入必须是字符串类型');
|
||
return false;
|
||
}
|
||
|
||
// 去除首尾空白字符(可选,但能兼容常见的格式问题)
|
||
jsonString = jsonString.trim();
|
||
|
||
// 空字符串直接判定为无效
|
||
if (jsonString === '') {
|
||
return false;
|
||
}
|
||
|
||
try {
|
||
// 尝试解析 JSON 字符串
|
||
const parsed = JSON.parse(jsonString);
|
||
// 额外校验:确保解析结果是对象/数组(排除单个数字/布尔值等非结构化 JSON)
|
||
// 如果不需要这个校验,可以删除下面这行
|
||
if (typeof parsed !== 'object' || parsed === null) return false;
|
||
return true;
|
||
} catch (error) {
|
||
// 解析失败,说明格式错误
|
||
console.log('JSON 格式错误:', error.message);
|
||
return false;
|
||
}
|
||
}
|
||
|
||
export function accDiv(arg1,arg2){
|
||
var t1=0,t2=0,r1,r2;
|
||
try{t1=arg1.toString().split(".")[1].length}catch(e){}
|
||
try{t2=arg2.toString().split(".")[1].length}catch(e){}
|
||
r1=Number(arg1.toString().replace(".",""))
|
||
r2=Number(arg2.toString().replace(".",""))
|
||
return accMul((r1/r2),Math.pow(10,t2-t1));
|
||
}
|
||
//乘法
|
||
export function accMul(arg1,arg2)
|
||
{
|
||
var m=0,s1=arg1.toString(),s2=arg2.toString();
|
||
try{m+=s1.split(".")[1].length}catch(e){}
|
||
try{m+=s2.split(".")[1].length}catch(e){}
|
||
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
|
||
}
|
||
|
||
//加法
|
||
export function accAdd(arg1,arg2){
|
||
var r1,r2,m;
|
||
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
|
||
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
|
||
m=Math.pow(10,Math.max(r1,r2))
|
||
return (arg1*m+arg2*m)/m
|
||
}
|
||
|
||
//减法
|
||
export function accSub(arg1,arg2){
|
||
var r1,r2,m,n;
|
||
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
|
||
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
|
||
m=Math.pow(10,Math.max(r1,r2));
|
||
n=(r1>=r2)?r1:r2;
|
||
return ((arg1*m-arg2*m)/m).toFixed(n);
|
||
}
|
||
|
||
function isEmptyStr(str)
|
||
{
|
||
return (!str || 0 === str.length);
|
||
}
|
||
function isNotaNumber(str)
|
||
{
|
||
// return isNaN(str);
|
||
return true
|
||
}
|
||
|
||
export function maskPhoneNumber(phoneNumber) {
|
||
return phoneNumber.replace(/(\d{3})\d*(\d{4})/, '$1****$2');
|
||
}
|
||
|
||
|
||
function getCurrentTimeStr()
|
||
{
|
||
let date = new Date()
|
||
let month = date.getMonth()+1
|
||
let day = date.getDate()
|
||
let hour = date.getHours()
|
||
let minute = date.getMinutes()
|
||
|
||
return month+'月'+day+'日'+hour+':'+(minute<10?('0'+minute):minute)
|
||
}
|
||
|
||
function getChineseTimeStrBySecond(s)
|
||
{
|
||
if (s<0) {
|
||
s = 0-s
|
||
}
|
||
let day = parseInt(s/(24*60*60))
|
||
let hour = parseInt(s%(24*60*60)/(60*60))
|
||
let minute = parseInt(s/60)%60
|
||
let second = s%60
|
||
|
||
return (day>0?(day+'天'):'')+(hour>0?(hour+'小时'):'')+minute+'分'+second+'秒'
|
||
}
|
||
|
||
function getTimeStrBySecond(s)
|
||
{
|
||
if (s<0) {
|
||
s = 0-s
|
||
}
|
||
let hour = parseInt(s/(60*60))
|
||
let minute = parseInt(s/60)%60
|
||
let second = s%60
|
||
|
||
return (hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)+':'+(second<10?('0'+second):second)
|
||
}
|
||
|
||
function getChineseTimeStrByHour(h)
|
||
{
|
||
if (!h) return
|
||
if (h<0) {
|
||
h = 0-h
|
||
}
|
||
let day = parseInt(h/24)
|
||
let hour = parseInt(h%24)
|
||
console.log(day,hour)
|
||
return (day>0?(day+'天'):'')+(hour>0?(hour+'小时'):'')
|
||
}
|
||
|
||
/**
|
||
* 获取涨幅字符串
|
||
* @param {Object} r
|
||
*/
|
||
export function getRateStr(r)
|
||
{
|
||
if (!r) return
|
||
r = String(r)
|
||
if(r.indexOf('-')>-1)
|
||
{
|
||
r = r.substr(1,r.length-1)
|
||
return parseFloat(r).toFixed(2)
|
||
}else
|
||
{
|
||
if(parseFloat(r)==0)
|
||
{
|
||
return 0.00
|
||
}else
|
||
return parseFloat(r).toFixed(2)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取涨跌幅字符串
|
||
* @param {Object} r
|
||
*/
|
||
export function getChgRateStr(r)
|
||
{
|
||
if (!r) return
|
||
r = String(r)
|
||
if(r.indexOf('-')>-1)
|
||
{
|
||
r = r.substr(1,r.length-1)
|
||
return '-'+parseFloat(r).toFixed(2)
|
||
}else
|
||
{
|
||
if(parseFloat(r)==0)
|
||
{
|
||
return 0.00
|
||
}else
|
||
return '+'+parseFloat(r).toFixed(2)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取涨幅字符串是涨还是跌 true为跌false为涨
|
||
* @param {Object} r
|
||
*/
|
||
export function getRateUpOrDown(r)
|
||
{
|
||
if (!r) return
|
||
return String(r).indexOf('-')>-1
|
||
}
|
||
|
||
/**
|
||
* 根据数字大小展示亿或者完
|
||
* @param {Object} r
|
||
*/
|
||
export function getNumStr(r)
|
||
{
|
||
if (!r) return
|
||
let value = r
|
||
if (r<0) value = 0-r
|
||
value = parseFloat(value)
|
||
if (value>100000000) {
|
||
return (r/100000000).toFixed(2)+'亿'
|
||
}else if (value>10000) {
|
||
return (r/10000).toFixed(2)+'万'
|
||
}else
|
||
return r
|
||
}
|
||
|
||
/**
|
||
* 根据姓名获取姓
|
||
* @param {Object} r
|
||
*/
|
||
export function getLastNameStr(r)
|
||
{
|
||
if (!r) return
|
||
return r.substr(0,1)
|
||
}
|
||
|
||
/**
|
||
* 获取本地时间
|
||
* @param {Object} time
|
||
*/
|
||
export function getLocaleTime(time)
|
||
{
|
||
if(time.indexOf('T')==-1)
|
||
{
|
||
time = time.replace(/-/g,'/')
|
||
}
|
||
let date = new Date(time)
|
||
let year = date.getFullYear()
|
||
let month = date.getMonth()+1
|
||
let day = date.getDate()
|
||
let hour = date.getHours()
|
||
let minute = date.getMinutes()
|
||
|
||
return year+'-'+(month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)+' '+(hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
|
||
}
|
||
|
||
/**
|
||
* 获取本地时分
|
||
* @param {Object} time
|
||
*/
|
||
export function getLocaleHourMinute(time)
|
||
{
|
||
if(time.indexOf('T')==-1)
|
||
{
|
||
time = time.replace(/-/g,'/')
|
||
}
|
||
let date = new Date(time)
|
||
let hour = date.getHours()
|
||
let minute = date.getMinutes()
|
||
|
||
return (hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
|
||
}
|
||
|
||
/**
|
||
* 获取本地月日时分
|
||
* @param {Object} time
|
||
*/
|
||
export function getLocaleMonthDayHourMinte(time)
|
||
{
|
||
if(time.indexOf('T')==-1)
|
||
{
|
||
time = time.replace(/-/g,'/')
|
||
}
|
||
let date = new Date(time)
|
||
let month = date.getMonth()+1
|
||
let day = date.getDate()
|
||
let hour = date.getHours()
|
||
let minute = date.getMinutes()
|
||
|
||
return (month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)+' '+(hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
|
||
}
|
||
|
||
/**
|
||
* 获取本地日期
|
||
* @param {Object} time
|
||
*/
|
||
export function getLocalDate(time)
|
||
{
|
||
if(time.indexOf('T')==-1)
|
||
{
|
||
time = time.replace(/-/g,'/')
|
||
}
|
||
let date = new Date(time)
|
||
let year = date.getFullYear()
|
||
let month = date.getMonth()+1
|
||
let day = date.getDate()
|
||
|
||
return year+'-'+(month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)
|
||
}
|
||
|
||
/**
|
||
* 替换
|
||
* @param {Object} time
|
||
*/
|
||
export function replaceAnswerLabel(text)
|
||
{
|
||
return text.replace('<answer>','').replace('</answer>','')
|
||
}
|
||
|
||
/**
|
||
* 身份证号校验
|
||
*/
|
||
export function checkIdCard (cardNum)
|
||
{
|
||
cardNum = cardNum.replace(/(^\s*)|(\s*$)/g,"")
|
||
if (cardNum.length==15) {
|
||
return isValidateBirthBy15IdCard(cardNum)
|
||
}else if(cardNum.length==18)
|
||
{
|
||
var idCard = cardNum.split("")
|
||
if (isValidateBirthBy18IdCard(cardNum)&&isValidateCodeBy18IdCard(idCard)) {
|
||
return true
|
||
}else
|
||
return false
|
||
}else
|
||
return false
|
||
}
|
||
function isValidateCodeBy18IdCard(cardNum)
|
||
{
|
||
var wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1] //加权因子
|
||
var valideCode = [1,0,10,9,8,7,6,5,4,3,2]
|
||
var sum = 0
|
||
if (cardNum[17].toLowerCase() == 'x') {
|
||
cardNum[17] = 10 //将最后位的x替换成10
|
||
}
|
||
for (let i = 0; i < 17; i++) {
|
||
sum+= wi[i] * cardNum[i]
|
||
}
|
||
var valCodePosition = sum%11
|
||
if (cardNum[17] == valideCode[valCodePosition]) {
|
||
return true
|
||
}else
|
||
return false
|
||
}
|
||
/**
|
||
* 验证18位身份证号中的生日是否为有效生日
|
||
* @param {*} cardNum
|
||
*/
|
||
function isValidateBirthBy18IdCard (cardNum)
|
||
{
|
||
var year = cardNum.substring(6,10)
|
||
var month = cardNum.substring(10,12)
|
||
var day = cardNum.substring(12,14)
|
||
var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day))
|
||
//这里用getFullYear获取年份
|
||
if (tempDate.getFullYear()!=parseFloat(year)||
|
||
tempDate.getMonth()!=(parseFloat(month)-1)||
|
||
tempDate.getDate()!=parseFloat(day)) {
|
||
return false
|
||
}else
|
||
return true
|
||
}
|
||
|
||
/**
|
||
* 验证15位身份证号中的生日是否为有效生日
|
||
* @param {*} cardNum
|
||
*/
|
||
function isValidateBirthBy15IdCard (cardNum)
|
||
{
|
||
var year = cardNum.substring(6,8)
|
||
var month = cardNum.substring(8,10)
|
||
var day = cardNum.substring(10,12)
|
||
var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day))
|
||
//这里用getFullYear获取年份
|
||
if (tempDate.getFullYear()!=parseFloat(year)||
|
||
tempDate.getMonth()!=(parseFloat(month)-1)||
|
||
tempDate.getDate()!=parseFloat(day)) {
|
||
return false
|
||
}else
|
||
return true
|
||
}
|