import http from '../plugins/http' import storage from '../plugins/storage.js' import message from '../plugins/message.js' import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { hasLogin: false, isUniverifyLogin: false, loginProvider: "", openid: null, testvuex: false, colorIndex: 0, colorList: ['#FF0000', '#00FF00', '#0000FF'], noMatchLeftWindow: true, active: 'componentPage', leftWinActive: '/pages/component/view/view', activeOpen: '', menu: [], univerifyErrorMsg: '', currentInfo: {}, //个人用户信息 cache_address: {}, // remoteip:'',//服务器ip sign: { 'enterprise': 0, 'info': 0, 'flower': 0, 'shopping': 0, }, defaultaddress: {} }, mutations: { updateLogin(state, provider) { console.log('updateLogin', provider) state.hasLogin = provider && true || false; if (!state.hasLogin) { storage.removeItem('token') } }, login(state, provider) { state.hasLogin = true; state.loginProvider = provider; }, logout(state) { state.hasLogin = false state.openid = null state.currentInfo = {} storage.removeItem('token') message.showToast('退出登录成功') // #ifdef APP var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件 let ret = KeepAliveModule.stopLocation(); console.log('ret', ret) // #endif uni.redirectTo({ url: '/views/login/login' }) }, setOpenid(state, openid) { state.openid = openid }, setDefaultAddress(state, defaultaddress) { state.defaultaddress = defaultaddress }, setTestTrue(state) { state.testvuex = true }, setTestFalse(state) { state.testvuex = false }, setColorIndex(state, index) { state.colorIndex = index }, setActive(state, tabPage) { state.active = tabPage }, setActiveOpen(state, activeOpen) { state.activeOpen = activeOpen }, setMenu(state, menu) { state.menu = menu }, setUniverifyLogin(state, payload) { typeof payload !== 'boolean' ? payload = !!payload : ''; state.isUniverifyLogin = payload; }, setUniverifyErrorMsg(state, payload = '') { state.univerifyErrorMsg = payload } }, getters: { currentColor(state) { return state.colorList[state.colorIndex] } }, actions: { sign_add: async function ({ commit, state }, key) { console.log('sign_add', key) state.sign[key] = 1 }, sign_clear: async function ({ commit, state }, key) { console.log('sign_clear', key) state.sign[key] = 0 }, // lazy loading openid logout: async function ({ commit, state }) { commit('logout') }, getUserOpenId: async function ({ commit, state }) { return await new Promise((resolve, reject) => { if (state.openid) { resolve(state.openid) } else { uni.login({ success: (data) => { commit('login') setTimeout(function () { //模拟异步请求服务器获取 openid const openid = '123456789' console.log( 'uni.request mock openid[' + openid + ']'); commit('setOpenid', openid) resolve(openid) }, 1000) }, fail: (err) => { console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务', err) reject(err) } }) } }) }, getCurrentInfo: async function ({ commit, state }) { //把权限获取到 // console.log('getCurrentInfo,getCurrentInfo') const currentInfo = await http.request('get', '/api/current/user', {}) if (currentInfo && currentInfo.code == 0) { // state.cMenu = cMenu // state.roles = currentInfo.data.roles || [] state.currentInfo = currentInfo.data || {} state.type = currentInfo.data.type || '' state.spacecode = currentInfo.data.spacecode || '' // if(reload){ // location.reload() // } commit("updateLogin", true) } else { commit("updateLogin", false) //这种情况就是要跳转到登录页面 } }, loginwx: async function ({ dispatch, commit, state }, data) { var code = data.code let inviter = data.inviter || '' console.log('') const resp = await http.request('post', '/api/login/wechat', { data: { code: code, imgurl: data.imgurl || '', nickname: data.nickname || '', inviter: inviter }, // params:{ // code:code // } }) if (resp && resp.code == 0) { state.isBind = true storage.setItem("token", resp.data.access_token || "") state.hasLogin = true if (inviter) { storage.removeItem('inviter'); storage.removeItem('inviterTime'); storage.removeItem('inviterName'); } await dispatch('getCurrentInfo') } else { message.showToast('登录失败.' + (resp && resp.msg)) storage.removeItem('openid'); storage.removeItem('tel'); storage.removeItem('token'); } return resp }, regUser: async function ({ commit, dispatch, state }, data) { { const resp = await http.request('post', '/api/register/' + data.type, { data: { username: data.username, password: data.password, tel: data.phoneNumber || data.tel, smsCode: data.smsCode || '', dto: data.dto || undefined }, params: { clientType: data.clientType || 'app' } }) console.log('resp', resp) if (resp && resp.code == 0) { } else { } return resp } }, loginPartner: async function ({ commit, dispatch, state }, data) { { const resp = await http.request('post', '/api/login/partner' + ((data .phoneNumber || data.tel) ? '/phone' : ''), { data: { username: (data.phoneNumber || data.tel) ? (data.phoneNumber || data.tel) : data.username, password: data.password, tel: data.phoneNumber || data.tel, smsCode: data.smsCode || '' }, params: { clientType: data.clientType || 'app' } }) console.log('resp', resp) if (resp && resp.code == 0) { // await getCurrentInfo() // // this.$message.showToast('登录成功') // console.log(resp) storage.setItem('token', resp.data.access_token) commit("updateLogin", true) await dispatch('getCurrentInfo') console.log('login,reLaunch') // #ifdef APP var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件 KeepAliveModule && KeepAliveModule.startLocation({ intervalTime: 5000, //定位间隔时间 gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置 locationMode: 1, //定位模式 purpose: 0, //定位场景 ifUpload: true, //是否上报服务器 uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口 params: "{'lat':'1','lng':'3'}", //其他参数 headers: "{'authorization1':'Bearer xOHeJhg'}", }, function (res) { console.log("启用结果:", res); let ret = KeepAliveModule.getCurrentLocation(); console.log("启用结果2:", ret); }); // #endif // uni.redirectTo({ // url: '/views/app/app-home/app-home' // }) uni.reLaunch({ url: '/pages/home/supplier-home' }) } else { // this.$message.showToast('登录失败') } return resp } }, loginSupplier: async function ({ commit, dispatch, state }, data) { { const resp = await http.request('post', '/api/login/supplier' + ((data .phoneNumber || data.tel) ? '/phone' : ''), { data: { username: (data.phoneNumber || data.tel) ? (data.phoneNumber || data.tel) : data.username, password: data.password, tel: data.phoneNumber || data.tel, smsCode: data.smsCode || '' }, params: { clientType: data.clientType || 'app' } }) console.log('resp', resp) if (resp && resp.code == 0) { // await getCurrentInfo() // // this.$message.showToast('登录成功') // console.log(resp) storage.setItem('token', resp.data.access_token) commit("updateLogin", true) await dispatch('getCurrentInfo') console.log('login,reLaunch') // #ifdef APP var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件 KeepAliveModule && KeepAliveModule.startLocation({ intervalTime: 5000, //定位间隔时间 gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置 locationMode: 1, //定位模式 purpose: 0, //定位场景 ifUpload: true, //是否上报服务器 uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口 params: "{'lat':'1','lng':'3'}", //其他参数 headers: "{'authorization1':'Bearer xOHeJhg'}", }, function (res) { console.log("启用结果:", res); let ret = KeepAliveModule.getCurrentLocation(); console.log("启用结果2:", ret); }); // #endif // uni.redirectTo({ // url: '/views/app/app-home/app-home' // }) uni.reLaunch({ url: '/pages/home/supplier-home' }) } else { // this.$message.showToast('登录失败') } return resp } }, loginCustomer: async function ({ commit, dispatch, state }, data) { { const resp = await http.request('post', '/api/login/customer' + (data .phoneNumber ? '/phone' : ''), { data: { username: (data.phoneNumber || data.tel) ? (data.phoneNumber || data.tel) : data.username, password: data.password, tel: data.phoneNumber || data.tel, smsCode: data.smsCode || '' }, params: { clientType: data.clientType || 'app' } }) console.log('resp', resp) if (resp && resp.code == 0) { storage.setItem('token', resp.data.access_token) commit("updateLogin", true) await dispatch('getCurrentInfo') uni.reLaunch({ url: '/pages/home/home' }) } else { } return resp } }, submitShopping: async function ({commit, dispatch}, data) { const resp = await http.request('post', '/api/api/customer/flower/cart/change-num', { data: { id: data.id, num: 1 } } ) if (resp && resp.code === 0) { message.showToast('添加购物车成功') dispatch('sign_add', 'shopping') } else { } return resp }, } }) export default store