Jeesite4常见问题总结

公共JS方法

/*!
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 * 项目自定义的公共JavaScript,可覆盖jeesite.js里的方法
 */

// 帆软报表地址
var FINE_BI_URL = "";

/*让form页面只读(不包含文件上传/图片上传区域)
 *@method js.readonlyAll
 *@return null
*/
js.readonlyAll = function(){
    // form表单整体不可点击
    $("form *").attr("disabled", true);
    // 所有A标签, 所有按钮隐藏, 隐藏附件(图片)上面的继续添加按钮  , 隐藏附件(图片)上面的删除按钮
    $(".wup_file .btns, .wup_img .btns, .wup_file .delete,.wup_img .cancel, a, button").hide();
    // 显示文件下载, 预览按钮 , 关闭按钮
    $("#btnCancel, .preview, .wup_file .blue").show().attr("disabled", false);
}

/* 批量操作  LIST/FORM页面中对数据进行批量提交、删除、驳回等操作
 *@method 确定将<button class="batch">XXX</button>放入到<XXX class="box-tools"></XXX>中
 *列表中必须包含id字段 {header:'${text('id')}', name:'id', index:'a.id'} 批量操作只针对ID传值
 *@param {Boolean} [参数名]:data-mult [参数说明] 多选为true  单选为 false
 *         {String}  [参数名]:data-confirm [参数说明] 弹出框提示内容  $ 将替换成提交的数量(默认值:"确认操作这$条数据?")
 *       {String}  [参数名]:data-loading [参数说明] 点击确认按钮后loading的内容
 *       {String}  [参数名]:data-id [参数说明] dataGrid的id 默认为 $("#dataGrid")
 *       {String}  [参数名]:data-url [参数说明] 需要提交的地址
 *       {String}  [参数名]:data-remarks [参数说明] 需要填写原因的(比如填写驳回原因) 后台接收remarks
 *       {String}  [参数名]:data-cid [参数说明] 用于form页面的提交/驳回等  data-cid为当前的id data-cid="${xxx.id}"
 *@receive 服务端需要接收参数  {String} [参数名]:ids [参数说明] 选择的数据id,如果多选将用英文逗号隔开
 *                服务端需要接收参数  {String} [参数名]:remarks [参数说明] 如果需要驳回类似操作,remarks将接收弹出框输入的内容
 *@example {list页面提交} <button type="button" class="btn btn-default btn-sm batch" data-url="XXX/submit" 
 *                          data-confirm="确认提交这$条数据?" data-mult="false"><i class="fa fa-check"></i> 提交</button>
 *           {list页面驳回} <button type="button" class="btn btn-default btn-sm batch" data-remarks="true" data-url="XXX/reject" 
 *                          data-confirm="确认驳回这$条数据,请输入驳回原因?" data-mult="false"><i class="red fa icon-arrow-left-circle confimBtn"></i> 驳回</button>
 *           {form页面提交} <button type="button" class="btn btn-sm btn-default confimBtn batch" data-remarks="true" data-url="XXX/reject" 
 *                         data-confirm="确认提交这条数据?" data-mult="false" data-cid="${XXX.id}">
 *                         <i class="fa fa-check"></i> 审核</button>
 *           {form页面驳回} <button type="button" class="btn btn-sm btn-default confimBtn batch" data-remarks="true" data-url="XXX/reject" 
 *                         data-confirm="确认驳回这条数据,请输入驳回原因?" data-mult="false" data-cid="${XXX.id}">
 *                         <i class="red fa icon-arrow-left-circle confimBtn"></i> 驳回</button>
 *           {XXXcontroller} // 驳回
 *                           @RepeatSubmit
                           @RequiresPermissions("XXX")
                           @PostMapping(value = "reject")
                           @ResponseBody
                           public String reject(String ids, String status, String remarks) {
                             return XXXService.reject(ids, status, remarks);
                           }
                           // 提交
                           @RepeatSubmit
                           @RequiresPermissions("xs:xsInquiryMain:edit")
                           @PostMapping(value = "submit")
                           @ResponseBody
                           public String submit(String ids) {
                               return xsInquiryMainService.submit(ids);
                           }
 *@remarks 按钮必须包含class="batch",按钮父级必须包含class="box-tools",建议form页面和list页面的审核使用同一接口
*/
$(".box-tools").delegate(".batch", "click", function(){
    // 是否允许多选  默认是允许
    var mult = $(this).data("mult");
    // 提交的url地址
    var url = $(this).data("url");
    if (url == "") {
        return js.showErrorMessage("data-url参数不能为空");
    }
    // 提示内容
    var confirm = $(this).data("confirm") || "确认操作这$条数据?",
    loading = $(this).data("loading") || "加载中...",
    dataGridId = $(this).data("id") || "dataGrid";
    // 是否已传入ID
    var currentId = $(this).data("cid");
    // 是否需要写备注
    var remarks = $(this).data("remarks");
    // 判断showCheckbox
    if(currentId){
        var showCheckbox = false;
        var ids = currentId;
        var selectLength = 1;
    } else {
        var showCheckbox = $('#' + dataGridId).dataGrid('getParam', "showCheckbox");
        var ids = showCheckbox ? $('#' + dataGridId).dataGrid('getSelectRows') : $('#' + dataGridId).dataGrid('getSelectRow');
        if (ids == null || ids.length == 0) {
            if (mult) {
                return js.showErrorMessage("请至少选择一条数据");
            } else {
                return js.showErrorMessage("请选择一条数据");
            }
        }
        // 获取选中元素长度
        var selectLength = showCheckbox ? ids.length: 1;
        if (selectLength > 1 && mult == false) {
            return js.showErrorMessage("请选择一条数据");
        }
    }
    if(remarks){
        layer.prompt({
            formType: 2,
            title: confirm.replace("$", selectLength),
            area: ['300px', '80px'],
            btnAlign: 'c',
            yes: function(index, layero){
                // 获取文本框输入的值
                var value = layero.find(".layui-layer-input").val();
                js.ajaxSubmit(url, {ids: showCheckbox ? ids.join(",") : ids, remarks: value}, function(data){
                    if (data.result == Global.TRUE) {
                        js.showMessage(data.message);
                        if(currentId){
                            js.closeCurrentTabPage(function(contentWindow){
                                contentWindow.page();
                            });
                        } else {
                             $('#' + dataGridId).dataGrid('refresh');
                        }
                    } else {
                        js.showErrorMessage(data.message);
                    }
                }, 'json', true, loading)
            }
        });
    } else {
        // 提交数据
        js.confirm(confirm.replace("$", selectLength), url, {
            ids: showCheckbox ? ids.join(",") : ids
        },
        function(data) {
            if (data.result == Global.TRUE) {
                js.showMessage(data.message);
                if(currentId){
                    js.closeCurrentTabPage(function(contentWindow){
                        contentWindow.page();
                    });
                } else {
                     $('#' + dataGridId).dataGrid('refresh');
                }
            } else {
                js.showErrorMessage(data.message);
            }
        },
        'json', true, loading);
    }
});

/*
 * 报表
 * 放入.box-tools 中  必须包含class report
 * 列表中必须包含id字段 {header:'${text('id')}', name:'id', index:'a.id'},
 * data-mult 多选为true  单选为 false
 * data-url 报表地址
 * <button class="btn btn-default report" data-url="report.cpt" data-mult="false" title="${text('报表')}">
 * <i class="fa fa-bar-chart" style="color:blue"></i> ${text('报表')}</button>
*/
$(".box-tools").delegate(".report", "click", function(){
    // 是否允许多选  默认是允许
    var mult = $(this).data("mult");
    // 提交的url地址
    var url = $(this).data("url");
    if (url == "") {
        return js.showErrorMessage("data-url参数不能为空");
    }
    dataGridId = $(this).data("id") || "dataGrid";
    // 判断showCheckbox
    var showCheckbox = $('#' + dataGridId).dataGrid('getParam', "showCheckbox");
    var ids = showCheckbox ? $('#' + dataGridId).dataGrid('getSelectRows') : $('#' + dataGridId).dataGrid('getSelectRow');
    if (ids == null || ids.length == 0) {
        if (mult) {
            return js.showErrorMessage("请至少选择一条数据");
        } else {
            return js.showErrorMessage("请选择一条数据");
        }
    }
    // 获取选中元素长度
    var selectLength = showCheckbox ? ids.length: 1;
    if (selectLength > 1 && mult == false) {
        return js.showErrorMessage("请选择一条数据");
    }
    window.open(FINE_BI_URL + (url.indexOf("?") == -1 ? url + "?" : url)  + "id=" + (showCheckbox ? ids.join(",") : ids),'_blank');
});

/*打开帆软报表
 *@method js.openWebReport
 *@param{String} [参数名]: param[参数说明]: url拼接  name=zhangsan&age=15
*/
js.openWebReport = function(param) {
    window.open(FINE_BI_URL + param,'_blank');
}

// 验证必须两位小数 class 加入 twoDecimal   <input class="twoDecimal">
if (jQuery && jQuery.validator) {
    jQuery.validator.addMethod("twoDecimal", function(value, element) {
        var twoDecimal = /^(-d|d){0,20}.{0,1}(d{1,2})?$/;
        return this.optional(element) || (twoDecimal.test(value));
    },"金额不正确,最多两位小数");    
}


// 验证必须四位小数 class 加入 fourDecimal  <input class="fourDecimal">
if (jQuery && jQuery.validator) {
    jQuery.validator.addMethod("fourDecimal", function(value, element) {
        var fourDecimal = /^(-d|d){0,20}.{0,1}(d{1,4})?$/;
        return this.optional(element) || (fourDecimal.test(value));
    },"重量不正确,最多四位小数");    
}

子表日期选择框不灵敏

formatter:'date', formatoptions:{srcformat:'Y-m-d H:i:s',newformat:'Y-m-d'},
editable:true, edittype:'text', editoptions:{'class':'form-control laydate edit-able', 'readonly':'true',
dataInit: function(element){
laydate.render({elem:element, type:'date', format:'yyyy-MM-dd', trigger: 'click'});
}
}
原文地址:https://www.cnblogs.com/shuaihan/p/13030203.html