# vue2-admin-template

## 基础处理

1. `css` 和 `js` 分离。建议每个组件以文件夹得形式存在 里面有.vue 文件和 css 在.vue 中引入同级目录的 css 即可

2. 自动注册组件，避免大段的 `import`

3. eslint 代码检查集成 强制要求代码检查 做到代码风格统一

4. scss 全局注入 不用每处都引入 避免代码臃肿

5. axios 二次封装 自定义求配置 防抖请求 等等。。

## 权限权限控制体系

> 当需要从后台获取权限的时候 需要去 router/private-routers.js 里面删除 privateRoutes 相关的引入

`这里需要注意 userInfo 数据模型`

```
userInfo = {
    permission:[
        'systemProgram',   // 对应每一个路由的 name
        'systemUser',
        'systemRole',
        'systemJurisdiction',
        'systemDispatch',
        'systemAudit',
        'systemLog',
        'systemConfig',
        ...

    ],
    roles:[...],
    user:[...]
}

```

- 管理为用户指定权限

- 通过权限列表查看当前项目的所有权限

当我们通过角色为用户指定到不同的权限之后 那么该用户就会在项目中体会到不同的权限功能

这一套关系就是我们所说的权限权限控制体系 也就是基于角色的权限 控制用户的访问

页面权限实现步骤如下：

- 登录从数据中拿到权限数据

- 私有路由表不被加到 routes 中

- 利用 addRoute API 动态添加到私有路由表

功能权限实现步骤如下：

- 登录从数据中拿到权限数据

- 定义隐藏按钮的方式（通过指令）

- 依据数据隐藏按钮

## 目录说明

### 根目录说明

```
├── public                      入口以及静态资源目录
│   ├── favicon.ico
│   └── index.html              入口 index.html
├── src                         源码
├──.browserslistrc
├──.env.development             开发环境配置文件
├──.env.production              生产环境配置文件
├──.eslintrc.js                 eslint 匹配规则
├──.gitignore                   git 配置忽略文件
├──.babel.config.js             babel 配置文件
├──.jsconfig.json               js 编译配置文件

├── package-lock.json
├── package.json
├── prettier.config.js          prettier插件格式话配置
├── README.md
├── tsconfig.json               TS 配置
├── vue.config.js               vue webpack 相关配置文件
└── yarn.lock
```

### src 目录说明

```
├── api                         api 接口地址方法文件
│   ├── ....js                  具体看实例 自行天加
├── assets                      静态资源
├── components                  全局组件文件夹
├── http                        api 请求层封装
│   │   ├── axios.js            封装axios文件
│   │   └── index.js            封装axios get post 请求方法文件
├── layout                      页面排版
│   ├── components              页面排版所需的组件文件夹
│   │      ├── AppMain          页面视图
│   │      └── NavBar           导航组件
│   └── index.vue               页面排版入口文件
├── router                      路由配置 文件夹
│   ├──index.ts                 路由配置 入口文件 （已经配置好大部分的路由）
│   ├──private-routes.js        私有路由表
│   └──public-routes.js         公开路由表
├── store                       状态管理文件夹
│   ├── modules                 scss 样式目录入口文件全局加载 根据业务需求自行添加
│   │      ├── app.js           处理一部分业务逻辑state
│   │      └── app.js           处理登陆相关逻辑state
│   ├── getters.js              getters 计算属性
│   └── index.js                状态管理入口文件
├── style                       scss 样式目录
│   ├── index.scss              scss 样式目录入口文件全局加载
│   ├── color.scss              scss 全局变量
│   ├── mixin.scss              scss 全局函数 公用代码块
│   └── reset.scss              全局样式重置
├── utils                       工具目录 预留     根据业务需求自行添加
├── views                       视图目录
│    ├── err-page               404 401 视图文件目录
│    ├── home                   首页视图 文件目录
│    └── login                  登录视图 文件目录
├── App.vue                     App 入口文件
├── main.js                     负责引导整个应用的起点 (自动注册组件在这里完成)
└── pemission.js                路由拦截处理
```

## 图表使用

```
ECharts 官方文档

https://echarts.apache.org/zh/index.html

```

## 数字计算

BigNumber 讲解

```js
// 转为 bignumber
const x = new BigNumber('123456789.123456789')
// 转为 普通数字
x.toNumber()

// 格式化(小数点)
x.toFormat() // '123,456,789.123456789'
x.toFormat(3) // '123,456,789.123'

// 文档地址 https://mikemcl.github.io/bignumber.js/#bignumber
```

## 拖拽插件

```js
git 地址
// https://github.com/kutlugsahin/vue-smooth-dnd

```

## 图谱插件

```js
文档地址
// http://relation-graph.com/#/docs/start
```

## lodash

```js
文档地址
// https://www.lodashjs.com/
```

## 运行命令

```

安装依赖

yarn install

运行项目 (默认运行于 8080 端口，可在 vue.config.js 文件中修改)

npm serve


编译项目

npm build

```

## LICENSE

MIT
