# JingTieXueTang.web
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
## 项目菜单(由数据库配置)
```js
// 例如
let menus = {
path: '/user', // 路由路径 [若有children,则不需要该字段]
meta: {
title: '用户管理', // 页面标签的标题
icon: 'user', // 菜单图标名称,要在`阿里的iconfont网站建立的库中`能找到
// hidden: false, // 是否隐藏该菜单,不配置则默认显示;为true不显示
// noClose: false, // 是否不可关闭,不配置则默认可关闭(显示“x”);为true则不可关闭,将一直显示,如首页
// noCache: false // 是否缓存页面,不配置则默认缓存(保留对页面的操作及输入的数据);为true则不缓存
},
children: [
{
path: '/user/staff', // path要完整的 [若有children,则不需要该字段]
meta: { title: '员工管理' }, // , icon: 'user' 若子菜单需要icon就加上
},
], // 子菜单,结构跟父菜单一样
};
```
## 项目共通工具使用说明
#### 1.调用后台接口方法:
- 已在全局注册,无需引入,直接使用即可。
- this.\$\_http ==> [axios 配置详解](https://github.com/axios/axios)
- this.\$\_API ==> 接口地址
```js
-----------------------vue实例内部调用后台接口------------------------------
this.$_http.get(url, config)
this.$_http.post(url, config)
this.$_http.put(url, config)
this.$_http.delete(url, config)
this.$_http.request(config)
// 其中 url为接口地址,在api目录下定义
// config内容为参数和其他配置,例如:
--------------------------执行 GET 请求---------------------------------
// 执行 GET 请求
this.$_http.get(this.$_API.INTERFACE_USER_LOGIN + "?ID=12345")
.then(response => {
// 自己的操作
console.log(response);
})
// 不需要写catch,框架会自动提示出来
// 可选地,上面的请求可以这样做
this.$_http.get(this.$_API.INTERFACE_USER_LOGIN, {
params: {
ID: 12345
}
}).then(response => {
// 自己的操作
console.log(response);
})
--------------------------执行 POST 请求---------------------------------
// 执行 POST 请求
this.$_http.post(this.$_API.INTERFACE_USER_LOGIN, {
firstName: "Fred",
lastName: "Flintstone"
}).then(response => {
// 自己的操作
console.log(response);
})
--------------------------执行 DELETE 请求---------------------------------
// 执行 POST 请求
this.$_http.delete(this.$_API.INTERFACE_USER_LOGIN, {
data: { id: 1 }
}).then(response => {
// 自己的操作
console.log(response);
})
--------------------------其他方式调用---------------------------------
Vue.request(config)/get/post/...
windows.request(config)/get/post/...
```
#### 2.使用共通过滤器
- 所有过滤器已在全局注册,无需引入,直接使用即可。
| 过滤方法名 | 功能 | 示例 |
| :-------------------- | :----------------------------------------------------------- | :--------- |
| formatDateTime | 格式化日期+时间 | date\ |
| formatDate | 格式化日期 | date\ |
| formatMoney | 格式化金额(除以 100 并保留 2 位小数),不带单位 | money\ |
| formatMoneyWithSymbol | 格式化金额(除以 100 并保留 2 位小数),不带单位,带符号:¥ | money\ |
| formatDuration | 格式化时长 | durition\ |
| formatSex | 格式化性别,1:男;2:女 | sex\ |
| formatAge | 格式化年龄显示 | age\ |
| formatMobileHidden | 电话号码隐藏中间几位 |
```js
// js中
import { formatDateTime } from '@/filters/index';
formatDateTime(date);
```
```html
date | formatDateTime
```
|
#### 3.开发时是否使用数据库中的菜单
- 在`@/main.js`目录下修改`MenusFromDB`配置即可,为`false`则使用`@/router/menu.js`中的模拟菜单配置。
#### 4.公共样式文件
- 全局样式都在`@/styles/`目录下。
- `frame`目录下是框架的样式,除了框架修改一般不建议修改;
- `components`目录下的`index.less`则是开发时各组件使用的共通样式。
- `common`目录下的`vant.less`是用来全局覆盖 antDesign-ui 中的样式,会影响所有对应的 antDesign-ui 组件,慎改。`variables.less`是定义需要的 css 变量;`index.less`用来写一些通用的样式。
#### 5.使用变量样式
- 变量样式文件位于`@/styles/common/variable.less`
```css
```
#### 6.使用图标组件
- 若有新的阿里的`iconfont更新`,需要重新获取`在线链接`,更新`@/styles/index.js`中的`scriptUrl`值
- 若是`antDesignUi中的图标`,使用
- 若是`阿里的iconfont`,使用
- 若需要修改图标颜色,则需要在行内加样式,如
#### 7.使用 vuex
- 两种方式,mapGetters 是直接取 getters.js 中所设置的变量
```js
import { mapState, mapGetters } from 'vuex';
...mapState({
userInfo: state => state.user.userInfo
})
...mapGetters(['routes', 'sidebar']),
```