You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
566 lines
13 KiB
566 lines
13 KiB
let log = console.log; // 如果在项目的APP.vue文件中的onlaunch中设置 console.log = ()=> {} 则在此也不会有打印信息
|
|
log = ()=>{}; // 打开注释则该插件不会打印任何信息
|
|
let _app = {
|
|
lineFeedTags: ['<br />', '<br/>', '\r\n', '\n\t', '\r', '\n'], //换行符识别列表
|
|
tagetLineFeedTag: `❤`, //将lineFeedTags列表中的字符串替换为该字符, 代表换行符, 只要找一个特殊符号就行,必须是单字符单字符单字符!
|
|
//交互控制
|
|
log(t) {
|
|
// log(t);
|
|
}, // 打印控制,
|
|
showLoading(msg, ifmask) {
|
|
uni.showLoading({
|
|
title: msg,
|
|
mask: ifmask || false
|
|
})
|
|
},
|
|
hideLoading() {
|
|
uni.hideLoading();
|
|
},
|
|
showToast(msg, icon) {
|
|
uni.showToast({
|
|
title: msg,
|
|
icon: icon || 'none'
|
|
})
|
|
},
|
|
getPosterUrl(objs) { // 后端获取背景图的url路径方法
|
|
let {
|
|
backgroundImage,
|
|
type,
|
|
formData
|
|
} = objs;
|
|
return new Promise((rs, rj) => {
|
|
let image;
|
|
if (backgroundImage) {
|
|
image = backgroundImage;
|
|
} else {
|
|
switch (type) { //根据type获取背景图, 一般要改成request获取
|
|
case 1:
|
|
image = '';
|
|
break;
|
|
default:
|
|
image = '';
|
|
break;
|
|
}
|
|
}
|
|
if (image) {
|
|
rs(image); // resolve图片的路径
|
|
} else {
|
|
rj('背景图片路径不存在');
|
|
}
|
|
})
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//下面一般不用动他
|
|
shareTypeListSheetArray: {
|
|
array: [0, 1, 2, 3, 4, 5]
|
|
}, // 分享类型 0-图文链接 1-纯文字 2-纯图片 3-音乐 4-视频 5-小程序
|
|
isArray(arg) {
|
|
return Object.prototype.toString.call(arg) === '[object Array]';
|
|
},
|
|
isObject(arg) {
|
|
return Object.prototype.toString.call(arg) === '[object Object]';
|
|
},
|
|
isPromise(obj) {
|
|
return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
|
|
},
|
|
isNull(arg) {
|
|
return arg === null;
|
|
},
|
|
isUndefined(arg) {
|
|
return arg === undefined;
|
|
},
|
|
isUndef(arg) {
|
|
return arg === undefined;
|
|
},
|
|
isNotNull_string(arg) {
|
|
return arg !== null && arg !== undefined && arg !== '';
|
|
},
|
|
isFn(fn) {
|
|
return fn && typeof fn === 'function';
|
|
},
|
|
getStorage(key, scb, fcb) {
|
|
uni.getStorage({
|
|
key,
|
|
success: function(res) {
|
|
if (res.data && res.data != "") {
|
|
if (scb) scb(res.data);
|
|
} else {
|
|
if (fcb) fcb();
|
|
}
|
|
},
|
|
fail: function() {
|
|
if (fcb) fcb();
|
|
}
|
|
})
|
|
},
|
|
setStorage(key, data) {
|
|
log('设置缓存')
|
|
log('key:' + key)
|
|
log('data:' + JSON.stringify(data));
|
|
uni.setStorage({
|
|
key,
|
|
data
|
|
})
|
|
},
|
|
setStorageSync(key, data) {
|
|
uni.setStorageSync(key, data);
|
|
},
|
|
getStorageSync(key) {
|
|
return uni.getStorageSync(key);
|
|
},
|
|
clearStorageSync() {
|
|
uni.clearStorageSync();
|
|
},
|
|
removeStorageSync(key) {
|
|
uni.removeStorageSync(key);
|
|
},
|
|
getImageInfo(url, cb, fcb) {
|
|
url = checkMPUrl(url);
|
|
uni.getImageInfo({
|
|
src: url,
|
|
success(res) {
|
|
if (cb && typeof(cb) == 'function') cb(res);
|
|
},
|
|
fail(err) {
|
|
if (fcb && typeof(fcb) == 'function') fcb(err);
|
|
}
|
|
})
|
|
},
|
|
downloadFile(url, cb) {
|
|
url = checkMPUrl(url);
|
|
uni.downloadFile({
|
|
url,
|
|
success(res) {
|
|
if (cb && typeof(cb) == 'function') cb(res);
|
|
}
|
|
})
|
|
},
|
|
downloadFile_PromiseFc(url) {
|
|
return new Promise((rs, rj) => {
|
|
if (url.substring(0, 4) !== 'http') {
|
|
rs(url);
|
|
} else {
|
|
url = checkMPUrl(url);
|
|
log('url:' + url);
|
|
uni.downloadFile({
|
|
url,
|
|
success(res) {
|
|
if (res && res.tempFilePath)
|
|
rs(res.tempFilePath);
|
|
else
|
|
rj('not find tempFilePath');
|
|
},
|
|
fail(err) {
|
|
rj(err);
|
|
}
|
|
})
|
|
}
|
|
});
|
|
},
|
|
saveFile(url) {
|
|
uni.saveFile({
|
|
tempFilePath: url,
|
|
success(res) {
|
|
log('保存成功:' + JSON.stringify(res))
|
|
}
|
|
})
|
|
},
|
|
downLoadAndSaveFile_PromiseFc(url) {
|
|
return new Promise((rs, rj) => {
|
|
log('准备下载并保存图片:' + url);
|
|
if (url.substring(0, 4) === 'http') {
|
|
url = checkMPUrl(url);
|
|
uni.downloadFile({
|
|
url,
|
|
success(d_res) {
|
|
log('下载背景图成功:' + JSON.stringify(d_res));
|
|
if (d_res && d_res.tempFilePath) {
|
|
|
|
// #ifdef H5
|
|
rs(d_res.tempFilePath);
|
|
// #endif
|
|
|
|
// #ifndef H5
|
|
uni.saveFile({
|
|
tempFilePath: d_res.tempFilePath,
|
|
success(s_res) {
|
|
log('保存背景图成功:' + JSON.stringify(s_res));
|
|
if (s_res && s_res.savedFilePath)
|
|
rs(s_res.savedFilePath);
|
|
else
|
|
rs(d_res.tempFilePath);
|
|
},
|
|
fail(err) {
|
|
rs(d_res.tempFilePath);
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
} else {
|
|
rj('not find tempFilePath');
|
|
}
|
|
},
|
|
fail(err) {
|
|
rj(err);
|
|
}
|
|
})
|
|
} else {
|
|
rs(url);
|
|
}
|
|
})
|
|
},
|
|
checkFile_PromiseFc(url) {
|
|
return new Promise((rs, rj) => {
|
|
uni.getSavedFileList({
|
|
success(res) {
|
|
let d = res.fileList;
|
|
let index = d.findIndex(item => {
|
|
return item.filePath === url;
|
|
})
|
|
rs(index);
|
|
},
|
|
fail(err) {
|
|
rj(err);
|
|
}
|
|
})
|
|
});
|
|
},
|
|
removeSavedFile(path) {
|
|
uni.getSavedFileList({
|
|
success(res) {
|
|
let d = res.fileList;
|
|
let index = d.findIndex(item => {
|
|
return item.filePath === path;
|
|
});
|
|
if (index >= 0)
|
|
uni.removeSavedFile({
|
|
filePath: path
|
|
})
|
|
}
|
|
})
|
|
},
|
|
fileNameInPath(path) {
|
|
let s = path.split("/");
|
|
return s[s.length - 1];
|
|
},
|
|
getImageInfo_PromiseFc(imgPath) {
|
|
return new Promise((rs, rj) => {
|
|
log('准备获取图片信息:' + imgPath);
|
|
imgPath = checkMPUrl(imgPath);
|
|
uni.getImageInfo({
|
|
src: imgPath,
|
|
success: res => {
|
|
log('获取图片信息成功:' + JSON.stringify(res));
|
|
rs(res);
|
|
},
|
|
fail: err => {
|
|
log('获取图片信息失败:' + JSON.stringify(err));
|
|
rj(err)
|
|
}
|
|
})
|
|
});
|
|
},
|
|
previewImage(urls) {
|
|
if (typeof(urls) == 'string')
|
|
urls = [urls];
|
|
uni.previewImage({
|
|
urls,
|
|
})
|
|
},
|
|
actionSheet(obj, cb) {
|
|
let sheetArray = [];
|
|
for (let i = 0; i < obj.array.length; i++) {
|
|
switch (obj.array[i]) {
|
|
case 'sinaweibo':
|
|
sheetArray[i] = '新浪微博';
|
|
break;
|
|
case 'qq':
|
|
sheetArray[i] = 'QQ';
|
|
break;
|
|
case 'weixin':
|
|
sheetArray[i] = '微信';
|
|
break;
|
|
case 'WXSceneSession':
|
|
sheetArray[i] = '微信好友';
|
|
break;
|
|
case 'WXSenceTimeline':
|
|
sheetArray[i] = '微信朋友圈';
|
|
break;
|
|
case 'WXSceneFavorite':
|
|
sheetArray[i] = '微信收藏';
|
|
break;
|
|
case 0:
|
|
sheetArray[i] = '图文链接';
|
|
break;
|
|
case 1:
|
|
sheetArray[i] = '纯文字';
|
|
break;
|
|
case 2:
|
|
sheetArray[i] = '纯图片';
|
|
break;
|
|
case 3:
|
|
sheetArray[i] = '音乐';
|
|
break;
|
|
case 4:
|
|
sheetArray[i] = '视频';
|
|
break;
|
|
case 5:
|
|
sheetArray[i] = '小程序';
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
this.showActionSheet(sheetArray, cb);
|
|
},
|
|
showActionSheet(sheetArray, cb) {
|
|
uni.showActionSheet({
|
|
itemList: sheetArray,
|
|
success: (e) => {
|
|
if (cb && typeof(cb) == 'function') cb(e.tapIndex);
|
|
}
|
|
})
|
|
},
|
|
getProvider(type, cb, sheet) {
|
|
let _this = this;
|
|
uni.getProvider({
|
|
service: type,
|
|
success: function(res) {
|
|
if (sheet) {
|
|
let obj = {};
|
|
obj.array = res.provider;
|
|
_this.actionSheet(obj, function(index) {
|
|
if (cb && typeof(cb) == "function") cb(res.provider[index]);
|
|
});
|
|
} else {
|
|
if (type == 'payment') {
|
|
let providers = res.provider;
|
|
let payTypeArray = [];
|
|
for (let i = 0; i < providers.length; i++) {
|
|
if (providers[i] == 'wxpay') {
|
|
payTypeArray[i] = {
|
|
name: '微信支付',
|
|
value: providers[i],
|
|
img: '/static/image/wei.png'
|
|
};
|
|
} else if (providers[i] == 'alipay') {
|
|
payTypeArray[i] = {
|
|
name: "支付宝支付",
|
|
value: providers[i],
|
|
img: '/static/image/ali.png'
|
|
};
|
|
}
|
|
}
|
|
if (cb && typeof(cb) == "function") cb(payTypeArray);
|
|
} else {
|
|
if (cb && typeof(cb) == "function") cb(res);
|
|
}
|
|
}
|
|
},
|
|
})
|
|
},
|
|
// #ifdef APP-PLUS
|
|
getShare(providerName, WXScene, shareType, title, summary, href, imageUrl, miniProgramObj, mediaUrl, scb,
|
|
fcb) { //miniProgram: {path: '', type: 0, webUrl: ''}
|
|
let _this = this;
|
|
if (typeof(shareType) == 'number' && !isNaN(shareType) && shareType >= 0) {
|
|
_this.readyShare(providerName, WXScene, shareType, title, summary, href, imageUrl, miniProgramObj,
|
|
mediaUrl, scb,
|
|
fcb);
|
|
} else {
|
|
_this.actionSheet(_this.shareTypeListSheetArray, function(index) {
|
|
_this.readyShare(providerName, WXScene, _this.shareTypeListSheetArray.array[index], title,
|
|
summary, href,
|
|
imageUrl, miniProgramObj, mediaUrl, scb, fcb);
|
|
});
|
|
}
|
|
},
|
|
readyShare(providerName, WXScene, shareType, title, summary, href, imageUrl, miniProgramObj, mediaUrl, scb,
|
|
fcb) {
|
|
let _this = this;
|
|
let shareObjData = {};
|
|
switch (shareType) {
|
|
case 0:
|
|
shareObjData = {
|
|
href: href,
|
|
summary: summary,
|
|
imageUrl: imageUrl
|
|
};
|
|
break;
|
|
case 1:
|
|
shareObjData = {
|
|
summary: summary,
|
|
href: href
|
|
};
|
|
break;
|
|
case 2:
|
|
shareObjData = {
|
|
imageUrl: imageUrl
|
|
};
|
|
break;
|
|
case 3:
|
|
if (mediaUrl) {
|
|
_this.showToast('暂不支持此分享类型');
|
|
return;
|
|
};
|
|
shareObjData = {
|
|
mediaUrl: mediaUrl
|
|
};
|
|
break;
|
|
case 4:
|
|
if (mediaUrl) {
|
|
_this.showToast('暂不支持此分享类型');
|
|
return;
|
|
};
|
|
shareObjData = {
|
|
mediaUrl: mediaUrl
|
|
};
|
|
break;
|
|
case 5:
|
|
shareObjData = {
|
|
miniProgram: {
|
|
...miniProgramObj,
|
|
id: miniProgramId,
|
|
type: miniProgramShareType
|
|
},
|
|
imageUrl: imageUrl
|
|
};
|
|
providerName = 'weixin';
|
|
break;
|
|
default:
|
|
_this.showToast('分享参数-shareType错误');
|
|
return;
|
|
break;
|
|
}
|
|
shareObjData.title = title;
|
|
_this.share(providerName, WXScene, shareType, shareObjData, function(res) {
|
|
if (scb && typeof(scb) == 'function') scb(res);
|
|
}, function(err) {
|
|
if (fcb && typeof(fcb) == 'function') fcb(err);
|
|
});
|
|
},
|
|
share(providerName, WXScene, shareType, data, scb, fcb) {
|
|
let _this = this;
|
|
let shareObj = {
|
|
provider: '',
|
|
success: Function,
|
|
fail: Function
|
|
};
|
|
if (providerName && providerName != '') {
|
|
shareObj.provider = providerName;
|
|
if (providerName == 'weixin') {
|
|
_this.readyShareWXScene(WXScene, function(Scene) {
|
|
shareObj.scene = Scene;
|
|
_this.doingShare(shareObj, shareType, data, scb, fcb);
|
|
});
|
|
} else {
|
|
_this.doingShare(shareObj, shareType, data, scb, fcb);
|
|
}
|
|
} else {
|
|
_this.getProvider('share', function(name) {
|
|
shareObj.provider = name;
|
|
if (name == 'weixin') {
|
|
_this.readyShareWXScene(WXScene, function(Scene) {
|
|
shareObj.scene = Scene;
|
|
_this.doingShare(shareObj, shareType, data, scb, fcb);
|
|
});
|
|
} else {
|
|
_this.doingShare(shareObj, shareType, data, scb, fcb);
|
|
}
|
|
}, true);
|
|
}
|
|
},
|
|
readyShareWXScene(WXScene, cb) {
|
|
let _this = this;
|
|
let WXScenetypelist = {
|
|
array: ['WXSceneSession', 'WXSenceTimeline', 'WXSceneFavorite']
|
|
};
|
|
if (WXScene && WXScene != "") {
|
|
if (cb && typeof(cb) == 'function') cb(WXScene);
|
|
} else {
|
|
_this.actionSheet(WXScenetypelist, function(index) {
|
|
if (cb && typeof(cb) == 'function') cb(WXScenetypelist.array[index]);
|
|
});
|
|
}
|
|
},
|
|
doingShare(shareObj, shareType, data, scb, fcb) {
|
|
shareObj.type = shareType;
|
|
if (data && data.title) shareObj.title = data.title;
|
|
switch (shareType) {
|
|
case 0: //图文链接
|
|
shareObj.href = data.href;
|
|
shareObj.summary = data.summary;
|
|
shareObj.imageUrl = data.imageUrl;
|
|
break;
|
|
case 1: //纯文字
|
|
shareObj.summary = data.summary;
|
|
shareObj.href = data.href;
|
|
break;
|
|
case 2: //纯图片
|
|
shareObj.imageUrl = data.imageUrl;
|
|
break;
|
|
case 3: //音乐
|
|
if (!data.mediaUrl) {
|
|
_this.showToast('暂不支持此分享类型');
|
|
return;
|
|
};
|
|
shareObj.mediaUrl = data.mediaUrl;
|
|
break;
|
|
case 4: //视频
|
|
if (!data.mediaUrl) {
|
|
_this.showToast('暂不支持此分享类型');
|
|
return;
|
|
};
|
|
shareObj.mediaUrl = data.mediaUrl;
|
|
break;
|
|
case 5: //小程序
|
|
if (miniProgramId == '') {
|
|
uni.showToast('未设置小程序ID, 请使用其他方式分享');
|
|
return;
|
|
}
|
|
let mp = {
|
|
id: miniProgramId
|
|
};
|
|
mp.path = data.miniProgram.path;
|
|
mp.type = data.miniProgram.type;
|
|
if (data.miniProgram.webUrl) mp.webUrl = data.miniProgram.webUrl;
|
|
shareObj.miniProgram = mp;
|
|
shareObj.imageUrl = data.imageUrl;
|
|
break;
|
|
default:
|
|
appJS.showToast('分享参数-shareType错误');
|
|
break;
|
|
}
|
|
shareObj.success = function(res) {
|
|
if (scb && typeof(scb) == 'function') scb(res);
|
|
}
|
|
shareObj.fail = function(err) {
|
|
if (fcb && typeof(fcb) == 'function') fcb(err);
|
|
}
|
|
log(JSON.stringify(shareObj));
|
|
uni.share(shareObj);
|
|
},
|
|
// #endif
|
|
}
|
|
|
|
function checkMPUrl(url) {
|
|
// #ifdef MP
|
|
if (
|
|
url.substring(0, 4) === 'http' &&
|
|
url.substring(0, 5) !== 'https' &&
|
|
url.substring(0, 12) !== 'http://store' &&
|
|
url.substring(0, 10) !== 'http://tmp' &&
|
|
url.substring(0, 10) !== 'http://usr'
|
|
) {
|
|
url = 'https' + url.substring(4, url.length);
|
|
}
|
|
// #endif
|
|
return url;
|
|
}
|
|
|
|
module.exports = _app;
|
|
|