项目准备
一.1. 项目描述
该项目是基于vue和ts的后台管理系统
具体包含了登录、数据管理、账号管理模块
用户登录系统后,可以查看自己学习情况和添加最新的学习任务等

一.2. 项目功能界面







一.3. 开发环境与技术
开发环境

Window10

开发工具

vscode

技术栈

Vue + ts + vuex + axios + element-ui

一.4. 项目收获
熟悉vue项目开发流程
熟悉ts使用
熟悉element-UI使用
....

应用开发详解
一.5. 引入element-ui

//element-ui

import ElementUI from 'element-ui' //element-ui的全部组件

import '
element-ui/lib/theme-chalk/index.css'//element-ui的css

Vue.use(ElementUI) //使用elementUI

一.6. 引入axios

//挂载axios

Vue.prototype.$axios = axios;

一.7. 路由分配
//外部可访问 用于动态渲染路由信息

export const asyncRouterMap = [

{

path: '/',

name: 'dashboard',

component: Layout,

//在左侧菜单中显示

hidden: true,

//实际跳转页面

redirect: '/home',

children: [

{

path: '/home',

name: 'home',

//对应在左侧菜单中显示的名称和icon

meta: { title: '首页', icon: 'fa fa-home' },

component: () => import('@/views/Home.vue')

}

]

},

// 数据管理

{

path: '/dataManage',

name: 'dataManage',

//在左侧菜单中显示

hidden: true,

//对应在左侧菜单中显示的名称和icon

meta: { title: '数据管理', icon: 'fa fa-database' },

component: Layout,

redirect: '/tableData',

children: [

//表格管理

{

path: '/tableData',

name: 'tableData',

meta: { title: '表格管理', icon: 'fa fa-table' },

component: () => import('@/views/DataManage/TableData.vue')

},

//图表管理

{

path: '/chartsData',

name: 'chartsData',

meta: { title: '图表管理', icon: 'fa fa-bar-chart' },

component: () => import('@/views/DataManage/ChartsData.vue')

},

//表单管理

{

path: '/formData',

name: 'formData',

meta: {

title: '表单管理',

icon: 'fa fa-file-text-o',

// 限制访问权限 只有管理员和客服能够访问

roles: ['admin', 'editor']

},

component: () => import('@/views/DataManage/FormData.vue')

}

]

},

//账户管理

{

path: '/userManage',

name: 'userManage',

component: Layout,

//显示

hidden: true,

redirect: '/accountData',

children: [

// /账户管理

{

path: '/accountData',

name: 'accountData',

meta: { title: '账户管理', icon: 'fa fa-user-plus', roles: ['admin'] }, // 只有管理员能够访问

component: () => import('@/views/UserManage/AccountData.vue')

}

]

},

//个人中心

{

path: '/user',

component: Layout,

redirect: '/userInfo',

//不需要在左侧菜单中显示

hidden: false,

children: [

{

path: '/userInfo',

name: 'userInfo',

meta: { title: '个人中心' },

component: () => import('@/views/UserManage/UserInfo.vue')

}

]

},

// 404页面

{

path: '/404',

name: '404',

hidden: false,

meta: { title: '404' },

component: () => import('@/views/404.vue')

},

{

path: '*',

redirect: '/404'

},

// login

{

path: '/login',

name: 'login',

hidden: false,

meta: { title: '系统登录' },

component: () => import('@/views/Login/login.vue')

},

//password

{

path: '/password',

name: 'password',

hidden: false,

meta: { title: '找回密码' },

component: () => import('@/views/Login/password.vue')

}

];

一.8. 请求拦截

// 请求拦截

service.interceptors.request.use(

(config: AxiosRequestConfig) => {

//是否在发起请求

if (localStorage.tsToken) {

config.headers.Authorization = localStorage.tsToken;

}

return config;

},

(err: any) => {

Promise.reject(err);

}

);

一.9. 响应拦截

// 响应拦截

service.interceptors.response.use(

(response: AxiosResponse) => {

return response;

},

(err: any) => {

let errMsg = '';

if (err && err.response.status) {

switch (err.response.status) {

case 401:

errMsg = '登录状态失效,请重新登录';

//删除储存的token

localStorage.removeItem('tsToken');

router.push('/login');

break;

case 403:

errMsg = '拒绝访问';

break;

case 408:

errMsg = '请求超时';

break;

case 500:

errMsg = '服务器内部错误';

break;

case 501:

errMsg = '服务未实现';

break;

case 502:

errMsg = '网关错误';

break;

case 503:

errMsg = '服务不可用';

break;

case 504:

errMsg = '网关超时';

break;

case 505:

errMsg = 'HTTP版本不受支持';

break;

default:

errMsg = err.response.data.msg;

break;

}

} else {

errMsg = err;

}

Message.error(errMsg);

return Promise.reject(errMsg);

}

);

....

©著作权归作者所有:来自51CTO博客作者qq6048445b266f9的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 基于SSH框架的人力资源管理系统设计与实现
  2. CCNP(ISCW)实验:配置Router 将AAA用于管理访问授权
  3. PG数据库管理_备份工具的使用
  4. [灾备] 数据副本管理技术(CDM)
  5. 身份和访问管理(IAM)
  6. 初试kafka监控及管理利器之kafka-eagle
  7. MySQL GUI工具,助力数据库管理
  8. 17、运维核心技能-Linux系统下用户权限管理,,200R
  9. cockpit监控系统

随机推荐

  1. 如何通过javascript显示隐藏的div?
  2. Javascript对象
  3. 在jQuery中使用css transform属性
  4. 根据用户时区显示当地时间 php+javascrip
  5. 从两个数组生成JSON
  6. 使用谷歌地图computeDistanceBetween获取
  7. ajax请求中URL和参数的编码问题
  8. 在KENDO UI Multiselect中选择默认值
  9. 在jQuery datetimepicker中禁用特定时间
  10. 桌面视图中的SlikNav多级菜单?