日期范围字段如何限制可选范围

1 问题描述
日期字段有“可选范围”功能,参考日期字段。当前日期范围字段不支持该功能,类似功能需要借助插件来实现。
2 原理及思路
日期范围控件的类为:DateRangeEdit。其中有setMinDate(Date date)和setMaxDate(Date date)方法用于设置最小以及最大可选范围。
因为对灵活性的需求,可以在单据内再添加整数字段,用于设置“最早可选N天前”、“最迟可选N天后”类似的场景。
3 截图演示功能
以下两张图可以看到,当限制当前日期“前3天”和“前7天”时,日期范围控件均实现了逻辑。


4 代码展示
package nm21.plugin.formPlugin;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.ILocaleString;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.field.DateRangeEdit;
import kd.bos.form.operate.FormOperate;
import kd.bos.portal.util.SerializationUtils;
import kd.sdk.plugin.Plugin;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.EventObject;
/**
* 单据界面插件
*/
public class DateRangePlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
//监听单据内设置字段的值改变,用于计算新的日期范围控件的最早可选日期
if ("nm21_integerfield".equals(name)) {
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
//计算最早可选时间
String minDate = computeMinDate(this.getModel().getValue("nm21_integerfield"),sdf);
//根据最早可选时间,重新设置日期范围控件
changeDateRange(minDate,sdf);
}
}
private void changeDateRange(String minDate,SimpleDateFormat sdf) {
if (null == minDate) return;
Date date = 日期范围字段如何限制可选范围
1 问题描述日期字段有“可选范围”功能,参考日期字段。当前日期范围字段不支持该功能,类似功能需要借助插件来实现。2 原理及思路日期范...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



