样例 - 倒计时控件实现案例原创
金蝶云社区-丨Nick丨
丨Nick丨
2人赞赏了该文章 1085次浏览 未经作者许可,禁止转载编辑于2021年03月18日 15:46:59
封面

需求背景

开发一个答题功能,需要计时答题,到时间不允许再答题

实现方案

在功能单据页面添加一个倒计时控件实现倒计时功能

实现过程

在功能单据页面添加一个倒计时控件,添加按钮可以手动计时停止,功能由后台插件实现

/**

 * 倒计时控件使用方法

 * 场景:在页面添加控件用来记录停留时间(用于答题计时)

 * @author zhangyizhe

 *

 */


public class CountdownapPlugIn extends AbstractFormPlugin implements CountDownListener{


@Override

public void registerListener(EventObject e) {

super.registerListener(e);

this.addItemClickListeners("kdec_toolbarap");

CountDown countdown = this.getView().getControl("kdec_countdownap");

countdown.addCountDownListener(this);

}

@Override

public void afterCreateNewData(EventObject e) {

super.afterCreateNewData(e);

CountDown countdown = this.getView().getControl("kdec_countdownap");

// 设置倒计时时间为70秒

countdown.setDuration(70);

// countdown.start();//可以在进入页面时就开始计时

}


@Override

public void itemClick(ItemClickEvent evt) {

super.itemClick(evt);

String key = evt.getItemKey();

CountDown countdown = this.getView().getControl("kdec_countdownap");

if (key.equals("kdec_start")) {

// 启动倒计时

countdown.start();

} else if (key.equals("kdec_pause")) {

// 暂停倒计时

countdown.pause();

}

}

/**

* 当倒计时结束时会触发此事件

* @param evt

*/

@Override

public void onCountDownEnd(CountDownEvent evt) {

CountDownListener.super.onCountDownEnd(evt);

this.getView().showMessage("时间到了!!!");

}



效果图

image.png

平台版本

3.0.003.39 | 3.0.003.39


踩过的坑


元数据和源代码在附件中

赞 2