初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

255
addon/cashier/source/os/App.vue Executable file
View File

@@ -0,0 +1,255 @@
<script>
import {checkPageAuth,getOrderRemind,pushBind,getPushStatus} from '@/api/config.js';
import {mapGetters} from 'vuex';
import config from 'common/js/config.js';
export default {
onLaunch: function (option) {
// #ifdef APP-PLUS
uni.getSystemInfo({
success: res => {
let fontsize = ((res.windowWidth * 16) / 1200) * 5.5 + 'px';
this.$store.commit('app/setRootSize', fontsize);
}
});
// #endif
if (uni.getStorageSync('globalStoreInfo')) {
this.$store.commit('app/setGlobalStoreInfo', uni.getStorageSync('globalStoreInfo'));
}
if (uni.getStorageSync('globalStoreId')) {
this.$store.commit('app/setGlobalStoreId', uni.getStorageSync('globalStoreId'));
}
if (uni.getStorageSync('defaultImg')) {
this.$store.commit('app/setDefaultImg', uni.getStorageSync('defaultImg'));
}
if (uni.getStorageSync('addon')) {
this.$store.commit('app/setAddon', uni.getStorageSync('addon'));
}
if (uni.getStorageSync('themeConfig')) {
this.$store.commit('app/setThemeConfig', uni.getStorageSync('themeConfig'));
}
this.$store.dispatch('app/getAddonIsExistFn');
this.$store.dispatch('app/getDefaultImgFn');
this.$store.dispatch('app/getThemeConfigFn');
this.$store.dispatch('app/getMemberSearchWayConfigFn');
if (uni.getStorageSync('cashierToken')) {
this.$store.dispatch('app/getStoreInfoFn');
this.$store.dispatch('app/getUserInfoFn');
this.$store.dispatch('app/getUserGroupFn');
}
this.$store.commit('app/setCurrRoute', '/' + option.path);
// #ifdef APP-PLUS
plus.webview.open(this.$config.baseUrl + '/cashier/pages/index/loading', 'loading');
uni.switchTab({
url: '/pages/reserve/index',
success: () => {
uni.switchTab({
url: '/pages/recharge/index',
success: () => {
uni.switchTab({
url: '/pages/verify/index',
success: () => {
if (!uni.getStorageSync('cashierToken')) {
uni.navigateTo({url: '/pages/login/login'});
} else {
uni.switchTab({url: '/pages/billing/index'});
}
plus.webview.close('loading');
}
});
}
});
}
});
// #endif
this.getOrderRemindFn()
this.getPushStatusFn()
this.initSocket()
},
onShow: function () {
if (!uni.getStorageSync('cashierToken')) {
// #ifdef H5
if (location.href.indexOf('pages/index/loading') == -1) {
this.$util.redirectTo('/pages/login/login', {}, 'redirectTo');
}
// #endif
// #ifndef H5
this.$util.redirectTo('/pages/login/login', {}, 'redirectTo');
// #endif
}
// this.$nextTick(()=>{
// window.addEventListener('beforeunload', this.handleBeforeUnload);
// })
},
methods: {
// handleBeforeUnload(e){
// // 提示用户确认
// e.preventDefault();
// },
getOrderRemindFn(){
getOrderRemind().then(res=>{
if(res.code>=0){
this.$store.dispatch('app/initOverallAudio',res.data);
}
})
},
getPushStatusFn(){
getPushStatus().then(res=>{
if(res.code>=0){
this.$store.dispatch('app/setIsSocketConnect',true)
}
})
},
initSocket(){
// 心跳机制
// 可自定义成你的模式,这里只做基本处理
let linkNumber = 1
let socketInterval=setInterval(()=>{
let token = uni.getStorageSync('cashierToken');
try{
if(token&&this.isSocketConnect){
if(linkNumber>3){
this.$util.showToast({
title: 'webSocket连接异常请联系管理员'
});
if(this.overallAudioIsPlay) this.$store.dispatch('app/setOverallAudioIsPlay',false);
this.$store.dispatch('app/setIsSocketConnect',false)
linkNumber = 1
return false
}
uni.sendSocketMessage({
data: 'ping',
success: (res) => {
linkNumber = 1
},
fail: (e) => {
linkNumber++
uni.connectSocket({
url:config.webSocket,
complete: (res) => {
},
fail: (connectE) => {
// console.log(e)
}
})
}
});
}
}catch(e){
//TODO handle the exception
}
},1000)
uni.onSocketMessage((res)=>{
var data = JSON.parse(res.data);
let token = uni.getStorageSync('cashierToken');
switch(data.type){
case 'init':
if(token){
this.$store.dispatch('app/setOverallAudioBindClientId',data.data.client_id)
pushBind({client_id:data.data.client_id})
}
break;
case 'ping':
uni.sendSocketMessage({
data: 'ping',
});
break;
default:
this.$store.dispatch('app/overallAudioPlay',data.data.audio);
}
});
},
initRoute(route) {
const search = function (menu, route, arr = []) {
menu.find((item, index) => {
if (item.path == route) {
arr.push(index);
return true;
} else if (item.children) {
arr = search(item.children, route, arr);
if (arr.length) {
arr.push(index);
return true;
} else {
return false;
}
}
return false;
});
return arr;
};
let menuIndex = search(this.menu, route).reverse();
this.$store.commit('app/setMenuIndex', {level: 'firstMenuIndex', index: menuIndex[0]});
this.$store.commit('app/setMenuIndex', {level: 'secondMenuIndex', index: menuIndex[1] ?? -1});
this.$store.commit('app/setMenuIndex', {level: 'thirdMenuIndex', index: menuIndex[2] ?? -1});
},
/**
* 检测页面是否有权限
*/
checkPageAuthFn() {
checkPageAuth(this.currRoute).then(res => {
if (res.code && res.code == -10012) {
this.$util.redirectTo('/pages/index/no_permission', {}, 'redirectTo');
}
});
}
},
computed: {
menu() {
let menu = require('@/common/menu/store.js');
return menu.default ?? [];
},
isSocketConnect(){
return this.$store.state.app.isSocketConnect
},
overallAudioIsPlay(){
return this.$store.state.app.overallAudioIsPlay
},
...mapGetters(['currRoute'])
},
watch: {
currRoute: function (nVal, oVal) {
if (nVal) {
this.initRoute(nVal);
this.checkPageAuthFn();
}
},
menu: function (nVal) {
if (nVal.length) {
this.initRoute(this.currRoute);
}
}
}
};
</script>
<style lang="scss">
/*每个页面公共css */
@import url('/common/css/iconfont.css');
@import '/common/css/common.scss';
@import '/common/css/form.scss';
uni-toast .uni-toast__content {
font-size: 0.16rem !important;
}
</style>