信息化与数字化技术的持续发展,企业在不同阶段会引入众多的系统和应用程序来解决不同业务部门的需求,试图持续提升管理效率与生产效率。然而这些系统通常采用不同技术或解决方案,接入不同的系统需要耗费大量的时间和费用,低代码平台完美解决了这些问题。
上一篇文章,手把手教大家如何入门低代码/无代码平台
入门篇 请点击这里:精彩!手把手教你玩转低代码/无代码平台的低码脚本——入门篇
本期我们继续为大家介绍汇总低代码常用场景及其写法,为使用低代码的用户提供对应的案例,便于低代码的上手,减少开发的时间。
1.场景demo
5.1字段级校验
5.1.1关联必填校验
场景描述:子表单内,出行方式选择为飞机后,航班信息字段必填
表单:
代码:
(function () {
var doc = $.context.getCurrentDocument();
var subDocs = doc.getElementByName("出行明细").getSubDocuments();
for (var i = 0; i < subDocs.size(); i++) {
var subDoc = subDocs.get(i);
var way = subDoc.getElementByName("出行方式").getValue();
var info = subDoc.getElementByName("航班信息").getValue();
if (way == 2 && info == null) {
//获取默认校验信息集合
var message = $.validate.create();
message.addError("航班信息不能为空");
//返回默认校验信息集合
return message;
}
}
})()
5.1.2单一字段校验
场景描述:报销金额字段必须小于1000元
表单:
代码:
(function(){
//获取提交表单
var doc = $.context.getCurrentDocument();
//获取总金额控件值
var count = doc.getElementByName("报销金额").getIntValue();
if(count \>1000){
//创建校验消息对象
var message = $.validate.create();
message.addError("金额大于1000,不允许提交;");
return message;
}
})()
5.1.3多重校验
场景描述:价值观收集:子表单内容需填写全部维度的价值观评价,价值观共有5个,需校验每个价值观都有填写到且不能重复填写
表单:
代码:
(function () {
var doc = $.context.getCurrentDocument();
var subDocs = doc.getElementByName("填报明细").getSubDocuments();
var set = new Packages.java.util.HashSet();
var isEmpty = false;
if (subDocs != null) {
for (var i = 0; i < subDocs.size(); i++) {
var subDoc = subDocs.get(i);
var infoList = subDoc.getElementByName("价值观").getValue();
set.add(infoList);
var description = subDoc.getElementByName("价值描述").getValue();
var comment = subDoc.getElementByName("关联评论").getValue();
// 判断关联评论和价值描述是否为空
if (description == null || description == '' || comment == null || comment == '') {
isEmpty = true;
}
}
if (set.size() != 5 || isEmpty) {
//获取默认校验信息集合
var message = $.validate.create();
message.addError("价值观填写不完整");
//返回默认校验信息集合
return message;
}
}
})()
5.2复制逻辑校验
5.2.1一次校验
场景描述:健康码收集:查找昨天用户有身体不适的记录,今天不能再录入
表单:
代码:
(录入前校验)
(function () {
var doc = $.context.getCurrentDocument();
//应用Id
var applicationId = $.context.getCurrentApplicationId();
//表单名称
var formName = "健康码记录";
//控件值键对
var filterParamList = new Packages.java.util.ArrayList();
var userInfo = doc.getElementByName("登记人").getValue();
var calendar = new Packages.java.util.Calendar.getInstance();
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
var lastDayEnd = calendar.getTime();
calendar.add(Calendar.DATE, -1);
var lastDayStart = calendar.getTime();
var dateInfo = "(" + lastDayStart + "," + lastDayEnd + ")";
var filterParam = new Packages.cn.com.do1.do1cloud.runtime.dto.FilterParam("登记日期", "in", dateInfo);
var userInfoParam = new Packages.cn.com.do1.do1cloud.runtime.dto.FilterParam("登记人", "eq", userInfo);
FilterParamList.add(filterParam);
FilterParamList.add(userInfoParam);
var lasyDayDocumentList = $.form.getDocumentsByFilterParam(applicationId, formName, filterParamList);
for (var i = 0; i < lasyDayDocumentList.size(); i++) {
var doc = lasyDayDocumentList.get(i);
var statues = doc.getElementByName("健康状态");
if (statues == '不适') {
//获取默认校验信息集合
var message = $.validate.create();
message.addError("用户无法录入");
//返回默认校验信息集合
return message;
}
}
})()
5.2.2多次校验
场景描述:健康码收集:查找昨天用户有身体不适的记录,今天不能再录入/健康码收集:今日已记录信息,不再重复提交
表单:
代码:
(function(){
var message = $.validate.create()
var userId = $.context.getCurrentUserId();
var appId = $.context.getCurrentApplicationId();
//获取当前日期的前一天
var date = $.date.getCurrentDate();
var cal = new Packages.java.util.Calendar.getInstance();
cal.setTime(date);
cal.add(5,-1);
var lastDate = cal.getTime();
var lastDateStr = $.date.dateToString(lastDate,"yyyy-MM-dd");
var fieldMap = new Packages.java.util.HashMap();
fieldMap.put("提交日期",lastDateStr);
fieldMap.put("员工姓名",userId);
var formModelEntity = $.form.getFormModel(appId,"信息记录表");
var docs = $.form.getDocumentsByFormModelAndCondition(appId,formModelEntity,fieldMap);
if(docs==null || docs.size()==0){
message.addError("您昨天的身体状况异常,不能进入公司");
return message;
}
var doc = docs.get(0);
var temperature = doc.getElementByName("体温情况").getValue();
var situation = doc.getElementByName("身体健康状况").getValue();
if(temperature!="1"|| situation!="1"){
message.addError("您昨天的身体状况异常,不能进入公司");
return message;
}
var date1 = $.date.getCurrentDate();
5.3消息推送
5.3.1站内信
场景描述:CRM:客户报备保护期即将过,提醒对应的业务员
表单:
代码:
(function(){
//获取当前文档
var doc = $.context.getCurrentDocument();
//获取用户id
var userId = doc.getElementByName("客户表").getValue();
//自定义消息内容
var subject = "消息标题";
var context = "消息内容";
//发送七巧站内信
$.message.sendGeneralStationMessage(subject,context,userId);
})()
5.3.2自建应用-企业微信
场景描述:CRM:客户报备保护期即将过,提醒对应的业务员
表单:
代码:
Q4低代码需求新增企业微信推送消息
5.3.3邮件
场景描述:完成客户报价后,将报价信息邮件发送给客户
邮箱字段:客户邮箱
表单:
备注:
代码:
(function () {
var doc = $.context.getCurrentDocument();
var email = doc.getElementByName("客户邮箱").getValue();
var userName = doc.getElementByName("客户名称").getValue();
var totalPrice = doc.getElementByName("报价总金额").getValue();
var date = doc.getElementByName("报价有效期").getValue();
var remark = doc.getElementByName("报价备注").getValue();
var infoList = doc.getElementByName("报名明细").getValue();
var
//邮件标题
var subject = "报价信息";
//邮件正文
var context = "" +userName + "客户,你的报价总金额为" + totalPrice +"元,有效期至:" + date +"\n" +"报价明细如下:";
for(var i = 0; i <infoList.size(); i++) {
var subDoc = infoList.get(i).getSubDocuments()
var priceProduct = subDoc.getElementByName("报价产品").getValue();
var num = subDoc.getElementByName("数量").getValue();
var price = subDoc.getElementByName("单价").getValue();
var total = subDoc.getElementByName("总价").getValue();
context = context + priceProduct + num + price + total + "\n";
}
context = context + remark;
//发送邮件
$.message.sendEmail(subject, context, email);
})()
5.3.4短信
场景描述:CRM:客户报备保护期即将过,提醒对应的业务员,对接"xx云"接口
表单:
代码:
(function(){
//构建URI
var uri = "https://xxxx.com/?Action=SendSms";
//构建参数
var params = new Packages.java.util.HashMap();
params.put("PhoneNumberSet.0","电话号码(例:11111111111)");
params.put("TemplateID.0","1234");
params.put("Sign","xxxx")
params.put("TemplateParamSet.0","12345");
params.put("SmsSdkAppid","14000006666");
params.put("SessionContext","test");
//构建请求头
var headers = new Packages.java.util.HashMap();
headers.put("Content-Type","application/json;charset=UTF-8");
//获取响应字符串
var response = $.httpclient.sendGet(uri,params,headers);
//返回响应字符串
return response;
})()
5.3.5群机器人
场景描述:工时填报:提醒未填报工时的人进行同事填报
表单:
//待调整数据结构
代码:
(function(){
var ignoreUserNamelist = new Packages.java.util.ArrayList();
ignoreUserNamelist.add("");
var uris = new Packages.java.util.ArrayList();
uris.add("https://xxxx.com/cgi-bin/webhook/send?key=xxxx");
var appId = $.context.getCurrentApplicationId();
var date = $.date.getCurrentDate();
var dateStr = $.date.dateToString(date,"yyyy-MM-dd");
var fieldMap = new Packages.java.util.HashMap();
fieldMap.put("未填日期",dateStr);
var docs = $.form.getFormDocumentsByFieldNameAndValue(appId,"未填人员",fieldMap);
var headers = new Packages.java.util.HashMap();
headers.put("Content-Type","application/json;charset=UTF-8");
var jsonObject = new Packages.com.alibaba.fastjson.JSONObject();
jsonObject.put("msgtype","text");
var msgJsonObject = new Packages.com.alibaba.fastjson.JSONObject();
msgJsonObject.put("content","报平安提醒:请以下人员填写今日报平安数据\n(如果我没有@人,说明本群的小伙伴全部填写完成啦)");
var jsonArray = new Packages.com.alibaba.fastjson.JSONArray();
for(var i=0;i<docs.size();i++){
var doc = docs.get(i);
var userId = doc.getElementByName("人员名称").getValue();
var user = $.contact.getUserById(userId);
var userName = user.getName();
if(!ignoreUserNamelist.contains(userName)){
jsonArray.add(user.getTelephone());
}
}
if(jsonArray.size()>0){
msgJsonObject.put("mentioned_mobile_list",jsonArray);
jsonObject.put("text",msgJsonObject);
var params = new Packages.java.util.HashMap();
for(var j=0;j<uris.size();j++){
var uri = uris.get(j);
var response = $.httpclient.sendPost(uri,params,headers,jsonObject.toString());
//$.message.sendGeneralStationMessage("机器人接口返回数据",response,$.context.getCurrentUserId());
}
}
})()
感谢阅读,觉得文章有用的话就点个赞吧
作者介绍:
道一云 ,成立于2004年,是中国低代码领域的领导厂商、腾讯战略投资企业、腾讯生态核心合作伙伴。拥有自主知识产权管理软件产品百余项,涵盖数字化应用构建低代码平台-七巧、全场景智能业务分析BI-七析、千人千面、数智化办公企业级门户-七星以及30多款开箱即用的场景应用。
欢迎关注:
公众号:道一云低代码(do1info)
官网: https://www.do1.com.cn/