查询头设置默认值¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f3lv9uek7uu1
脚本说明¶
该脚本用于在视图查询头中设置默认值。当打开视图时,查询头中的字段可以自动填充默认值,方便用户快速查询。
常见实现方式¶
方式1:设置当前日期为默认值¶
方式2:设置当前用户为默认值¶
方式3:设置当前部门为默认值¶
(function(){
var currentUser = getWebUser();
var department = currentUser.getDepartment();
if(department != null){
return department.getId();
}
return "";
})();
方式4:设置固定值为默认值¶
方式5:根据条件设置默认值¶
(function(){
var condition = getParameter("条件参数");
var defaultValue = "";
if(condition != null && condition === "类型1"){
defaultValue = "值1";
}else if(condition != null && condition === "类型2"){
defaultValue = "值2";
}else{
defaultValue = "默认值";
}
return defaultValue;
})();
扩展示例¶
示例1:设置日期范围(开始日期)¶
(function(){
// 设置为本月第一天
var today = new Date();
var firstDay = new Date(today.getFullYear(), today.getMonth(), 1);
return format(firstDay, "yyyy-MM-dd");
})();
示例2:设置日期范围(结束日期)¶
示例3:设置上个月日期范围¶
(function(){
// 上个月第一天
var today = new Date();
var lastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1);
return format(lastMonth, "yyyy-MM-dd");
})();
示例4:根据角色设置默认值¶
(function(){
var currentUser = getWebUser();
var roles = currentUser.getRoles();
var defaultValue = "";
if(roles != null && roles.size() > 0){
var roleName = roles.get(0).getName();
if(roleName === "管理员"){
defaultValue = "全部";
}else{
defaultValue = currentUser.getDepartment().getId();
}
}
return defaultValue;
})();
示例5:设置多个默认值(用分号分隔)¶
(function(){
var currentUser = getWebUser();
var userId = currentUser.getId();
// 获取当前用户及其下级用户
var subordinates = currentUser.getSubordinates();
var userIds = userId;
if(subordinates != null && subordinates.size() > 0){
for(var i = 0; i < subordinates.size(); i++){
userIds += ";" + subordinates.get(i).getId();
}
}
return userIds;
})();
示例6:从URL参数获取默认值¶
(function(){
var paramValue = getParameter("paramName");
if(paramValue != null && paramValue.trim().length > 0){
return paramValue;
}
// 如果没有参数,返回默认值
return "默认值";
})();
示例7:根据当前文档设置默认值¶
(function(){
var doc = getCurrentDocument();
var defaultValue = "";
if(doc != null){
// 从当前文档获取字段值作为默认值
defaultValue = doc.getItemValueAsString("字段名");
}
if(defaultValue == null || defaultValue.trim().length == 0){
defaultValue = "默认值";
}
return defaultValue;
})();
示例8:设置本周日期范围¶
(function(){
// 本周一
var today = new Date();
var dayOfWeek = today.getDay();
var diff = today.getDate() - dayOfWeek + (dayOfWeek == 0 ? -6 : 1); // 调整到周一
var monday = new Date(today.setDate(diff));
return format(monday, "yyyy-MM-dd");
})();
示例9:设置季度日期范围¶
(function(){
// 本季度第一天
var today = new Date();
var month = today.getMonth();
var quarter = Math.floor(month / 3);
var quarterStartMonth = quarter * 3;
var quarterStart = new Date(today.getFullYear(), quarterStartMonth, 1);
return format(quarterStart, "yyyy-MM-dd");
})();
示例10:根据缓存设置默认值¶
(function(){
var cacheKey = "query_default_value";
var cacheUtil = new Packages.cn.myapps.common.util.cache.MemoryCacheUtil();
var cachedValue = cacheUtil.getFromPrivateSpace(cacheKey, getWebUser());
if(cachedValue != null && cachedValue.trim().length > 0){
return cachedValue;
}
// 默认值
var defaultValue = getWebUser().getId();
cacheUtil.putToPrivateSpace(cacheKey, defaultValue, getWebUser());
return defaultValue;
})();
关键函数说明¶
getWebUser(): 获取当前登录用户对象getWebUser().getId(): 获取当前用户IDgetWebUser().getDepartment(): 获取当前用户部门getWebUser().getRoles(): 获取当前用户角色列表getParameter("参数名"): 获取URL参数或请求参数getCurrentDocument(): 获取当前文档对象format(date, "格式"): 格式化日期new Date(): 创建日期对象
日期格式说明¶
yyyy-MM-dd: 年-月-日(如:2024-01-15)yyyy-MM-dd HH:mm:ss: 年-月-日 时:分:秒(如:2024-01-15 10:30:00)yyyy/MM/dd: 年/月/日(如:2024/01/15)
注意事项¶
- ⚠️ 返回值类型: 根据查询头字段类型返回相应格式的值
- ⚠️ 日期格式: 日期类型字段需要返回正确的日期格式字符串
- ⚠️ 用户字段: 用户选择框字段返回用户ID,多个用户用分号分隔
- ⚠️ 部门字段: 部门选择框字段返回部门ID
- ⚠️ 空值处理: 如果没有默认值,返回空字符串
- 查询头默认值脚本在视图加载时执行
- 返回的值会自动填充到查询头的对应字段中
- 可以结合URL参数、用户信息、日期计算等设置动态默认值
使用场景¶
- 视图打开时自动填充查询条件
- 根据用户角色设置不同的默认查询条件
- 设置日期范围查询的默认值
- 根据上下文信息设置默认值
- 提高查询效率,减少用户输入
如需查看完整脚本代码,请访问源文档链接。