修改ant-degisn-vue源码实现月范围开始结束可选同一个月

很多年没更新了

突然想起来,随便写点啥吧.这场新冠肺炎,影响太大了……

记录下最近用vue+antdv ant-degisn-vue 时,日期控件的一个小问题,官方还总是不更新修改,自己动下手,记录下

日期控件选择日期范围时,月模式,选择x月到y月,进入不能允许选择同一个月.

修改月可选择同月

 1 //文件:RangePicker.js
 2 
 3 //位置:node_modules/ant-design-vue/es/date-picker/RangePicker.js
 4 
 5  
 6 
 7 function getShowDateFromValue(value) {
 8 
 9  
10 
11  return [start, end];//by madgoat
12 
13   // var newEnd = end && end.isSame(start, 'month') ? end.clone().add(1, 'month') : end;
14 
15   // return [start, newEnd];
16 
17  
18 
19  
20 
21 //文件:RangeCalendar.js
22 
23 //位置:node_modules/ant-design-vue/es/vc-calendar/src/RangeCalendar.js
24 
25  
26 
27     disabledStartMonth: function disabledStartMonth(month) {
28 
29       var sValue = this.sValue;
30 
31       //by madgoat
32 
33       return month.isAfter(sValue[1], 'month');
34 
35       // return month.isSameOrAfter(sValue[1], 'month');
36 
37     },
38 
39     disabledEndMonth: function disabledEndMonth(month) {
40 
41       var sValue = this.sValue;
42 
43       return month.isBefore(sValue[0], 'month');
44 
45       //by madgoat
46 
47       // return month.isSameOrBefore(sValue[0], 'month');
48 
49     }
50 
51  
52 
53 function getValueFromSelectedValue(selectedValue) {
54 
55   var _selectedValue = _slicedToArray(selectedValue, 2),
56 
57       start = _selectedValue[0],
58 
59       end = _selectedValue[1];
60 
61  
62 
63   return [start, end]; // by madgoat

这样修改完成后,功能是ok了,可是没法提交,而且再次install后,就被覆盖了.

使用patch-package生成一个补丁,install时自动patch,这样就可以提交贡献给小伙伴了.

- 安装patch-package

patch-package包可以通过npm进行安装。

npm i patch-package --save-dev

或者也可以通过yarn进行安装。

yarn add --dev patch-package postinstall-postinstall

- 创建补丁

在修改依赖包内容后,就可以运行patch-package创建patch文件了。

$ npx patch-package package-name # 使用npm

$ yarn patch-package package-name # 使用yarn

运行后通常会在项目根目录下的patches目录中创建一个名为package-name+version.patch的文件。将该patch文件提交至版本控制中,即可在之后应用该补丁了。

- 部署

完成上述操作后,最后还需要修改package.json的内容,在scripts中加入"postinstall": "patch-package"。

"scripts": {

"postinstall": "patch-package"

}

至此,在后续运行npm install或是yarn命令时,便会自动为依赖包打上我们编写的补丁了。

难得更新一次,在家里宅的时间太久,好想打球????