147 lines
5.0 KiB
JavaScript
147 lines
5.0 KiB
JavaScript
import BasePlatform from './BasePlatform';
|
||
import H5Platform from './H5Platform';
|
||
import { webAppPay, webAppShare } from '@/common/webapp.js'
|
||
import { parseQueryString } from '@/common/util'
|
||
|
||
function versionToNumber(versionString) {
|
||
// 移除所有点号并转换为数字
|
||
return parseInt(versionString.split('.').join(''), 10);
|
||
}
|
||
class NewWebAppPlatform extends H5Platform {
|
||
constructor() {
|
||
super();
|
||
this.code = 'WEB_APP_ANDROID';
|
||
this.env = 'web_app';
|
||
this.app_version = 100;
|
||
this.app_os = null;
|
||
|
||
let location = window.location.href;
|
||
const params = parseQueryString(location);
|
||
if (params['version'] != null) {
|
||
uni.setStorageSync('app_version', params['version']);
|
||
let _appversion = params['version'] ?? "1.0.0";
|
||
if (_appversion.indexOf(".") > -1) {
|
||
_appversion = versionToNumber(_appversion);
|
||
this.app_version = _appversion;
|
||
}
|
||
|
||
}
|
||
if (params['os'] != null) {
|
||
let app_os = params['os'];
|
||
uni.setStorageSync('app_os', app_os);
|
||
this.app_os = app_os;
|
||
}
|
||
if (this.app_os == null) {
|
||
|
||
|
||
if (uni.getStorageSync('app_version') != null) {
|
||
let _appversion = uni.getStorageSync('app_version') ?? "1.0.0";
|
||
if (_appversion.indexOf(".") > -1) {
|
||
_appversion = versionToNumber(_appversion);
|
||
this.app_version = _appversion;
|
||
}
|
||
|
||
}
|
||
if (uni.getStorageSync('app_os') != null) {
|
||
this.app_os = uni.getStorageSync('app_os');
|
||
}
|
||
console.log('加载数据', uni.getStorageSync('app_version'), uni.getStorageSync('app_os'));
|
||
}
|
||
|
||
}
|
||
share({ title, desc, image, url }) {
|
||
console.log(`APP分享:${title} - ${desc} - ${image} - ${url}`);
|
||
if (this.app_version == 100) {
|
||
uni.setClipboardData({
|
||
data: url
|
||
});
|
||
this.$c.msg("链接已复制,快去分享吧~");
|
||
return;
|
||
}
|
||
return webAppShare(title, desc, image, url);
|
||
// 降级方案
|
||
// alert(`请手动分享:${url}`);
|
||
}
|
||
pay({
|
||
data
|
||
}, event) {
|
||
console.log(this, event);
|
||
return new Promise(async (resolve, reject) => {
|
||
const res = await webAppPay(data);
|
||
if (!res) {
|
||
uni.showToast({
|
||
title: '取消支付',
|
||
icon: 'none',
|
||
duration: 500,
|
||
success: () => {
|
||
/* 取消订单 */
|
||
resolve('cancel')
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
uni.showToast({
|
||
title: '支付成功',
|
||
icon: 'success',
|
||
duration: 500,
|
||
success: () => {
|
||
resolve('success')
|
||
}
|
||
})
|
||
});
|
||
}
|
||
downloadFile(url) {
|
||
return new Promise((resolve, reject) => {
|
||
try {
|
||
// 创建一个隐藏的a标签
|
||
const a = document.createElement('a');
|
||
a.href = url;
|
||
a.download = url.split('/').pop() || 'download'; // 使用URL中的文件名或默认名称
|
||
a.style.display = 'none';
|
||
document.body.appendChild(a);
|
||
a.click(); // 触发下载
|
||
document.body.removeChild(a); // 清理DOM
|
||
resolve({ success: true });
|
||
} catch (error) {
|
||
console.error('下载失败:', error);
|
||
// 降级方案,直接打开
|
||
window.location.href = url;
|
||
resolve({ success: false, error: error.message });
|
||
}
|
||
});
|
||
}
|
||
/**
|
||
* 重写获取用户中心菜单列表,添加微信小程序特有菜单
|
||
* @returns {Array} 菜单项数组
|
||
*/
|
||
getUserMenuList() {
|
||
// 获取基础菜单列表
|
||
const baseMenuList = super.getUserMenuList();
|
||
|
||
// 添加客服菜单项(仅微信小程序)
|
||
|
||
|
||
// 将客服菜单插入到第二个位置
|
||
return [...baseMenuList.slice(0, baseMenuList.length - 1), ...baseMenuList.slice(baseMenuList.length - 1)];
|
||
}
|
||
getVersion() {
|
||
return uni.getStorageSync('version') == '' ? '1.0.0' : uni.getStorageSync('version');
|
||
}
|
||
|
||
/**
|
||
* 获取功能权限
|
||
*/
|
||
getPermission(functionName) {
|
||
const appPermission = {
|
||
wxLogin: 101
|
||
};
|
||
let _functionVersion = appPermission[functionName];
|
||
if (_functionVersion != null) {
|
||
//如果当前app权限大于等于功能权限版本,则返回true
|
||
console.log('验证功能权限' + functionName, "功能要求版本:" + _functionVersion, "当前app版本:" + this.app_version, "当前功能是否满足:" + (this.app_version >= _functionVersion));
|
||
return this.app_version >= _functionVersion;
|
||
}
|
||
return false;
|
||
}
|
||
}
|
||
export default NewWebAppPlatform; |