HM-SPMS/web/nginx/html/js/requestData.js

1022 lines
26 KiB
JavaScript
Raw Normal View History

2026-01-06 04:47:40 +08:00
var post = {
zy: {
name: "专业",
url: "/report/device/findSubSystemMS",
// url: '/report/reportForm/findTenantList',
param: "",
data: []
},
cz: {
name: "厂站",
url: "/report/device/findStationLocationMS",
// url: '/report/reportForm/findAreaList',
param: "",
data: []
},
dev: {
name: "所有设备",
url: "/report/device/findDeviceMS",
// url: '/report/reportForm/findAreaDeviceList',
param: "",
data: []
},
gdc: {
name: "获取设备下所有测点",
url: "/report/device/checkDevicePropertity",
param: "",
data: []
},
cd: {
name: "所有测点",
url: "/report/device/findDevicePropertity",
param: "",
data: {}
},
addReport: {
name: "增加修改报表",
url: "/report/fileFolder/saveOrUpdateFileFolderMs"
},
allReport: {
name: "获取所有报表文件信息",
url: "/report/fileFolder/findFileFolderMs"
},
delFile: {
name: "删除文件",
url: "/report/fileFolder/deleteFileFolderByTreeCodeMs"
},
getReport: {
name: "获取报表详细信息",
url: "/report/fileFolder/findFileFolderByTreeCodeMs"
},
syCd: {
name: "收益测点",
url: "/report/monitorBusiness/findDevicePropertyMSByDev"
},
userGroup: {
name: "获取用户组",
url: "/report/fileFolder/findUsergDefList"
},
save: {
name: "保存权限",
url: "/report/fileFolder/insertUsergReportInfoList"
},
fileInput: {
name: "文件导入",
url: "/report/fileFolder/upload"
},
fileOutput: {
name: "文件导出",
url: "/report/fileFolder/download"
},
modelList: {
name: "模板文件",
url: "/report/api/ureport2/getXMLNameList"
},
excelUpload: {
name: "excel模板导入",
url: "/report/fileFolder/uploadExcel"
},
excelSave: {
name: "excel报表保存",
url: "/report/fileFolder/saveOrUpdateExcel"
}
};
//excel报表保存
function excelReportSave(param, fn) {
axios.post(post.excelSave.url, param).then(function(res) {
var d = res.data;
vm.$notify({
title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail,
message: d.message,
type: d.operateFlag ? "success" : "error"
});
vm.excelSaveLoading = false;
if (d.operateFlag) {
getReportTree();
vm.excelFilesPanel = false;
fn(res);
}
});
}
function getModelList() {
axios.post(post.modelList.url, {}).then(function(res) {
vm.report_types = res.data.data || [];
vm.modelType = vm.report_types[0] ? vm.report_types[0].name : "";
});
}
function getDevCD(devCodeString) {
axios.post(post.gdc.url, { devTpName: devCodeString }).then(function(res) {
vm.devHasCD = res.data;
});
}
/**
* @desc 拦截请求qs序列化和添加token
*/
axios.interceptors.request.use(
function(config) {
var o = getToken();
if (o.token) {
//添加token
config.headers.Authorization = "Bearer " + o.token;
}
config.headers.language = i18n();
if (config.method === "post" && config.url !== post.addReport.url) {
config.data = Qs.stringify(config.data, {
allowDots: true,
arrayFormat: "indices"
});
}
return config;
},
function(err) {
return Promise.reject(err);
}
);
function fileOutput(treeCode) {
location.href = post.fileOutput.url + "?treeCode=" + treeCode.treeCode;
// axios.get(post.fileOutput.url, {params:treeCode})
// .then(function (res) {
// console.log(res)
// })
}
/**保存权限 */
function setGroupPower({ usergArr, treeCode, id }) {
axios
.post(post.save.url, {
usergArr: usergArr,
treeCode: treeCode,
id: id
})
.then(function(res) {
vm.$notify({
title: vm.i18n.prompt.power,
message: vm.i18n.prompt.set,
type: "success"
});
vm.powerPanel = false;
})
.catch(function(err) {
console.error(err);
});
}
/**获取用户组 */
function getAllUserGroup() {
if (powerDialog()) {
axios
.post(post.userGroup.url, {})
.then(function(res) {
post.userGroup.data = res.data.usergInfo;
vm.allUserGroup = [];
for (var i = 0; i < res.data.usergInfo.length; i++) {
var d = res.data.usergInfo[i];
vm.allUserGroup.push({
id: d.PERM_ID,
name: d.PERM_NAME
});
vm.checkedGroup.push(d.PERM_ID);
}
})
.catch(function(err) {
console.error(err);
});
}
}
/**
* @desc 重新请求接口
* @param {*} title
* @param {*} fn
*/
function reQueryPost(title, fn, context, param) {
vm.$confirm(title, vm.i18n.prompt.tip, {
confirmButtonText: vm.i18n.prompt.ok,
cancelButtonText: vm.i18n.prompt.cancel,
type: "info",
callback: function(action, instance) {
if (action == "confirm") {
if (!context) {
context = window;
}
context[fn].apply(context, param);
}
}
});
}
var devFn = {
requestCount: 0,
ress: {},
complate: function(fn) {
configDevSearch().map(function(v) {
devFn[v.fnName](v.labelName, v.type, devFn.definedFn(fn));
});
},
definedFn: function(fn) {
return function() {
if (configDevSearch().length == devFn.requestCount) {
devFn.requestCount--;
fn(devFn.ress);
}
};
},
setElSelect(labelName, type, fnName, res) {
var obj = {
getZY: "profession",
getST: "station"
};
vm[obj[fnName]] = res; //赋值
vm[obj[fnName] + "_info"] = {
label: labelName,
type: type
};
res[0] && (vm["check_" + obj[fnName]] = res[0].id); //附加初始值
},
getZY: function(labelName, type, fn) {
/*获取专业信息*/
axios
.post(post.zy.url, {})
.then(function(res) {
var arr = res.data.mapData.subSystemList;
post.zy.data = arr;
//处理数据
var resData = devFn.dataToList(arr, {
label: "name",
id: "subSystemId",
code: "code"
});
// for (var i = 0; i < arr.length; i++) {
// var obj = {
// label: arr[i].name,
// id: arr[i].subSystemId,
// code: arr[i].code
// }
// resData.push(obj);
// }
//缓存数据
devFn.ress.getZY = resData;
// vm.profession = resData;
// resData[0] && (vm.check_profession = resData[0].id);//附加初始值
//设置vm数据以及其他
devFn.setElSelect(labelName, type, "getZY", resData);
devFn.requestCount++;
fn(fn);
// if (post.cz.data[0] !== undefined) {
// getDev(post.zy.data[0].id, post.cz.data[0].id)
// }
})
.catch(function(err) {
console.error(err);
reQueryPost(vm.i18n.prompt.zyerr, "getZY", devFn, [
labelName,
type,
fn
]);
});
},
getST: function(labelName, type, fn) {
/*获取车站信息*/
axios
.post(post.cz.url, {})
.then(function(res) {
var arr = res.data.mapData.stationLocationList;
post.cz.data = arr;
var resData =
type == "list"
? devFn.dataToList(arr, {
label: "name",
id: "locationId",
code: "code"
})
: devFn.dataToTree(arr, {
label: "name",
id: "locationId",
code: "code"
});
// for (var i = 0; i < arr.length; i++) {
// resData.push({
// label: arr[i].name,
// id: arr[i].locationId,
// key: '',
// code: arr[i].code
// });
// }
// vm.station = resData;
// resData[0]&&(vm.check_station = resData[0].id);//附加初始值
devFn.ress.getST = resData;
devFn.setElSelect(labelName, type, "getST", resData);
devFn.requestCount++;
fn(fn);
// getDev(post.zy.data[0] !== undefined ? post.zy.data[0].id : '', post.cz.data[0].id);
})
.catch(function(err) {
console.error(err);
reQueryPost(vm.i18n.prompt.czerr, "getST", devFn, [
labelName,
type,
fn
]);
});
},
dataToList(arr, keys) {
var resData = [];
for (var i = 0; i < arr.length; i++) {
var obj = {},
d = arr[i];
for (var k in keys) {
obj[k] = d[keys[k]];
}
resData.push(obj);
}
return resData;
},
dataToTree(arr, keys) {
var resData = [],
treeNode = {};
for (var i = 0; i < arr.length; i++) {
var obj = {},
d = arr[i];
for (var k in keys) {
obj[k] = d[keys[k]];
}
obj.treeCode = d.treeCode;
obj.treePCode = d.treePCode;
if (treeNode[d.treeCode]) {
treeNode[d.treeCode] = Object.assign(treeNode[d.treeCode], obj);
} else {
treeNode[d.treeCode] = obj;
}
if (d.treePCode === undefined || d.treePCode === "") {
resData.push(treeNode[d.treeCode]);
} else {
if (treeNode[d.treePCode]) {
treeNode[d.treePCode].children
? treeNode[d.treePCode].children.push(treeNode[d.treeCode])
: (treeNode[d.treePCode].children = [treeNode[d.treeCode]]);
} else {
treeNode[d.treePCode] = {
treeCode: d.treePCode,
children: [treeNode[d.treeCode]]
};
}
}
}
return resData;
}
};
/* 获取收益测点 */
function getProceeds(param) {
if (!param) {
return false;
}
axios
.post(post.syCd.url, {
devCode: param
})
.then(function(res) {
var num = 0,
tvalue = vm.cur_report_type.value,
expaned = {};
var dflt = {
check: [],
node: [],
expaned: []
};
for (
var i = 0, arr = [], obj = {};
i < res.data.mapData.pointList.length;
i++
) {
var d = res.data.mapData.pointList[i];
if (d.property == "ym") {
if (tvalue == "month" && d.name.indexOf("日") == -1) {
continue;
} else if (tvalue == "year" && d.name.indexOf("月") == -1) {
continue;
}
}
var key = d.name.substr(0, 1);
if (obj[key] === undefined) {
obj[key] = {
label: key,
code: d.sname,
nodetype: "property_type",
tid: "t_" + num++,
children: []
};
arr.push(obj[key]);
dflt.check.push(obj[key].tid);
dflt.node.push(obj[key].tid);
if (expaned[obj[key].ptid] === undefined) {
dflt.expaned.push(obj[key].ptid);
expaned[obj[key].ptid] = true;
}
}
obj[key].children.push({
label: d.name,
code: d.sname,
nodetype: "property",
value: d.value,
tid: "p_" + num++,
type: d.property,
ptid: obj[key].tid
});
dflt.check.push(obj[key].children[obj[key].children.length - 1].tid);
dflt.node.push(obj[key].children[obj[key].children.length - 1].tid);
}
post.syCd.data = obj;
vm.default_property = dflt;
vm.all_property = obj;
vm.creatProperty();
})
.catch(function(err) {});
}
/*获取所有设备信息*/
function getDev(subSystem, station) {
axios
.post(post.dev.url, {
subSystem: subSystem,
station: station
})
.then(function(res) {
var resData = [];
resData = listToTree(res.data.mapData.deviceMsList, function(o) {
var obj = {
label: o.name,
code: o.treeCode,
e: defaulte(),
devType: true
};
return obj;
});
var jsonstring = JSON.stringify(resData);
post.dev.data = JSON.parse(jsonstring);
vm.all_dev = JSON.parse(jsonstring);
vm.clone_all_dev = JSON.parse(jsonstring);
vm.tree_loading = false;
})
.catch(function(err) {});
}
/**
* @desc 获取所有属性
*/
function getCdInfo(param, flag) {
var resData = {},
num = 0;
var _param = {
devTpName: param === undefined ? "" : param.devTpName,
type: param === undefined ? "" : param.type
};
axios
.post(post.cd.url, _param)
.then(function(res) {
var errFlag = true;
var arr = res.data.mapData.measuringList;
var tidList=[];
if(!vm.isNew){
tidList=vm.cd_tid;
}
var dflt = {
check: [],
node: [],
expaned: []
},
expaned = {};
for (var i = 0; i < arr.length; i++) {
var type = {
label: arr[i].name,
code: arr[i].type,
nodetype: "property_type",
// tid: "t_" + num++,
tid: "t_" + arr[i].type+';',
children: []
};
var pro = arr[i].propertyList;
for (var n = 0; n < pro.length; n++) {
var property = {
label: pro[n].name + "(" + pro[n].code + ")",
code: pro[n].code,
isCommon: pro[n].typeValue,
type: arr[i].type,
nodetype: "property",
pointType: pro[n].pointType,
stateText: pro[n].stateText,
stateTextList: pro[n].stateTextList,
// tid: "p_" + num++,
tid: "p_" + pro[n].code+";",
ptid: type.tid,
children: []
};
//新建时取默认,非新建时取原来
if ((vm.isNew&&property.isCommon == 1)||(tidList.indexOf(property.tid)!==-1&&!vm.isNew)) {
dflt.check.push(property.tid);
dflt.node.push(property);
if (expaned[property.ptid] === undefined) {
dflt.expaned.push(property.ptid);
expaned[property.ptid] = true;
}
}
var mst = pro[n].measuringStaticTypeList;
if (mst.length == 0 && errFlag) {
errFlag = false;
vm.$notify({
title: vm.i18n.prompt.fail,
message: "ERROR",
type: "error"
});
}
for (var k = 0; k < mst.length; k++) {
property.children.push({
label: mst[k].name,
code: mst[k].type,
propertyCode: pro[n].code,
nodetype: "property_value",
value: mst[k].value,
// tid: "s_" + num++,
tid: property.tid+"s_" + mst[k].type+";",
ptid: property.tid
});
//新建时取默认,非新建时取原来
if ((vm.isNew&&property.isCommon == 1&&k===0)||(tidList.indexOf(property.children[k].tid)!==-1&&!vm.isNew)) {
dflt.check.push(property.children[k].tid);
dflt.node.push(property.children[k]);
}
}
type.children.push(property);
}
resData[arr[i].type] = type;
}
vm.default_property = dflt;
console.log("getCdInfo -> dflt", dflt)
if (param.devList && param.devTypeList) {
vm.pushCd(param.devList, param.devTypeList, dflt.node);
}
post.cd.data = resData;
vm.all_property = resData;
vm.creatProperty();
})
.catch(function(err) {});
}
function getCheckedNodeTid(nodeList){
if(nodeList instanceof Array){
var nodetype={property:1,property_value:1};
var children=[];
var processed={};
var result=nodeList.reduce((o,v,i)=>{
if(nodetype[v.nodetype]){
var tid=v.tid.split(';');
if(tid.length>1){tid.length=tid.length-1}
var r=tid.join(';')+';'
if(!processed[r]){
o.push(r);
processed[r]=1;
}
}
if(v.children&&v.children.length>0){
children=children.concat(v.children);
}
return o;
},[]);
if(children.length>0){
result=result.concat(getCheckedNodeTid(children));
}
return result
}
}
/**
* @desc 增加修改报表
* treePCode:102//父级id
* name:报表名
* type: type:类型 0文件夹1文件
* fileDetail:报表内容
* operateFlag:操作标志//0新增、1修改
*
* @param{Object}param
*
*/
function auReport(param, node, fn,func) {
var flag = param.operateFlag;
axios
.post(
post.addReport.url,
pako.gzip(encodeURIComponent(JSON.stringify(param)), {
to: "string"
}),
{
headers: {
"Content-Encoding": "gzip",
"Content-Type": "text/plain"
}
}
)
.then(function(res) {
var d = res.data;
vm.$notify({
title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail,
message: d.message,
type: d.operateFlag ? "success" : "error"
});
vm.save_loading = false;
if (node !== undefined && fn !== undefined && d.operateFlag) {
fn(node, d.obj);
}
if(typeof func==='function'&&!d.operateFlag){
func();
}
if (
powerDialog() &&
flag == 0 &&
d &&
d.operateFlag &&
d.obj &&
d.obj.type == 1
) {
vm.showPowerPanel({
treeCode: d.obj.treeCode,
id: d.obj.id
});
}
})
.catch(function(err) {
vm.$notify({
title: vm.i18n.prompt.fail,
message: vm.i18n.prompt.adderr,
type: "error"
});
});
}
/**
* @desc 获取所有报表文件信息
* @param {Object} param 参数treeCode
*/
function getReportTree(param) {
if (param === undefined) {
param = {};
}
axios
.post(post.allReport.url, param)
.then(function(res) {
var arr = listToTree(res.data.mapData.fileFolderList, function(o) {
return {
code: o.treeCode,
label: o.name,
filetype: "report",
type: o.type
};
});
vm.reportFiles = arr;
vm.checkedFiles = arr;
})
.catch(function(err) {});
}
/**
* @desc 删除文件或文件夹
* @param {Object} param
*/
function deleteReport(param, fn) {
if (param === undefined) {
param = {};
}
axios
.post(post.delFile.url, param)
.then(function(res) {
var d = res.data;
vm.$notify({
title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail,
message: d.message,
type: d.operateFlag ? "success" : "error"
});
fn(d.operateFlag);
})
.catch(function(err) {
vm.$notify({
title: vm.i18n.prompt.err,
message: vm.i18n.prompt.delerr,
type: "error"
});
});
}
/**
* @desc 获取文件详细信息
* @param {Object} param
* @param {Function} fn
*/
function getReportDetail(param, fn) {
if (param === undefined) {
return false;
}
axios
.post(post.getReport.url, param)
.then(function(res) {
var d = res.data;
var detail = d.mapData.fileFolder.fileDetail;
fn(detail);
vm.$notify({
title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail,
message: d.message,
type: d.operateFlag ? "success" : "error"
});
var obj = {
treePCode: d.mapData.fileFolder.treePCode,
treeCode: d.mapData.fileFolder.treeCode,
name: d.mapData.fileFolder.name,
type: d.mapData.fileFolder.type,
fileDetail: detail,
operateFlag: 1
};
vm.openedFile = obj;
})
.catch(function(err) {
vm.$notify({
title: vm.i18n.prompt.fail,
message: vm.i18n.prompt.readerr,
type: "error"
});
});
}
/**
* @desc
* @param {*} type
* @param {*} start
* @param {*} interval
*/
function getTimeList(type, start, interval, ban) {
var itv = Number(Math.floor(interval * 60));
var arr = [],
obj = {
day: 24,
udf: 16,
tm: 3,
td: 7,
year: 12,
month: 31,
cr: 8
};
if (isNaN(itv)) {
itv = 60;
}
var num;
//日||自定义
if (type == "day" || type == "udf") {
var s = start < 0 ? -24 - start : start;
if (ban == "cr") {
type = ban;
}
for (var i = 0; i < obj[type] * 60; i = i + itv) {
var hour = (Math.floor(i / 60) + s) % 24;
var miu = Number(i % 60);
if (miu < 10) {
miu = "0" + miu;
}
arr.push({
label:
(hour < 0
? /*'昨日'+*/ prependZero(24 + hour)
: /*'今日'+*/ prependZero(hour)) +
":" +
miu,
code: i.toFixed(2),
start: start,
tid: "l_" + i
});
}
} else if (type == "year") {
var s = start < 0 ? -12 - start : start;
for (var i = 0; i < 12; i++) {
num = (i + s) % 12;
arr.push({
label: num == 0 ? 12 : num < 0 ? /*'去年'+*/ 12 + num : /*'今年'+*/ num,
code: i.toFixed(2),
start: start,
tid: "l_" + i
});
}
} else {
var s = start < 0 ? -31 - start : start;
for (var i = 0; i < obj[type]; i++) {
num = (i + s) % 31;
arr.push({
label: num == 0 ? 31 : num < 0 ? /*'上月'+*/ 31 + num : /*'本月'+*/ num,
code: i.toFixed(2),
start: start,
tid: "l_" + i
});
}
}
return arr;
}
//工具方法
/*把list转成tree结构数据*/
function listToTree(arr, fn) {
arr === undefined && (arr = []);
var result = [],
allObj = {},
p = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].treeCode && arr[i].treeCode === arr[i].treePCode) {
continue;
}
//构建对象
if (allObj[arr[i].treeCode] === undefined) {
allObj[arr[i].treeCode] = arr[i];
allObj[arr[i].treeCode].children = [];
} else {
allObj[arr[i].treeCode] = Object.assign(
{},
arr[i],
allObj[arr[i].treeCode]
);
}
allObj[arr[i].treeCode] = Object.assign(
{},
allObj[arr[i].treeCode],
fn(arr[i])
);
if (!arr[i].treePCode) {
//如果没有treePCode或treePCode为空,默认最高级
if (arr[i].treeCode.devType !== undefined) {
arr[i].treeCode.devType = false;
}
p.push(arr[i].treeCode);
} else {
if (allObj[arr[i].treePCode]) {
if (arr[i].treePCode.devType !== undefined) {
arr[i].treePCode.devType = false;
}
allObj[arr[i].treePCode].children.push(allObj[arr[i].treeCode]);
} else {
allObj[arr[i].treePCode] = {
children: [allObj[arr[i].treeCode]],
devType: false
};
}
}
}
//类别
for (var k in allObj) {
if (allObj[k].children === undefined || allObj[k].children.length == 0) {
allObj[k].nodetype = "dev";
} else {
allObj[k].nodetype = "dev_type";
allObj[k].children = allObj[k].children.sort(function(a, b) {
return a.remark10 - b.remark10;
});
}
}
//组合成节点格式
for (var k = 0; k < p.length; k++) {
result.push(allObj[p[k]]);
}
return result;
}
if (!Object.assign) {
Object.defineProperty(Object, "assign", {
enumerable: false,
configurable: true,
writable: true,
value: function(target, firstSource) {
"use strict";
if (target === undefined || target === null)
throw new TypeError("Cannot convert first argument to object");
var to = Object(target);
for (var i = 1; i < arguments.length; i++) {
var nextSource = arguments[i];
if (nextSource === undefined || nextSource === null) continue;
var keysArray = Object.keys(Object(nextSource));
for (
var nextIndex = 0, len = keysArray.length;
nextIndex < len;
nextIndex++
) {
var nextKey = keysArray[nextIndex];
var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
if (desc !== undefined && desc.enumerable)
to[nextKey] = nextSource[nextKey];
}
}
return to;
}
});
}
function prependZero(n) {
return n < 10 && n >= 0 ? "0" + n : n;
}
/**
* @desc 初始化
*/
function init(vm) {
if (!vm.reportFilesPanel) {
/*报表类型初始化*/
vm.report_types = getReportType();
/*报表样式初始化*/
vm.report_style = getReportStyle();
devFn.complate(function(res) {
var params = [];
params[0] = res.getZY && res.getZY[0] ? res.getZY[0].id : "";
params[1] = res.getST && res.getST[0] ? res.getST[0].id : "";
getDev(params[0], params[1]);
});
// getZY(); //专业
// getST(); //车站
// getCdInfo();//测点信息
getReportTree(); //所有报表
if (powerDialog()) {
getAllUserGroup(); //获取所有用户组
}
vm.cur_report_type = vm.report_types[0];
vm.sketch = vm.report_types[0].type[0];
vm.cur_report_style = vm.report_style[0];
}
}
function initModel(vm) {
getModelList();
devFn.complate(function(res) {
var params = [];
params[0] = res.getZY && res.getZY[0] ? res.getZY[0].id : "";
params[1] = res.getST && res.getST[0] ? res.getST[0].id : "";
getDev(params[0], params[1]);
});
getReportTree(); //所有报表
if (powerDialog()) {
getAllUserGroup(); //获取所有用户组
}
}
(function($) {
$(document)
.on("mousedown", "#table td>div,#table th>div", function() {
return false;
})
.on("mousedown", ".udf-width td,.udf-width th", function(e) {
var $td = $(this);
var width = parseFloat($td.css("width"), 10);
var tw = parseFloat($("#table").css("width"), 10);
var ox = e.pageX || e.clientX;
var w = 0;
var index = $td.index();
$("#table")
.addClass("noselect")
.attr("unselectable", "on");
$("body").on("mousemove", function(event) {
var nx = event.pageX || event.clientX;
w = nx - ox;
$td.css("width", width + w + "px");
$("#table").css("width", tw + w + "px");
});
$("body").on("mouseup", function() {
$("body")
.removeClass("noselect")
.removeAttr("unselectable");
$("body")
.off("mousemove")
.off("mouseup");
vm.table = $("#table").html();
vm.tb_width = parseFloat($("#table").css("width"), 10);
vm.cols_width[index] = parseFloat($td.css("width"));
$("#table")
.removeClass("noselect")
.removeAttr("unselectable");
});
});
if (window.parent && self == window.parent) {
$("body").css("background", getTheme()["$bg-color"]);
}
})(jQuery);
function listToObj(list) {
for (var i = 0, obj = {}; i < list.length; i++) {
obj[list[i].treeCode] = list[i];
}
return obj;
}