sadjv1/anmo-user-uniapp/js_sdk/QuShe-SharerPoster/QS-SharePoster/app.js

562 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let log = console.log; // 如果在项目的APP.vue文件中的onlaunch中设置 console.log = ()=> {} 则在此也不会有打印信息
// log = ()=>{}; // 打开注释则该插件不会打印任何信息
let _app = {
//交互控制
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 = '/static/logo.png';
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(process.env.NODE_ENV !== 'development'){
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;