1024 lines
28 KiB
JavaScript
1024 lines
28 KiB
JavaScript
$(document).ready(function () {
|
||
initTree();
|
||
awsui.parse();
|
||
$(".tablecont").height($(window).height() - $(".sousuo").outerHeight() - 40);
|
||
if (config.multiselect) {
|
||
} else {
|
||
$("#selectTd").hide();
|
||
}
|
||
$("#buttonedit").width($(window).width() - 30);
|
||
$("#buttonedit").buttonedit({
|
||
iconCls: "forms-icon search",
|
||
onClick: function () {
|
||
if ($("#buttonedit").val() == "") {
|
||
return;
|
||
}
|
||
$.simpleAlert(正在加载 + ".....", "loading");
|
||
// 单击事件
|
||
searchDictByName();
|
||
}
|
||
});
|
||
// 回车事件
|
||
$('#buttonedit').keydown(function (e) {
|
||
if (e.keyCode == 13) {
|
||
if ($("#buttonedit").val() == "") {
|
||
return;
|
||
}
|
||
$.simpleAlert(正在加载 + ".....", "loading");
|
||
searchDictByName();
|
||
}
|
||
});
|
||
});
|
||
var searchArray = [];
|
||
|
||
function searchDictByName() {
|
||
var val = $("#buttonedit").val();
|
||
if (val == "") {
|
||
return;
|
||
}
|
||
// if (config.dictKey != null) {
|
||
// searcherDict(val);
|
||
// return;
|
||
// }
|
||
// 判断是否有 $公式
|
||
if (config.rootSqlcascade) {
|
||
var cascadeData = [];
|
||
var cascadeFieldList = config.rootSqlcascade;
|
||
for (var item in cascadeFieldList) {
|
||
var fieldName = cascadeFieldList[item];
|
||
var cascadeFieldVal = '';
|
||
if ($("#" + fieldName).length > 0) {
|
||
cascadeFieldVal = $('#' + fieldName, parent.document).val();
|
||
}
|
||
var obj = {
|
||
cascadeField: cascadeFieldList[item],
|
||
cascadeFieldVal: cascadeFieldVal
|
||
}
|
||
cascadeData.push(obj);
|
||
}
|
||
config.cascadeData = cascadeData;
|
||
}
|
||
config.searchValue = val;
|
||
var params = {
|
||
config: BASE64.encoder(escape(JSON.stringify(config))),
|
||
boItemName: boItemName,
|
||
sid: $("#sid").val(),
|
||
formData: awsui.encode(formData),
|
||
rowData: awsui.encode(rowData),
|
||
cmd: 'CLIENT_UI_TREEDICTIONARY_FILLBACK_SEARCHERDATA'
|
||
};
|
||
var p = {
|
||
type: "POST",
|
||
url: "./jd",
|
||
data: params,
|
||
dataType: "json",
|
||
alert: false,
|
||
success: function (r) {
|
||
$.simpleAlert("close");
|
||
if (r.result == "ok") {
|
||
$("#dictionaryTree").hide();
|
||
$("#back").show();
|
||
searchArray = r.data.array;
|
||
// alert(JSON.stringify(searchArray));
|
||
if (config.searchShow == "tree") {
|
||
buildSearchTree(searchArray);
|
||
} else {
|
||
getHtml();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
awsui.ajax.request(p);
|
||
config.searchValue = null;
|
||
}
|
||
|
||
function buildSearchTree(datas) {
|
||
var rebuildDatas = [];
|
||
dictionaryTree.isSearching = true;
|
||
var rootDatas = dictionaryTree.getRootNode();
|
||
for (var i = 0, size_i = rootDatas.length; i < size_i; i++) {
|
||
var allDatum = rootDatas[i];
|
||
allDatum.open = true;
|
||
rebuildDatas.push(allDatum);
|
||
var count = 0;
|
||
for (var j = 0, size_j = datas.length; j < size_j; j++) {
|
||
var datum = datas[j];
|
||
if (datum.pId == allDatum.id) {
|
||
count++;
|
||
datum.pid = datum.pId;
|
||
datum.id = datum.dId;
|
||
if (!datum.isLeaf) {
|
||
datum.open = false;
|
||
}
|
||
//datum.cls = "leafCls"
|
||
rebuildDatas.push(datum);
|
||
}
|
||
}
|
||
if (count == 0) {
|
||
rebuildDatas.pop();
|
||
}
|
||
}
|
||
dictionaryTree.refresh({data: rebuildDatas});
|
||
$(".searchCont").hide();
|
||
$("#dictionaryTree").show();
|
||
}
|
||
|
||
function searcherDict(val) {
|
||
var isShowParent = config.mappingRule.indexOf("parent") > -1, isShowLeaf = config.mappingRule.indexOf("leaf") > -1, datas = dictionaryTree.setting.dataModel.data;
|
||
searchArray = new Array();
|
||
for (var i = 0, size = datas.length; i < size; i++) {
|
||
var data = datas[i];
|
||
if (data.name.indexOf(val) > -1) {
|
||
searchArray.push(data);
|
||
if (data.isLeaf && !isShowLeaf) {
|
||
data.hidden = true;
|
||
continue;
|
||
}
|
||
if (!data.isLeaf && !isShowParent) {
|
||
data.hidden = true;
|
||
continue;
|
||
}
|
||
// 查找全路径
|
||
var array = new Array();
|
||
getAllPath(data.pid, array, datas);
|
||
var path = "";
|
||
for (var a = array.length - 1; a > -1; a--) {
|
||
path += array[a] + "/";
|
||
}
|
||
data.path = path;
|
||
}
|
||
}
|
||
$("#dictionaryTree").hide();
|
||
$("#back").show();
|
||
getHtml();
|
||
$.simpleAlert("close");
|
||
}
|
||
|
||
var selectArray = [];
|
||
|
||
function addItem(json) {
|
||
var id = getId(json);
|
||
if (hasSame(selectArray, json)) {
|
||
return false;
|
||
}
|
||
var name = json["name"];
|
||
selectArray.push(json);
|
||
html = "<span class=\"awsui-supertext-items\" id=\"" + id + "\" >";
|
||
html += "<span style=\"cursor: pointer;\" class=\"awsui-supertext-item current\">" + name + "</span>";
|
||
html += "<span class=\"forms-icon down close closecondition\" onclick=\"removeItem(this)\"></span>";
|
||
html += "</span>";
|
||
$(".selectMult").append(html);
|
||
}
|
||
|
||
function removeItem(obj) {
|
||
var id = $(obj).parent().attr("id");
|
||
$("input[boxid=" + id + "]").check("option", "checked", false);
|
||
$(obj).parent().remove();
|
||
for (var i = 0, size = selectArray.length; i < size; i++) {
|
||
var data = selectArray[i];
|
||
if (getId(data) == id) {
|
||
selectArray.splice(i, 1);
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
|
||
function getId(json) {
|
||
if (json) {
|
||
return json.id ? json.id : json.dId;
|
||
}
|
||
}
|
||
|
||
function deleteItemByIndex(json) {
|
||
if (json) {
|
||
var id = getId(json);
|
||
$(".selectMult").find(".awsui-supertext-items").each(function () {
|
||
if (id == $(this).attr('id')) {
|
||
$(".selectMult").find("#" + id).remove();
|
||
}
|
||
});
|
||
for (var i = 0, size = selectArray.length; i < size; i++) {
|
||
var data = selectArray[i];
|
||
if (getId(data) == id) {
|
||
selectArray.splice(i, 1);
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function hasSame(arrays, json) {
|
||
for (var i = 0, size = arrays.length; i < size; i++) {
|
||
var data = arrays[i];
|
||
if (getId(data) == getId(json)) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
function hasChildNode(id, datas) {
|
||
for (var i = 0, size = datas.length; i < size; i++) {
|
||
var data = datas[i];
|
||
if (id == data.pid) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
function getAllPath(pid, array, datas) {
|
||
if (pid == null || pid == "") {
|
||
return;
|
||
}
|
||
for (var i = 0, size = datas.length; i < size; i++) {
|
||
var data = datas[i];
|
||
if (pid == data.id) {
|
||
array.push(data.name);
|
||
getAllPath(data.pid, array, datas);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 搜索框事件
|
||
function selectThisVal2(obj, i) {
|
||
var pid = $(obj).find("td").eq(1).attr("id");
|
||
getValue2(i, pid);
|
||
if (config.isGrid === false) {
|
||
parent.$("#popbox_tree_" + boItemName).popbox("close");
|
||
hideWeboffice();
|
||
}
|
||
}
|
||
|
||
// 搜索框判断
|
||
function getValue2(index, pid) {
|
||
var isGrid = config.isGrid;
|
||
var selectNodeArray = getDataArray(index);
|
||
var valueData = {};
|
||
var separator = config.separator;
|
||
var displayValueData = {};
|
||
|
||
function buildValueData(x, value) {
|
||
if (valueData[x]) {
|
||
valueData[x] += separator + value;
|
||
} else {
|
||
valueData[x] = value;
|
||
}
|
||
}
|
||
|
||
function buildDisplayValueData(x, value) {
|
||
if (displayValueData[x]) {
|
||
displayValueData[x] += separator + value;
|
||
} else {
|
||
displayValueData[x] = value;
|
||
}
|
||
}
|
||
|
||
var fillBackFieldsConfig = config.fillBackFields.split("|");
|
||
if (selectNodeArray.length == 0) {
|
||
for (var s = 0; s < fillBackFieldsConfig.length; s++) {
|
||
buildValueData(fillBackFieldsConfig[s], "");
|
||
}
|
||
// parent.$.simpleAlert("请选择数据", "info", 1000, {
|
||
// model : true
|
||
// });
|
||
}
|
||
var json = {};
|
||
var hasTrueValue = false;
|
||
// 有正确回填的值
|
||
for (var m = 0; m < selectNodeArray.length; m++) {
|
||
var selectNode = selectNodeArray[m];
|
||
if (selectNode == undefined) {
|
||
return "";
|
||
}
|
||
var isLeaf = selectNode.isLeaf;
|
||
var fillBackValue = selectNode.fillBackFields;
|
||
var fillBackDisplayValue = selectNode.displayFieldValue;
|
||
for (var x in fillBackValue) {
|
||
var temp = false; // 当前判断结果
|
||
var value = fillBackValue[x].indexOf("^") > -1 ? fillBackValue[x].split("^")[1] : fillBackValue[x]; // 要回填的值
|
||
var sourveField = fillBackValue[x].split("^")[0]; // 要回填的源字段名
|
||
var tempValue = fillBackDisplayValue;
|
||
if (fillBackDisplayValue == null || fillBackDisplayValue == "") {
|
||
tempValue = value;
|
||
}
|
||
if (config.mappingRule == "") {
|
||
buildValueData(x, value);
|
||
buildDisplayValueData(x + "VAL", tempValue);
|
||
} else {
|
||
var mapping = config.mappingRule;
|
||
var rules = mapping.split(";");
|
||
var msg = "";
|
||
if (mapping.indexOf("parent") > -1) {
|
||
if (isLeaf) {
|
||
msg = "叶子节点";
|
||
} else {
|
||
//允许非叶子节点
|
||
temp = true;
|
||
}
|
||
}
|
||
if (temp == false) {
|
||
if (isLeaf) {
|
||
temp = true;
|
||
} else {
|
||
msg = "非叶子节点";
|
||
}
|
||
}
|
||
if (temp == false) {
|
||
parent.$.simpleAlert(msg + "不允许被回填", "info", 1000, {
|
||
model: true
|
||
});
|
||
}
|
||
if (temp == true) {
|
||
buildValueData(x, value);
|
||
buildDisplayValueData(x + "VAL", tempValue);
|
||
hasTrueValue = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (!hasTrueValue && config.multiselect) {
|
||
parent.parent.$.simpleAlert("未找到可回填的节点", "info", 1000, {
|
||
model: true
|
||
});
|
||
}
|
||
if (hasTrueValue) {
|
||
$.each(valueData, function (key, value) {
|
||
if (isGrid) {
|
||
json[key] = value;
|
||
json[key + "_DISPLAYVALUE"] = displayValueData[key + "VAL"];
|
||
} else {
|
||
parent.$("#" + key).val(value);
|
||
parent.$("#" + key + "VAL").val(displayValueData[key + "VAL"]);
|
||
}
|
||
});
|
||
if (!isGrid) {
|
||
parent.UIInit.treeDictionaryHelper.refreshNode(boItemName);
|
||
}
|
||
if (isGrid) {
|
||
if (config.multiselect) {
|
||
return awsui.encode(json);
|
||
} else {
|
||
var boDefName = config.boDefName;
|
||
var boItemDefName = config.boItemDefName;
|
||
eval("parent." + boDefName + boItemDefName + "(json, config)");// 调用在grid的editor那注册的函数进行赋值
|
||
}
|
||
} else {
|
||
var beforVal = config.beforVal;
|
||
if (parent.triggerChangeByBoItemName) {
|
||
parent.triggerChangeByBoItemName(boItemName, beforVal);
|
||
}
|
||
}
|
||
if (window.onTreeDictionaryChangeEvent && typeof window.onTreeDictionaryChangeEvent == "function") {
|
||
window.onTreeDictionaryChangeEvent(config);
|
||
}
|
||
}
|
||
}
|
||
|
||
function getHtml() {
|
||
var s = searchArray.length;
|
||
if (s == 0) {
|
||
$("#searcontent").html("<tr><td colspan='4' style='text-align:center'>" + 无数据 + "</td></tr>");
|
||
$("#selectTd").hide();
|
||
$(".searchCont").show();
|
||
return;
|
||
}
|
||
if (config.multiselect) {
|
||
$("#selectTd").show();
|
||
}
|
||
var html = "";
|
||
var sortIndex = 1;
|
||
for (var i = 0, s = searchArray.length; i < s; i++) {
|
||
var o = searchArray[i], index = i + 1, click = "";
|
||
if (o.hidden) {
|
||
continue;
|
||
}
|
||
if (!config.multiselect) {
|
||
click = "onclick=\"selectThisVal2(this," + index + ")\"";
|
||
}
|
||
html += "<tr class=\"hov\" " + click + " >";
|
||
if (config.multiselect) {
|
||
html += "<td align=\"center\"> <input type=\"checkbox\" value=\"" + index + "\" boxid=\"" + getId(o) + "\" name=\"multcheck\" class=\"awsui-checkbox\"/> </td>";
|
||
}
|
||
html += "<td align=\"center\">" + sortIndex + "</td>";
|
||
html += "<td id = " + getId(o) + ">" + o["name"] + "</td>";
|
||
html += "<td>" + o["path"] + "</td>";
|
||
html += "</tr>";
|
||
sortIndex++;
|
||
}
|
||
$("#searcontent").html(html);
|
||
if (config.multiselect) {
|
||
$(".awsui-checkbox").check({
|
||
label: "tr"
|
||
});
|
||
// 选中
|
||
for (var i = 0, size = selectArray.length; i < size; i++) {
|
||
var data = selectArray[i];
|
||
$("input[boxid=" + getId(data) + "]").check("option", "checked", true);
|
||
}
|
||
// 事件
|
||
$(".awsui-checkbox").off("ifChecked").on("ifChecked", function () {
|
||
if ($(this).attr("class").indexOf("check-group") > -1) {
|
||
for (var i = 0; i < $(".awsui-checkbox").length - 1; i++) {
|
||
addItem(searchArray[i]);
|
||
}
|
||
} else {
|
||
addItem(searchArray[parseInt(this.value, 10) - 1]);
|
||
}
|
||
});
|
||
$(".awsui-checkbox").off("ifUnchecked").on("ifUnchecked", function () {
|
||
if ($(this).attr("class").indexOf("check-group") > -1) {
|
||
for (var i = 0; i < $(".awsui-checkbox").length - 1; i++) {
|
||
deleteItemByIndex(searchArray[parseInt($($(".awsui-checkbox")[i + 1]).val(), 10) - 1]);
|
||
}
|
||
} else {
|
||
deleteItemByIndex(searchArray[parseInt(this.value, 10) - 1]);
|
||
}
|
||
});
|
||
$("#cbox").show();
|
||
$(".table.table-bordered tr").css("cursor", "pointer");
|
||
checkOne();
|
||
checkAll();
|
||
}
|
||
$(".searchCont").show();
|
||
$(".selectMult").height($(".searchCont").height() - 10);
|
||
}
|
||
|
||
function checkOne() {
|
||
var checkObjs = $(".searchCont .awsui-checkbox[name]");
|
||
checkObjs.each(function (i) {
|
||
$(this).on("ifChecked", function () {
|
||
var length = checkObjs.length - 1;
|
||
if (length == -1)
|
||
return;
|
||
$(".check-group").prop("checked", true);
|
||
$(".check-group").check("update");
|
||
checkObjs.each(function (i) {
|
||
if (!$(this).prop("checked")) {
|
||
$(".check-group").prop("checked", false);
|
||
$(".check-group").check("update");
|
||
}
|
||
});
|
||
});
|
||
$(this).on("ifUnchecked", function () {
|
||
var length = checkObjs.length - 1;
|
||
if (length == -1)
|
||
return;
|
||
$(".check-group").prop("checked", false);
|
||
$(".check-group").check("update");
|
||
});
|
||
});
|
||
}
|
||
|
||
function checkAll() {
|
||
var checkObjs = $(".searchCont .awsui-checkbox[name]");
|
||
$(".check-group").on("ifChecked", function () {
|
||
checkObjs.each(function (i) {
|
||
$(this).prop("checked", true);
|
||
$(this).check("update");
|
||
});
|
||
});
|
||
$(".check-group").on("ifUnchecked", function () {
|
||
checkObjs.each(function (i) {
|
||
$(this).prop("checked", false);
|
||
$(this).check("update");
|
||
});
|
||
});
|
||
}
|
||
|
||
function backToTree() {
|
||
$("#back").hide();
|
||
$(".searchCont").hide();
|
||
$("#dictionaryTree").show();
|
||
$("#buttonedit").val("");
|
||
if (config.searchShow == "tree" && dictionaryTree.isSearching) {
|
||
dictionaryTree.isSearching = false;
|
||
refreshTree();
|
||
}
|
||
}
|
||
|
||
function refreshTree() {
|
||
//暂时仅处理初始数据(不包括子节点,全部数据需要todo)
|
||
for (var i = 0, size_i = treeHelp.allData.length; i < size_i; i++) {
|
||
var numbers = treeHelp.allData[i];
|
||
numbers.open = false;
|
||
}
|
||
dictionaryTree.refresh({data: treeHelp.allData});
|
||
}
|
||
|
||
var treeHelp = {}
|
||
|
||
// 初始化树节点
|
||
function initTree() {
|
||
// $.simpleAlert(正在加载 + "...", "loading");
|
||
var isMult = config.multiselect;
|
||
var treeEvent = {
|
||
beforeExpand: mouseUp,
|
||
afterLoad: function () {
|
||
// parent.$.simpleAlert("close");
|
||
parent.$(".loadingDiv").remove();
|
||
}
|
||
};
|
||
if (isMult) {
|
||
treeEvent.onCheck = getCheckValue;
|
||
treeEvent.onClick = multlpleClick;
|
||
treeEvent.afterExpand = function () {
|
||
autoSelect();
|
||
}
|
||
} else {
|
||
treeEvent.onClick = singleClick;
|
||
}
|
||
var setting = {
|
||
showIcon: true,
|
||
sort: true,
|
||
animate: true,
|
||
checkbox: isMult,
|
||
rememberNode: false,
|
||
checkInherit: config.checkInherit,
|
||
event: treeEvent,
|
||
dataModel: {
|
||
url: './jd',
|
||
method: "POST",
|
||
dataType: "JSON",
|
||
async: true,
|
||
params: {
|
||
config: BASE64.encoder(escape(JSON.stringify(config))),
|
||
pid: pid,
|
||
boItemName: boItemName,
|
||
sid: $("#sid").val(),
|
||
isDeep: false,
|
||
formData: awsui.encode(formData),
|
||
rowData: awsui.encode(rowData),
|
||
cmd: 'CLIENT_UI_TREEDICTIONARY_FILLBACK_LOADDATA'
|
||
},
|
||
successCallBack: function (data) {
|
||
$("#dictionaryTree").show();
|
||
treeHelp.queryDatas = treeHelp.allData = data;
|
||
}
|
||
}
|
||
};
|
||
//settimeout作用:用于加载页面后显示出load图标后再去执行同步请求,否则无loading效果
|
||
setTimeout(function () {
|
||
dictionaryTree = awsui.tree.init($("#dictionaryTree"), setting);
|
||
if (isMult) {
|
||
autoSelect();
|
||
}
|
||
});
|
||
var height;
|
||
var h = 37;
|
||
var div = parent.$("#popbox_tree_" + $.escapeSelector(boItemName));
|
||
if (div.length > 0 && div.css("display") != "none") {
|
||
height = parent.$("#popbox_tree_" + $.escapeSelector(boItemName) + "_frm").height() - $(".sousuo").outerHeight() - h;
|
||
} else {
|
||
height = parent.$("#id-awsui-win-frm-2013-frm").height() - $(".sousuo").outerHeight() - h;
|
||
}
|
||
$("#dictionaryTree").height(height);
|
||
$(".searchCont").height(height);
|
||
}
|
||
|
||
function autoSelect() {
|
||
//自动选中
|
||
this.doOnce = {};
|
||
if (this.valuesReal == null) {
|
||
this.valuesReal = [];
|
||
this.showBackValues = {};
|
||
var data = config.isGrid ? formData.otherData : formData;
|
||
if (!data || data[boItemName] == null || data[boItemName] == "") {
|
||
return;
|
||
}
|
||
var values = data[boItemName].split(config.separator);
|
||
var displayValue = config.isGrid ? data[boItemName + "_DISPLAYVALUE"] : parent.$("#" + boItemName + "VAL").val();
|
||
var displayValues = (displayValue == null ? "" : displayValue).split(config.separator); //防止空值报错
|
||
var fillBackFields = config.fillBackFields.split("|");
|
||
var getFields = config.getFields.split("|");
|
||
var fillBackFields_group = [];
|
||
for (var i = 0, size_i = fillBackFields.length; i < size_i; i++) {
|
||
var x1 = fillBackFields[i];
|
||
fillBackFields_group[x1] = {
|
||
data: data[x1] ? data[x1].split(config.separator) : "",
|
||
getField: getFields[i]
|
||
}
|
||
}
|
||
for (var i = 0, size_i = values.length; i < size_i; i++) {
|
||
var x2 = values[i];
|
||
showBackValues[x2] = {
|
||
fillBackFields: {},
|
||
getFieldValue: x2,
|
||
id: x2,
|
||
bringValue: true,
|
||
displayFieldValue: displayValues[i],
|
||
name: displayValues[i]
|
||
};
|
||
for (var k in fillBackFields_group) {
|
||
showBackValues[x2].fillBackFields[k] = fillBackFields_group[k].getField + "^" + (fillBackFields_group[k].data[i] ? fillBackFields_group[k].data[i] : "");
|
||
}
|
||
}
|
||
//console.log(showBackValues);
|
||
if (config.allPathSeparator == null) {
|
||
this.valuesReal = values;
|
||
} else {
|
||
for (var i = 0, size_i = values.length; i < size_i; i++) {
|
||
var value = values[i];
|
||
var vs = value.split(config.allPathSeparator);
|
||
this.valuesReal.push(vs[vs.length - 1]);
|
||
}
|
||
}
|
||
}
|
||
if (this.valuesReal.length > 0) {
|
||
dictionaryTree.setCheckNodes(this.valuesReal, false);
|
||
for (var i = 0, size_i = this.valuesReal.length; i < size_i; i++) {
|
||
var x = this.valuesReal[i];
|
||
if ($("#ckb_" + x).is(":visible")) {
|
||
this.valuesReal.splice(i, 1);
|
||
i--;
|
||
size_i--;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function getFiled() {
|
||
var id = parent.$("iframe[id$='_ifm']").attr("id");
|
||
if (id.indexOf("_ifm") > -1) {
|
||
id = id.substring(0, id.indexOf("_ifm"));
|
||
}
|
||
return id;
|
||
}
|
||
|
||
function getDataArray(index) {
|
||
var selectNodeArray = [];
|
||
if ($(".searchCont").is(":visible")) {
|
||
if (config.multiselect) {
|
||
var prevIndex = 0;
|
||
var s = searchArray.length;
|
||
selectNodeArray = selectArray;
|
||
} else {
|
||
for (var i = 0, s = searchArray.length; i < s; i++) {
|
||
if (i + 1 == index) {
|
||
selectNodeArray[0] = searchArray[i];
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
if (config.multiselect) {
|
||
$("#dictionaryTree input:checked").each(function () {
|
||
selectNodeArray.push(dictionaryTree.config.nodes[$(this).val()]);
|
||
});
|
||
} else {
|
||
selectNodeArray[0] = dictionaryTree.getSelectedNode();
|
||
}
|
||
}
|
||
if (config.multiselect) {
|
||
//加入未操作的回填值
|
||
for (var i = 0, size_i = this.valuesReal.length; i < size_i; i++) {
|
||
var x = this.valuesReal[i];
|
||
if (config.allPathSeparator == null) {
|
||
if (this.showBackValues[x]) {
|
||
selectNodeArray.push(this.showBackValues[x]);
|
||
}
|
||
} else {
|
||
//全路径存储的是 AAA/BBB/CCC形式
|
||
for (var k in this.showBackValues) {
|
||
var karr = k.split(config.allPathSeparator);
|
||
if (karr[karr.length - 1] == x) {
|
||
selectNodeArray.push(this.showBackValues[k]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return selectNodeArray;
|
||
}
|
||
|
||
// 树形图判断
|
||
function getValue(index) {
|
||
var isGrid = config.isGrid;
|
||
var selectNodeArray = getDataArray(index);
|
||
var valueData = {};
|
||
var displayValueData = {};
|
||
var separator = config.separator;
|
||
|
||
function buildValueData(x, value) {
|
||
if (valueData[x]) {
|
||
valueData[x] += separator + value;
|
||
} else {
|
||
valueData[x] = value;
|
||
}
|
||
}
|
||
|
||
function buildDisplayValueData(x, value) {
|
||
if (displayValueData[x]) {
|
||
displayValueData[x] += separator + value;
|
||
} else {
|
||
displayValueData[x] = value;
|
||
}
|
||
}
|
||
|
||
var fillBackFieldsConfig = config.fillBackFields.split("|");
|
||
if (selectNodeArray.length == 0) {
|
||
for (var s = 0; s < fillBackFieldsConfig.length; s++) {
|
||
buildValueData(fillBackFieldsConfig[s], "");
|
||
}
|
||
// parent.$.simpleAlert("请选择数据", "info", 1000, {
|
||
// model : true
|
||
// });
|
||
}
|
||
var json = {};
|
||
var hasTrueValue = false;
|
||
// 有正确回填的值
|
||
for (var m = 0; m < selectNodeArray.length; m++) {
|
||
debugger;
|
||
var selectNode = selectNodeArray[m];
|
||
if (selectNode == undefined) {
|
||
return "";
|
||
}
|
||
var fillBackValue = selectNode.fillBackFields;
|
||
var fillBackDisplayValue = selectNode.displayFieldValue;
|
||
// alert(JSON.stringify(selectNode));
|
||
for (var x in fillBackValue) {
|
||
var temp = false; // 当前判断结果
|
||
var value = fillBackValue[x].indexOf("^") > -1 ? fillBackValue[x].split("^")[1] : fillBackValue[x]; // 要回填的值
|
||
var sourveField = fillBackValue[x].indexOf("^") > -1 ? fillBackValue[x].split("^")[0] : x; // 要回填的源字段名
|
||
var tempValue = fillBackDisplayValue;
|
||
if (fillBackDisplayValue == null || fillBackDisplayValue == "") {
|
||
tempValue = value;
|
||
}
|
||
if (config.mappingRule == "") {
|
||
buildValueData(x, value);
|
||
buildDisplayValueData(x + "VAL", tempValue);
|
||
} else {
|
||
var mapping = config.mappingRule;
|
||
var rules = mapping.split(";");
|
||
var msg = "";
|
||
if (mapping.indexOf("parent") > -1) {
|
||
if (!selectNode.isLeaf) {
|
||
temp = true;
|
||
} else {
|
||
if (config.multiselect == true) {
|
||
} else {
|
||
msg = "叶子节点";
|
||
}
|
||
}
|
||
}
|
||
if (temp == false && mapping.indexOf("leaf") > -1) {
|
||
if (selectNode.isLeaf||selectNode.isLeaf==undefined) {
|
||
temp = true;
|
||
} else {
|
||
if (config.multiselect == true) {
|
||
} else {
|
||
msg = "非叶子节点";
|
||
}
|
||
}
|
||
}
|
||
if (temp == false && config.multiselect != true && !selectNode.bringValue) {
|
||
parent.$.simpleAlert(msg + "不允许被回填", "info", 1000, {
|
||
model: true
|
||
});
|
||
}
|
||
if (temp == true && mapping.indexOf(":") > 0) {
|
||
for (var j = 0; j < rules.length; j++) {
|
||
if (rules[j].indexOf(":") > 0) {
|
||
var filterNode = rules[j];
|
||
var filterFile = filterNode.split(":")[0];
|
||
var filterValue = filterNode.split(":")[1];
|
||
if (sourveField == filterFile && filterValue == value) {
|
||
temp = true;
|
||
} else {
|
||
temp = false;
|
||
if (config.multiselect) {
|
||
break;
|
||
}
|
||
parent.$.simpleAlert("当前节点不允许被回填", "info", 1000, {
|
||
model: true
|
||
});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (temp == true) {
|
||
buildValueData(x, value);
|
||
buildDisplayValueData(x + "VAL", tempValue);
|
||
hasTrueValue = true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (!hasTrueValue && config.multiselect) {
|
||
if (parent.parent.$ !== undefined) {
|
||
parent.parent.$.simpleAlert("未找到可回填的节点", "info", 1000, {
|
||
model: true
|
||
});
|
||
} else {
|
||
parent.$.simpleAlert("未找到可回填的节点", "info", 1000, {
|
||
model: true
|
||
});
|
||
}
|
||
}
|
||
if (hasTrueValue) {
|
||
$.each(valueData, function (key, value) {
|
||
if (isGrid) {
|
||
json[key] = value;
|
||
json[key + "_DISPLAYVALUE"] = displayValueData[key + "VAL"];
|
||
} else {
|
||
if (config.gridfilter) { //子表过滤标识
|
||
parent.$("#" + boItemName).val(value).trigger("change");
|
||
parent.$("#" + boItemName + "VAL").val(displayValueData[key + "VAL"]).trigger("change");
|
||
} else {
|
||
parent.$("#" + key).val(value).trigger("change");
|
||
parent.$("#" + key + "VAL").val(displayValueData[key + "VAL"]);
|
||
}
|
||
if (parent.$("#" + key).attr("displayrule") == "true") {
|
||
parent.UIInit.getDisplayRuleValue(parent.$("#appId").val(), parent.$("#" + key).attr("boName"), key, value, separator);
|
||
}
|
||
}
|
||
});
|
||
if (!isGrid) {
|
||
parent.UIInit.treeDictionaryHelper.refreshNode(isGrid ? ("Grid_" + config.boDefName + boItemName) : boItemName);
|
||
}
|
||
if (isGrid) {
|
||
if (config.multiselect) {
|
||
return awsui.encode(json);
|
||
} else if (config.isGrid) {
|
||
parent[config.boDefName + config.boItemDefName](json, config);// 调用在grid的editor那注册的函数进行赋值
|
||
}
|
||
}
|
||
if (window.onTreeDictionaryChangeEvent && typeof window.onTreeDictionaryChangeEvent == "function") {
|
||
window.onTreeDictionaryChangeEvent(config);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 加载子节点数据
|
||
function mouseUp(treeNode, params) {
|
||
if (!dictionaryTree.existsChildren(treeNode.id) && !treeNode.isLeaf) {
|
||
var sid = $("#sid").val(), id = treeNode.id, tAPath = {}, fillBackFields = treeNode.fillBackFields;
|
||
var dataModel = {
|
||
url: "./jd?sid=" + sid,
|
||
method: "POST",
|
||
dataType: "JSON",
|
||
params: {
|
||
config: BASE64.encoder(escape(JSON.stringify(config))),
|
||
pid: treeNode.id,
|
||
isDeep: dictionaryTree.setting.checkInherit ? dictionaryTree.setting.dataModel.params.isDeep : false,
|
||
cmd: 'CLIENT_UI_TREEDICTIONARY_FILLBACK_LOADDATA',
|
||
formData: awsui.encode(formData),
|
||
rowData: awsui.encode(rowData)
|
||
}
|
||
};
|
||
var childNode = dictionaryTree.getData(dataModel);
|
||
var displayField = config.displayField;
|
||
if (config.allPath) {
|
||
for (var i = 0, j = childNode.length; i < j; i++) {
|
||
var cfillbackFields = childNode[i].fillBackFields;
|
||
$.each(fillBackFields, function (k, v) {
|
||
cfillbackFields[k] = v + config.allPathSeparator + cfillbackFields[k].split("^")[1];
|
||
});
|
||
// 添加节点绝对路径展示值 用于回填展示
|
||
var newDisplayFieldVal = "";//
|
||
if (displayField != undefined && displayField != "") {
|
||
newDisplayFieldVal = treeNode['displayFieldValue'] + config.allPathSeparator + childNode[i].displayFieldValue;
|
||
childNode[i].displayFieldValue = newDisplayFieldVal;
|
||
}
|
||
}
|
||
}
|
||
dictionaryTree.buildTree(childNode, null, params);
|
||
}
|
||
}
|
||
|
||
// 多选点击 展开节点
|
||
function getCheckValue(node, data) {
|
||
if (!config.multiselect) {
|
||
return false;
|
||
}
|
||
if (config.mappingRule.indexOf("leaf") < 0) {//不允许回填叶子节点
|
||
if (data.isLeaf == true && data.root != "root") { //!!!!! 需求歧义,没有子节点的节点被当作父节点,而根节点不在这个规则之内吗?
|
||
$(node).get(0).checked = false;
|
||
return false;
|
||
}
|
||
} else if (config.mappingRule.indexOf("parent") < 0) {//不允许回填父节点
|
||
if (data.isLeaf == undefined || data.isLeaf == false) {
|
||
$(node).get(0).checked = false;
|
||
return false;
|
||
}
|
||
}
|
||
if ($(node).get(0).checked) {
|
||
var domnode = dictionaryTree.getNodeDomById(data.id);
|
||
dictionaryTree.setting.dataModel.params.isDeep = true;
|
||
dictionaryTree.expandNode(domnode, true);
|
||
dictionaryTree.setting.dataModel.params.isDeep = false;
|
||
}
|
||
}
|
||
|
||
function singleClick(treeNode) {
|
||
var flag = true;
|
||
if (config.mappingRule.indexOf("parent") < 0) {
|
||
if (treeNode.isLeaf == undefined || treeNode.isLeaf == false) {
|
||
flag = false;
|
||
}
|
||
} else if (config.mappingRule.indexOf("leaf") < 0) {
|
||
if (treeNode.isLeaf == true) {
|
||
flag = false;
|
||
}
|
||
}
|
||
if (flag) {
|
||
getValue(config.isGrid);
|
||
if (config.isGrid === false) { //子表在clientui层进行特殊处理
|
||
// parent.$("#" + boItemName + "dicttree").data("popbox", "close");
|
||
// parent.$("#popbox_tree_" + boItemName).hide();
|
||
parent.$("#popbox_tree_" + boItemName).popbox("close");
|
||
hideWeboffice();
|
||
if (parent.triggerChangeByBoItemName) {
|
||
parent.triggerChangeByBoItemName(boItemName, config.beforVal);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function hideWeboffice() {
|
||
if (parent.$('#iweboffice').length > 0) {
|
||
var isHideGold = false;
|
||
if (parent.$("#WebOffice2015").closest("div.aws-form-ux-tab-item").length > 0) {
|
||
if (!parent.$("#WebOffice2015").closest("div.aws-form-ux-tab-item").hasClass("show")) {
|
||
isHideGold = true;
|
||
}
|
||
}
|
||
if (!isHideGold) {
|
||
if (parent.iweboffice) {
|
||
$(parent.iweboffice).css('visibility', '');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function clearSelect() {
|
||
if (config.multiselect) {
|
||
var datas = dictionaryTree.getCheckedNodes();
|
||
for (var i = 0, size = datas.length; i < size; i++) {
|
||
$("#ckb_" + datas[i].id).removeAttr("checked");
|
||
}
|
||
} else {
|
||
var data = dictionaryTree.getSelectedNode();
|
||
dictionaryTree.cancelSelectNode(data);
|
||
}
|
||
}
|
||
|
||
function multlpleClick(treeNode) {
|
||
if (config.multiselect) {
|
||
var check = $("#ckb_" + treeNode.id).get(0);
|
||
check.checked = !check.checked;
|
||
if (check.checked) {
|
||
getCheckValue($(check), treeNode);
|
||
}
|
||
var nodeDom = dictionaryTree.getNodeDomById(treeNode.id);
|
||
var checkDom = $(nodeDom).children('input');
|
||
var check = $(checkDom).is(":checked");
|
||
var ck = $(checkDom);
|
||
/**
|
||
* 实现子节点选中父节点同时选中,子节点 取消父节点若有其他子节点被选中则不取消父节点
|
||
*/
|
||
// 存在子项
|
||
if (ck.attr("doc") == null) {
|
||
// 当启用checkbox并且checkInherit为true时,启用父级和子级选中状态的继承
|
||
if (dictionaryTree.setting.checkInherit) {
|
||
// 如果未打开则出发打开事件
|
||
ck.parent().next().find("input[type=checkbox]").each(function () {
|
||
this.checked = ck.is(":checked");
|
||
});
|
||
}
|
||
} else {
|
||
var type = ck.is(":checked");
|
||
// 如果存在其他子项选中,则不撤销父级选中状态
|
||
var checked = ck.parent().parent().siblings().find("input[type=checkbox]:checked");
|
||
if (checked.length > 0) {
|
||
event.stopPropagation();
|
||
return;
|
||
}
|
||
if (config.checkInherit) {
|
||
checkParent(ck.attr("value"), type);
|
||
}
|
||
}
|
||
|
||
// 选中父级节点
|
||
function checkParent(id, type) {
|
||
var node = dictionaryTree.getParentNodeById(id);
|
||
if (node == null) {
|
||
return;
|
||
}
|
||
if (!dictionaryTree.setting.checkInherit) {
|
||
return;
|
||
}
|
||
dictionaryTree.config.treeObj.find("#ckb_" + node.id).prop("checked", type);
|
||
if (node.pid != 0) {
|
||
// 递归 如果不是根目录继续选中
|
||
checkParent(node.id, type);
|
||
}
|
||
}
|
||
|
||
// 阻止冒泡
|
||
event.stopPropagation();
|
||
} else {
|
||
}
|
||
}
|