# ant-vue-admin
**Repository Path**: heyhaiyon/ant-vue-admin
## Basic Information
- **Project Name**: ant-vue-admin
- **Description**: 使用vue框架和ant-design-vue组件库搭建后台管理系统,其中设计到到组件封装。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-01
- **Last Updated**: 2022-02-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dateStingPicker组件封装
> 需求:
>
> 1. 页面中使用日期选择框,输入框中回显日期格式“XXXX年XX月XX日”
> 2. 提交数据时将日期格式转换为字符串,如:“20210314”
> 3. 查看时,回显数据日期格式同样为“XXXX年XX月XX日”
## 演示实例

## 序——使用软件及框架版本
1. vue 2.6.11
2. ant-design-vue 1.7.1
3. moment.js(日期转换依赖)
## 设计思路
1. 根据需求,可以知道需要回显格式需要为“XXXX年XX月XX日”,查看组件库`a-date-picker`,了解到`format`属性可以将在输入框中数据转换为特定格式。
2. 在提交数据时,由于我们是封装组件,给其他页面中使用,所以需要**将需要提交的值由子组件置到父组件**上,所以在日期组件中选中日期出发的事件`change`/`input`,在选中日期的时候需要使用到`$emit`,将值置到上层副组件。
3. 在回显数据时,查看页面数据的时候,表单上显示数据,此时从后台数据中拿到的是字符串“20210314”,同时需要将数据格式化为“XXXX年XX月XX日”,显示在输入框中。
## 具体代码过程
### 1. template模板区域
```vue
```
在这里用到几个属性,
1. 由于是封装组件,所以使用`value`实现数据的双向绑定,在表单中使用`allClear`的时候在点击清除按钮时也可以清除表单显示和底层数据。
2. mode是输入框显示模式,date、month、year可选,但是year模式时不太好用,具体可以参考下一篇,year年份组件封装。
3. 当然组件上不止有`@change`事件,`@blur`,`@select`都是可以使用的,可以根据项目需求来具体使用,不过在父组件上使用事件时,需要在子组件`props` 中声明,并在模板部分使用双向绑定`:select="select"`。
### 2. js区域
```js
```
#### 注意事项:
1. 在提交数据的时候需要提交给表单的数据我们通过`lastValue`传递;如果不需要格式转换可以直接使用`this.momVal = value`这样传递的数据类型还是moment对象。
2. 生造一个`triggerChange`属性的原因是,在ant-design-vue组件中,使用a-form表单组件的时候,分了两种情况
* 提交数据时不需要校验规则,使用`v-model`绑定数据
* 提交数据时需要校验规则,使用`v-decorator`
在使用`v-model`时,点击日期触发的事件时`input`,而在使用`v-decorator`时,点击日期触发的事件时`change`
3. 为什么要在提交数据的`change` 事件中,添加一个`!mom`的条件判断,原因是:在表单上添加`allClear`属性之后,表单中会出现可以清除当前输入框数据的符号“❌”,在清除表单数据的时候,表单上回显示`no valid`或者`NaN`,原因可能是清除之后表单的初始值数据类型不对,这点我也不是太清楚。总之,解决方法就是添加一个`!mom`的条件判断,在清除表单数据的时候重新给表单value赋一个空值`null`,因为value的类型是对象,所以不能是`""`。
### 测试demo实例
```vue
```
## Find me
Gitee:https://gitee.com/heyhaiyon/ant-vue-admin.git
微信公众号:heyhaiyang
掘金:[heyhaiyang](https://juejin.cn/user/3113464436127608)
博客园:[heyhaiyang](https://www.cnblogs.com/heyhaiyang/)
头条号:heyhaiyang