znbm.ek.jsV20170518

2017-05-18 09:18:40  访问(2167) 赞(0) 踩(0)

// 职能部门相关的方法 //
function EkGetCtrlId(theCtrl)
{
    // 获得控件的ID //
    if (theCtrl == null)
        return "";

    var clientID = theCtrl.id;

    if (clientID == undefined) {
        // 如果控件Id为未定义 //
        clientID = $(theCtrl).attr("id");
    }

    if (clientID == undefined || clientID == null || clientID == "") {
        return "";
    }

    return clientID;
}

function EkGetRadiobuttonListCtrlValue(curCtrl) {
    // 获得RadiobuttonList的选中值 //
    var clientID = curCtrl.id;

    if (clientID == undefined) {
        // 如果控件Id为未定义 //
        clientID = $(curCtrl).attr("id");
    }

    if (clientID == undefined || clientID == null || clientID == "") {
        return;
    }

    var idx = 0;

    var theCtrl = null;

    while (true) {

        theCtrl = document.getElementById(clientID + "_" + idx);

        if (theCtrl == null)
            return null;

        if (theCtrl.checked) {
            // 返回选中的值 //
            return theCtrl.value;
        }
        idx = idx + 1;
    }
}

function EkSetRadiobuttonListCtrlValue(curCtrl, theValue) {
    // 设置RadiobuttonList的选中值 //
    var clientID = curCtrl.id;

    if (clientID == undefined) {
        clientID = $(curCtrl).attr("id");
    }

    if (clientID == undefined || clientID == null || clientID == "") {
        return;
    }

    var idx = 0;

    var theCtrl = null;

    while (true) {

        theCtrl = document.getElementById(clientID + "_" + idx);

        if (theCtrl == null)
            return;

        if (theCtrl.value == theValue)
            theCtrl.checked = true;
        else
            theCtrl.checked = false;

        idx = idx + 1;
    }
}

function EkGetCheckBoxListCtrlValue(curCtrl, linkChar) {
    // 获得CheckBoxList的选中值 //
    var clientID = curCtrl.id;

    if (clientID == undefined) {
        clientID = $(curCtrl).attr("id");
    }

    if (clientID == undefined || clientID == null || clientID == "") {
        return;
    }

    var idx = 0;

    var theCtrl = null;
    var theResult = "";
    var isFirst = true;

    while (true) {

        theCtrl = document.getElementById(clientID + "_" + idx);

        if (theCtrl == null)
            return theResult;

        if (theCtrl.checked) {
            if (isFirst) {
                isFirst = false;
            }
            else {
                theResult += linkChar;
            }

            theResult += theCtrl.value;
        }

        idx = idx + 1;
    }

    return theResult;
}


function EkSetCheckBoxListCtrlValue(curCtrl, linkChar, theValue) {
    // 设置CheckBoxList的选中值 //
    var clientID = curCtrl.id;

    if (clientID == undefined)
    {
        clientID = $(curCtrl).attr("id");
    }

    if (clientID == undefined || clientID == null || clientID == "") {
        return;
    }

    var idx = 0;

    var isEmpty = true;

    if (theValue != null && theValue != "")
    {
        theValue = linkChar + theValue + linkChar;
        isEmpty = false;
    }

    var theCtrl = null; 

    while (true) {

        theCtrl = document.getElementById(clientID + "_" + idx);

        if (theCtrl == null)
            return;

        idx = idx + 1;

        if (isEmpty)
        {
            theCtrl.checked = false;
        }
        else
        {
            if(theValue.indexOf(linkChar+theCtrl.value+linkChar) == -1)
            {
                theCtrl.checked = false;
            }
            else
            {
                theCtrl.checked = true;
            }
        }
    }
}


function EkGetCheckBoxValue(curCtrl) {
    // 获得checkbox控件的值 //
    if (curCtrl == null)
        return "";

    var ctrlId = EkGetCtrlId(curCtrl);

    if (ctrlId == null || ctrlId == "" || ctrlId == undefined)
        return "";

    var chkCtrl = document.getElementById(ctrlId);

    if (chkCtrl == null)
        return "";

    if (chkCtrl.checked)
        return "1";
    else
        return "0"; 
}

function EkSetCheckBoxValue(curCtrl, theValue) {
    // 设置checkbox控件的值 //
    if (curCtrl == null)
        return "";

    var ctrlId = EkGetCtrlId(curCtrl);

    if (ctrlId == null || ctrlId == "" || ctrlId == undefined)
        return "";

    var chkCtrl = document.getElementById(ctrlId);

    if (chkCtrl == null)
        return "";

    if (theValue == true || theValue == "1")
        chkCtrl.checked = true;
    else
        chkCtrl.checked = false;
}

function EkGetMultipleSelectValue(curCtrl)
{
    // 获得下拉多选框的值 //
    if (curCtrl == null)
        return "";

    var theValue = $(curCtrl).val();
    if (theValue == null)
        return "";

    var iLen = theValue.length;
    var i = 0;
    var theResult = ""; 

    for (i = 0; i < iLen; ++i) {
        if (i != 0)
            theResult += ",";

        theResult += theValue[i];
    }

    return theResult;
}


function EkSetMultipleSelectValue(curCtrl, theValue) {
    // 设置下拉多选框的值 //
    if (curCtrl == null)
        return;

    // 清空原先的选中 //
    $(curCtrl)[0].sumo.unSelectAll();

    if (theValue == null || theValue == "")
    {
        // 没有给定值,清空选中 //
        return;
    }

    var isText = false;
    $.each(theValue.split(','), function (i, v) {
        if (isText == true) {
            $(curCtrl)[0].sumo.selectItemByText(v);
        } else {
            $(curCtrl)[0].sumo.selectItem(v);
        }
    });
}

function EkGetCtrlValue(curCtrl) {
    // 获得控件的值 //
    if (curCtrl == null)
        return null;

    // 优先判断是否自动完成 //
    var vHidValueCtrlId = $(curCtrl).attr("autocompletervaluectrlid");
    // 如果是并找到控件,取该值 //
    if (vHidValueCtrlId != null && vHidValueCtrlId != "" && vHidValueCtrlId != undefined) {
        return $("#" + vHidValueCtrlId).val();
    }

    // 燃油判断树选中 //
    vHidValueCtrlId = $(curCtrl).attr("treeloadvaluectrlid");
    // 如果是并找到控件,取该值 //
    if (vHidValueCtrlId != null && vHidValueCtrlId != "" && vHidValueCtrlId != undefined) {
        return $("#" + vHidValueCtrlId).val();
    } 

    // jQuery可以用val()取到控件的值 //
    // 但是有几个规则:
    // checkbox: true=1;false=0,后续需要扩展这个方法做取值 //
    // checkboxlist(复选框)、树的取值 //
    var vEmCtrlType = $(curCtrl).attr("emctrltype");
     
    var theResult = null;
    switch(vEmCtrlType)
    {
        case "radiobuttonlist":
            return EkGetRadiobuttonListCtrlValue(curCtrl);
        case "checkboxlist":
            return EkGetCheckBoxListCtrlValue(curCtrl, ",");
        case "checkbox":
            return EkGetCheckBoxValue(curCtrl);
        case "span":
            return $(curCtrl).html();
        case "multipleselect":
            return EkGetMultipleSelectValue(curCtrl);
    }

    theResult = $(curCtrl).val();

    return theResult;
}

function EkSetCtrlValue(curCtrl, theValue) {
    // 设置控件的值 //
    if (curCtrl == null)
        return;

    var vEmCtrlType = $(curCtrl).attr("emctrltype");

    switch (vEmCtrlType) {
        case "radiobuttonlist":
            EkSetRadiobuttonListCtrlValue(curCtrl, theValue);
            return;
        case "checkboxlist":
            EkSetCheckBoxListCtrlValue(curCtrl, ",", theValue);
            return;
        case "checkbox":
            EkSetCheckBoxValue(curCtrl, theValue);
            return;
        case "span":
            $(curCtrl).html(theValue);
            return;
        case "multipleselect":
            EkSetMultipleSelectValue(curCtrl, theValue);
            return;
        default:
            break;
    }

    $(curCtrl).val(theValue);
}

function EkSetCtrlValueById(curCtrlId, theValue) {
    // 通过控件ID,设置控件的值 //

    var curCtrl = $("#" + curCtrlId);
    // 设置控件的值 //
    if (curCtrl == null)
        return;

    EkSetCtrlValue(curCtrl, theValue);
}


function EkGetSearchData4Build(theResult, pI, ekCode, isNormalSearch) {
    // 将搜索条件装入Ajax的数组中,用于ajax实现 //
    // pI == 搜索控件所在的容器(div) ==> 如果 pI == null 则整个网页 //
    // ekCode == 控件元素searchcode对应的代号 
    // isNormalSearch == 是否普通搜索 

    var addCount = 0;
    var isAdvSearch = !isNormalSearch;

    var eA = null;

    if (pI == null) {
        // 如果没有指定容器 //
        eA = $("[searchcode=" + ekCode + "]");
    }
    else {

        // 如果指定了容器 //
        eA = $("#" + pI).find("[searchcode=" + ekCode + "]");
    }

    var eALen = eA.length;
    var i = 0;
    var eI = null;
    var eId = null;
    var eName = null;
    var eValue = null;
    var searchselect = null;
    var isAdd = true;

    for (i = 0; i < eALen; ++i) {
        eI = eA[i];

        if (eI == null)
            continue;

        eId = eI.id;

        if (eId == null || eId == "" || eId == undefined)
            continue;

        searchselect = $("#" + eId).attr("searchselect");

        isAdd = false;
        if (searchselect == 4) {
            // 搜索或高级搜索 //
            isAdd = true;
        }
        else if (searchselect == 2) {
            if (isAdvSearch)
                isAdd = false;
            else
                isAdd = true;
        }
        else if (searchselect == 3) {
            if (isAdvSearch)
                isAdd = true;
            else
                isAdd = false;
        }

        if (!isAdd)
            continue;

        eValue = EkGetCtrlValue(eI);

        eName = eId;

        theResult.push({ name: eName, value: eValue });

        if (eValue != null && eValue != "" && eValue != undefined)
            addCount = addCount + 1;
    }

    return addCount;
}

function EkGetSearchInfoData( current, per_num) {
    // 将搜索条件装入Ajax的数组中,用于ajax实现 //
    // current == 当前页索引(从1开始)
    // per_num == 每页记录数 

    // 获得搜索的数据 //
    var theResult = [];

    theResult.push({ name: "PageIndex", value: current });
    theResult.push({ name: "PageSize", value: per_num });


    var tbCtrl = $("#" + EPI.TableId);
    // 表格重新设置排序 //
    var orderField = tbCtrl.attr("orderfield");
    // 表格重新设置排序 //
    var orderType = tbCtrl.attr("ordertype");

    theResult.push({ name: "OrderField", value: orderField });
    theResult.push({ name: "OrderType", value: orderType });

    return theResult;
}

function EkGetSearchData(pI, ekCode, isNormalSearch, current, per_num) {
    // 将搜索条件装入Ajax的数组中,用于ajax实现 //
    // pI == 搜索控件所在的容器(div) ==> 如果 pI == null 则整个网页 //
    // ekCode == 控件元素searchcode对应的代号 
    // isNormalSearch == 是否普通搜索 
    // current == 当前页索引(从1开始)
    // per_num == 每页记录数 

    // 获得搜索的数据 //
    var theResult = EkGetSearchInfoData(current, per_num);

    EkGetSearchData4Build(theResult, pI, ekCode, isNormalSearch);

    return theResult;
}


function BaseAjaxSearchData(current, per_num)
{
    // 构建搜索 - 工具栏 + 弹窗 //
    // 构建搜索 //
    var theResult = EkGetSearchInfoData(current, per_num);

    EkGetSearchData4Build(theResult, "div_search", "a", true);

    // Echart相关的搜索条件 //
    EkGetSearchData4Build(theResult, "echart_search", "a", true);

    var addCount = EkGetSearchData4Build(theResult, "moresearch_box", "a", true);

    if (addCount > 0)
    {
        // 如果有添加高级搜索的记录 //
        $("#moresearch_btn").addClass("addmoresearch_btn");
    }
    else {
        // 如果没有添加高级搜索的记录 //
        $("#moresearch_btn").removeClass("addmoresearch_btn");
    }

    return theResult;
}


function EkResetSearchEvent(  pI, ekCode, isNormalSearch) {
    // 将搜索条件装入Ajax的数组中,用于ajax实现 //
    // pI == 搜索控件所在的容器(div) ==> 如果 pI == null 则整个网页 //
    // ekCode == 控件元素searchcode对应的代号 
    // isNormalSearch == 是否普通搜索 

    var isAdvSearch = !isNormalSearch;

    var eA = null;

    if (pI == null) {
        // 如果没有指定容器 //
        eA = $("[searchcode=" + ekCode + "]");
    }
    else {
        // 如果指定了容器 //
        eA = $("#" + pI).find("[searchcode=" + ekCode + "]");
    }

    var eALen = eA.length;
    var i = 0;
    var eI = null;
    var eId = null;
    var eName = null;
    var eValue = null;
    var searchselect = null;
    var isAdd = true;

    for (i = 0; i < eALen; ++i) {
        eI = eA[i];

        if (eI == null)
            continue;

        eId = eI.id;

        if (eId == null || eId == "" || eId == undefined)
            continue;

        searchselect = $("#" + eId).attr("searchselect");

        isAdd = false;

        if (searchselect == 4) {
            // 搜索或高级搜索 //
            isAdd = true;
        }
        else if (searchselect == 2) {
            if (isAdvSearch)
                isAdd = false;
            else
                isAdd = true;
        }
        else if (searchselect == 3) {
            if (isAdvSearch)
                isAdd = true;
            else
                isAdd = false;
        }

        if (!isAdd)
            continue;

        EkSetCtrlValue(eI, "");
    } 
}

function BaseResetSearchEvent() {
    // 重置高级搜索项 //
    EkResetSearchEvent("div_search", "a", true);

    EkResetSearchEvent("moresearch_box", "a", true);

}


function EkGetSaveDetailData(pI, ekCode, pkId) {
    // 将保存内容装入Ajax的数组中,用于ajax实现 //
    // pI == 搜索控件所在的容器(div) ==> 如果 pI == null 则整个网页 //
    // ekCode == 控件元素searchcode对应的代号 

    // 获得保存的数据 //
    var theResult = [];

    theResult.push({ name: "_id", value: pkId });

    var eA = null;

    if (pI == null) {
        // 如果没有指定容器 //
        eA = $("[savecode=" + ekCode + "]");
    }
    else {
        // 如果指定了容器 //
        eA = $("#" + pI).find("[savecode=" + ekCode + "]");
    }

    var eALen = eA.length;
    var i = 0;
    var eI = null;
    var eId = null;
    var eName = null;
    var eValue = null; 

    for (i = 0; i < eALen; ++i) {
        eI = eA[i];

        if (eI == null)
            continue;

        eId = eI.id;

        if (eId == null || eId == "" || eId == undefined)
            continue;

        eValue = EkGetCtrlValue(eI);

        eName = eId;

        theResult.push({ name: eName, value: eValue });
    }

    return theResult;
}


function EkClearDetailData(containerId, ekCode) {
    // 将录入内容清空,新增使用 //
    // containerId == 搜索控件所在的容器(div) ==> 如果 containerId == null 则整个网页 //
    // ekCode == 控件元素searchcode对应的代号 

    var eA = null;

    if (containerId == null) {
        // 如果没有指定容器 //
        eA = $("[setcode=" + ekCode + "]");
    }
    else {
        // 如果指定了容器 //
        eA = $("#" + containerId).find("[setcode=" + ekCode + "]");
    }

    var eALen = eA.length;
    var i = 0;
    var eI = null; 

    for (i = 0; i < eALen; ++i) {
        eI = eA[i];

        if (eI == null)
            continue;

        EkSetCtrlValue(eI, "");
    }
}

function EkSetDetailData(rData)
{
    if (rData == null)
        return;

    // 获得赋值的数组 //
    var itemList = rData.ItemList;
    var iLen = itemList.length;
    var i = 0;
    var item = null;

    for (i = 0; i < iLen; ++i) {
        item = itemList[i];

        // 对控件赋值 //
        EkSetCtrlValueById(item.TheName, item.TheValue);
    }
}


function EkToStr(str) {
    // str 如果是null或undefined,返回空 //
    if (str == null)
        return "";

    if (str == undefined)
        return "";

    return str;
}


function AjaxChangeValue(theResult, eName, eValue) {
    // 添加或更改Ajax的选中值 //
    var iLen = theResult.length;

    var i = 0;

    for(i = 0; i< iLen;++i)
    {
        if (theResult.name == eName)
        {
            theResult.value = eValue;
            return theResult;
        }
    }

    theResult.push({ name: eName, value: eValue });

    return theResult;
}

function CheckBoxCheckClick(tableId, curCtrl) {
    // 设置checkbox全选和全不选的操作 //
    if (curCtrl == null)
        return;

    // 顶上的全选和全不选的checkbox //
    var gId = tableId + "__0";

    // 获得checkbox控件 //
    var gCheck = document.getElementById(gId);

    if (gCheck == null)
        return;

    // 获得当前的控件ID //
    var ctrlId = curCtrl.id;

    // 如果当前控件没有给定id等属性信息 //
    if (ctrlId == undefined || ctrlId == null || ctrlId == "")
        return;

    var isGroup = false;

    if (ctrlId == gId) {
        // 组选择控件 //
        isGroup = true;
    }

    var checkFlag = curCtrl.checked;

    var eA = $("[tablename=" + tableId + "]");

    if (eA == null)
        return;

    var i = 0;
    var iLen = eA.length;

    if (isGroup) {
        for (i = 0; i < iLen; ++i) {
            eA[i].checked = checkFlag;
        }

        return;
    }


    if (!checkFlag) {
        gCheck.checked = false;
        return;
    }
    var iCount = 0;
    for (i = 0; i < iLen; ++i) {
        if (eA[i].id == gId)
            continue;

        if (eA[i].checked)
            ++iCount;
    }

    if (iCount == iLen - 1) {
        gCheck.checked = true;
    }
    else {
        gCheck.checked = false;
    }
}


function CheckBoxRegClick(tableId)
{
    // 注册CheckBox的全选和全不选事件 //
    $("[tablename=" + tableId + "]").click(function () {
        CheckBoxCheckClick(tableId, this);
    });

}


function HtmlSelectSetMultiple(ctrlId)
{
    // Html.select 设置多选 //
    if (ctrlId == null || ctrlId == "" || ctrlId == undefined)
        return;

    // 通过Ajax加载select //
    var theCtrl = $("#" + ctrlId);

    if (theCtrl == null)
        return;

    var theChild = theCtrl.children();
    var theCount = 0;

    if(theChild==undefined || theChild==null)
        theCount = 0;
    else
        theCount = theChild.length;

    theCtrl.SumoSelect({
        search: true,
        csvDispCount: theCount,
        searchText: "搜索",
        selectAll: true
    });
}

function HtmlSelectSetMultipleByCtrl(ctrlThis) {
    // 通过控件设置下拉框多选 //
    if (ctrlThis == null)
        return;

    var ctrlId = EkGetCtrlId(ctrlThis);

    HtmlSelectSetMultiple(ctrlId);
}


function HtmlSelectInitMultiple()
{
    // HTML的select初始化多选 //
    var eA = $("[ismultiple=true]");

    if (eA == null)
        return;

    var iLen = eA.length;
    var i = 0;
    var isAjaxAutoLoad = null;

    for (i = 0; i < iLen; ++i)
    {
        isAjaxAutoLoad = $(eA[i]).attr("ajaxautoload");

        // 自动加载的不做处理 //
        if (isAjaxAutoLoad == "true")
            continue;

        HtmlSelectSetMultipleByCtrl(eA[i]);
    }
}

function AjaxLoadHtmlSelect(ctrlId, ajaxUrl, emDS, listItemAddEm)
{
    // 通过ajax加载HTML的select //
    if (ajaxUrl == null)
        return;

    // 通过Ajax加载select //
    var theCtrl = $("#" + ctrlId);

    if (theCtrl == null)
        return;

    if (listItemAddEm == null || listItemAddEm == undefined) {
        listItemAddEm = "";
    }

    // 获得搜索的数据 //
    var ajxData = [];

    ajxData.push({ name: "em", value: emDS });
    ajxData.push({ name: "listAddEm", value: listItemAddEm });

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post",
        data: ajxData,
        success: function (rData) {
            if (rData == null)
                return;

            // 获得赋值的数组 //
            var itemList = rData.ItemList;
            var iLen = itemList.length;
            var i = 0;
            var item = null;
            var htmlV = "";
            for (i = 0; i < iLen; ++i) {
                item = itemList[i];
                if (item.IsCtrlSelected) {
                    htmlV += "<option value=\"" + item.TheValue + "\" selected=\"selected\">" + item.TheName + "</option>";
                }
                else {
                    htmlV += "<option value=\"" + item.TheValue + "\">" + item.TheName + "</option>";
                }
            }

            $(theCtrl).html(htmlV);

            var multipleAttr = $(theCtrl).attr("multiple");

            if (multipleAttr == "multiple") {
                // 如果是多选模式 //
                HtmlSelectSetMultiple(ctrlId);
            }
        }
    });
}

function SelectOptionHtmlGet(theText, theValue, isSelected) {
    // 绘制select的option //
    var htmlV = "";
    if (isSelected) {
        htmlV += "<option value=\"" + theValue + "\" selected=\"selected\">" + theText + "</option>";
    }
    else {
        htmlV += "<option value=\"" + theValue + "\">" + theText + "</option>";
    }

    return htmlV;
}
 

// 树的显示和隐藏操作 //

// 树显示 //
function ZTreeClickShowMenu(thisCtrl) {

    if (thisCtrl != null)
    {
        if (thisCtrl.id != EPI.DropTreeTextBoxId)
        {
            // 不同于原先的ID //
            // 隐藏原先的DIV //
            ZTreeClickHideMenu();
        }

        // 下拉树的TextBox的控件ID //
        EPI.DropTreeTextBoxId = thisCtrl.id;

        // 下拉树的DIV层ID //
        EPI.DropTreeDivId = "SelectDiv" + EPI.DropTreeTextBoxId;

        // 下拉树的UL层ID //
        EPI.DropTreeULId = "UL" + EPI.DropTreeTextBoxId;

        // 下拉树的值ID //
        EPI.DropTreeValueId = "hid" + EPI.DropTreeTextBoxId;
    }

    var valueCtrl = $("#" + EPI.DropTreeTextBoxId);
    var valueCtrlOffset = $("#" + EPI.DropTreeTextBoxId).offset();
    
    var addboxObj = $("#" + EPI.DropTreeAddBoxId)
    if (addboxObj.length > 0) {

        var addboxOffset = $("#" + EPI.DropTreeAddBoxId).offset();
        $("#" + EPI.DropTreeDivId).css({ left: valueCtrlOffset.left - addboxOffset.left + "px", top: valueCtrlOffset.top - addboxOffset.top + valueCtrl.outerHeight() + "px" }).slideDown("fast");
    }
    else {

        $("#" + EPI.DropTreeDivId).css({ left: valueCtrlOffset.left + "px", top: valueCtrlOffset.top + valueCtrl.outerHeight() + "px" }).slideDown("fast");
    }
    $("body").bind("mousedown", OnZTreeBodyDown);
}

// 隐藏树 //
function ZTreeClickHideMenu() {

    if (EPI.DropTreeDivId == null)
        return;

    if (EPI.DropTreeDivId == "")
        return;

    $("#" + EPI.DropTreeDivId).fadeOut("fast");
    $("body").unbind("mousedown", OnZTreeBodyDown);
}

function OnZTreeBodyDown(event) {

    // 浮动层 //
    if (event.target.id == EPI.DropTreeDivId)
        return;

    // 元素 //
    if($(event.target).parents("#" + EPI.DropTreeDivId).length > 0)
        return;

    ZTreeClickHideMenu();
}



// 点击事件 //
function OnZTreeItemClick(e, treeId, treeNode) {
    //$('#txtd_PID').val(treeNode.id);
    //$("#" + curId).val(treeNode.name);
    $("#" + EPI.DropTreeTextBoxId).val(treeNode.name);
    $("#" + EPI.DropTreeValueId).val(treeNode.id);

    ZTreeClickHideMenu();
}


// 树的显示和隐藏操作END //



function AjaxLoadHtmlTree(ctrlId, ajaxUrl, emDS, listItemAddEm) {
    // 通过ajax加载HTML的tree //
    if (ajaxUrl == null)
        return;

    // 通过Ajax加载select //
    var theCtrl = $("#" + ctrlId);

    if (theCtrl == null)
        return;

    

    if (listItemAddEm == null || listItemAddEm == undefined) {
        listItemAddEm = "";
    }

    // 获得搜索的数据 //
    var ajxData = [];

    ajxData.push({ name: "em", value: emDS });
    ajxData.push({ name: "listAddEm", value: listItemAddEm });

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post",
        data: ajxData,
        success: function (rData) {
            if (rData == null)
                return;
 
            var setting = {
                data: {
                    key: {
                        title: "title"
                    },
                    simpleData: {
                        enable: true
                    }
                },
                callback: {
                    onClick: OnZTreeItemClick
                }
            };

            var treeULCtrl = $("#UL" + ctrlId);

            var treeObj = $.fn.zTree.init(treeULCtrl, setting, rData.zNodes);

            if (treeObj != null) {
                // 获得树节点 //
                var nodes = treeObj.getNodes();
                if (nodes != null && nodes.length > 0) {
                    treeObj.expandNode(nodes[0], true, false, true);
                }
            }


            $("#" + ctrlId).focus(function () {
                ZTreeClickShowMenu(this);
            });
        }
    });
}


function HtmlInitTreeLoad(ajaxUrl) {
    // HTML的树初始化自动加载 //
    var eA = $("[treeload=true]");

    if (eA == null)
        return;

    var iLen = eA.length;
    var i = 0;
    var ctrlId = null;
    var ajaxUrlSet = null;
    var ajaxEm = null;
    var listItemAddEm = null;

    for (i = 0; i < iLen; ++i) {
        ctrlId = EkGetCtrlId(eA[i]);
        ajaxUrlSet = $(eA[i]).attr("treeloadurl");
        if (ajaxUrlSet == null || ajaxUrlSet == "" || ajaxUrlSet == undefined)
            ajaxUrlSet = ajaxUrl;

        ajaxEm = $(eA[i]).attr("treeloadem");
        listItemAddEm = $(eA[i]).attr("treecontroladditemem");
        // 加载树 //
        AjaxLoadHtmlTree(ctrlId, ajaxUrlSet, ajaxEm, listItemAddEm);
    }
}


function HtmlSelectInitAjaxAutoLoad(ajaxUrl) {
    // HTML的select初始化自动加载 //
    var eA = $("[ajaxautoload=true]");

    if (eA == null)
        return;

    var iLen = eA.length;
    var i = 0;
    var ctrlId = null;
    var ajaxUrlSet = null;
    var ajaxEm = null;
    var listItemAddEm = null;

    for (i = 0; i < iLen; ++i) {
        ctrlId = EkGetCtrlId(eA[i]);
        ajaxUrlSet = $(eA[i]).attr("ajaxloadurl");
        if (ajaxUrlSet == null || ajaxUrlSet == "" || ajaxUrlSet == undefined)
            ajaxUrlSet = ajaxUrl;

        ajaxEm = $(eA[i]).attr("ajaxloadem");
        listItemAddEm = $(eA[i]).attr("listcontroladditemem");
        AjaxLoadHtmlSelect(ctrlId, ajaxUrlSet, ajaxEm, listItemAddEm);
    }
}

function EkGetCheckBoxSelectedValue(tableId) {

    // 如果没有指定表格,返回空 //
    if (tableId == null || tableId == "" || tableId == undefined)
        return null;

    // 顶上的全选和全不选的checkbox //
    var gId = tableId + "__0";

    var eA = $("[tablename=" + tableId + "]");

    if (eA == null)
        return;

    // 获得选中的数据 //
    var theResult = [];

    var i = 0;
    var iLen = eA.length;

    for (i = 0; i < iLen; ++i) {
        if (eA[i].id == gId)
            continue;

        if (!eA[i].checked) {
            continue;
        }

        // 将 id,value 装入数组 //
        theResult.push({ name: eA[i].id, value: eA[i].value });
    }

    return theResult;
}

function EkGetTableParent(theCtrl) {

    while (true) {

        if (theCtrl == null)
            return null;

        if (theCtrl.tagName == "table")
            return theCtrl;

        theCtrl = theCtrl.parent;
    }
}

function EkClearTableHeadText(vThis)
{
    // 清空网页头 //
    if (vThis == null)
        return;

    var theText = $(vThis).attr("showtext");

    if (theText == null || theText == undefined)
        return;

    $(vThis).html(theText);
}

function EkSetTableHeadText4Order(vThis,orderType)
{
    // 设置排序头 //
    if (vThis == null)
        return;

    var theText = $(vThis).attr("showtext");

    if (theText == null || theText == undefined)
        return;

    var linkText = "↓";
    if (orderType == "asc")
        linkText = "↑";

    $(vThis).html(theText + linkText);
}

function HtmlRegAutoCompleterItem(theCtrl)
{
    // 注册自动完成事件的单项 //
    if (theCtrl == null)
        return;

    var ajaxUrl = null;
    var ctrlId = EkGetCtrlId(theCtrl);

    // 自动完成的URL地址 //
    ajaxUrl = $(theCtrl).attr("autocompleterurl");
    if (ajaxUrl == null || ajaxUrl == "" || ajaxUrl == undefined)
        return;

    $(theCtrl).autocompleter({
        // object to local or url to remote search
        source: ajaxUrl,
        // custom template
        template: '{{ label }}',
        // show hint
        hint: false,
        callback: function (value, index, selected) {
            if (selected) {
                var vCtrlId = $("#" + ctrlId).attr("autocompletervaluectrlid");
                if (vCtrlId == null || vCtrlId == "" || vCtrlId == undefined)
                    return;

                $("#" + vCtrlId).val(selected.TheValue); 
            }
        }
    });
}


function HtmlRegAutoCompleter() {
    // 注册自动完成事件 //
    var eA = $("[isautocompleter=true]");

    if (eA == null)
        return;

    var iLen = eA.length;
    var i = 0;

    for (i = 0; i < iLen; ++i) {
        HtmlRegAutoCompleterItem(eA[i]);
    }
}

function EkPageReload()
{
    // 刷新当前页面 //
    window.location.href = window.location.href;
}

function EkGoPage(url)
{
    // 重定向 //
    window.location.href = url;
}

function EkOpenPage(url)
{
    // 打开新窗口 //
    window.open(url);
}

function EkHtmlAjaxLoad4TableTr(curThis, re_detail, ajaxRootUrl)
{
    // 通过ajax加载内容 //
    if (curThis == null)
        return;

    if (re_detail == null)
        return;

    var vEmLoadInfoTypeV = $(curThis).attr("emloadinfotypev");
    var vEmLoadInfoOperV = $(curThis).attr("emloadinfooperv");
    var vDataGuid = $(curThis).attr("data-guid");
    var vIsLoad = $(curThis).attr("isload");

    // 无 = 1/首次加载 = 2/每次加载 = 3
    if (vEmLoadInfoTypeV == "1") {
        // 无 ==> 保留原先的功能,不需要加载 //
        return;
    }

    if (vEmLoadInfoTypeV == "2") {
        // 首次加载 //
        if (vIsLoad == "1") {
            // 已经加载 //
            return;
        }
    }

    var ajaxUrl = ajaxRootUrl + "?em=" + vEmLoadInfoOperV + "&id=" + vDataGuid;

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post", 
        success: function (rData) {
            // rData ==> 1.IsSucc;2.ShowHtml //
            if (rData == null)
                return;

            if (!rData.IsSucc) {
                // 如果错误,弹出错误提示 //
                alert(rData.ShowHtml);
                return;
            }

            // 设为已加载 //
            $(curThis).attr("isload", "1")
            // tr --> 找到td //
            var tdArray = $(re_detail).find("td");

            // 如果td非空和td有记录数 //
            if (tdArray != null && tdArray.length > 0) {
                // 设定第一个td的HTML //
                $(tdArray[0]).html(rData.ShowHtml);
            }
        }
    });
}


// 保存记录集合 //
function BaseAjaxGetSaveDetailData(pkId) {
    // 构建保存记录的集合 //
    var theResult = EkGetSaveDetailData("add_box", "a", pkId);

    return theResult;
}


function BaseSetDetailData(rData) {
    // 编辑时候设置录入的数据 //
    EkSetDetailData(rData);
}


function BaseClearDetailData() {
    // 新增时候清空原先录入的数据 //
    EkClearDetailData("add_box", "a");
}


function BaseJsCheckInput() {
    // JS 校验 //
    var checkResult = EkJudgeValidate("add_box", "a");

    if (!checkResult) {
        return false;
    }

    return true;
}

function BaseDelItemClick()
{
    // 树节点点击删除事件 //
    var pkId = $("#add_box").attr("data-guid");

    if (pkId == null)
        return;

    if (pkId == "")
        return;

    if (!confirm("确定删除?"))
        return;


    // 获得Ajax的Url地址 //
    var ajaxUrl = GlobalPhyPath + "/" + EPI.DeleteDataUrl;

    // 获得搜索的数据 //
    var ajxData = [];

    ajxData.push({ name: "_id", value: pkId });

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post",
        data: ajxData,
        success: function (rData) {

            if (rData == null)
                return;

            // 删除成功 //
            if (rData.IsSucc) {
                alert(rData.Msg);
                EkPageReload();
            }
            else {
                // 删除失败的提示 //
                alert(rData.Msg);
            }

        }
    });
}

function BaseEkTreeNodeOnClick4Edit(event, treeId, treeNode, clickFlag)
{
    // 树节点点击事件 //
    var pkId = treeNode.id;

    // 设置关键字ID为编辑值 //
    $("#add_box").attr("data-guid", pkId);

    var spanCtrl = $("#span_detail");
    if (spanCtrl != null) {
        // 设置标题 //
        $("#span_detail").html("编辑" + EPI.PageTitle);
        $("#span_detail").attr("title", "关键字:" + pkId);
    }

    // 加载内容 //
    // 获得Ajax的Url地址 //
    var ajaxUrl = GlobalPhyPath + "/" + EPI.DetailLoadUrl;

    // 获得搜索的数据 //
    var ajxData = [];

    ajxData.push({ name: "_id", value: pkId });

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post",
        data: ajxData,
        success: function (rData) {
            // 设置控件的值 //
            // 如果返回结果为空,保护代码不往下执行 //
            if (rData == null)
                return;

            if (EPI.IsOverrideSetDetailData) {
                SetDetailData(rData);
            }
            else {
                BaseSetDetailData(rData);
            }
        }
    });
}

function BaseEkTreeNodeOnClick(event, treeId, treeNode, clickFlag) {
    if(treeId == EPI.TreeId)
    {
        BaseEkTreeNodeOnClick4Edit(event, treeId, treeNode, clickFlag);
        return;
    }
}

// 显示和隐藏表格列项的 //
function ShowColDiv() {
    // 显示表格列项勾选的浮层 //
    var cityObj = $("#ColCtrl_btn");
    var cityOffset = $("#ColCtrl_btn").offset();

    $("#triangle").show();
    $("#ColCtrlDiv").css({ left: cityOffset.left + "px", top: cityOffset.top + 10 + cityObj.outerHeight() + "px" }).slideDown("fast");
    $("body").bind("mousedown", OnBodyDown4ColCtrl);
}

function HideColDiv() {
    // 隐藏表格框浮层 //
    $("#ColCtrlDiv").fadeOut("fast");
    $("body").unbind("mousedown", OnBodyDown4ColCtrl);
}

function OnBodyDown4ColCtrl(event) {
    // 鼠标点击事件 //
    if (event == null)
        return;

    if (event.target == null)
        return;

    if (event.target.id == "ColCtrlDiv")
        return;

    var theClassName = event.target.className;

    if (theClassName == "colCheck")
        return;

    if (theClassName == "ColNameTd")
        return;

    if (theClassName == "tr_white")
        return;

    if (theClassName == "checkTd")
        return;

    if (theClassName == "ColCtrl_table")
        return;

    // 隐藏表格框浮层 //
    HideColDiv();
}


// 控制列显示和隐藏 //
function ShowHiddenCol(tbId, colIndex, isShow) {

    var tb = document.getElementById(tbId);

    if (tb == null)
        return;

    var tbHead = document.getElementById(EPI.TableId);
    if (tbHead == null)
        return;

    var displayV = "none";
    if (isShow)
        displayV = "";

    var trs = tb.rows;
    var iLen = trs.length;
    var i = 0;
    var cellV = null;

    for (i = 0; i < iLen; ++i) {
        cellV = trs[i].cells[colIndex];
        cellV.style.display = displayV;
    }

    tbHead.rows[0].cells[colIndex].style.display = displayV;
}


function GetColIndex(curColName) {
    // 找到表格列索引 //
    var curTableId = EPI.TableId;

    if (curTableId == null || curTableId == "")
        return -1;

    var tbCtrl = document.getElementById(curTableId);
    if (tbCtrl == null)
        return -1;

    var trCells = tbCtrl.rows[0].cells;

    if (trCells == null)
        return -1;

    var iLen = trCells.length;
    var i = 0;
    var thName = null;
    for (i = 0; i < iLen; ++i) {
        thName = $(trCells[i]).attr("thname");

        if (thName == curColName) {
            return i;
        }
    }

    return -1;
}

// 显示和隐藏表格列项的END //

function EkBaseToReDetail(i, v) {
    // 绘制展开项的JS代码 //
    if (v == null)
        return "";

    if (v._rowexpandhtml == undefined)
        return "";

    if (v._rowexpandhtml == null)
        return "";

    return v._rowexpandhtml;
}


// 找到ToolTip对应的Item //
function FindToolTipDivHtml(pkId) {
    var eA = EPI.ZnbmItemHtmlArray;
    if (eA == null)
        return null;

    var iLen = eA.length;
    var i = 0;
    for (i = 0; i < iLen; ++i) {
        if (eA[i].PkId == pkId)
            return eA[i];
    }

    return null;
}

// 设置ToolTip对应的Item //
function SetToolTipDivHtmlToArray(pkId, theHtml) {

    var item = FindToolTipDivHtml(pkId);

    if (item != null) {
        item.TheHtml = theHtml;
        return;
    }

    if (EPI.ZnbmItemHtmlArray == null) {
        EPI.ZnbmItemHtmlArray = new Array();
    }

    item = new ZnbmItemHtml();
    item.PkId = pkId;
    item.TheHtml = theHtml;

    EPI.ZnbmItemHtmlArray.push(item);
}


function SelectCtrlHtmlGet(pageSizeOptions, selectedValue) {
    // 获得每页显示记录数的select //

    // 获得Select的HTML //
    if (pageSizeOptions == null)
        return;

    var iLen = pageSizeOptions.length;

    // 动态绑定下拉框 //
    var strHTML = "";
    var isSelected = false;
    for (var i = 0; i < iLen; ++i) {
        if (pageSizeOptions[i] == selectedValue) {
            isSelected = true;
        }
        else {
            isSelected = false;
        }

        strHTML += SelectOptionHtmlGet(pageSizeOptions[i], pageSizeOptions[i], isSelected);
    }

    return strHTML;
}

//分页代码
function TableListSetPaper(current, list_num, per_num) {
    var curPageNoValue = current;

    // 总页数 //
    var total_page = Math.ceil(list_num / per_num);

    var html = '<span class="p_r20">共' + total_page + '页/<em class="c_yellow">' + list_num + '</em>条数据</span><a title="首页" page_no="1">首页</a>';
    if (current == 1) {
        html += '<a title="上一页" page_no="1">上一页</a>';
    } else {
        html += '<a title="上一页" page_no="' + (current - 1) + '">上一页</a>'
    }

    if (current < 4) {
        for (var i = 1 ; i <= total_page && i <= 5 ; ++i) {
            if (current == i) {
                html += '<a class="current_page" page_no="' + i + '">' + i + '</a>';
            } else {
                html += '<a page_no="' + i + '">' + i + '</a>';
            }

        }
    } else if (current > total_page - 2) {
        for (var i = total_page - 4 ; i <= total_page ; i++) {
            if (current == i) {
                html += '<a class="current_page" page_no="' + i + '">' + i + '</a>';
            } else {
                html += '<a page_no="' + i + '">' + i + '</a>';
            }

        }
    } else {
        for (var i = current - 2 ; i <= total_page && i <= Number(current) + 2 ; i++) {
            if (current == i) {
                html += '<a class="current_page" page_no="' + i + '">' + i + '</a>';
            } else {
                html += '<a page_no="' + i + '">' + i + '</a>';
            }
        }
    }
    if (current < total_page) {
        html += '<a title="下一页" page_no="' + parseInt(++current) + '">下一页</a>';
    } else {
        html += '<a title="下一页" page_no="' + total_page + '">下一页</a>';
    }
    html += '<a title="尾页" page_no="' + total_page + '">尾页</a><input type="text" class="page_txt" value="' + curPageNoValue + '"><a id="gopage_btn">GO</a>';

    var htmlPageSize = "";
    htmlPageSize += "<span class=\"p_l20\">每页记录&nbsp;</span>";
    htmlPageSize += "<select class=\"pagesize_ddl\" id=\"ddlPage_PageSize\" style=\"height:30px;\">";
    htmlPageSize += SelectCtrlHtmlGet(EPI.PageSizeOptions, per_num);
    htmlPageSize += "</select>";

    $(".page").html(html + htmlPageSize);

    $("input.page_txt").change(function () {
        $("#gopage_btn").attr("page_no", $(this).val());
    })
}


// 绑定下拉框change事件 //
function RegDropDownListPagePageSizeEvent() {
    $("#ddlPage_PageSize").on("change", function () {
        EPI.PageSize = $(this).val();
        TableListBind(1);
    });
}

// 绑定表格相关的方法 //
// 获得列表 //
function TableListBind(current) {

    // 没有指定数据表 //
    // 其他业务逻辑,比如统计分析时候 //
    if (EPI.TableId == null || EPI.TableId == "" || EPI.TableId == undefined)
        return;

    // 获得表格控件 //
    var tableCtrl = document.getElementById(EPI.TableId);

    if (tableCtrl == null) {
        // 没有设定表格控件 //
        return;
    }

    $("#tb_con .table_list tbody").html("正在加载中...");

    // current = 页索引+1 //
    // 第一页从1开始 //
    // 获得每页显示的页码 //

    var per_num = EPI.PageSize;
    //var per_num = $('#page_perNo').val();

    // 获得搜索条件 //
    var ajxData = null;

    if (EPI.IsOverrideAjaxSearchData) {
        // 重写获取搜索的条件 //
        ajxData = AjaxSearchData(current, per_num);
    }
    else {
        ajxData = BaseAjaxSearchData(current, per_num);
    }

    // 获得Ajax的Url地址 //
    var ajaxUrl = GlobalPhyPath + "/" + EPI.TableListUrl;

    $.ajax({
        cache: false,
        async: true,
        url: ajaxUrl,
        type: "post",
        data: ajxData,
        success: function (rData) {
            if (rData == null)
                return;

            var pageIndex = rData.pageindex;

            // 获得记录数 //
            var list_num = rData.total;

            // 绘制HTML表格内容 //
            var html = BuildHTML(rData);

            // 设置HTML表格内容--画表格 //
            $("#tb_con .table_list tbody").html(html);

            if (per_num <= 0) {
                // 所有记录数 //
                per_num = 2147483647
            }

            // 设置页码 -- page在all.js里面注册了 //
            TableListSetPaper(pageIndex, list_num, per_num);

            // 注册 //
            RegDropDownListPagePageSizeEvent();

            // 登记当前的页索引 //
            $("#" + EPI.TableId).attr("pageindex", pageIndex);
            // 登记当前的记录数 //
            $("#" + EPI.TableId).attr("total", list_num);

            if ($("#page_tip") != null) {
                $("#page_tip").html(rData.pagetip);
            }

            // checkbox注册点击事件 //
            CheckBoxRegClick(EPI.TableId);

            if (EPI.IsOverrideAfterTableList) {
                AfterTableList(rData);
            }
        }
    });
}

// 绑定表格相关的方法END //


// 测试用的JS1 //
function EkToTest(i, v, name) {
    return "i-" + name + "=" + eval("v." + name);
}

// 测试用的JS2 //
function EkJsToTest(i, v, name) {
    // i = 行索引 //
    // v = 一行的记录值 //
    // name = 行对应的名称 //
    return eval("v." + name);
}


标签:znbm.ek.jsV20170518 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)