From 4f940f90c4458bfa4e5f514eeca639ac97c71039 Mon Sep 17 00:00:00 2001 From: qingyiay <2386314947@qq.com> Date: 星期二, 01 八月 2023 16:33:47 +0800 Subject: [PATCH] 修改抢单错误 --- store/index.js | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 101 insertions(+), 10 deletions(-) diff --git a/store/index.js b/store/index.js index 1ce1db3..d556246 100644 --- a/store/index.js +++ b/store/index.js @@ -42,13 +42,26 @@ selectedIconPath: '../../static/tabBar-icon/Bmine57.png', text: '鎴戠殑' } + ], + three: [{ + pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar', + iconPath: '../../static/tabBar-icon/home.png', + selectedIconPath: '../../static/tabBar-icon/homeblue.png', + text: '棣栭〉' + }, + { + pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar', + iconPath: '../../static/tabBar-icon/Gmine10.png', + selectedIconPath: '../../static/tabBar-icon/Bmine57.png', + text: '鎴戠殑' + } ] } const store = new Vuex.Store({ state: { // 鐢ㄦ埗鐣岄潰鍒ゆ柗 userInfo: {}, - roleType: null, // 1瀹㈡埛锛�2璐т唬锛�3鍙告満 + roleType: null, // 1瀹㈡埛锛�2璐т唬锛�3鍙告満 5瑁呭嵏鍛� userTabbar: [], // 鐢ㄦ埛鎵�鍦ㄨ鑹插簳閮ㄨ彍鍗曪紝 // 绉伴噸鏃剁殑閲嶉噺 globalweigh: 0, @@ -78,6 +91,9 @@ socketTask: null, websocketData: null, // 瀛樻斁浠庡悗绔帴鏀跺埌鐨剋ebsocket鏁版嵁 globalIntervalId: null, + is_open_socket: false, //閬垮厤閲嶅杩炴帴 + connectNum: 1, //閲嶈繛娆℃暟, + reconnectTimeOut: null }, mutations: { lengthchange(state, payload) { @@ -94,6 +110,9 @@ uni.setStorageSync('userTabbar', state.userTabbar) } else if (roleType == 2 || roleType == 3) { state.userTabbar = userRoleTabbar.second + uni.setStorageSync('userTabbar', state.userTabbar) + } else if (roleType == 5) { + state.userTabbar = userRoleTabbar.three uni.setStorageSync('userTabbar', state.userTabbar) } }, @@ -131,7 +150,19 @@ }, setWebsocketData(state, data) { state.websocketData = data - } + }, + // 鏀瑰彉閲嶈繛鐘舵�� + changereconnectState(state, payload) { + state.is_open_socket = payload + }, + // 鏀瑰彉閲嶈繛娆℃暟 + changereconnectNum(state, payload) { + if (state.connectNum < 6) { + state.connectNum += payload + } else { + state.connectNum = payload + } + }, }, actions: { websocketInit({ state, dispatch, commit }) { @@ -139,20 +170,29 @@ state.socketTast = uni.connectSocket({ url: wsUrl, header: { CLIENT_TOC: 'Y' }, - complete: res => { - console.log(res, 'socket缁撴灉') + success: res => { + console.log(res, 'socketSuccess') if (res.errMsg === 'connectSocket:ok') { commit('changeisconnect', true) + commit('changereconnectState', true) } + }, + fail: res => { + console.log(res, 'socketFail') + console.log('ws澶辫触'); + commit('changereconnectState', false) + dispatch('reconnect') } }) state.socketTast.onOpen(() => dispatch('websocketOnOpen')) state.socketTast.onMessage(result => dispatch('websocketOnMessage', result.data)) state.socketTast.onClose(e => dispatch('websocketOnClose', e)) - state.socketTast.onError(e => dispatch('websocketOnError')) + state.socketTast.onError(e => dispatch('websocketOnError', e)) }, websocketOnOpen({ state, commit }) { - console.log('onOpen') + console.log('ws鎵撳紑') + clearInterval(state.reconnectTimeOut) + clearInterval(state.globalIntervalId) state.globalIntervalId = setInterval(() => { state.socketTast.send({ data: JSON.stringify({ type: 'ping' }), @@ -162,19 +202,70 @@ }) }, 30000) }, - websocketOnClose({ state, commit }) { + websocketOnClose({ state, commit, dispatch }, e) { if (!state.socketTast) return + console.log('ws鍏抽棴', e) state.socketTast.close(e => { commit('changeisconnect', false) }) - console.log('ws鍏抽棴') + clearInterval(state.globalIntervalId) + clearInterval(state.reconnectTimeOut) + state.socketTast = null + commit('changereconnectState', false) + if (state.connectNum < 6 && state.globalisLogin) { + uni.showToast({ + title: `杩炴帴澶辫触锛屾鍦ㄥ皾璇曠${state.connectNum}娆¤繛鎺, + icon: 'none' + }) + commit('changereconnectNum', 1) + dispatch('reconnect') + } else if (state.connectNum >= 6 && state.globalisLogin) { + commit('changereconnectNum', 1) + uni.showToast({ + title: '缃戠粶寮傚父,璇风◢鍚庨噸璇�', + icon: 'none' + }) + } else { + return + } }, - websocketOnError(e) { - console.log('socket鎶ラ敊', e) + websocketOnError({ state, commit, dispatch }, e) { + // 濡傛灉閲嶈繛鐘舵�佷负false鍒欎笉杩涜閲嶈繛锛屼负true鎵嶄細 + console.log('ws鎶ラ敊', e) + clearInterval(state.globalIntervalId) + clearInterval(state.reconnectTimeOut) + state.socketTast = null + commit('changereconnectState', false) + if (state.connectNum < 6 && state.globalisLogin) { + uni.showToast({ + title: `杩炴帴澶辫触锛屾鍦ㄥ皾璇曠${state.connectNum}娆¤繛鎺, + icon: 'none' + }) + commit('changereconnectNum', 1) + dispatch('reconnect') + } else if (state.connectNum > 6 && state.globalisLogin) { + commit('changereconnectNum', 1) + uni.showToast({ + title: '缃戠粶寮傚父,璇风◢鍚庨噸璇�', + icon: 'none' + }) + } else { + return + } }, // 鎺ユ敹鏁版嵁 websocketOnMessage({ state, commit }, result) { commit('setWebsocketData', result) + }, + // 閲嶆柊杩炴帴 + reconnect({ state, commit, dispatch }) { + console.log(state.is_open_socket, '閲嶆柊杩炴帴socket鐘舵��'); + clearInterval(state.globalIntervalId) + if (!state.is_open_socket && state.globalisLogin) { + state.reconnectTimeOut = setInterval(() => { + dispatch('websocketInit') + }, 5000) + } } } }) -- Gitblit v1.9.1