You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
3.7 KiB
157 lines
3.7 KiB
import Vue from "vue"; |
|
import Vuex from "vuex"; |
|
|
|
Vue.use(Vuex); |
|
const debug = process.env.NODE_ENV !== "production"; |
|
|
|
import cookie from "@/utils/store/cookie"; |
|
import { |
|
getUserInfo, |
|
getUser |
|
} from "@/api/user"; |
|
import dialog from "@/utils/dialog"; |
|
|
|
const loginKey = "login_status"; |
|
|
|
const vuexStore = new Vuex.Store({ |
|
state: { |
|
// 是否已经在授权页面 |
|
isAuthorizationPage: false, |
|
// 是否授权 |
|
isAuthorization: false, |
|
// 不建议从这里取 token,但是删除掉会影响其他的页面 |
|
token: cookie.get(loginKey) || null, |
|
userInfo: cookie.get('userInfo'), |
|
$deviceType: null, |
|
location: { |
|
latitude: '', |
|
longitude: '' |
|
}, |
|
storeItems: cookie.get("storeItems") || null, |
|
goName: cookie.get("goName") || "" |
|
}, |
|
mutations: { |
|
login(state, token, expires_time) { |
|
state.token = token; |
|
cookie.set(loginKey, token, expires_time); |
|
}, |
|
logout(state) { |
|
console.log('清除数据') |
|
state.token = null; |
|
state.userInfo = null |
|
let spread = cookie.get('spread') |
|
console.log(spread, 'spread') |
|
cookie.clearAll() |
|
cookie.set('spread', spread) |
|
}, |
|
backgroundColor(state, color) { |
|
state.color = color; |
|
// document.body.style.backgroundColor = color; |
|
}, |
|
updateUserInfo(state, userInfo) { |
|
state.userInfo = userInfo; |
|
if (userInfo) { |
|
cookie.set('userInfo', userInfo) |
|
} else { |
|
cookie.set('userInfo', null) |
|
} |
|
}, |
|
updateAuthorizationPage(state, isAuthorizationPage) { |
|
state.isAuthorizationPage = isAuthorizationPage; |
|
}, |
|
updateAuthorization(state, isAuthorization) { |
|
state.isAuthorization = isAuthorization; |
|
}, |
|
updateDevicetype(state, $deviceType) { |
|
state.$deviceType = $deviceType; |
|
}, |
|
setLocation(state, location) { |
|
state.location = location |
|
}, |
|
get_store(state, storeItems) { |
|
state.storeItems = storeItems; |
|
cookie.set("storeItems", storeItems); |
|
}, |
|
get_to(state, goName) { |
|
state.goName = goName; |
|
cookie.set("goName", goName); |
|
} |
|
}, |
|
actions: { |
|
getLocation({ state, commit }, force) { |
|
uni.getLocation({ |
|
type: 'wgs84', |
|
success: function (res) { |
|
console.log(res) |
|
commit("setLocation", { |
|
longitude: res.longitude, |
|
latitude: res.latitude, |
|
}); |
|
} |
|
}); |
|
}, |
|
userInfo({ state, commit }, force) { |
|
if (state.userInfo !== null && !force) { |
|
return Promise.resolve(state.userInfo); |
|
} else { |
|
return new Promise(reslove => { |
|
getUserInfo().then(res => { |
|
commit("updateUserInfo", res.data); |
|
reslove(res.data); |
|
}); |
|
}).catch(() => { |
|
dialog.error("获取信息失败!"); |
|
}); |
|
} |
|
}, |
|
getUser({ state, commit }) { |
|
return new Promise(reslove => { |
|
getUser().then(res => { |
|
console.log(res) |
|
commit("updateUserInfo", res.data); |
|
reslove(res.data); |
|
}); |
|
}).catch((error) => { |
|
console.log(error) |
|
dialog.error("获取信息失败!"); |
|
}); |
|
}, |
|
changeLogin({ |
|
state, |
|
commit |
|
}, data, date) { |
|
commit("login", data, date); |
|
}, |
|
setUserInfo({ |
|
state, |
|
commit |
|
}, user) { |
|
commit("updateUserInfo", user); |
|
}, |
|
changeAuthorizationPage({ |
|
state, |
|
commit |
|
}, index) { |
|
commit("updateAuthorizationPage", index); |
|
}, |
|
changeAuthorization({ |
|
state, |
|
commit |
|
}, index) { |
|
commit("updateAuthorization", index); |
|
}, |
|
}, |
|
getters: { |
|
isAuthorizationPage: state => state.isAuthorizationPage, |
|
isAuthorization: state => state.isAuthorization, |
|
token: state => state.token, |
|
isLogin: state => !!state.token, |
|
userInfo: state => state.userInfo || {}, |
|
location: state => state.location, |
|
storeItems: state => state.storeItems, |
|
goName: state => state.goName, |
|
}, |
|
strict: debug |
|
}); |
|
|
|
export default vuexStore
|
|
|