import Vue from 'vue' import Vuex from 'vuex' import { webSocketUrl } from '@/api/request.js' Vue.use(Vuex) // 动态底部tabbar const userRoleTabbar = { first: [{ pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar', iconPath: '../../static/tabBar-icon/home.png', selectedIconPath: '../../static/tabBar-icon/homeblue.png', text: '首页' }, { pagePath: 'pages/customer-page/customer-my/faYunstatistics/faYunstatistics', iconPath: '../../static/tabBar-icon/statistics.png', selectedIconPath: '../../static/tabBar-icon/statisticsactive.png', text: '统计' }, { pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar', iconPath: '../../static/tabBar-icon/Gmine10.png', selectedIconPath: '../../static/tabBar-icon/Bmine57.png', text: '我的' } ], second: [{ pagePath: 'pages/tabbar-page/index-tabbar/index-tabbar', iconPath: '../../static/tabBar-icon/home.png', selectedIconPath: '../../static/tabBar-icon/homeblue.png', text: '首页' }, { pagePath: 'pages/customer-page/customer-my/faYunstatistics/faYunstatistics', iconPath: '../../static/tabBar-icon/statistics.png', selectedIconPath: '../../static/tabBar-icon/statisticsactive.png', text: '统计' }, { pagePath: 'pages/tabbar-page/myPage-tabbar/myPage-tabbar', iconPath: '../../static/tabBar-icon/Gmine10.png', 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: '我的' } ], six:[{ 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: '我的' } ], seven:[{ 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: {}, ispecial:['1821820980778090498'], //用来判断是不是山西大远矿 roleType: null, // 1客户,2货代,3司机 5装卸员 userTabbar: [], // 用户所在角色底部菜单, // 称重时的重量 globalweigh: 0, // 消息推送 globalmessage: '', // 全局weihousecode globalweighHouseCode: '', // 全局红外状态 globalinfraredStatus: false, // 司机修改个人信息 globaluserInfo: { phone: '', name: '', username: '', type: 3, idCard: '', carNo: '', carImg: '', drivingImg: '', axleNum: '', weight: '', userId: '' }, globalisconnect: true, globalisUploadimg: false, globalisLogin: false, socketTask: null, websocketData: null, // 存放从后端接收到的websocket数据 globalIntervalId: null, is_open_socket: false, //避免重复连接 connectNum: 1, //重连次数, reconnectTimeOut: null, //重新链接的定时器 // 打印出入门证 一次就可以有打印入门证, 两次可以有入门证 出门证 0次一张都没有 ablePrintInduction: false, //入门证 ablePrintOut: false, //出门证 driverTourImgList: ['https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj1.png', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj2.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj3.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj4.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj5.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj6.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj7.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj8.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj9.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj10.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj11.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj12.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj13.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj14.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj15.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj16.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj17.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj18.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj19.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj20.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj21.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj22.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj23.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj24.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj25.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj26.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj27.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj28.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj29.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj30.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj31.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj32.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj33.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj33-1.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj34.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj35.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj36.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj37.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj38.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj39.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj40.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj41.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj42.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj43.jpg', 'https://mr1.res.jzeg.cn:9096/appimg/image/tour/driver/sj44.jpg', ], wsgVisiable: false, //磅房忙碌弹窗控制 wsgContent: '', globalIsFirstWeighing: 1, //是否是第一次上磅 confirmWeighVisiable: false, //磅房管理确认称重完成提示弹窗 confirmWeighContent: '', // 称重稳定态 0/稳定 1/非稳定 非稳定态不能点称重 globalWarning: false, }, mutations: { setUserInfo(state, identity) { state.userInfo = userObj[identity] }, // 设置底部栏 setUserTabbar(state, roleType) { state.roleType = roleType if (roleType == 1) { state.userTabbar = userRoleTabbar.first 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) }else if(roleType == 6){ state.userTabbar = userRoleTabbar.six uni.setStorageSync('userTabbar', state.userTabbar) }else if(roleType == 7){ state.userTabbar = userRoleTabbar.seven uni.setStorageSync('userTabbar', state.userTabbar) } }, // 改变重量 changeWeigh(state, payload) { state.globalweigh = payload console.log(state.globalweigh, '全局重量改变了') }, // 消息推送 pushMessage(state, payload) { state.globalmessage = payload }, // 改变weighHouseCode changeweighHouseCode(state, payload) { state.globalweighHouseCode = payload console.log(state.globalweighHouseCode, 'globalweighHouseCode改变了') }, // 改变红外状态 changeinfraredStatus(state, payload) { state.globalinfraredStatus = payload }, changeuserInfo(state, payload) { state.globaluserInfo = payload }, changesocketTask(state, payload) { state.socketTask = payload }, // 改版全局websocket状态(判断是否正常链接) changeisconnect(state, payload) { state.globalisconnect = payload }, changeisUploadimg(state, payload) { state.globalisUploadimg = payload }, changeisLogin(state, payload) { state.globalisLogin = payload console.log(state.globalisLogin, '全局登录状态改变了') }, setWebsocketData(state, data) { state.websocketData = data }, // 改变重连状态 changereconnectState(state, payload) { state.is_open_socket = payload }, // 改变重连次数 changereconnectNum(state, payload) { if (payload.isWeigh) { state.connectNum = payload.connectNum } else { if (state.connectNum < 6) { state.connectNum += payload.connectNum } else { state.connectNum = payload.connectNum } } }, changeablePrintInduction(state, payload) { state.ablePrintInduction = payload }, changeablePrintOut(state, payload) { state.ablePrintOut = payload }, changewsgVisiable(state, payload) { state.wsgVisiable = payload }, changewsgContent(state, payload) { state.wsgContent = payload }, changeglobalIsFirstWeighing(state, payload) { state.globalIsFirstWeighing = payload }, changeconfirmWeighVisiable(state, payload) { state.confirmWeighVisiable = payload }, changeconfirmWeighContent(state, payload) { state.confirmWeighContent = payload }, // 改变稳定态 changeWarning(state, payload) { state.globalWarning = payload }, }, actions: { websocketInit({ state, dispatch, commit }) { // #ifdef H5 let wsUrl = `${webSocketUrl}?UUID=${uni.getStorageSync('token')}` // #endif // #ifndef H5 let wsUrl = `${webSocketUrl}?access_token=${uni.getStorageSync('token')}` // #endif state.socketTask = uni.connectSocket({ url: wsUrl, header: { CLIENT_TOC: 'Y' }, 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') commit('changeisconnect', false) } }) state.socketTask.onOpen(() => dispatch('websocketOnOpen')) state.socketTask.onMessage(result => dispatch('websocketOnMessage', result.data)) state.socketTask.onClose(e => dispatch('websocketOnClose', e)) state.socketTask.onError(e => dispatch('websocketOnError', e)) }, websocketOnOpen({ state, commit }) { console.log('ws打开') clearInterval(state.reconnectTimeOut) //清除上一次的定时器 clearInterval(state.globalIntervalId) //清除心跳 state.globalIntervalId = setInterval(() => { state.socketTask.send({ data: JSON.stringify({ type: 'ping' }), success(e) { console.log(e, '发送心跳成功') } }) }, 30000) }, websocketOnClose({ state, commit, dispatch }, e) { if (!state.socketTask) return console.log('ws关闭', e) state.socketTask.close(e => { commit('changeisconnect', false) }) clearInterval(state.globalIntervalId) clearInterval(state.reconnectTimeOut) state.socketTask = null commit('changereconnectState', false) if ((state.connectNum < 6 || state.connectNum.connectNum < 6) && state.globalisLogin) { uni.showToast({ title: '连接失败,正在尝试重新连接', icon: 'none' }) commit('changereconnectNum', { connectNum: 1, isWeigh: false }) dispatch('reconnect') } else if (state.connectNum >= 6 && state.globalisLogin) { commit('changereconnectNum', { connectNum: 1, isWeigh: false }) uni.showToast({ title: '网络异常,请稍后重试', icon: 'none' }) } else { return } }, websocketOnError({ state, commit, dispatch }, e) { // 如果重连状态为false则不进行重连,为true才会 console.log('ws报错', e) clearInterval(state.globalIntervalId) clearInterval(state.reconnectTimeOut) state.socketTask = null commit('changereconnectState', false) if (state.connectNum < 6 || state.connectNum.connectNum < 6 && state.globalisLogin) { uni.showToast({ title: '连接失败,正在尝试重新连接', icon: 'none' }) commit('changereconnectNum', { connectNum: 1, isWeigh: false }) dispatch('reconnect') } else if (state.connectNum > 6 && state.globalisLogin) { commit('changereconnectNum', { connectNum: 1, isWeigh: false }) 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) } } }, getters: { websocketData:(state) => state.websocketData } }) export default store