跳转至

查询头设置默认值

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f3lv9uek7uu1

脚本说明

该脚本用于在视图查询头中设置默认值。当打开视图时,查询头中的字段可以自动填充默认值,方便用户快速查询。

常见实现方式

方式1:设置当前日期为默认值

(function(){
    var today = format(new Date(), "yyyy-MM-dd");
    return today;
})();

方式2:设置当前用户为默认值

(function(){
    var currentUser = getWebUser();
    return currentUser.getId();
})();

方式3:设置当前部门为默认值

(function(){
    var currentUser = getWebUser();
    var department = currentUser.getDepartment();

    if(department != null){
        return department.getId();
    }

    return "";
})();

方式4:设置固定值为默认值

(function(){
    return "固定值";
})();

方式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:设置日期范围(结束日期)

(function(){
    // 设置为今天
    var today = new Date();
    return format(today, "yyyy-MM-dd");
})();

示例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(): 获取当前用户ID
  • getWebUser().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参数、用户信息、日期计算等设置动态默认值

使用场景

  • 视图打开时自动填充查询条件
  • 根据用户角色设置不同的默认查询条件
  • 设置日期范围查询的默认值
  • 根据上下文信息设置默认值
  • 提高查询效率,减少用户输入

如需查看完整脚本代码,请访问源文档链接。