页面树结构
转至元数据结尾
转至元数据起始

示例说明
      在项目中有时需要通过报表中的URL打开显示对应的内容,如示例,通过点击“c”打开URL 为 http://www.baidu.com/img/bdlogo.png?1438079054232   内容。如下图:

     

    

设置方法

  1. 在展现定制中,创建一张电子表格分析;
  2. 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面
  3. 在报表宏界面新建服务器端模块,在弹出的新建模块对话框中选择对象为spreadSheetReport;事件为onBeforeOutput;并把下面宏代码复制到代码区域。
  4. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadSheetReport;事件为onRender;并把下面宏代码复制到代码区域。

服务器宏类型

类型

对象

事件

ClientSide

spreadSheetReport

onBeforeOutput

服务器宏代码

function main(spreadsheetReport) {
    if (!spreadsheetReport) return spreadsheetReport;
    var sheet = spreadsheetReport.getSheetByName("Sheet1");//获取sheet名称
    var positions = "C2".split(",");//获取点击事件单元
    for (var i = 0; i < positions.length; i++) {
        var position = positions[i].trim();
        var expandedPositions = sheet.getExpandedPositions(position);
        for (var j = 0; j < expandedPositions.length; j++) {
            var cell = sheet.getCell(expandedPositions[j]);
            if (true) {
                addLink(spreadsheetReport, sheet, cell);
            }
        }
    }
}
//获取指定单元格数据。B2为url,C2为value,D2为nextUrl
function addLink(spreadsheetReport, sheet, cell) {
    sheet.addRuleLink(cell.cellPosition, "jump", [
        getCellValue(sheet.getCell('B2')),getCellValue(sheet.getCell('C2')),getCellValue(sheet.getCell('D2'))]);
}
function getCellValue(cell) {
    if (!cell) return null;
    if (typeof cell.length == 'number') {
        var ret = [];
        for (var i = 0; i < cell.length; i++) {
            ret.push(cell[i].value);
        }
        return ret;
    } else {
        return cell.value;
    }
}
function checkValue(v1, v2, op) {
    if (v1 && typeof v1.length == 'number') {
        for (var i = 0; i < v1.length; i++) {
            if (checkValue(v1[i], v2, op)) return true;
        }
        return false;
    }
    switch (op) {
        case 'EQUAL':
            return (v1 == v2) || (v2.match(/^\d+(\.\d+)?$/) && v1 == parseFloat(v2));
        case 'GREATER':
            return v1 > parseFloat(v2);
        case 'LESS':
            return v1 < parseFloat(v2);
        case 'INCLUDE':
            return v1.indexOf(v2) >= 0;
        case 'PREFIX':
            return v1.indexOf(v2) == 0;
        case 'SUFFIX':
            return v1.indexOf(v2) == (v1.length - v2.length);
    }
}

客户端宏类型

类型

对象

事件

ClientSide

spreadSheetReport

onRender

客户端宏代码

function paramToString(v) {
    return v == null ? null: v.toString();
}
function main(spreadsheetReport, ruleName, params) {
    if (ruleName != "jump") {
        return;
    }
//根据服务器模块的顺序获取内容
    var url = paramToString(params[0]);
    var value = paramToString(params[1]);
    var nextUrl = paramToString(params[2]);
    switch (url) {
    case "goBack":
        goBack();
        break;
    case "jumpTo":
        jumpTo(value);
        break;
    case "goImage":
        goImage(value, nextUrl );
        break;
    case "goShengchan":
        goShengchan(value);
        break;
    default:
    }
}
/* 返回到前一页面 */
var goBack = function() {
    window.history.back();
};
/* 跳转到其他报表 */
var jumpTo = function(field_cv) {
    if (!util.trim(field_cv)) {
        return;
    }
    var param = getParamInfo(field_cv);
    if (!param) {
        alert("没有查到相关批准文号信息。");
        return;
    }
    var url = 'jumpToTabbedPage.jsp?param=' + param;
    url = encodeURI(url);
    // 生成用来提交请求的form
    var form = document.getElementById("__openReportURLForm");
    if (!form) {
        form = document.createElement("FORM");
        document.body.appendChild(form);
    }
    form.innerHTML = "";
    form.style.display = "none";
    form.id = "__openReportURLForm";
    form.action = url;
    form.method = 'POST';
    form.target = "_blank";
    form.submit();
};
/* 生成需要传递的参数信息 */
var getParamInfo = function(RELATED_PJ_NO) {
    var dsId = "DS.bjj_ds";
    var sql = ["select ID, RELATED_PJ_NO from BJJ_DRUG_BASE_INFO where APPROVAL_CODE = ", "'", RELATED_PJ_NO, "'"].join("");
    var ret = util.remoteInvoke("TabbedReportService", "getSQLResult", [dsId, sql]);
    if (! (ret && ret.succeeded)) {
        modalWindow.showServerError(ret);
        return;
    }
    var drugInfo = ret.result.data;
    if (!drugInfo.length) {
        return false;
    }
    var id = drugInfo[0][0].value;
    // 当"相关批件号"值为空时,传递一个NONE参数过去
    var pj_no = drugInfo[0][1].value;
    if (!util.trim(pj_no)) {
        pj_no = "NONE";
    }
    var param = {
        ID: {
            realValue: id,
            dispValue: id
        },
        RELATED_PJ_NO: {
            realValue: pj_no,
            dispValue: pj_no
        }
    };
    var retVal = lang.toJSONString(param);
    return retVal;
};
/* 跳转到图片文件 */
var goImage = function(field_cv, url ) {
    if (!util.trim(field_cv)) {
        return;
    }
    if (url == '') {
        alert("没有相关电子文档");
        return;
    }
    url = encodeURI(url);
    // 生成用来提交请求的form
    var form = document.getElementById("__openReportURLForm");
    if (!form) {
        form = document.createElement("FORM");
        document.body.appendChild(form);
    }
    form.innerHTML = "";
    form.style.display = "none";
    form.id = "__openReportURLForm";
    form.action = url;
    form.method = 'POST';
    form.target = "_blank";
    form.submit();
};
/* 跳转到图片文件 */
var goShengchan = function(field_cv) {
    if (!util.trim(field_cv)) {
        return;
    }
    //var nextTd = link.nextSibling;
    var url = "http://10.1.5.81:8081/upload/" + util.trim(field_cv);
    url = encodeURI(url);
    // 生成用来提交请求的form
    var form = document.getElementById("__openReportURLForm");
    if (!form) {
        form = document.createElement("FORM");
        document.body.appendChild(form);
    }
    form.innerHTML = "";
    form.style.display = "none";
    form.id = "__openReportURLForm";
    form.action = url;
    form.method = 'POST';
    form.target = "_blank";
    form.submit();
};
  • 无标签