# gwms-app

## 项目结构
```
├── README.md
├── babel.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public  // 静态资源
│   └── index.html
├── src
│   ├── App.vue // 入口文件
│   ├── components  // 通用组件
│   ├── i18n  // 国际化
│   ├── main.ts // 入口文件
│   ├── manifest.json // uniapp配置文件
│   ├── pages // 页面文件
│   ├── pages.json  // 页面配置
│   ├── plugins // 插件
│   ├── sfc.d.ts
│   ├── static  // 静态资源
│   ├── store // Vuex
│   ├── types // 类型订单
│   ├── uni.scss  // uniapp 全局样式
│   └── utils //  工具方法
├── tsconfig.json // TypeScript配置文件
└── yarn.lock
```

### 页面结构（TODO）

```
├── demo // 示例页面
│   ├── index.vue // 页面文件
│   ├── config.ts // 页面相关配置
│   ├── mixin.ts // 页面相关Mixin
│   └── model.ts  // 页面Module
├── system // 系统相关页面
├── index // 首页
└── login // 登录页面
```

## 代码规范

### 注释规范：

- 方法、属性、类型等注释使用
```
/**
 * 注释内容
 */
```
- 行内注释可以使用 `//`

#### 简单示例
```
/**
 * 当前计数
 * @private
 */
private count = 1;

/**
 * 增加当前计数
 * @param delta
 */
@Mutation
increment(delta: number): void {
  // 当前计数++
  this.count += delta;
}
```

### 命名规范：

- 文件名统一小写，多个单词使用`-`连接
- 类型命名使用PascalCase
- 方法及属性名和变量命名camelCase
- 不要使用_作为私有变量前缀，使用private

### 样式规范

- template中`class`名称统一小写，多个单词使用`-`连接
- 尽量避免直接书写行内样式 `style` , 使用 `class` 定义样式
- 组件内优先使用`scoped`样式

### 页面结构：

尽量保持一个页面一个文件夹，命名规则：

- 页面名称：`index.vue`
- 页面Vuex模块：`model.ts`
- 页面相关配置： `config.ts`
- 页面相关Mixin： `mixin.ts`

### Vuex：

- 用户登录状态等会话信息统一放在session模块
- ~~【删】因为已经做了自动引入，不建议使用动态引入，按照规范命名文件即可~~
- ~~【删】不要直接引用model文件，使用相关注解引入@State、@Action~~

### i18n：

- 获取当前语言` this.$i18n.locale `
- 设置当前语言` this.$i18n.locale = 'en'`

## 使用框架库

- [uni-app](https://uniapp.dcloud.io/) - 跨平台开发框架
- [uview-ui](https://uviewui.com/) - uni-app UI组件库
- [dayjs](https://github.com/iamkun/dayjs/) - 日期处理
- [luch-request](https://github.com/lei-mu/luch-request) - uni-app 请求库
- [vue-i18n](https://github.com/kazupon/vue-i18n) - vue 国际化库
- [vue-wait](https://github.com/f/vue-wait) - vue 加载状态库
- [vue-class-component](https://github.com/vuejs/vue-class-component/) - Class方式写Vue组件
- [vue-property-decorator](https://github.com/vuejs/vue-class-component/) - Vue组件装饰器
- [vuex](https://vuex.vuejs.org/zh/) - vue 状态管理
- [vuex-persistedstate](https://github.com/robinvdvleuten/vuex-persistedstate/) - vue 数据持久化
- [vuex-module-decorators](https://github.com/championswimmer/vuex-module-decorators/) - Vuex创建模块相关装饰器
- [vuex-class](https://github.com/ktsn/vuex-class/) - Vuex绑定相关装饰器

#### 关于Class方式定义Vue(x)组件及相关装饰器(@Decorator)的使用方法

参考以上
[vue-class-component](https://github.com/vuejs/vue-class-component/) 、
[vue-property-decorator](https://github.com/vuejs/vue-class-component/) 、
[vuex-module-decorators](https://github.com/championswimmer/vuex-module-decorators/) 、
[vuex-class](https://github.com/ktsn/vuex-class/)
相关库


## Project setup
```
yarn install
```

### Compiles and hot-reloads for development
```
yarn serve
```

### Compiles and minifies for production
```
yarn build
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
