2025-12-05 16:10:52 +08:00
|
|
|
|
2025-11-27 03:55:38 +08:00
|
|
|
//import i18n from '@/locales'
|
|
|
|
|
import base from '@/common/config';
|
|
|
|
|
//import store from "@/store";
|
2025-12-05 16:10:52 +08:00
|
|
|
const isString = (v)=> {
|
|
|
|
|
return typeof v === 'string' || v instanceof String;
|
|
|
|
|
},
|
|
|
|
|
isNumber=(v) =>{
|
|
|
|
|
return typeof v === 'number' && !isNaN(v);
|
|
|
|
|
},
|
|
|
|
|
isInteger=(v) =>{
|
|
|
|
|
return typeof v === 'number' && isFinite(v) && Math.floor(v) === v;
|
|
|
|
|
},
|
|
|
|
|
isBoolean=(v) =>{
|
|
|
|
|
return typeof v === 'boolean';
|
|
|
|
|
},
|
|
|
|
|
isArray=(v) =>{
|
|
|
|
|
return Array.isArray(v);
|
|
|
|
|
},
|
|
|
|
|
isObject=(v) =>{
|
|
|
|
|
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
|
|
|
},
|
|
|
|
|
isFunction=(v) =>{
|
|
|
|
|
return typeof v === 'function';
|
|
|
|
|
},
|
|
|
|
|
isNull=(v) =>{
|
|
|
|
|
return v === null;
|
|
|
|
|
},
|
|
|
|
|
isUndefined=(v) =>{
|
|
|
|
|
return typeof v === 'undefined';
|
|
|
|
|
},
|
|
|
|
|
isSymbol=(v) =>{
|
|
|
|
|
return typeof v === 'symbol';
|
|
|
|
|
},
|
|
|
|
|
isDate=(v) =>{
|
|
|
|
|
return Object.prototype.toString.call(v) === '[object Date]';
|
|
|
|
|
},
|
|
|
|
|
isRegExp=(v) =>{
|
|
|
|
|
return Object.prototype.toString.call(v) === '[object RegExp]';
|
|
|
|
|
},
|
|
|
|
|
isError=(v) =>{
|
|
|
|
|
return v instanceof Error;
|
|
|
|
|
},
|
|
|
|
|
isMap=(v) =>{
|
|
|
|
|
return v instanceof Map;
|
|
|
|
|
},
|
|
|
|
|
isSet=(v) =>{
|
|
|
|
|
return v instanceof Set;
|
|
|
|
|
},
|
|
|
|
|
isWeakMap=(v) =>{
|
|
|
|
|
return v instanceof WeakMap;
|
|
|
|
|
},
|
|
|
|
|
isWeakSet=(v) =>{
|
|
|
|
|
return v instanceof WeakSet;
|
|
|
|
|
};
|
2025-11-27 03:55:38 +08:00
|
|
|
export default{
|
2025-12-05 16:10:52 +08:00
|
|
|
isString :isString,
|
|
|
|
|
isNumber :isNumber,
|
|
|
|
|
isInteger :isInteger,
|
|
|
|
|
isBoolean :isBoolean,
|
|
|
|
|
isArray :isArray,
|
|
|
|
|
isObject :isObject,
|
|
|
|
|
isFunction :isFunction,
|
|
|
|
|
isNull :isNull,
|
|
|
|
|
isUndefined :isUndefined,
|
|
|
|
|
isSymbol :isSymbol,
|
|
|
|
|
isDate :isDate,
|
|
|
|
|
isRegExp :isRegExp,
|
|
|
|
|
isError :isError,
|
|
|
|
|
isMap :isMap,
|
|
|
|
|
isSet :isSet,
|
|
|
|
|
isWeakMap :isWeakMap,
|
|
|
|
|
isWeakSet :isWeakSet,
|
2025-11-27 03:55:38 +08:00
|
|
|
cdn(v){
|
|
|
|
|
v= v || "";
|
|
|
|
|
v = v.replace(/\\/ig,"/").replace('/\/\/ig',"/");
|
2025-12-08 02:29:46 +08:00
|
|
|
//console.log(v);
|
2025-12-05 16:10:52 +08:00
|
|
|
if(isString(v)){
|
|
|
|
|
if(v.startsWith('blob:')){
|
2025-11-27 03:55:38 +08:00
|
|
|
return v;
|
|
|
|
|
}
|
2025-12-05 16:10:52 +08:00
|
|
|
if(v.startsWith('file://')){
|
|
|
|
|
return v;
|
|
|
|
|
}
|
|
|
|
|
v= v.startsWith('/') ? v : '/'+v;
|
2025-11-27 03:55:38 +08:00
|
|
|
return base.cdnUrl+''+v;
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
},
|
|
|
|
|
goto(url,type){
|
2025-12-08 02:29:46 +08:00
|
|
|
//console.log(url);
|
2025-11-27 03:55:38 +08:00
|
|
|
type = type || '0'; //0 navigateTo 1 redirectTo
|
|
|
|
|
if(url){
|
2025-12-05 16:10:52 +08:00
|
|
|
if(isInteger(url)){
|
2025-11-27 03:55:38 +08:00
|
|
|
uni.navigateBack({
|
|
|
|
|
delta:url,
|
|
|
|
|
})
|
|
|
|
|
}else{
|
|
|
|
|
url+="";
|
|
|
|
|
if(url.substr(0,6) != '/pages'){
|
|
|
|
|
url='/pages'+url
|
|
|
|
|
}
|
|
|
|
|
if(type == '1'){
|
|
|
|
|
return uni.redirectTo({
|
|
|
|
|
url:url
|
|
|
|
|
});
|
|
|
|
|
}
|
2025-12-08 02:29:46 +08:00
|
|
|
if(type == '2'){
|
|
|
|
|
return uni.switchTab({
|
|
|
|
|
url:url
|
|
|
|
|
});
|
|
|
|
|
}
|
2025-11-27 03:55:38 +08:00
|
|
|
uni.navigateTo({
|
|
|
|
|
url:url
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
showToast(msg,url,icon){
|
|
|
|
|
const _this = this;
|
|
|
|
|
//msg = i18n.t(msg);
|
|
|
|
|
// #ifdef APP
|
|
|
|
|
plus.nativeUI.closeToast();
|
|
|
|
|
plus.nativeUI.toast(msg,{
|
|
|
|
|
align:'center',
|
|
|
|
|
verticalAlign:"center",
|
|
|
|
|
style:"inline",
|
|
|
|
|
icon:icon=='error' ? '/static/img/common/error.png' : '/static/img/common/success.png',
|
|
|
|
|
iconWidth:24,
|
|
|
|
|
iconHeight:24
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if(url){
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
_this.goto(url);
|
|
|
|
|
},3000)
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef APP
|
|
|
|
|
uni.showToast({
|
|
|
|
|
//image:icon=='error' ? '/static/img/common/error.png' : '/static/img/common/success.png',
|
|
|
|
|
icon:icon=='error' ? icon : 'success',
|
|
|
|
|
title:msg,
|
|
|
|
|
showToast:3000,
|
|
|
|
|
complete:()=>{
|
|
|
|
|
if(url){
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
_this.goto(url);
|
|
|
|
|
},3000)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
error(msg,url){
|
|
|
|
|
this.showToast(msg,url,'error');
|
|
|
|
|
},
|
|
|
|
|
success(msg,url){
|
|
|
|
|
this.showToast(msg,url,'success');
|
|
|
|
|
},
|
|
|
|
|
scan(){
|
|
|
|
|
uni.scanCode({
|
|
|
|
|
success(res){
|
|
|
|
|
/**
|
|
|
|
|
* result 所扫码的内容
|
|
|
|
|
scanType 所扫码的类型 App、微信小程序、百度小程序、QQ小程序、京东小程序、支付宝小程序
|
|
|
|
|
charSet 所扫码的字符集 App、微信小程序、百度小程序(所扫码的字符集,仅支持 Android 系统)、QQ小程序、京东小程序
|
|
|
|
|
path 当所扫的码为当前应用的合法二维码时,会返回此字段,内容为二维码携带的 path。 微信小程序、QQ小程序、京东小程序
|
|
|
|
|
rawData 原始数据,base64 编码 微信小程序、QQ小程序、京东小程序、支付宝小程序
|
|
|
|
|
code 扫码所得数据 支付宝小程序
|
|
|
|
|
qrCode 扫描二维码时返回二维码数据 支付宝小程序
|
|
|
|
|
barCode 扫描条形码时返回条形码数据 支付宝小程序
|
|
|
|
|
imageChannel 来源 支付宝小程序
|
|
|
|
|
*/
|
|
|
|
|
if(res.result){
|
|
|
|
|
if(res.result.indexOf('blackcatp:/')){
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url:res.result.substring(11)
|
|
|
|
|
})
|
|
|
|
|
}else{
|
|
|
|
|
this.success(res.result)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail(res){
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
complete(res){
|
|
|
|
|
console.log(res)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
copy(v){
|
|
|
|
|
let that = this;
|
|
|
|
|
uni.setClipboardData({
|
|
|
|
|
data:v+'',
|
|
|
|
|
success() {
|
|
|
|
|
that.success('复制成功');
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
toDate(time) {
|
|
|
|
|
var date = new Date(time * 1000);
|
|
|
|
|
var fmt = 'yyyy-MM-dd hh:mm:ss';
|
|
|
|
|
var o = {
|
|
|
|
|
'M+': date.getMonth() + 1, //月份
|
|
|
|
|
'd+': date.getDate(), //日
|
|
|
|
|
'h+': date.getHours(), //小时
|
|
|
|
|
'm+': date.getMinutes(), //分
|
|
|
|
|
's+': date.getSeconds(), //秒
|
|
|
|
|
'q+': Math.floor((date.getMonth() + 3) / 3), //季度
|
|
|
|
|
S: date.getMilliseconds() //毫秒
|
|
|
|
|
};
|
|
|
|
|
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
|
|
|
for (var k in o) if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
|
|
|
|
|
return fmt;
|
|
|
|
|
},
|
|
|
|
|
formatAmount(v,wei){
|
|
|
|
|
if(!v){return 0.00;}
|
|
|
|
|
v=v+"";
|
|
|
|
|
v = parseFloat(v).toFixed(wei || 2);
|
|
|
|
|
return parseFloat(v);
|
2025-12-05 16:10:52 +08:00
|
|
|
},
|
|
|
|
|
|
2025-11-27 03:55:38 +08:00
|
|
|
}
|