769 lines
28 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 版 本 PIT-ADMS V7.0.3 敏捷开发框架
* Copyright (c) 2013-2018 Hexagon PPM
* 创建人:力软-前端开发组
* 日 期2017.03.17
* 描 述:获取客户端数据
*/
/*
`*******************登录后数据***********************
*userinfo----------------------用户登录信息
*modules-----------------------功能模块
*modulesTree-------------------按照父节点的功能模块
*modulesMap--------------------主键对应实例数据
*******************使用时异步获取*******************
*user--------------------------用户数据
learun.clientdata.getAsync('user', {
userId: value,
callback: function (item) {
callback(item.F_RealName);
}
});
*department--------------------部门数据
learun.clientdata.getAsync('department', {
key: value,
companyId: row.F_CompanyId,
callback: function (item) {
callback(item.F_FullName);
}
});
*company----------------------公司
learun.clientdata.getAsync('company', {
key: value,
callback: function (_data) {
_data.F_FullName
}
});
*db--------------------------数据库
learun.clientdata.getAsync('db', {
key: value,
callback: function (_data) {
_data.F_DBName
}
});
*dataItem--------------------数据字典
learun.clientdata.getAsync('dataItem', {
key: value,
itemCode:itemCode,
callback: function (_data) {
_data.F_ItemName
}
});
*custmerData-----------------自定义数据
learun.clientdata.getAsync('custmerData', {
url: url,
key: value,
valueId: valueId,
callback: function (item) {
callback(item.F_FullName);
}
});
*/
/*
*登录成功后自动去加载基础数据
*公司
*部门
*人员
*数据字典
*数据源数据(数据源数据设置不要过大)
*数据库连接数据(移动端不需要)
*/
(function ($, learun) {
"use strict";
var loadSate = {
no: -1, // 还未加载
yes: 1, // 已经加载成功
ing: 0, // 正在加载中
fail: 2 // 加载失败
};
var clientDataFn = {};
var clientAsyncData = {};
var clientData = {};
function initLoad(callback) {
var res = loadSate.yes;
for (var id in clientDataFn) {
var _fn = clientDataFn[id];
if (_fn.state == loadSate.fail) {
res = loadSate.fail;
break;
}
else if (_fn.state == loadSate.no) {
res = loadSate.ing;
_fn.init();
}
else if (_fn.state == loadSate.ing) {
res = loadSate.ing;
}
}
if (res == loadSate.yes) {
callback(true);
} else if (res == loadSate.fail) {
callback(false);
}
else {
setTimeout(function () {
initLoad(callback);
}, 100);
}
}
function get(key, data) {
var res = "";
var len = data.length;
if (len == undefined) {
res = data[key];
}
else {
for (var i = 0; i < len; i++) {
if (key(data[i])) {
res = data[i];
break;
}
}
}
return res;
}
learun.clientdata = {
init: function (callback) {
initLoad(function (res) {
callback(res);
if (res) {// 开始异步加载数据
clientAsyncData.company.init();
}
});
},
get: function (nameArray) {//[key,function (v) { return v.key == value }]
var res = "";
if (!nameArray) {
return res;
}
var len = nameArray.length;
var data = clientData;
for (var i = 0; i < len; i++) {
res = get(nameArray[i], data);
if (res != "" && res != undefined) {
data = res;
}
else {
break;
}
}
res = res || "";
return res;
},
getAsync: function (name, op) {//
return clientAsyncData[name].get(op);
},
getAllAsync: function (name, op) {//
return clientAsyncData[name].getAll(op);
},
getsAsync: function (name, op) {//
return clientAsyncData[name].gets(op);
},
update: function (name) {
clientAsyncData[name].update && clientAsyncData[name].update();
}
};
/*******************登录后数据***********************/
// 注册数据的加载方法
// 功能模块数据
clientDataFn.modules = {
state: loadSate.no,
init: function () {
//初始化加载数据
clientDataFn.modules.state = loadSate.ing;
learun.httpAsyncGet($.rootUrl + '/LR_SystemModule/Module/GetModuleList?ProjectId=' + ProjectId, function (res) {
if (res.code == learun.httpCode.success) {
clientData.modules = res.data;
clientDataFn.modules.toMap();
clientDataFn.modules.state = loadSate.yes;
}
else {
clientData.modules = [];
clientDataFn.modules.toMap();
clientDataFn.modules.state = loadSate.fail;
}
});
},
toMap: function () {
//转化成树结构 和 转化成字典结构
var modulesTree = {};
var modulesMap = {};
var modulesCodeMap = {};
var _len = clientData.modules.length;
for (var i = 0; i < _len; i++) {
var _item = clientData.modules[i];
if (_item.F_EnabledMark == 1) {
modulesTree[_item.F_ParentId] = modulesTree[_item.F_ParentId] || [];
modulesTree[_item.F_ParentId].push(_item);
modulesMap[_item.F_ModuleId] = _item;
modulesCodeMap[_item.F_EnCode] = _item;
}
}
clientData.modulesTree = modulesTree;
clientData.modulesMap = modulesMap;
clientData.modulesCodeMap = modulesCodeMap;
}
};
// 登录用户信息
clientDataFn.userinfo = {
state: loadSate.no,
init: function () {
//初始化加载数据
clientDataFn.userinfo.state = loadSate.ing;
learun.httpAsyncGet($.rootUrl + '/Login/GetUserInfo', function (res) {
if (res.code == learun.httpCode.success) {
clientData.userinfo = res.data;
clientDataFn.userinfo.state = loadSate.yes;
}
else {
clientDataFn.userinfo.state = loadSate.fail;
}
});
}
};
/*******************使用时异步获取*******************/
var storage = {
get: function (name) {
if (localStorage) {
return JSON.parse(localStorage.getItem(name)) || {};
}
else {
return clientData[name] || {};
}
},
set: function (name, data) {
if (localStorage) {
localStorage.setItem(name, JSON.stringify(data));
}
else {
clientData[name] = data;
}
}
};
// 公司信息
clientAsyncData.company = {
states: loadSate.no,
init: function () {
if (clientAsyncData.company.states == loadSate.no) {
clientAsyncData.company.states = loadSate.ing;
var ver = storage.get("companyData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/Company/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.company.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("companyData", data);
}
clientAsyncData.company.states = loadSate.yes;
clientAsyncData.department.init();
}
});
}
},
get: function (op) {
clientAsyncData.company.init();
if (clientAsyncData.company.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.company.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("companyData").data || {};
op.callback(data[op.key] || {}, op);
}
},
getAll: function (op) {
clientAsyncData.company.init();
if (clientAsyncData.company.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.company.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("companyData").data || {};
op.callback(data, op);
}
}
};
// 部门信息
clientAsyncData.department = {
states: loadSate.no,
init: function () {
if (clientAsyncData.department.states == loadSate.no) {
clientAsyncData.department.states = loadSate.ing;
var ver = storage.get("departmentData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/Department/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.department.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("departmentData", data);
}
clientAsyncData.department.states = loadSate.yes;
clientAsyncData.user.init();
}
});
}
},
get: function (op) {
clientAsyncData.department.init();
if (clientAsyncData.department.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.department.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("departmentData").data || {};
op.callback(data[op.key] || {}, op);
}
},
getAll: function (op) {
clientAsyncData.department.init();
if (clientAsyncData.department.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.department.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("departmentData").data || {};
//clientAsyncData.department.states = loadSate.no
op.callback(data, op);
}
}
};
// 人员信息
clientAsyncData.user = {
states: loadSate.no,
init: function () {
if (clientAsyncData.user.states == loadSate.no) {
clientAsyncData.user.states = loadSate.ing;
var ver = storage.get("userData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/User/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.user.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("userData", data);
}
clientAsyncData.user.states = loadSate.yes;
clientAsyncData.dataItem.init();
}
});
}
},
get: function (op) {
clientAsyncData.user.init();
if (clientAsyncData.user.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.user.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("userData").data || {};
op.callback(data[op.key] || {}, op);
}
},
gets: function (op) {
clientAsyncData.user.init();
if (clientAsyncData.user.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.user.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("userData").data || {};
if (op.key == undefined || op.key == null) {
op.callback('', op);
}
else {
op.key = op.key + '';
var keyList = op.key.split(',');
var _text = []
$.each(keyList, function (_index, _item) {
var _user = data[_item];
if (_user) {
_text.push(_user.name);
}
});
op.callback(String(_text), op);
}
}
},
getAll: function (op) {
clientAsyncData.user.init();
if (clientAsyncData.user.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.user.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("userData").data || {};
// clientAsyncData.user.states = loadSate.no;
op.callback(data, op);
}
}
};
// 数据字典
clientAsyncData.dataItem = {
states: loadSate.no,
init: function () {
if (clientAsyncData.dataItem.states == loadSate.no) {
clientAsyncData.dataItem.states = loadSate.ing;
var ver = storage.get("dataItemData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_SystemModule/DataItem/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.dataItem.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("dataItemData", data);
}
clientAsyncData.dataItem.states = loadSate.yes;
clientAsyncData.db.init();
}
});
}
},
get: function (op) {
clientAsyncData.dataItem.init();
if (clientAsyncData.dataItem.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.dataItem.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("dataItemData").data || {};
// 数据字典翻译
var _item = clientAsyncData.dataItem.find(op.key, data[op.code] || {});
if (_item) {
top.learun.language.get(_item.text, function (text) {
_item.text = text;
op.callback(_item, op);
});
}
else {
op.callback({}, op);
}
}
},
getAll: function (op) {
clientAsyncData.dataItem.init();
if (clientAsyncData.dataItem.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.dataItem.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("dataItemData").data || {};
var res = {};
$.each(data[op.code] || {}, function (_index, _item) {
_item.text = top.learun.language.getSyn(_item.text);
res[_index] = _item;
});
//clientAsyncData.dataItem.states = loadSate.no;
op.callback(res, op);
}
},
gets: function (op) {
clientAsyncData.dataItem.init();
if (clientAsyncData.dataItem.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.dataItem.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("dataItemData").data || {};
if (op.key == undefined || op.key == null) {
op.callback('', op);
}
else {
op.key = op.key + '';
var keyList = op.key.split(',');
var _text = []
$.each(keyList, function (_index, _item) {
var _item = clientAsyncData.dataItem.find(_item, data[op.code] || {});
top.learun.language.get(_item.text, function (text) {
_text.push(text);
});
});
op.callback(String(_text), op);
}
}
},
find: function (key, data) {
var res = {};
for (var id in data) {
if (data[id].value == key) {
res = data[id];
break;
}
}
return res;
},
update: function () {
clientAsyncData.dataItem.states = loadSate.no;
clientAsyncData.dataItem.init();
}
};
// 数据库连接数据
clientAsyncData.db = {
states: loadSate.no,
init: function () {
if (clientAsyncData.db.states == loadSate.no) {
clientAsyncData.db.states = loadSate.ing;
var ver = storage.get("dbData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_SystemModule/DatabaseLink/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.db.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("dbData", data);
}
clientAsyncData.db.states = loadSate.yes;
}
});
}
},
get: function (op) {
clientAsyncData.db.init();
if (clientAsyncData.db.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.db.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else{
var data = storage.get("dbData").data || {};
op.callback(data[op.key] || {}, op);
}
},
getAll: function (op) {
clientAsyncData.db.init();
if (clientAsyncData.db.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.db.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("dbData").data || {};
op.callback(data, op);
}
}
};
// 数据源数据
clientAsyncData.sourceData = {
states: {},
get: function (op) {
if (clientAsyncData.sourceData.states[op.code] == undefined || clientAsyncData.sourceData.states[op.code] == loadSate.no) {
clientAsyncData.sourceData.states[op.code] = loadSate.ing;
clientAsyncData.sourceData.load(op.code);
}
if (clientAsyncData.sourceData.states[op.code] == loadSate.ing) {
setTimeout(function () {
clientAsyncData.sourceData.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("sourceData_" + op.code).data || [];
if (!!data) {
op.callback(clientAsyncData.sourceData.find(op.key, op.keyId, data) || {}, op);
} else {
op.callback({}, op);
}
}
},
getAll: function (op) {
if (clientAsyncData.sourceData.states[op.code] == undefined || clientAsyncData.sourceData.states[op.code] == loadSate.no) {
clientAsyncData.sourceData.states[op.code] = loadSate.ing;
clientAsyncData.sourceData.load(op.code);
}
if (clientAsyncData.sourceData.states[op.code] == loadSate.ing) {
setTimeout(function () {
clientAsyncData.sourceData.getAll(op);
}, 100);// 如果还在加载100ms后再检测
}
else if (clientAsyncData.sourceData.states[op.code] == loadSate.yes) {
var data = storage.get("sourceData_" + op.code).data || [];
if (!!data) {
op.callback(data, op);
} else {
op.callback({}, op);
}
}
},
load: function (code) {
var ver = storage.get("sourceData_" + code).ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_SystemModule/DataSource/GetMap', { code: code, ver: ver }, function (data) {
if (!data) {
clientAsyncData.sourceData.states[code] = loadSate.fail;
} else {
if (data.ver) {
storage.set("sourceData_" + code, data);
}
clientAsyncData.sourceData.states[code] = loadSate.yes;
}
});
},
find: function (key, keyId, data) {
var res = {};
for (var i = 0, l = data.length; i < l; i++) {
if (data[i][keyId] == key) {
res = data[i];
break;
}
}
return res;
},
update: function (op) {
clientAsyncData.sourceData.load(op.code);
}
};
// 获取自定义数据 url key valueId
clientAsyncData.custmerData = {
states: {},
get: function (op) {
if (clientAsyncData.custmerData.states[op.url] == undefined || clientAsyncData.custmerData.states[op.url] == loadSate.no) {
clientAsyncData.custmerData.states[op.url] = loadSate.ing;
clientAsyncData.custmerData.load(op.url);
}
if (clientAsyncData.custmerData.states[op.url] == loadSate.ing) {
setTimeout(function () {
clientAsyncData.custmerData.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = clientData[op.url] || [];
if (!!data) {
op.callback(clientAsyncData.custmerData.find(op.key, op.keyId, data) || {}, op);
} else {
op.callback({}, op);
}
}
},
gets: function (op) {
if (clientAsyncData.custmerData.states[op.url] == undefined || clientAsyncData.custmerData.states[op.url] == loadSate.no) {
clientAsyncData.custmerData.states[op.url] = loadSate.ing;
clientAsyncData.custmerData.load(op.url);
}
if (clientAsyncData.custmerData.states[op.url] == loadSate.ing) {
setTimeout(function () {
clientAsyncData.custmerData.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = clientData[op.url] || [];
if (!!data) {
if (op.key == undefined || op.key == null) {
op.callback('', op);
}
else {
op.key = op.key + '';
var keyList = op.key.split(',');
var _text = []
$.each(keyList, function (_index, _item) {
var _item = clientAsyncData.custmerData.find(op.key, op.keyId, data) || {};
if (_item[op.textId]) {
_text.push(_item[op.textId]);
}
});
op.callback(String(_text), op);
}
} else {
op.callback('', op);
}
}
},
getAll: function (op) {
if (clientAsyncData.custmerData.states[op.url] == undefined || clientAsyncData.custmerData.states[op.url] == loadSate.no) {
clientAsyncData.custmerData.states[op.url] = loadSate.ing;
clientAsyncData.custmerData.load(op.url);
}
if (clientAsyncData.custmerData.states[op.url] == loadSate.ing) {
setTimeout(function () {
clientAsyncData.custmerData.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = clientData[op.url] || [];
if (!!data) {
op.callback(data, op);
} else {
op.callback([], op);
}
}
},
load: function (url) {
learun.httpAsync('GET', top.$.rootUrl + url, {}, function (data) {
if (!!data) {
clientData[url] = data;
}
clientAsyncData.custmerData.states[url] = loadSate.yes;
});
},
find: function (key, keyId, data) {
var res = {};
for (var i = 0, l = data.length; i < l; i++) {
if (data[i][keyId] == key) {
res = data[i];
break;
}
}
return res;
}
};
// 获取桌面配置数据
clientAsyncData.desktop = {
states: loadSate.no,
init: function () {
if (clientAsyncData.desktop.states == loadSate.no) {
clientAsyncData.desktop.states = loadSate.ing;
var ver = storage.get("desktopData").ver || "";
learun.httpAsync('GET', top.$.rootUrl + '/LR_Desktop/DTTarget/GetMap', { ver: ver }, function (data) {
if (!data) {
clientAsyncData.desktop.states = loadSate.fail;
} else {
if (data.ver) {
storage.set("desktopData", data);
}
clientAsyncData.desktop.states = loadSate.yes;
clientAsyncData.department.init();
}
});
}
},
get: function (op) {
clientAsyncData.desktop.init();
if (clientAsyncData.desktop.states == loadSate.ing) {
setTimeout(function () {
clientAsyncData.desktop.get(op);
}, 100);// 如果还在加载100ms后再检测
}
else {
var data = storage.get("desktopData").data || {};
op.callback(data || {}, op);
}
}
};
})(window.jQuery, top.learun);