初始化商家端

This commit is contained in:
wangxiaowei
2025-04-30 14:08:39 +08:00
commit 68b408b1e7
568 changed files with 118884 additions and 0 deletions

334
App.vue Normal file
View File

@ -0,0 +1,334 @@
<script>
import Vue from 'vue'
import io from "@hyoga/uni-socket.io";
// #ifdef APP-PLUS
import {
permissionListener
} from '@/common/utils/permissionTips.js'
// #endif
export default {
onLaunch: function() {
this.$store.commit('initApp')
uni.getSystemInfo({
success: function(e) {
// #ifndef MP
Vue.prototype.StatusBar = e.statusBarHeight
if (e.platform == 'android') {
permissionListener()
Vue.prototype.CustomBar = e.statusBarHeight + 50
} else {
Vue.prototype.CustomBar = e.statusBarHeight + 45
}
// #endif
// #ifdef MP-WEIXIN
Vue.prototype.StatusBar = e.statusBarHeight
let custom = wx.getMenuButtonBoundingClientRect()
Vue.prototype.Custom = custom
Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight
// #endif
// #ifdef MP-ALIPAY
Vue.prototype.StatusBar = e.statusBarHeight
Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight
// #endif
let unitRatio = 750 / uni.getSystemInfoSync().windowWidth
Vue.prototype.StatusBarRpx = Vue.prototype.StatusBar * unitRatio
Vue.prototype.CustomBarRpx = Vue.prototype.CustomBar * unitRatio
Vue.prototype.unitRatio = unitRatio
Vue.mixin({
data() {
return {
StatusBar: Vue.prototype.StatusBar, //状态栏高度(px)
CustomBar: Vue.prototype.CustomBar, //整个标题栏高度(px)
StatusBarRpx: Vue.prototype.StatusBarRpx, //状态栏高度(rpx)
CustomBarRpx: Vue.prototype.CustomBarRpx, //整个标题栏高度(rpx)
}
},
})
},
})
// #ifdef APP-PLUS
this.handleTestingVersion()
// 锁定屏幕显示方向为竖屏正方向
plus.screen.lockOrientation('portrait-primary')
// 推送服务
plus.push.addEventListener('click', (message) => {
this.pushCallback(message)
})
// #endif
global.token && this.$store.dispatch('getCartList')
},
onShow: function() {
console.log('APP Show')
// #ifdef APP-PLUS
// 获取参数
const args = plus.runtime.arguments
if (args) {
plus.runtime.arguments = null
plus.runtime.arguments = ''
let params_str = args.split('?')[1]
if (params_str) {
let params = params_str.split('&').reduce(function(total, item) {
let arr = item.split('=')
total[arr[0]] = arr[1]
return total
}, {})
console.log('params', params)
// params 参数: path 跳转路径 options 参数
uni.navigateTo({
url: `${params.path}?goods_id=${params.goods_id}&activity_id=${params.activity_id}&sku_id=${params.sku_id}&bargain_id=${params.bargain_id}`,
})
}
}
// #endif
let token = uni.getStorageSync('USER_TOKEN');
console.log(token)
if (token) {
this.socketFun();
}
uni.$on('appLoginSuccess', res => {
this.socketFun();
});
},
onHide: function() {
// 用户退出app时把二次验证状态改为true
console.log('APP Hide')
},
methods: {
// 更新检测
handleTestingVersion() {
let _platform = uni.getSystemInfoSync().platform;
let client = _platform === 'android' ? 3 : 2
plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
console.log(widgetInfo)
global.VERSION_CODE = widgetInfo.version
console.log(global.apiUrls.publicUpdateAPP1)
this.$api.post(global.apiUrls.publicUpdateAPP1, {
version: widgetInfo.version,
app_ident: 'user',
client: client
}).then(res => {
console.log(res.data.data.version, widgetInfo.versionCode, res.data)
if (res.data.code == 1 && res.data.data.version - 0 > widgetInfo.versionCode) {
plus.nativeUI.toast('检测到新版本' + res.data.data.version_name + ',后台更新中...');
console.log(12345)
let wgtUrl = res.data.data.version_url;
console.log(wgtUrl)
let apkUrl = res.data.data.version_apk_url || '';
uni.downloadFile({
url: wgtUrl,
success: (downloadResult) => {
console.log('downloadResult=', downloadResult);
if (downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, {
force: false
}, function(e) {
plus.runtime.restart();
}, function(e) {
console.log(e);
if (plus.os.name == 'Android' && apkUrl) {
uni.downloadFile({
url: apkUrl,
success: (
downloadResult) => {
if (downloadResult
.statusCode ===
200) {
plus.runtime
.install(
downloadResult
.tempFilePath
);
}
}
});
} else {
plus.runtime.launchApplication({
action: `https://apps.apple.com/cn/app/%E8%90%AC%E5%AE%B6%E5%95%86%E8%B6%85%E5%95%86%E5%AE%B6/id6738981517`
}, function(e) {
console.log(
'Open system default browser failed: ' +
e.message);
});
}
});
} else if (downloadResult.statusCode === 400) {
if (plus.os.name == 'Android' && apkUrl) {
uni.downloadFile({
url: apkUrl,
success: (downloadResult) => {
if (downloadResult
.statusCode === 200) {
plus.runtime.install(
downloadResult
.tempFilePath);
}
}
});
} else {
plus.runtime.launchApplication({
action: `https://apps.apple.com/cn/app/%E8%90%AC%E5%AE%B6%E5%95%86%E8%B6%85%E5%95%86%E5%AE%B6/id6738981517`
}, function(e) {
console.log(
'Open system default browser failed: ' +
e.message);
});
}
}
}
});
} else {
console.log('没有新的版本')
// this.$message.info('已经是最新版本')
}
})
});
},
socketFun() {
this.$api.post(global.apiUrls.post5fbb84a54d991).then(res => {
console.log(res)
// let url = "http://39.98.38.221:30544"
// global.WEBSOCKET = url;
// Vue.prototype.$socket = new io(url, {
// transports: ['websocket']
// });
global.WEBSOCKET = res.data.data.socket_url;
Vue.prototype.$socket = new io(res.data.data.socket_url, {
transports: ['websocket']
});
console.log(Vue.prototype.$socket)
// 断线重连
this.$socket.on('reconnect', function() {
console.log('重连成功');
});
this.$socket.on('connect', () => {
console.log('连接成功------------------------------------');
// 将自己注册到SOCKET
this.$socket.emit('conn', {
uid: res.data.data.uid,
userSig: res.data.data.userSig,
name: res.data.data.uid
});
});
this.$socket.on('conn', function(data) {
if (data[0] == 'ok') {
console.log('注册成功');
} else {
console.log('注册失败');
console.log(data)
}
});
//监听断线
this.$socket.on('disconnect', function() {
console.log('已下线');
});
// 监听接收消息
this.$socket.on('broadcastingListen', function(data) {
console.log('接收消息', data);
// myAudio.play();
for (var i = 0; i < data.length; i++) {
console.log('broadcastingListen======', data[i]); // 与你发送的msg 一致
uni.$emit('receiveMsg', data[i]);
}
});
});
},
// 推送回调
pushCallback(message) {
this.$urouter.navigateTo('/pages/service-message/message/message-type/index')
},
// #ifdef APP-PLUS
// 权限检查
checkPermissions() {
// #ifdef APP-PLUS
if (plus.os.name == 'Android') {
// 判断是Android
var main = plus.android.runtimeMainActivity()
var pkName = main.getPackageName()
var uid = main.getApplicationInfo().plusGetAttribute('uid')
var NotificationManagerCompat = plus.android.importClass(
'android.support.v4.app.NotificationManagerCompat')
var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled()
// 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
if (!areNotificationsEnabled) {
uni.showModal({
title: this.$t('通知权限开启提醒'),
content: this.$t('您还没有开启通知权限,无法接受到消息通知,是否前往设置?'),
success: function(res) {
if (res.confirm) {
var Intent = plus.android.importClass('android.content.Intent')
var Build = plus.android.importClass('android.os.Build')
//android 8.0引导
if (Build.VERSION.SDK_INT >= 26) {
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS')
intent.putExtra('android.provider.extra.APP_PACKAGE', pkName)
} else if (Build.VERSION.SDK_INT >= 21) {
//android 5.0-7.0
var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS')
intent.putExtra('app_package', pkName)
intent.putExtra('app_uid', uid)
} else {
//(<21)其他--跳转到该应用管理的详情页
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
var uri = Uri.fromParts('package', mainActivity.getPackageName(), null)
intent.setData(uri)
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent)
}
},
})
}
} else if (plus.os.name == 'iOS') {
// 判断是IOS
var isOn = undefined
var types = 0
var app = plus.ios.invoke('UIApplication', 'sharedApplication')
var settings = plus.ios.invoke(app, 'currentUserNotificationSettings')
if (settings) {
types = settings.plusGetAttribute('types')
plus.ios.deleteObject(settings)
} else {
types = plus.ios.invoke(app, 'enabledRemoteNotificationTypes')
}
plus.ios.deleteObject(app)
isOn = 0 != types
if (isOn == false) {
uni.showModal({
title: this.$t('通知权限开启提醒'),
content: this.$t('您还没有开启通知权限,无法接受到消息通知,是否前往设置?'),
success: function(res) {
if (res.confirm) {
var app = plus.ios.invoke('UIApplication', 'sharedApplication')
var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:')
plus.ios.invoke(app, 'openURL:', setting)
plus.ios.deleteObject(setting)
plus.ios.deleteObject(app)
}
},
})
}
}
// #endif
},
// #endif
},
}
</script>
<style lang="scss">
/* #ifndef APP-PLUS-NVUE */
@import './style/icon.css';
@import './style/main.css';
@import './style/animation.css';
@import './style/iconfont.css';
@import './style/common.scss';
@import './style/diyStyle.scss';
/* #endif */
</style>