first commit
This commit is contained in:
0
store/actions.js
Normal file
0
store/actions.js
Normal file
7
store/getters.js
Normal file
7
store/getters.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const getters = {
|
||||
auth: state => state.auth.token,
|
||||
location: state => state.location,
|
||||
ws: state => state.ws,
|
||||
policy: state => state.policy,
|
||||
}
|
||||
export default getters
|
||||
19
store/index.js
Normal file
19
store/index.js
Normal file
@@ -0,0 +1,19 @@
|
||||
import Vue from 'vue'
|
||||
import Vuex from 'vuex'
|
||||
import getters from '@/store/getters'
|
||||
|
||||
import auth from '@/store/modules/auth'
|
||||
import location from '@/store/modules/location'
|
||||
import ws from '@/store/modules/ws'
|
||||
import policy from '@/store/modules/policy'
|
||||
|
||||
Vue.use(Vuex)
|
||||
export default new Vuex.Store({
|
||||
modules: {
|
||||
auth,
|
||||
location,
|
||||
ws,
|
||||
policy,
|
||||
},
|
||||
getters
|
||||
})
|
||||
73
store/modules/auth.js
Normal file
73
store/modules/auth.js
Normal file
@@ -0,0 +1,73 @@
|
||||
import {
|
||||
setUser,
|
||||
setToken,
|
||||
getAuth
|
||||
} from '../../com/storage/auth.js'
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
token: {
|
||||
access_token: '',
|
||||
token_type: '',
|
||||
expires_in: '',
|
||||
},
|
||||
user: {
|
||||
id: '',
|
||||
username: '',
|
||||
vip: '',
|
||||
nickname: '',
|
||||
avatar_url: '',
|
||||
appcode: '',
|
||||
pid: '',
|
||||
mobile: '',
|
||||
openid: '',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: getAuth() ? getAuth() : getDefaultState(),
|
||||
mutations: {
|
||||
//通俗的理解,mutations 里面装着改变数据的方法集合,处理数据逻辑的方法全部放在 mutations 里,使数据和视图分离。
|
||||
setToken(state, value) { //更新当前时间戳
|
||||
state.token = value;
|
||||
setToken(value);
|
||||
},
|
||||
resetToken(state) {
|
||||
Object.assign(state.token, getDefaultState().token);
|
||||
setToken(getDefaultState().token);
|
||||
},
|
||||
setUser(state, value) {
|
||||
state.user = value;
|
||||
setUser(value);
|
||||
},
|
||||
resetUser: (state) => {
|
||||
Object.assign(state.user, getDefaultState().user);
|
||||
setUser(getDefaultState().user);
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
/**
|
||||
* action 类似于 mutation ,不同在于:
|
||||
|
||||
action 提交的是 mutation,通过 mutation 来改变 state ,而不是直接变更状态。
|
||||
action 可以包含任意异步操作。
|
||||
*/
|
||||
|
||||
setTokenAction(context, value) {
|
||||
context.commit('setToken', value);
|
||||
},
|
||||
resetTokenAction: (state) => {
|
||||
context.commit('resetToken');
|
||||
},
|
||||
setUserAction(context, value) {
|
||||
context.commit('setUser', value);
|
||||
},
|
||||
resetUserAction(context) {
|
||||
context.commit('resetUser');
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
|
||||
},
|
||||
}
|
||||
63
store/modules/location.js
Normal file
63
store/modules/location.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
data: {
|
||||
city: '郑州市',
|
||||
city_code: '410100',
|
||||
lat: '34.789049',
|
||||
lng: '113.684792',
|
||||
time: ''
|
||||
},
|
||||
current: {
|
||||
lat: '34.789049',
|
||||
lng: '113.684792',
|
||||
city: '郑州市',
|
||||
city_code: '410100',
|
||||
time: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: getDefaultState(),
|
||||
mutations: {
|
||||
//通俗的理解,mutations 里面装着改变数据的方法集合,处理数据逻辑的方法全部放在 mutations 里,使数据和视图分离。
|
||||
setStateData(state, value) { //更新当前时间戳
|
||||
state.data = value;
|
||||
},
|
||||
|
||||
resetStateData(state) {
|
||||
|
||||
},
|
||||
setStateCurrent(state, value) { //更新当前时间戳
|
||||
state.current = value;
|
||||
},
|
||||
resetStateCurrent(state) {
|
||||
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
/**
|
||||
* action 类似于 mutation ,不同在于:
|
||||
|
||||
action 提交的是 mutation,通过 mutation 来改变 state ,而不是直接变更状态。
|
||||
action 可以包含任意异步操作。
|
||||
*/
|
||||
|
||||
setStateDataAction(context, value) {
|
||||
context.commit('setStateData', value);
|
||||
},
|
||||
resetStateDataAction: (state) => {
|
||||
context.commit('resetStateData');
|
||||
},
|
||||
setStateCurrentAction(context, value) {
|
||||
context.commit('setStateCurrent', value);
|
||||
},
|
||||
resetStateCurrentAction: (state) => {
|
||||
context.commit('resetStateCurrent');
|
||||
},
|
||||
},
|
||||
getters: {
|
||||
|
||||
},
|
||||
}
|
||||
34
store/modules/policy.js
Normal file
34
store/modules/policy.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
is_buy: 0,
|
||||
is_trusteeship: 0,
|
||||
is_give: 0,
|
||||
is_mianze: 0,
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: getDefaultState(),
|
||||
mutations: {
|
||||
//通俗的理解,mutations 里面装着改变数据的方法集合,处理数据逻辑的方法全部放在 mutations 里,使数据和视图分离。
|
||||
setBuy(state, value) { //更新当前时间戳
|
||||
state.is_buy = value;
|
||||
},
|
||||
setTrusteeship(state, value) { //更新当前时间戳
|
||||
state.is_trusteeship = value;
|
||||
},
|
||||
setGive(state, value) { //更新当前时间戳
|
||||
state.is_give = value;
|
||||
},
|
||||
setMianze(state, value) { //更新当前时间戳
|
||||
state.is_mianze = value;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
|
||||
},
|
||||
getters: {
|
||||
|
||||
},
|
||||
}
|
||||
208
store/modules/ws.js
Normal file
208
store/modules/ws.js
Normal file
@@ -0,0 +1,208 @@
|
||||
import {
|
||||
WS_URL
|
||||
} from '@/env'
|
||||
import store from '../../store'
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
socketTask: null,
|
||||
interval: null,
|
||||
//断线重连定时器
|
||||
timer: null,
|
||||
//心跳间隔
|
||||
timeout: 20000,
|
||||
// 当前重连次数
|
||||
connectNum: 1,
|
||||
//链接是否打开了
|
||||
isOpen: false,
|
||||
network: true,
|
||||
orderPreInterval: null,
|
||||
orderRunInterval: null,
|
||||
// 存放websocket中onMessage数据
|
||||
orderPre: {
|
||||
device_id: '',
|
||||
pay_type: '',
|
||||
is_connect: 0,
|
||||
fd: '',
|
||||
},
|
||||
orderRunItems: [],
|
||||
orderRunItem: {
|
||||
order: null,
|
||||
report: null
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: getDefaultState(),
|
||||
mutations: {
|
||||
setWsData(state, data) {
|
||||
state.wsData = data
|
||||
},
|
||||
setOrderPreInterval(state, data) {
|
||||
clearTimeout(state.orderPreInterval);
|
||||
state.orderPreInterval = setInterval(() => {
|
||||
this.dispatch('ws/WEBSOCKET_SEND', JSON.stringify(data));
|
||||
}, 10000);
|
||||
},
|
||||
setOrderRunInterval(state, data) {
|
||||
clearTimeout(state.orderRunInterval);
|
||||
state.orderRunInterval = setInterval(() => {
|
||||
this.dispatch('ws/WEBSOCKET_SEND', JSON.stringify(data));
|
||||
}, 15000);
|
||||
},
|
||||
WEBSOCKET_SEND(state, data) {
|
||||
state.socketTask.send({
|
||||
data,
|
||||
async success() {
|
||||
console.log('send', data)
|
||||
},
|
||||
})
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
|
||||
reConnect({
|
||||
commit,
|
||||
state
|
||||
}) {
|
||||
if (state.connectNum < 20) {
|
||||
state.timer = setTimeout(() => {
|
||||
this.dispatch('ws/initWs')
|
||||
}, 3000)
|
||||
state.connectNum += 1;
|
||||
} else if (state.connectNum < 50) {
|
||||
state.timer = setTimeout(() => {
|
||||
this.dispatch('ws/initWs')
|
||||
}, 10000)
|
||||
state.connectNum += 1;
|
||||
} else {
|
||||
state.timer = setTimeout(() => {
|
||||
this.dispatch('ws/initWs')
|
||||
}, 450000)
|
||||
state.connectNum += 1;
|
||||
}
|
||||
},
|
||||
initWs({
|
||||
commit,
|
||||
state
|
||||
}) {
|
||||
console.log(state.isOpen)
|
||||
// 防止重复连接
|
||||
if (state.isOpen) {
|
||||
return;
|
||||
};
|
||||
const _this = this;
|
||||
//检查网络是否可用
|
||||
uni.getNetworkType({
|
||||
success(result) {
|
||||
console.log(result)
|
||||
if (result.networkType == 'none') {
|
||||
|
||||
state.netWork = false;
|
||||
// 网络断开后显示model
|
||||
// uni.showModal({
|
||||
// title: '网络错误',
|
||||
// content: '请检查网络',
|
||||
// showCancel: false,
|
||||
// success: function(res) {
|
||||
|
||||
// }
|
||||
// })
|
||||
return;
|
||||
}
|
||||
|
||||
let url = wsUrl();
|
||||
const token = store.state.auth.token.access_token;
|
||||
state.socketTask = uni.connectSocket({
|
||||
url,
|
||||
header: {
|
||||
Authorization: token.token_type + ' ' + token.access_token,
|
||||
},
|
||||
complete: (e) => {
|
||||
|
||||
},
|
||||
});
|
||||
|
||||
if (!state.socketTask) {
|
||||
return;
|
||||
};
|
||||
// 监听开启
|
||||
state.socketTask.onOpen(() => {
|
||||
console.log('onOpen')
|
||||
// 将连接状态设为已连接
|
||||
state.isOpen = true;
|
||||
|
||||
//开启心跳
|
||||
state.interval = setInterval(() => {
|
||||
|
||||
state.socketTask.send({
|
||||
data: 'ping',
|
||||
success(res) {
|
||||
console.log(res)
|
||||
},
|
||||
fail(err) {
|
||||
console.log('正在尝试重新链接第' + state
|
||||
.connectNum + '次');
|
||||
uni.showToast({
|
||||
title: '正在尝试重新链接第' + state
|
||||
.connectNum + '次',
|
||||
icon: "none",
|
||||
});
|
||||
state.isOpen = false;
|
||||
//执行重连
|
||||
_this.dispatch('ws/reConnect');
|
||||
},
|
||||
})
|
||||
}, state.timeout);
|
||||
});
|
||||
// 监听信息
|
||||
state.socketTask.onMessage(res => {
|
||||
console.log('onMessage:' + res.data)
|
||||
if (res.data && res.data == 'pong') {
|
||||
return;
|
||||
}
|
||||
let data = JSON.parse(res.data);
|
||||
switch (data.action) {
|
||||
case 'order_pre':
|
||||
state.orderPre = data.data;
|
||||
break;
|
||||
case 'order_run_items':
|
||||
state.orderRunItems = data.data;
|
||||
break;
|
||||
case 'order_run_item':
|
||||
state.orderRunItem = data.data;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
});
|
||||
// 监听关闭
|
||||
state.socketTask.onClose(() => {
|
||||
state.isOpen = false;
|
||||
state.socketTask = false;
|
||||
//清除定时器
|
||||
clearTimeout(state.interval);
|
||||
state.interval = null;
|
||||
_this.dispatch('ws/reConnect');
|
||||
});
|
||||
// 监听错误
|
||||
state.socketTask.onError((e) => {
|
||||
state.isOpen = false;
|
||||
state.socketTask = false;
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
WEBSOCKET_SEND({
|
||||
commit
|
||||
}, data) {
|
||||
commit('WEBSOCKET_SEND', data)
|
||||
},
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
0
store/mutations.js
Normal file
0
store/mutations.js
Normal file
Reference in New Issue
Block a user