Files
2025-04-30 14:04:34 +08:00

295 lines
7.8 KiB
JavaScript

import Vue from 'vue';
import { Router } from '@/common/utils/index.js';
import { needLoginPages, STATIC_URL, HOME_PAGE_URL, LOGIN_PAGE_URL, ACCEPT_PLATFORM, SYSTEM_CONFIG } from '@/common/config.js';
const router = new Router({ needLoginPages });
Vue.mixin({
data() { return { STATIC_URL: STATIC_URL, isPublish: false } },
computed: {
i18n() {
return this.$t('defVal');
},
},
methods: {
// #ifdef APP-PLUS
toJSON() { },
// #endif
getPublishStatus() {
this.$api.post(global.apiUrls.post673572b0bebd7, {app_version: SYSTEM_CONFIG.appVersion, type: ACCEPT_PLATFORM == 'IOS' ? 'ios' : 'android'}) .then(res => {
if (res.data.code == 1) {
this.isPublish = !res.data.data.is_listing;
}
})
},
// 页面抛出事件
benbenThrowPageEvent(event, data) {
uni.$emit(event, data)
},
//修改uniapi为promise类型
syncUniApi(apiName, params) {
return new Promise((resolve, reject) => {
uni[apiName]({
...params,
success: (res) => {
resolve(res)
},
fail: (err) => {
reject(err)
},
});
})
},
// 跳转首页
toHomeDiy() {
router.switchTab(HOME_PAGE_URL[global.appTabBarType]);
},
// 跳转登录页
toLoginDiy() {
router.navigateTo(LOGIN_PAGE_URL);
},
//微信支付
requestPaymentWx(data) {
return new Promise((resolve, reject) => {
uni.requestPayment({
provider: 'wxpay',
// #ifdef MP-WEIXIN
timeStamp: data.timeStamp,
nonceStr: data.nonceStr,
package: data.package,
signType: data.signType,
paySign: data.paySign,
// #endif
// #ifdef APP-PLUS
orderInfo: data,
// #endif
success: (e) => {
console.log('success', e)
if (e.errMsg == 'requestPayment:ok') {
resolve()
}
},
fail: (e) => {
// #ifdef APP-PLUS
let failMsg = 'requestPayment:fail canceled';
// #endif
// #ifndef APP-PLUS
let failMsg = 'requestPayment:fail cancel';
// #endif
if (e.errMsg == failMsg) {
this.$message.info(this.$t('取消支付'));
} else {
this.$message.info(this.$t("支付失败,请稍后重试"));
}
reject(e)
},
complete: () => {
}
});
})
},
// 支付宝支付
requestPaymentAli(data) {
return new Promise((resolve, reject) => {
uni.requestPayment({
provider: 'alipay',
orderInfo: data,
success: (e) => {
if (e.errMsg == 'requestPayment:ok') {
resolve()
}
},
fail: (e) => {
if (e.errMsg == 'requestPayment:fail canceled') {
this.$message.info(this.$t('取消支付'));
} else {
this.$message.info(this.$t("支付失败,请稍后重试"));
}
reject(e)
},
complete: () => {
}
})
})
},
// diy点击事件处理函数
handleEven(e, params) {
let dataset = e.currentTarget && e.currentTarget.dataset;
let type, data;
if (dataset) {
type = dataset.event_type
data = dataset.event_params
} else {
type = e
data = params
}
console.log('点击事件触发', dataset, type, data);
this.$util.handleAllFn(type, data);
},
// 设置自定义头部
setNavigationBarTitle(title) {
uni.setNavigationBarTitle({
title: title
})
},
// 点击复制
copyText(data) {
uni.setClipboardData({
data: data,
success: () => {
this.$message.success('复制成功')
}
});
},
// 点击打电话
callMobile(phoneNumber) {
let STORE_PERMISSION = uni.getStorageSync('PLATFORM_PERMISSION_PHONE') || false;
if (!STORE_PERMISSION && ACCEPT_PLATFORM == 'Android') {
this.$util.showModal({
title: '提示',
content: '萬家商超访问电话权限及功能用于联系平台,是否允许?',
confirmColor: "#FF2020",
// confirmText: this.i18n['允许'],
// cancelText:this.i18n["取消"],
success: (res) => {
if (res.confirm) {
uni.setStorageSync('PLATFORM_PERMISSION_PHONE', true)
this.$util.showModal({
title: '拨打电话给', content: phoneNumber + '', confirmText: '拨打', success: res => {
if (res.confirm) {
uni.makePhoneCall({
phoneNumber: phoneNumber,
});
}
},
})
}
},
});
return false;
}
this.$util.showModal({
title: '拨打电话给', content: phoneNumber + '', confirmText: '拨打', success: res => {
if (res.confirm) {
uni.makePhoneCall({
phoneNumber: phoneNumber,
});
}
},
})
},
// 判断是否多值是否成立
in_array(type, str) {
let arr = []
// str 是否为字符串
if (typeof str === 'string') arr = str.split(',')
// str 是否为数组
if (typeof str === 'object') arr = str
let index = -1
index = arr.findIndex(item => type == item)
console.log('index-------------', index);
if (index == -1) {
return false
}
return true
},
// 设置自定义底部
setTabBarItem() {
// uni.setTabBarItem({
// index: 0,
// text: global.i18n.t('首页'),
// })
// uni.setTabBarItem({
// index: 1,
// text: global.i18n.t('分类'),
// })
// uni.setTabBarItem({
// index: 2,
// text: global.i18n.t('购物车'),
// })
// uni.setTabBarItem({
// index: 3,
// text: global.i18n.t('我的'),
// })
},
// 页面跳转
handleJump(e) {
let target = e.currentTarget || e.target,
url = target.dataset.url || 'back',
type = target.dataset.type;
if (url == '' || url == '#') return;
switch (type) {
case 'SWITCH':
router.switchTab(url);
break;
case 'REDIRECT':
router.redirectTo(url);
break;
case 'RELAUNCH':
router.reLaunch(url);
break;
case 'BACK':
router.navigateBack();
break;
default:
router.navigateTo(url);
break;
}
},
// Diy页面跳转
handleJumpDiy(e) {
let target = e.currentTarget || e.target,
url = target.dataset.url || 'back',
type = target.dataset.type;
if (url == '' || url == '#') return;
switch (type) {
case 'switchTab':
router.switchTab(url);
break;
case 'redirectTo':
router.redirectTo(url);
break;
case 'reLaunch':
router.reLaunch(url);
break;
case 'navigateTo':
router.navigateTo(url);
break;
case 'back':
router.navigateBack(+url);
break;
default:
router.navigateTo(url);
break;
}
},
mixinToPlayVideo(src) {
let parm = encodeURIComponent(src)
router.navigateTo(`/pages/benben-built-in/playVideo/playVideo?src=${parm}`)
},
singleImagePreview(url) {
uni.previewImage({
current: url,
urls: [url]
});
},
multiImagePreview(url, images, field) {
let arr = []
if (field) {
images.map((item) => {
arr.push(item[field])
})
} else {
arr = images
}
uni.previewImage({
current: url,
urls: arr
});
}
}
})