Commit aec557e9 authored by Junling Bu's avatar Junling Bu
Browse files

chore[litemall-vue]: 参考litemall-admin结构,重新调整litemall-vue的src结构

parent 8d262f8b
import Vue from 'vue'; import Vue from 'vue';
import App from './App.vue'; import App from './App.vue';
import router from './vue/router'; import router from './router';
import store from './store'
import './assets/scss/global.scss'; import './assets/scss/global.scss';
import '@/assets/scss/iconfont/iconfont.css'; import '@/assets/scss/iconfont/iconfont.css';
import VeeValidate, { Validator } from 'vee-validate'; import VeeValidate, { Validator } from 'vee-validate';
import VueCountdown from '@/vue/plugins/vue-countdown'; import VueCountdown from '@/plugins/vue-countdown';
import zhCN from 'vee-validate/dist/locale/zh_CN'; import zhCN from 'vee-validate/dist/locale/zh_CN';
import axios from '@/vue/plugins/axios'; import axios from '@/plugins/axios';
import filters from '@/vue/filter'; import filters from '@/filter';
Vue.use(VueCountdown); Vue.use(VueCountdown);
Vue.use(axios); Vue.use(axios);
...@@ -41,5 +42,6 @@ Vue.config.productionTip = false; ...@@ -41,5 +42,6 @@ Vue.config.productionTip = false;
new Vue({ new Vue({
router, router,
store,
render: h => h(App) render: h => h(App)
}).$mount('#app'); }).$mount('#app');
const Tabbar = () => const Tabbar = () => import('@/components/Tabbar/');
import(/* webpackChunkName: "Tabbar" */ '@/vue/components/Tabbar/');
import asyncLoader from 'core/async-loader';
export default [ export default [
{ {
path: '/', path: '/',
name: 'home', name: 'home',
components: { components: {
default: asyncLoader('home/tabbar-home'), default: () => import('@/views/home/tabbar-home'),
tabbar: Tabbar tabbar: Tabbar
}, },
meta: { meta: {
......
import Vue from 'vue'; import Vue from 'vue';
import Router from 'vue-router'; import Router from 'vue-router';
import { getLocalStorage } from '@/core/utils/local-storage'; import { getLocalStorage } from '@/utils/local-storage';
import home from './home'; import home from './home';
import items from './items'; import items from './items';
......
import asyncLoader from 'core/async-loader';
const Tabbar = () => const Tabbar = () =>
import(/* webpackChunkName: "Tabbar" */ '@/vue/components/Tabbar/'); import(/* webpackChunkName: "Tabbar" */ '@/components/Tabbar/');
export default [ export default [
{ {
...@@ -11,7 +9,7 @@ export default [ ...@@ -11,7 +9,7 @@ export default [
keepAlive: true keepAlive: true
}, },
components: { components: {
default: asyncLoader('items/tabbar-class'), default: () => import('@/views/items/tabbar-class'),
tabbar: Tabbar tabbar: Tabbar
} }
}, },
...@@ -21,7 +19,7 @@ export default [ ...@@ -21,7 +19,7 @@ export default [
meta: { meta: {
keepAlive: true keepAlive: true
}, },
component: asyncLoader('items/search') component: () => import('@/views/items/search')
}, },
{ {
path: '/items/search/result', path: '/items/search/result',
...@@ -29,19 +27,19 @@ export default [ ...@@ -29,19 +27,19 @@ export default [
meta: { meta: {
keepAlive: true keepAlive: true
}, },
component: asyncLoader('items/search-result'), component: () => import('@/views/items/search-result'),
props: route => route.query props: route => route.query
}, },
{ {
path: '/items/detail/:itemId', path: '/items/detail/:itemId',
name: 'detail', name: 'detail',
props: true, props: true,
component: asyncLoader('items/detail') component: () => import('@/views/items/detail')
}, },
{ {
path: '/items/list', path: '/items/list',
name: 'list', name: 'list',
component: asyncLoader('items/list'), component: () => import('@/views/items/list'),
props: route => ({ props: route => ({
itemClass: +route.query.itemClass itemClass: +route.query.itemClass
}) })
......
import asyncLoader from 'core/async-loader';
const login = asyncLoader('login/login');
const registerGetCode = asyncLoader('login/register-getCode');
const registerSubmit = asyncLoader('login/register-submit');
const registerStatus = asyncLoader('login/register-status');
const forget = asyncLoader('login/forget');
const forgetReset = asyncLoader('login/forget-reset');
const forgetStatus = asyncLoader('login/forget-status');
export default [ export default [
{ {
path: '/login', path: '/login',
name: 'login', name: 'login',
component: login component: () => import('@/views/login/login')
}, },
{ {
path: '/login/registerGetCode', path: '/login/registerGetCode',
name: 'registerGetCode', name: 'registerGetCode',
component: registerGetCode component: () => import('@/views/login/register-getCode')
}, },
{ {
path: '/login/registerSubmit', path: '/login/registerSubmit',
name: 'registerSubmit', name: 'registerSubmit',
component: registerSubmit component: () => import('@/views/login/register-submit')
}, },
{ {
path: '/login/registerStatus/:status', path: '/login/registerStatus/:status',
name: 'registerStatus', name: 'registerStatus',
props: true, props: true,
component: registerStatus component: () => import('@/views/login/register-status')
}, },
{ {
path: '/login/forget', path: '/login/forget',
name: 'forget', name: 'forget',
component: forget component: () => import('@/views/login/forget')
}, },
{ {
path: '/login/forget/reset', path: '/login/forget/reset',
name: 'forgetReset', name: 'forgetReset',
component: forgetReset component: () => import('@/views/login/forget-reset')
}, },
{ {
path: '/login/forget/reset/:status', path: '/login/forget/reset/:status',
name: 'forgetStatus', name: 'forgetStatus',
props: true, props: true,
component: forgetStatus component: () => import('@/views/login/forget-status')
} }
]; ];
import asyncLoader from 'core/async-loader'; const Tabbar = () => import('@/components/Tabbar/');
const tab_cart = asyncLoader('order/tabbar-cart');
const PlaceOrderEntity = asyncLoader('order/place-order-entity');
const orderDetail = asyncLoader('order/orderDetail');
const PlaceOrderVirtual = asyncLoader('order/place-order-virtual');
const Payment = asyncLoader('order/payment');
const PaymentStatus = asyncLoader('order/payment-status');
const Tabbar = () =>
import(/* webpackChunkName: "Tabbar" */ '@/vue/components/Tabbar/');
export default [ export default [
{ {
...@@ -16,32 +7,35 @@ export default [ ...@@ -16,32 +7,35 @@ export default [
meta: { meta: {
login: true login: true
}, },
components: { default: tab_cart, tabbar: Tabbar } components: {
default: () => import('@/views/order/tabbar-cart'),
tabbar: Tabbar
}
}, },
{ {
path: '/order/placeOrderEntity', path: '/order/placeOrderEntity',
name: 'placeOrderEntity', name: 'placeOrderEntity',
component: PlaceOrderEntity component: () => import('@/views/order/place-order-entity')
}, },
{ {
path: '/order/orderDetail', path: '/order/orderDetail',
name: 'orderDetail', name: 'orderDetail',
component: orderDetail component: () => import('@/views/order/orderDetail')
}, },
{ {
path: '/order/placeOrderVirtual', path: '/order/placeOrderVirtual',
name: 'placeOrderVirtual', name: 'placeOrderVirtual',
component: PlaceOrderVirtual component: () => import('@/views/order/place-order-virtual')
}, },
{ {
path: '/order/payment', path: '/order/payment',
name: 'payment', name: 'payment',
component: Payment component: () => import('@/views/order/payment')
}, },
{ {
path: '/order/payment/:status', path: '/order/payment/:status',
name: 'paymentStatus', name: 'paymentStatus',
component: PaymentStatus, component: () => import('@/views/order/payment-status'),
props: true props: true
} }
]; ];
import asyncLoader from 'core/async-loader'; const tab_user = () => import('@/views/user/tabbar-user');
const UserCollect = () => import('@/views/user/module-collect');
const UserInvitation = () => import('@/views/user/module-invitation');
const UserAddress = () => import('@/views/user/module-address');
const UserAddressEdit = () => import('@/views/user/module-address-edit');
const UserServer = () => import('@/views/user/module-server');
const tab_user = asyncLoader('user/tabbar-user'); const UserInformation = () => import('@/views/user/user-information-set');
const UserCollect = asyncLoader('user/module-collect'); const UserInfo_SetBg = () => import('@/views/user/user-information-set/set-bg');
const UserInvitation = asyncLoader('user/module-invitation'); const UserInfo_SetMobile = () => import('@/views/user/user-information-set/set-mobile');
const UserAddress = asyncLoader('user/module-address'); const UserInfo_SetNickname = () => import('@/views/user/user-information-set/set-nickname');
const UserAddressEdit = asyncLoader('user/module-address-edit'); const UserInfo_SetPassword = () => import('@/views/user/user-information-set/set-password');
const UserServer = asyncLoader('user/module-server');
const UserInformation = asyncLoader('user/user-information-set'); const UserOrderEntityList = () => import('@/views/user/order-entity-list');
const UserInfo_SetBg = asyncLoader('user/user-information-set/set-bg'); const UserOrderEleList = () => import('@/views/user/order-ele-list');
const UserInfo_SetMobile = asyncLoader('user/user-information-set/set-mobile'); const UserRefundList = () => import('@/views/user/refund-list');
const UserInfo_SetNickname = asyncLoader(
'user/user-information-set/set-nickname'
);
const UserInfo_SetPassword = asyncLoader(
'user/user-information-set/set-password'
);
const UserOrderEntityList = asyncLoader('user/order-entity-list'); const Tabbar = () => import('@/components/Tabbar/');
const UserOrderEleList = asyncLoader('user/order-ele-list');
const UserRefundList = asyncLoader('user/refund-list');
const Tabbar = () =>
import(/* webpackChunkName: "Tabbar" */ '@/vue/components/Tabbar/');
export default [ export default [
{ {
......
const getters = {
sidebar: state => state.app.sidebar,
language: state => state.app.language,
size: state => state.app.size,
device: state => state.app.device,
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
introduction: state => state.user.introduction,
status: state => state.user.status,
roles: state => state.user.roles,
perms: state => state.user.perms,
setting: state => state.user.setting
}
export default getters
import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app'
import user from './modules/user'
import getters from './getters'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
app,
user
},
getters
})
export default store
import Cookies from 'js-cookie'
const app = {
state: {
sidebar: {
opened: !+Cookies.get('sidebarStatus'),
withoutAnimation: false
},
device: 'desktop',
language: Cookies.get('language') || 'en',
size: Cookies.get('size') || 'medium'
},
mutations: {
TOGGLE_SIDEBAR: state => {
if (state.sidebar.opened) {
Cookies.set('sidebarStatus', 1)
} else {
Cookies.set('sidebarStatus', 0)
}
state.sidebar.opened = !state.sidebar.opened
state.sidebar.withoutAnimation = false
},
CLOSE_SIDEBAR: (state, withoutAnimation) => {
Cookies.set('sidebarStatus', 1)
state.sidebar.opened = false
state.sidebar.withoutAnimation = withoutAnimation
},
TOGGLE_DEVICE: (state, device) => {
state.device = device
},
SET_LANGUAGE: (state, language) => {
state.language = language
Cookies.set('language', language)
},
SET_SIZE: (state, size) => {
state.size = size
Cookies.set('size', size)
}
},
actions: {
toggleSideBar({ commit }) {
commit('TOGGLE_SIDEBAR')
},
closeSideBar({ commit }, { withoutAnimation }) {
commit('CLOSE_SIDEBAR', withoutAnimation)
},
toggleDevice({ commit }, device) {
commit('TOGGLE_DEVICE', device)
},
setLanguage({ commit }, language) {
commit('SET_LANGUAGE', language)
},
setSize({ commit }, size) {
commit('SET_SIZE', size)
}
}
}
export default app
import { loginByUsername, logout, getUserInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
const user = {
state: {
user: '',
status: '',
code: '',
token: getToken(),
name: '',
avatar: '',
introduction: '',
roles: [],
perms: [],
setting: {
articlePlatform: []
}
},
mutations: {
SET_CODE: (state, code) => {
state.code = code
},
SET_TOKEN: (state, token) => {
state.token = token
},
SET_INTRODUCTION: (state, introduction) => {
state.introduction = introduction
},
SET_SETTING: (state, setting) => {
state.setting = setting
},
SET_STATUS: (state, status) => {
state.status = status
},
SET_NAME: (state, name) => {
state.name = name
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ROLES: (state, roles) => {
state.roles = roles
},
SET_PERMS: (state, perms) => {
state.perms = perms
}
},
actions: {
// 用户名登录
LoginByUsername({ commit }, userInfo) {
const username = userInfo.username.trim()
return new Promise((resolve, reject) => {
loginByUsername(username, userInfo.password).then(response => {
const token = response.data.data
commit('SET_TOKEN', token)
setToken(token)
resolve()
}).catch(error => {
reject(error)
})
})
},
// 获取用户信息
GetUserInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getUserInfo(state.token).then(response => {
const data = response.data.data
if (data.perms && data.perms.length > 0) { // 验证返回的perms是否是一个非空数组
commit('SET_PERMS', data.perms)
} else {
reject('getInfo: perms must be a non-null array !')
}
commit('SET_ROLES', data.roles)
commit('SET_NAME', data.name)
commit('SET_AVATAR', data.avatar)
commit('SET_INTRODUCTION', data.introduction)
resolve(response)
}).catch(error => {
reject(error)
})
})
},
// 第三方验证登录
// LoginByThirdparty({ commit, state }, code) {
// return new Promise((resolve, reject) => {
// commit('SET_CODE', code)
// loginByThirdparty(state.status, state.email, state.code).then(response => {
// commit('SET_TOKEN', response.data.token)
// setToken(response.data.token)
// resolve()
// }).catch(error => {
// reject(error)
// })
// })
// },
// 登出
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMS', [])
removeToken()
resolve()
}).catch(error => {
reject(error)
})
})
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
},
// 动态修改权限
ChangeRoles({ commit, dispatch }, role) {
return new Promise(resolve => {
commit('SET_TOKEN', role)
setToken(role)
getUserInfo(role).then(response => {
const data = response.data
commit('SET_ROLES', data.roles)
commit('SET_PERMS', data.perms)
commit('SET_NAME', data.name)
commit('SET_AVATAR', data.avatar)
commit('SET_INTRODUCTION', data.introduction)
dispatch('GenerateRoutes', data) // 动态修改权限后 重绘侧边菜单
resolve()
})
})
}
}
}
export default user
import Cookies from 'js-cookie'
const TokenKey = 'X-Litemall-Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment