Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

4 роки тому
4 роки тому
4 роки тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494
  1. /*
  2. * 版 本 Learun-ADMS V7.0.0 数字化智慧校园(http://www.learun.cn)
  3. * Copyright (c) 2013-2017 北京泉江科技有限公司
  4. * 创建人:数字化智慧校园-前端开发组
  5. * 日 期:2018.7.12
  6. * 描 述:数字化智慧校园移动端框架(ADMS) 数字化智慧校园移动框架方法扩展
  7. */
  8. (function ($, learun) {
  9. "use strict";
  10. // http 方法(加了登录信息)
  11. learun.httpget = function (url, data, callback) {
  12. var param = {};
  13. var logininfo = learun.storage.get('logininfo');
  14. if (!logininfo) {
  15. callback(null);
  16. return false;
  17. }
  18. param.token = logininfo.token;
  19. param.loginMark = learun.deviceId();
  20. var type = learun.type(data);
  21. if (type === 'object' || type === 'array') {
  22. param.data = JSON.stringify(data);
  23. }
  24. else if (type === 'string') {
  25. param.data = data;
  26. }
  27. learun.http.get(url, param, function (res) {
  28. if (res === null) {
  29. learun.layer.toast('无法连接服务器,请检测网络!');
  30. callback(null);
  31. }
  32. else if (res.code === 410) {
  33. callback(null);
  34. if (!learun.isOutLogin) {
  35. learun.isOutLogin = true;
  36. learun.layer.toast('登录过期,请重新登录!');
  37. learun.storage.set('logininfo', null);
  38. learun.nav.go({ path: 'login', isBack: false, isHead: false });
  39. }
  40. } else {
  41. if (res.code === 200) {
  42. callback(res.data);
  43. } else {
  44. callback(null);
  45. learun.layer.toast(res.info);
  46. }
  47. }
  48. });
  49. };
  50. learun.httpgetnosy = function (url, data, callback) {
  51. var param = {};
  52. var logininfo = learun.storage.get('logininfo');
  53. if (!logininfo) {
  54. callback(null);
  55. return false;
  56. }
  57. param.token = logininfo.token;
  58. param.loginMark = learun.deviceId();
  59. var type = learun.type(data);
  60. if (type === 'object' || type === 'array') {
  61. param.data = JSON.stringify(data);
  62. }
  63. else if (type === 'string') {
  64. param.data = data;
  65. }
  66. learun.http.getNoAsyno(url, param, function (res) {
  67. if (res === null) {
  68. learun.layer.toast('无法连接服务器,请检测网络!');
  69. callback(null);
  70. }
  71. else if (res.code === 410) {
  72. callback(null);
  73. if (!learun.isOutLogin) {
  74. learun.isOutLogin = true;
  75. learun.layer.toast('登录过期,请重新登录!');
  76. learun.storage.set('logininfo', null);
  77. learun.nav.go({ path: 'login', isBack: false, isHead: false });
  78. }
  79. } else {
  80. if (res.code === 200) {
  81. callback(res.data);
  82. } else {
  83. callback(null);
  84. learun.layer.toast(res.info);
  85. }
  86. }
  87. });
  88. };
  89. learun.httppost = function (url, data, callback) {
  90. var param = {};
  91. var logininfo = learun.storage.get('logininfo');
  92. if (!logininfo) {
  93. callback(null);
  94. return false;
  95. }
  96. param.token = logininfo.token;
  97. param.loginMark = learun.deviceId();
  98. var type = learun.type(data);
  99. if (type === 'object' || type === 'array') {
  100. param.data = JSON.stringify(data);
  101. }
  102. else if (type === 'string') {
  103. param.data = data;
  104. }
  105. learun.http.post(url, param, function (res) {
  106. if (res === null) {
  107. learun.layer.toast('无法连接服务器,请检测网络!');
  108. callback(null);
  109. }
  110. else if (res.code === 410) {
  111. callback(null);
  112. if (!learun.isOutLogin) {
  113. learun.isOutLogin = true;
  114. learun.layer.toast('登录过期,请重新登录!');
  115. learun.storage.set('logininfo', null);
  116. learun.nav.go({ path: 'login', isBack: false, isHead: false });
  117. }
  118. } else {
  119. if (res.code === 200) {
  120. callback(res.data, res.info);
  121. } else {
  122. callback(null);
  123. learun.layer.toast(res.info);
  124. }
  125. }
  126. });
  127. };
  128. learun.httppostnoLogin = function (url, data, callback) {
  129. var param = {};
  130. var type = learun.type(data);
  131. if (type === 'object' || type === 'array') {
  132. param.data = JSON.stringify(data);
  133. }
  134. else if (type === 'string') {
  135. param.data = data;
  136. }
  137. learun.http.post(url, param, function (res) {
  138. if (res === null) {
  139. learun.layer.toast('无法连接服务器,请检测网络!');
  140. callback(null);
  141. }
  142. else if (res.code === 410) {
  143. callback(null);
  144. if (!learun.isOutLogin) {
  145. learun.isOutLogin = true;
  146. learun.layer.toast('登录过期,请重新登录!');
  147. learun.storage.set('logininfo', null);
  148. learun.nav.go({ path: 'login', isBack: false, isHead: false });
  149. }
  150. } else {
  151. if (res.code === 200) {
  152. callback(res.data, res.info);
  153. } else {
  154. callback(null);
  155. learun.layer.toast(res.info);
  156. }
  157. }
  158. });
  159. };
  160. // 获取后台信息(基础信息)
  161. var loadSate = {
  162. no: -1, // 还未加载
  163. yes: 1, // 已经加载成功
  164. ing: 0, // 正在加载中
  165. fail: 2 // 加载失败
  166. };
  167. var clientAsyncData = {};
  168. learun.clientdata = {
  169. init: function () {
  170. clientAsyncData.company.init();
  171. },
  172. get: function (name, op) {//
  173. return clientAsyncData[name].get(op);
  174. },
  175. getAll: function (name, op) {//
  176. return clientAsyncData[name].getAll(op);
  177. },
  178. clear: function (name) {
  179. clientAsyncData[name].states = loadSate.no;
  180. }
  181. };
  182. // 公司信息
  183. clientAsyncData.company = {
  184. states: loadSate.no,
  185. init: function () {
  186. if (clientAsyncData.company.states === loadSate.no) {
  187. clientAsyncData.company.states = loadSate.ing;
  188. var data = learun.storage.get("companyData") || {};
  189. var ver = data.ver || "";
  190. learun.httpget(config.webapi + "learun/adms/company/map", { ver: ver }, function (data) {
  191. if (data) {
  192. if (data.ver) {
  193. learun.storage.set("companyData", data);
  194. }
  195. clientAsyncData.company.states = loadSate.yes;
  196. clientAsyncData.department.init();
  197. }
  198. else {
  199. clientAsyncData.company.states = loadSate.fail;
  200. }
  201. });
  202. }
  203. },
  204. get: function (op) {
  205. clientAsyncData.company.init();
  206. if (clientAsyncData.company.states === loadSate.ing) {
  207. setTimeout(function () {
  208. clientAsyncData.company.get(op);
  209. }, 100);// 如果还在加载100ms后再检测
  210. }
  211. else {
  212. var _dataTmp = learun.storage.get("companyData") || {};
  213. var data = _dataTmp.data || {};
  214. op.callback(data[op.key] || {}, op);
  215. }
  216. },
  217. getAll: function (op) {
  218. clientAsyncData.company.init();
  219. if (clientAsyncData.company.states === loadSate.ing) {
  220. setTimeout(function () {
  221. clientAsyncData.company.getAll(op);
  222. }, 100);// 如果还在加载100ms后再检测
  223. }
  224. else {
  225. var _dataTmp = learun.storage.get("companyData") || {};
  226. var data = _dataTmp.data || {};
  227. op.callback(data, op);
  228. }
  229. }
  230. };
  231. // 获取桌面配置信息
  232. clientAsyncData.desktop = {
  233. states: loadSate.no,
  234. init: function () {
  235. if (clientAsyncData.desktop.states === loadSate.no) {
  236. clientAsyncData.desktop.states = loadSate.ing;
  237. var data = learun.storage.get("desktopData") || {};
  238. var ver = data.ver || "";
  239. learun.httpget(config.webapi + "learun/adms/desktop/setting", { ver: ver }, function (data) {
  240. if (data) {
  241. if (data.ver) {
  242. learun.storage.set("desktopData", data);
  243. }
  244. clientAsyncData.desktop.states = loadSate.yes;
  245. }
  246. else {
  247. clientAsyncData.desktop.states = loadSate.fail;
  248. }
  249. });
  250. }
  251. },
  252. get: function (op) {
  253. clientAsyncData.desktop.init();
  254. if (clientAsyncData.desktop.states === loadSate.ing) {
  255. setTimeout(function () {
  256. clientAsyncData.desktop.get(op);
  257. }, 100);// 如果还在加载100ms后再检测
  258. }
  259. else {
  260. var _tmpData = learun.storage.get("desktopData");
  261. var data = _tmpData.data || {};
  262. op.callback(data, op);
  263. }
  264. }
  265. };
  266. // 部门信息
  267. clientAsyncData.department = {
  268. states: loadSate.no,
  269. init: function () {
  270. if (clientAsyncData.department.states === loadSate.no) {
  271. clientAsyncData.department.states = loadSate.ing;
  272. var data = learun.storage.get("departmentData") || {};
  273. var ver = data.ver || "";
  274. learun.httpget(config.webapi + "learun/adms/department/map", { ver: ver }, function (data) {
  275. if (data) {
  276. if (data.ver) {
  277. learun.storage.set("departmentData", data);
  278. }
  279. clientAsyncData.department.states = loadSate.yes;
  280. clientAsyncData.user.init();
  281. }
  282. else {
  283. clientAsyncData.department.states = loadSate.fail;
  284. }
  285. });
  286. }
  287. },
  288. get: function (op) {
  289. clientAsyncData.department.init();
  290. if (clientAsyncData.department.states === loadSate.ing) {
  291. setTimeout(function () {
  292. clientAsyncData.department.get(op);
  293. }, 100);// 如果还在加载100ms后再检测
  294. }
  295. else {
  296. var _dataTmp = learun.storage.get("departmentData") || {};
  297. var data = _dataTmp.data || {};
  298. op.callback(data[op.key] || {}, op);
  299. }
  300. },
  301. getAll: function (op) {
  302. clientAsyncData.department.init();
  303. if (clientAsyncData.department.states === loadSate.ing) {
  304. setTimeout(function () {
  305. clientAsyncData.department.getAll(op);
  306. }, 100);// 如果还在加载100ms后再检测
  307. }
  308. else {
  309. var _dataTmp = learun.storage.get("departmentData") || {};
  310. var data = _dataTmp.data || {};
  311. op.callback(data, op);
  312. }
  313. }
  314. };
  315. // 人员信息
  316. clientAsyncData.user = {
  317. states: loadSate.no,
  318. init: function () {
  319. if (clientAsyncData.user.states === loadSate.no) {
  320. clientAsyncData.user.states = loadSate.ing;
  321. var data = learun.storage.get("userData") || {};
  322. var ver = data.ver || "";
  323. learun.httpget(config.webapi + "learun/adms/user/map", { ver: ver }, function (data) {
  324. if (data) {
  325. if (data.ver) {
  326. learun.storage.set("userData", data);
  327. }
  328. clientAsyncData.user.states = loadSate.yes;
  329. clientAsyncData.dataItem.init();
  330. }
  331. else {
  332. clientAsyncData.user.states = loadSate.fail;
  333. }
  334. });
  335. }
  336. },
  337. get: function (op) {
  338. clientAsyncData.user.init();
  339. if (clientAsyncData.user.states === loadSate.ing) {
  340. setTimeout(function () {
  341. clientAsyncData.user.get(op);
  342. }, 100);// 如果还在加载100ms后再检测
  343. }
  344. else {
  345. var _dataTmp = learun.storage.get("userData") || {};
  346. var data = _dataTmp.data || {};
  347. op.callback(data[op.key] || {}, op);
  348. }
  349. },
  350. getAll: function (op) {
  351. clientAsyncData.user.init();
  352. if (clientAsyncData.user.states === loadSate.ing) {
  353. setTimeout(function () {
  354. clientAsyncData.user.getAll(op);
  355. }, 100);// 如果还在加载100ms后再检测
  356. }
  357. else {
  358. var _dataTmp = learun.storage.get("userData") || {};
  359. var data = _dataTmp.data || {};
  360. op.callback(data, op);
  361. }
  362. }
  363. };
  364. // 数据字典
  365. clientAsyncData.dataItem = {
  366. states: loadSate.no,
  367. init: function () {
  368. if (clientAsyncData.dataItem.states === loadSate.no) {
  369. clientAsyncData.dataItem.states = loadSate.ing;
  370. var data = learun.storage.get("dataItemData") || {};
  371. var ver = data.ver || "";
  372. learun.httpget(config.webapi + "learun/adms/dataitem/map", { ver: ver }, function (data) {
  373. if (data) {
  374. if (data.ver) {
  375. learun.storage.set("dataItemData", data);
  376. }
  377. clientAsyncData.dataItem.states = loadSate.yes;
  378. }
  379. else {
  380. clientAsyncData.dataItem.states = loadSate.fail;
  381. }
  382. });
  383. }
  384. },
  385. get: function (op) {
  386. clientAsyncData.dataItem.init();
  387. if (clientAsyncData.dataItem.states === loadSate.ing) {
  388. setTimeout(function () {
  389. clientAsyncData.dataItem.get(op);
  390. }, 100);// 如果还在加载100ms后再检测
  391. }
  392. else {
  393. var _dataTmp = learun.storage.get("dataItemData") || {};
  394. var data = _dataTmp.data || {};
  395. op.callback(clientAsyncData.dataItem.find(op.key, data[op.code] || {}) || {}, op);
  396. }
  397. },
  398. getAll: function (op) {
  399. clientAsyncData.dataItem.init();
  400. if (clientAsyncData.dataItem.states === loadSate.ing) {
  401. setTimeout(function () {
  402. clientAsyncData.dataItem.getAll(op);
  403. }, 100);// 如果还在加载100ms后再检测
  404. }
  405. else {
  406. var _dataTmp = learun.storage.get("dataItemData") || {};
  407. var data = _dataTmp.data || {};
  408. op.callback(data[op.code] || {}, op);
  409. }
  410. },
  411. loadnologin: function (code) {
  412. var _tmpData = learun.storage.get("sourceData_" + code) || {};
  413. if (!_tmpData.data) {
  414. var params = { code: code };
  415. var param = {};
  416. var type = learun.type(params);
  417. if (type === 'object' || type === 'array') {
  418. param.data = JSON.stringify(params);
  419. }
  420. else if (type === 'string') {
  421. param.data = params;
  422. }
  423. // $.get(config.webapi + "learun/nologin/adms/datasource/map", param, function (res) {
  424. // if (res.code == 200) {
  425. // if (res.data) {
  426. // if (res.data.ver) {
  427. // learun.storage.set("sourceData_" + code, res.data);
  428. // }
  429. // clientAsyncData.sourceData.states[code] = loadSate.yes;
  430. // }
  431. // else {
  432. // clientAsyncData.sourceData.states[code] = loadSate.fail;
  433. // }
  434. // }
  435. // })
  436. $.ajax({
  437. url: config.webapi + "learun/nologin/adms/datasource/itemmap",
  438. data: param,
  439. type: "get",
  440. dataType: "json",
  441. async: false,
  442. success: function (res) {
  443. if (res.code == 200) {
  444. if (res.data) {
  445. if (res.data.ver) {
  446. learun.storage.set("dataItemData", res.data);
  447. }
  448. clientAsyncData.dataItem.states = loadSate.yes;
  449. } else {
  450. clientAsyncData.dataItem.states = loadSate.fail;
  451. }
  452. }
  453. }
  454. });
  455. }
  456. },
  457. find: function (key, data) {
  458. var res = {};
  459. for (var id in data) {
  460. if (data[id].value === key) {
  461. res = data[id];
  462. break;
  463. }
  464. }
  465. return res;
  466. }
  467. };
  468. // 数据源数据
  469. clientAsyncData.sourceData = {
  470. states: {},
  471. get: function (op) {
  472. if (clientAsyncData.sourceData.states[op.code] === undefined || clientAsyncData.sourceData.states[op.code] === loadSate.no) {
  473. clientAsyncData.sourceData.states[op.code] = loadSate.ing;
  474. clientAsyncData.sourceData.load(op.code);
  475. }
  476. if (clientAsyncData.sourceData.states[op.code] === loadSate.ing) {
  477. setTimeout(function () {
  478. clientAsyncData.sourceData.get(op);
  479. }, 100);// 如果还在加载100ms后再检测
  480. }
  481. else {
  482. var _tmpData = learun.storage.get("sourceData_" + op.code) || {};
  483. var data = _tmpData.data || [];
  484. if (data) {
  485. op.callback(clientAsyncData.sourceData.find(op.key, op.keyId, data) || {}, op);
  486. } else {
  487. op.callback({}, op);
  488. }
  489. }
  490. },
  491. getAll: function (op) {
  492. if (clientAsyncData.sourceData.states[op.code] === undefined || clientAsyncData.sourceData.states[op.code] === loadSate.no) {
  493. clientAsyncData.sourceData.states[op.code] = loadSate.ing;
  494. clientAsyncData.sourceData.load(op.code);
  495. }
  496. if (clientAsyncData.sourceData.states[op.code] === loadSate.ing) {
  497. setTimeout(function () {
  498. clientAsyncData.sourceData.getAll(op);
  499. }, 100);// 如果还在加载100ms后再检测
  500. }
  501. else {
  502. var _tmpData = learun.storage.get("sourceData_" + op.code) || {};
  503. var data = _tmpData.data || [];
  504. if (data) {
  505. op.callback(data, op);
  506. } else {
  507. op.callback({}, op);
  508. }
  509. }
  510. },
  511. loadnologin: function (code) {
  512. var _tmpData = learun.storage.get("sourceData_" + code) || {};
  513. if (!_tmpData.data) {
  514. var params = { code: code };
  515. var param = {};
  516. var type = learun.type(params);
  517. if (type === 'object' || type === 'array') {
  518. param.data = JSON.stringify(params);
  519. }
  520. else if (type === 'string') {
  521. param.data = params;
  522. }
  523. // $.get(config.webapi + "learun/nologin/adms/datasource/map", param, function (res) {
  524. // if (res.code == 200) {
  525. // if (res.data) {
  526. // if (res.data.ver) {
  527. // learun.storage.set("sourceData_" + code, res.data);
  528. // }
  529. // clientAsyncData.sourceData.states[code] = loadSate.yes;
  530. // }
  531. // else {
  532. // clientAsyncData.sourceData.states[code] = loadSate.fail;
  533. // }
  534. // }
  535. // })
  536. $.ajax({
  537. url: config.webapi + "learun/nologin/adms/datasource/map",
  538. data: param,
  539. type: "get",
  540. dataType: "json",
  541. async: false,
  542. success: function (res) {
  543. if (res.code == 200) {
  544. if (res.data) {
  545. if (res.data.ver) {
  546. learun.storage.set("sourceData_" + code, res.data);
  547. }
  548. clientAsyncData.sourceData.states[code] = loadSate.yes;
  549. }
  550. else {
  551. clientAsyncData.sourceData.states[code] = loadSate.fail;
  552. }
  553. }
  554. }
  555. })
  556. }
  557. },
  558. load: function (code) {
  559. var data = learun.storage.get("sourceData_" + code) || {};
  560. var ver = data.ver || "";
  561. learun.httpget(config.webapi + "learun/adms/datasource/map", { code: code, ver: ver }, function (data) {
  562. if (data) {
  563. if (data.ver) {
  564. learun.storage.set("sourceData_" + code, data);
  565. }
  566. clientAsyncData.sourceData.states[code] = loadSate.yes;
  567. }
  568. else {
  569. clientAsyncData.sourceData.states[code] = loadSate.fail;
  570. }
  571. });
  572. },
  573. find: function (key, keyId, data) {
  574. var res = {};
  575. for (var i = 0, l = data.length; i < l; i++) {
  576. if (data[i][keyId] === key) {
  577. res = data[i];
  578. break;
  579. }
  580. }
  581. return res;
  582. }
  583. };
  584. // 自定义数据
  585. var custmerData = {};
  586. clientAsyncData.custmerData = {
  587. states: {},
  588. get: function (op) {
  589. if (clientAsyncData.custmerData.states[op.url] === undefined || clientAsyncData.custmerData.states[op.url] === loadSate.no) {
  590. clientAsyncData.custmerData.states[op.url] = loadSate.ing;
  591. clientAsyncData.custmerData.load(op.url);
  592. }
  593. if (clientAsyncData.custmerData.states[op.url] === loadSate.ing) {
  594. setTimeout(function () {
  595. clientAsyncData.custmerData.get(op);
  596. }, 100);// 如果还在加载100ms后再检测
  597. }
  598. else {
  599. var data = custmerData[op.url];
  600. if (data) {
  601. op.callback(clientAsyncData.custmerData.find(op.key, op.keyId, data) || {}, op);
  602. } else {
  603. op.callback({}, op);
  604. }
  605. }
  606. },
  607. getAll: function (op) {
  608. if (clientAsyncData.custmerData.states[op.url] === undefined || clientAsyncData.custmerData.states[op.url] === loadSate.no) {
  609. clientAsyncData.custmerData.states[op.url] = loadSate.ing;
  610. clientAsyncData.custmerData.load(op.url);
  611. }
  612. if (clientAsyncData.custmerData.states[op.url] === loadSate.ing) {
  613. setTimeout(function () {
  614. clientAsyncData.custmerData.getAll(op);
  615. }, 100);// 如果还在加载100ms后再检测
  616. }
  617. else {
  618. var data = custmerData[op.url];
  619. op.callback(data || [], op);
  620. }
  621. },
  622. load: function (url) {
  623. learun.httpget(config.webapi + url, null, function (data) {
  624. if (data) {
  625. custmerData[url] = data;
  626. clientAsyncData.custmerData.states[url] = loadSate.yes;
  627. }
  628. else {
  629. clientAsyncData.custmerData.states[url] = loadSate.fail;
  630. }
  631. });
  632. },
  633. find: function (key, keyId, data) {
  634. var res = {};
  635. for (var i = 0, l = data.length; i < l; i++) {
  636. if (data[i][keyId] === key) {
  637. res = data[i];
  638. break;
  639. }
  640. }
  641. return res;
  642. }
  643. };
  644. // 获取功能列表
  645. clientAsyncData.module = {
  646. states: loadSate.no,
  647. init: function () {
  648. if (clientAsyncData.module.states === loadSate.no) {
  649. clientAsyncData.module.states = loadSate.ing;
  650. var data = learun.storage.get("moduleData") || {};
  651. var ver = data.ver || "";
  652. learun.httpget(config.webapi + "learun/adms/function/list", { ver: ver }, function (data) {
  653. if (data) {
  654. if (data.ver) {
  655. learun.storage.set("moduleData", data);
  656. }
  657. clientAsyncData.module.states = loadSate.yes;
  658. }
  659. else {
  660. clientAsyncData.module.states = loadSate.fail;
  661. }
  662. });
  663. }
  664. },
  665. get: function (op) {
  666. clientAsyncData.module.init();
  667. if (clientAsyncData.module.states === loadSate.ing) {
  668. setTimeout(function () {
  669. clientAsyncData.module.get(op);
  670. }, 100);// 如果还在加载100ms后再检测
  671. }
  672. else {
  673. var _tmpData = learun.storage.get("moduleData");
  674. var data = _tmpData.data || {};
  675. op.callback(data, op);
  676. }
  677. }
  678. };
  679. // 获取我的应用列表
  680. learun.myModule = {
  681. states: loadSate.no,
  682. init: function (modules) {
  683. if (learun.myModule.states === loadSate.no) {
  684. learun.myModule.states = loadSate.ing;
  685. var mymoduleData = learun.storage.get("mymoduleData");
  686. if (mymoduleData === null) {
  687. var len = 7;
  688. if (len > modules.length) {
  689. len = modules.length;
  690. }
  691. var list = [];
  692. for (var i = 0; i < len; i++) {
  693. var item = modules[i];
  694. list.push(item.F_Id);
  695. }
  696. learun.storage.set("mymoduleData", list);
  697. learun.httppost(config.webapi + "learun/adms/function/mylist/update", String(list), (res) => {
  698. });
  699. learun.myModule.states = loadSate.yes;
  700. }
  701. else {
  702. learun.httpget(config.webapi + "learun/adms/function/mylist", null, function (data) {
  703. if (data) {
  704. learun.storage.set("mymoduleData", data);
  705. }
  706. learun.myModule.states = loadSate.yes;
  707. });
  708. }
  709. }
  710. },
  711. get: function (modules, callback) {
  712. learun.myModule.init(modules);
  713. if (learun.myModule.states === loadSate.ing) {
  714. setTimeout(function () {
  715. learun.myModule.get(modules, callback);
  716. }, 100);// 如果还在加载100ms后再检测
  717. }
  718. else {
  719. callback(learun.storage.get("mymoduleData"));
  720. }
  721. }
  722. };
  723. // 获取单据编码
  724. learun.getRuleCode = function (code, callback) {
  725. learun.httpget(config.webapi + "learun/adms/coderule/code", code, function (data) {
  726. if (data) {
  727. callback(data);
  728. }
  729. else {
  730. callback('');
  731. }
  732. });
  733. };
  734. /*选择框方法扩展(包含单选框)*/
  735. // 选择框扩展(url(后台数据地址),数据字典,数据源),
  736. $.fn.lrpickerex = function (op) {
  737. var $this = $(this);
  738. if ($this.length === 0) {
  739. return $this;
  740. }
  741. if (!op.data) {
  742. op.data = [];
  743. if (op.firstRead) {
  744. clientAsyncData.sourceData.loadnologin(op.code);
  745. }
  746. if (op.firstDateItem) {
  747. clientAsyncData.dataItem.loadnologin(op.code);
  748. }
  749. switch (op.type) {
  750. case 'dataItem':
  751. $this.lrpicker(op);
  752. learun.clientdata.getAll('dataItem', {
  753. code: op.code,
  754. callback: function (data) {
  755. var _tmpdata = [];
  756. $.each(data, function (_index, _item) {
  757. _tmpdata.push({ value: _item.value, text: _item.text });
  758. });
  759. $this.lrpickerSetData(_tmpdata);
  760. }
  761. });
  762. break;
  763. case 'sourceData':
  764. $this.lrpicker(op);
  765. learun.clientdata.getAll('sourceData', {
  766. code: op.code,
  767. callback: function (data) {
  768. if (op.placeHolders != '') {
  769. var obj={};
  770. obj[op.ivalue] = op.placeHolders;
  771. obj[op.itext] = op.placeHolders;
  772. //data.splice(0, 0, obj);
  773. }
  774. $this.lrpickerSetData(data);
  775. }
  776. });
  777. break;
  778. default:
  779. $this.lrpicker(op);
  780. if (op.url) {// 如果有连接地址
  781. learun.clientdata.getAll('custmerData', {
  782. url: op.url,
  783. callback: function (data) {
  784. $this.lrpickerSetData(data);
  785. }
  786. });
  787. }
  788. break;
  789. }
  790. } else {
  791. $this.lrpicker(op);
  792. }
  793. return $this;
  794. };
  795. // 组织单位选择
  796. $.fn.lrselect = function (op) {
  797. var $this = $(this);
  798. if ($this.length === 0) {
  799. return $this;
  800. }
  801. var dfop = {
  802. placeholder: '请选择',
  803. type: 'company',
  804. companyId: '',
  805. departmentId: '',
  806. change: false
  807. };
  808. $.extend(dfop, op || {});
  809. $this.attr('type', 'lrselect');
  810. $this.addClass('lr-select');
  811. $this.html('<div class="text">' + dfop.placeholder + '</div>');
  812. dfop.id = $this.attr('id');
  813. $this[0].dfop = dfop;
  814. $this.on('tap', function () {
  815. var $this = $(this);
  816. if ($this.attr('readonly') || $this.parents('.lr-form-row').attr('readonly')) {
  817. return false;
  818. }
  819. learun.formblur();
  820. var op = $this[0].dfop;
  821. if (op.needPre) {
  822. learun.layer.toast('请先选择上一级!');
  823. return false;
  824. }
  825. var name = '';
  826. switch (op.type) {
  827. case 'company':
  828. name = '选择公司';
  829. break;
  830. case 'department':
  831. name = '选择部门';
  832. break;
  833. case 'user':
  834. name = '选择人员';
  835. break;
  836. }
  837. learun.nav.go({
  838. path: 'lrselect/' + op.type, title: name, type: 'right', param: {
  839. callback: function (data, _op, $this) {
  840. $this.find('.text').text(data.name);
  841. _op.value = data.id;
  842. _op.text = data.name;
  843. _op.change && _op.change(data);
  844. $this.trigger('change');
  845. },
  846. op: op,
  847. $this: $this
  848. }
  849. });
  850. });
  851. return $this;
  852. };
  853. $.fn.lrselectGet = function (type) {
  854. var $this = $(this);
  855. if ($this.length === 0) {
  856. return '';
  857. }
  858. var op = $this[0].dfop;
  859. $this = null;
  860. if (type === 'text') {
  861. return op.text;
  862. }
  863. else {
  864. return op.value;
  865. }
  866. };
  867. $.fn.lrselectSet = function (value) {
  868. var $this = $(this);
  869. if ($this.length === 0) {
  870. return '';
  871. }
  872. var op = $this[0].dfop;
  873. op.value = value;
  874. $this = null;
  875. learun.clientdata.get(op.type, {
  876. key: value,
  877. set: op,
  878. callback: function (data, _op) {
  879. $('#' + _op.set.id).find('.text').text(data.name || '');
  880. _op.set.text = data.name || '';
  881. data.id = _op.key;
  882. _op.change && _op.change(data);
  883. $('#' + _op.set.id).trigger('change');
  884. }
  885. });
  886. };
  887. $.fn.lrselectUpdate = function (op) {
  888. var $this = $(this);
  889. if ($this.length === 0) {
  890. return $this;
  891. }
  892. $.extend($this[0].dfop, op || {});
  893. $this[0].dfop.value = '';
  894. $this[0].dfop.text = '';
  895. $this.find('.text').text($this[0].dfop.placeholder);
  896. $this = null;
  897. };
  898. // 弹层选择框(数据字典和数据源)
  899. $.fn.layerSelect = function (op) {
  900. var $this = $(this);
  901. if ($this.length === 0) {
  902. return $this;
  903. }
  904. var dfop = {
  905. placeholder: '请选择',
  906. type: 'dataItem',// sourceData
  907. layerData: [],
  908. callback: false
  909. };
  910. $.extend(dfop, op || {});
  911. $this.attr('type', 'lrlayerSelect');
  912. $this.addClass('lr-layerSelect');
  913. $this.html('<div class="text">' + dfop.placeholder + '</div>');
  914. dfop.id = $this.attr('id');
  915. $this[0].dfop = dfop;
  916. $this.on('tap', function () {
  917. var $this = $(this);
  918. if ($this.attr('readonly') || $this.parents('.lr-form-row').attr('readonly')) {
  919. return false;
  920. }
  921. learun.formblur();
  922. var op = $this[0].dfop;
  923. learun.nav.go({
  924. path: 'lrselect/layer', title: op.placeholder, type: 'right', param: {
  925. callback: function (data, _op, _$this) {
  926. _op.callback && _op.callback(data, _op.layerData, _$this);
  927. _$this = null;
  928. },
  929. op: op,
  930. $this: $this
  931. }
  932. });
  933. $this = null;
  934. return false;
  935. });
  936. return $this;
  937. };
  938. $.fn.layerSelectSet = function (value) {
  939. var $this = $(this);
  940. var op = $(this)[0].dfop;
  941. if (value) {
  942. $this.find('.text').text(value);
  943. op.value = value;
  944. }
  945. else {
  946. op.value = '';
  947. $(this).find('.text').text(op.placeholder);
  948. }
  949. };
  950. $.fn.layerSelectGet = function () {
  951. return $(this)[0].dfop.value;
  952. };
  953. /*多选框方法扩展*/
  954. $.fn.lrcheckboxex = function (op) {
  955. var $this = $(this);
  956. if ($this.length === 0) {
  957. return $this;
  958. }
  959. if (!op.data) {
  960. op.data = [];
  961. switch (op.type) {
  962. case 'dataItem':
  963. $this.lrcheckbox(op);
  964. learun.clientdata.getAll('dataItem', {
  965. code: op.code,
  966. callback: function (data) {
  967. var _tmpdata = [];
  968. $.each(data, function (_index, _item) {
  969. _tmpdata.push({ value: _item.value, text: _item.text });
  970. });
  971. $this.lrcheckboxSetData(_tmpdata);
  972. }
  973. });
  974. break;
  975. case 'sourceData':
  976. $this.lrcheckbox(op);
  977. learun.clientdata('sourceData', {
  978. code: op.code,
  979. callback: function (data) {
  980. $this.lrcheckboxSetData(data);
  981. }
  982. });
  983. break;
  984. default:
  985. $this.lrcheckbox(op);
  986. if (op.url) {// 如果有连接地址
  987. learun.clientdata('custmerData', {
  988. url: op.url,
  989. callback: function (data) {
  990. $this.lrcheckboxSetData(data);
  991. }
  992. });
  993. }
  994. break;
  995. }
  996. } else {
  997. $this.lrcheckbox(op);
  998. }
  999. return $this;
  1000. };
  1001. /*编辑表格方法扩展*/
  1002. function setGridRowValue($block, id, type, value) {// 设置编辑表格每个块的值
  1003. switch (type) {
  1004. case 'label':
  1005. case 'input':
  1006. $block.find('#' + id).val(value);
  1007. break;
  1008. case 'radio':
  1009. case 'select':
  1010. $block.find('#' + id).lrpickerSet(value);
  1011. break;
  1012. case 'picker':
  1013. $block.find('#' + id).lrpickerSet(value);
  1014. break;
  1015. case 'checkbox':
  1016. $block.find('#' + id).lrcheckboxSet(value);
  1017. break;
  1018. case 'layer':
  1019. $block.find('#' + id).layerSelectSet(value);
  1020. break;
  1021. case 'datetime':
  1022. $block.find('#' + id).lrdateSet(value);
  1023. break;
  1024. }
  1025. $block = null;
  1026. }
  1027. function getGridRowValue($block, id, type) {// 设置编辑表格每个块的值
  1028. var v = '';
  1029. switch (type) {
  1030. case 'label':
  1031. case 'input':
  1032. v = $block.find('#' + id).val();
  1033. break;
  1034. case 'radio':
  1035. case 'select':
  1036. v = $block.find('#' + id).lrpickerGet();
  1037. if (v == 'undefined') { v = 0 }
  1038. break;
  1039. case 'picker':
  1040. v = $block.find('#' + id).lrpickerGet();
  1041. break;
  1042. case 'checkbox':
  1043. v = $block.find('#' + id).lrcheckboxGet();
  1044. break;
  1045. case 'layer':
  1046. v = $block.find('#' + id).layerSelectGet();
  1047. break;
  1048. case 'datetime':
  1049. v = $block.find('#' + id).lrdateGet();
  1050. break;
  1051. }
  1052. $block = null;
  1053. return v;
  1054. }
  1055. function addGridRow($this, op) {
  1056. // 添加编辑集合块
  1057. var $html = $('<div class="lr-edit-grid-block" ></div>');
  1058. if (op.hasBtn) {
  1059. $this.find('.lr-edit-grid-btn').before($html);
  1060. }
  1061. else {
  1062. $this.append($html);
  1063. }
  1064. // 添加标题栏
  1065. var $title = $('<div class="lr-edit-grid-title" >' + op.title + '(<span>' + op._index + '</span>)</div>');
  1066. if (op._index > 1) {
  1067. $title.append('<div class="lr-edit-grid-deletebtn" data-value="' + op._index + '">删除</div>');
  1068. }
  1069. $html.html($title);
  1070. var _compontHtml = '';
  1071. op.compontsMap = op.compontsMap || {};
  1072. // 编辑表格-组件初始化
  1073. $.each(op.componts, function (_index, _item) {
  1074. if (op._index === 1) {
  1075. op.compontsMap[_item.field] = _item;
  1076. }
  1077. switch (_item.type) {
  1078. case 'label':
  1079. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><input type="text" readonly id="' + _item.field + '" ></div>';
  1080. $html.append(_compontHtml);
  1081. break;
  1082. case 'input':
  1083. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><input type="text" id="' + _item.field + '" ></div>';
  1084. $html.append(_compontHtml);
  1085. // 值改变
  1086. if (_item.change) {
  1087. $html.find('#' + _item.field).on('input propertychange', { change: _item.change }, function (e) {
  1088. e = e || window.event;
  1089. var _change = e.data.change;
  1090. var $this = $(this);
  1091. var _$block = $this.parents('.lr-edit-grid-block');
  1092. var v = $this.val();
  1093. _change(v, _$block);
  1094. $this = null;
  1095. _$block = null;
  1096. });
  1097. }
  1098. break;
  1099. case 'radio':
  1100. case 'select':
  1101. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1102. $html.append(_compontHtml);
  1103. $html.find('#' + _item.field).lrpickerex({
  1104. code: _item.code,
  1105. type: _item.datatype,
  1106. ivalue: _item.ivalue,
  1107. itext: _item.itext,
  1108. data: _item.data,
  1109. url: _item.url,
  1110. change: function (value, text, datalist, $self) {
  1111. var _$block = $self.parents('.lr-edit-grid-block');
  1112. _item.change && _item.change(value, text, datalist, _$block);
  1113. $self = null;
  1114. _$block = null;
  1115. }
  1116. });
  1117. break;
  1118. case 'picker':
  1119. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1120. $html.append(_compontHtml);
  1121. $html.find('#' + _item.field).lrpicker({
  1122. placeholder: _item.placeholder,
  1123. data: _item.data,
  1124. level: _item.level
  1125. });
  1126. break;
  1127. case 'checkbox':
  1128. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1129. $html.append(_compontHtml);
  1130. $html.find('#' + _item.field).lrcheckboxex({
  1131. code: _item.code,
  1132. type: _item.datatype,
  1133. ivalue: _item.ivalue,
  1134. itext: _item.itext,
  1135. data: _item.data,
  1136. url: _item.url,
  1137. change: function (value, text, datalist, $self) {
  1138. var _$block = $self.parents('.lr-edit-grid-block');
  1139. _item.change && _item.change(value, text, datalist, _$block);
  1140. $self = null;
  1141. _$block = null;
  1142. }
  1143. });
  1144. break;
  1145. case 'layer':
  1146. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1147. $html.append(_compontHtml);
  1148. $html.find('#' + _item.field).layerSelect({
  1149. code: _item.code,
  1150. type: _item.datatype,
  1151. layerData: _item.layerData,
  1152. callback: function (data, layerData, _$this) {
  1153. var $block = _$this.parents('.lr-edit-grid-block');
  1154. $.each(layerData, function (_jindex, _jitem) {
  1155. setGridRowValue($block, _jitem.value, op.compontsMap[_jitem.value].type, data[_jitem.name]);
  1156. });
  1157. _item.change && _item.change(data, $block);
  1158. $block = null;
  1159. _$this = null;
  1160. }
  1161. });
  1162. break;
  1163. case 'datetime':
  1164. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1165. $html.append(_compontHtml);
  1166. $html.find('#' + _item.field).lrdate({
  1167. type: _item.datetime === 'date' ? 'date' : 'datetime',
  1168. change: function (v, _$this) {
  1169. var $block = _$this.parents('.lr-edit-grid-block');
  1170. _item.change && _item.change(v, $block);
  1171. $block = null;
  1172. _$this = null;
  1173. }
  1174. });
  1175. break;
  1176. default:
  1177. break;
  1178. }
  1179. });
  1180. $title = null;
  1181. $this = null;
  1182. return $html;
  1183. }
  1184. $.fn.lrgrid = function (op) {
  1185. var $this = $(this);
  1186. if ($this.length === 0) {
  1187. return $this;
  1188. }
  1189. if ($this[0].dfop) {
  1190. return $this;
  1191. }
  1192. var dfop = {
  1193. title: '编辑表格',
  1194. componts: [],
  1195. hasBtn: true,
  1196. _index: 1
  1197. };
  1198. $.extend(dfop, op || {});
  1199. $this[0].dfop = dfop;
  1200. $this.addClass('lr-edit-gird');
  1201. if (dfop.hasBtn) {
  1202. // 添加增加按钮
  1203. var $btn = $('<div class="lr-edit-grid-btn" ><i class="iconfont icon-add1" ></i>增加' + (dfop.title || '') + '</div>');
  1204. $btn.on('tap', { op: dfop }, function (e) {// 添加一块编辑集合
  1205. e = e || window.event;
  1206. var _op = e.data.op;
  1207. var $grid = $(this).parents('.lr-edit-gird');
  1208. _op._index++;// 增加块数
  1209. learun.formblur();
  1210. addGridRow($grid, _op);
  1211. });
  1212. $this.html($btn);
  1213. // 注册删除按钮事件
  1214. $this.delegate('.lr-edit-grid-deletebtn', 'tap', { op: dfop }, function (e) {
  1215. e = e || window.event;
  1216. var _op = e.data.op;
  1217. var $my = $(this);
  1218. var myIndex = $my.attr('data-value');
  1219. learun.formblur();
  1220. learun.layer.confirm('你确定要删除' + _op.title + myIndex + '吗?', function (isOk) {
  1221. if (isOk === '1') {
  1222. _op._index--;// 减少块数
  1223. // 排在后面的块需要重新调整序号
  1224. $my.parents('.lr-edit-gird').find('.lr-edit-grid-block:gt(' + (parseInt(myIndex) - 1) + ')').each(function () {
  1225. var $this = $(this);
  1226. var $deletebtn = $this.find('.lr-edit-grid-deletebtn');
  1227. var _index = parseInt($deletebtn.attr('data-value')) - 1;
  1228. $deletebtn.attr('data-value', _index);
  1229. $this.find('.lr-edit-grid-title span').text(_index);
  1230. $deletebtn = null;
  1231. $this = null;
  1232. });
  1233. // 移除绑定在自己身上的弹层,选择框,单选框,多选框,日期
  1234. var $block = $my.parents('.lr-edit-grid-block');
  1235. $block.find('.lr-date,.lr-picker,.lr-checkbox').each(function () {
  1236. var $this = $(this);
  1237. var _op = $this[0].fop;
  1238. $('#pop_' + _op.id).remove();
  1239. $('#dt_' + _op.id).remove();
  1240. });
  1241. // 移除自己
  1242. $block.remove();
  1243. $block = null;
  1244. }
  1245. $my = null;
  1246. }, '', ['取消', '确定']);
  1247. });
  1248. }
  1249. addGridRow($this, dfop);
  1250. return $this;
  1251. };
  1252. $.fn.lrgridSet = function (data) {
  1253. var $this = $(this);
  1254. var op = $this[0].dfop;
  1255. $.each(data, function (_index, _item) {
  1256. if (_index === 0) {
  1257. // 如果是第一行数据
  1258. $.each(op.componts, function (_jindex, jitem) {
  1259. var _id = jitem.field;
  1260. if (op.isToLowerCase) {
  1261. _id = _id.toLowerCase();
  1262. }
  1263. setGridRowValue($this.find('.lr-edit-grid-block'), jitem.field, jitem.type, _item[_id]);
  1264. });
  1265. } else {
  1266. // 如果不是第一行数据就先添加一行
  1267. op._index++;// 增加块数
  1268. var $block = addGridRow($this, op);
  1269. $.each(op.componts, function (_jindex, jitem) {
  1270. var _id = jitem.field;
  1271. if (op.isToLowerCase) {
  1272. _id = _id.toLowerCase();
  1273. }
  1274. setGridRowValue($block, jitem.field, jitem.type, _item[_id]);
  1275. });
  1276. }
  1277. });
  1278. $this = null;
  1279. };
  1280. $.fn.lrgridGet = function () {
  1281. var $this = $(this);
  1282. var op = $this[0].dfop;
  1283. var data = [];
  1284. $this.find('.lr-edit-grid-block').each(function () {
  1285. var $block = $(this);
  1286. var point = {};
  1287. $.each(op.componts, function (_jindex, jitem) {
  1288. point[jitem.field] = getGridRowValue($block, jitem.field, jitem.type);
  1289. });
  1290. data.push(point);
  1291. });
  1292. $this = null;
  1293. return data;
  1294. };
  1295. // 设置表单组件为只读
  1296. $.fn.setFormRead = function () {
  1297. $(this).find('.lr-form-row').each(function () {
  1298. $(this).attr('readonly', 'readonly');
  1299. });
  1300. }
  1301. $.fn.setFormWrite = function () {
  1302. $(this).find('.lr-form-row').each(function () {
  1303. $(this).removeAttr('readonly');
  1304. });
  1305. }
  1306. // 数据格式化
  1307. $.fn.dataFormatter = function (op) {
  1308. var $this = $(this);
  1309. var _v = '';
  1310. if (op.value === null || op.value === undefined || op.value === 'null' || op.value === 'undefined') {
  1311. op.value = '';
  1312. }
  1313. op.value = op.value + '';
  1314. switch (op.type) {
  1315. case 'datetime':
  1316. $this.append(learun.date.format(op.value, op.dateformat));
  1317. break;
  1318. case 'dataItem':
  1319. _v = op.value.split(',');
  1320. $.each(_v || [], function (_index, _item) {
  1321. if (_item) {
  1322. learun.clientdata.get('dataItem', {
  1323. key: _item,
  1324. code: op.code,
  1325. $this: $this,
  1326. callback: function (_data, _op) {
  1327. _op.$this.append(_data.text);
  1328. }
  1329. });
  1330. }
  1331. });
  1332. break;
  1333. case 'dataSource':
  1334. _v = op.value.split(',');
  1335. $.each(_v || [], function (_index, _item) {
  1336. if (_item) {
  1337. learun.clientdata.get('sourceData', {
  1338. key: _item,
  1339. keyId: op.keyId,
  1340. code: op.code,
  1341. set: op,
  1342. $this: $this,
  1343. callback: function (_data, _op) {
  1344. _op.$this.append(_data[_op.set.text]);
  1345. }
  1346. });
  1347. }
  1348. });
  1349. break;
  1350. case 'dataCustmer':
  1351. _v = op.value.split(',');
  1352. $.each(_v || [], function (_index, _item) {
  1353. if (_item) {
  1354. learun.clientdata.get('custmerData', {
  1355. key: _item,
  1356. keyId: op.keyId,
  1357. url: op.url,
  1358. set: op,
  1359. $this: $this,
  1360. callback: function (_data, _op) {
  1361. _op.$this.append(_data[_op.set.text]);
  1362. }
  1363. });
  1364. }
  1365. });
  1366. break;
  1367. case 'organize':
  1368. learun.clientdata.get(op.dataType, {
  1369. key: op.value,
  1370. $this: $this,
  1371. callback: function (_data, _op) {
  1372. _op.$this.append(_data.name);
  1373. }
  1374. });
  1375. break;
  1376. default:
  1377. $this.append(op.value);
  1378. break;
  1379. }
  1380. return $this;
  1381. }
  1382. // 图片选择,上传,下载
  1383. $.fn.lrImagepicker = function (op) {
  1384. var dfop = {
  1385. maxCount: 9,
  1386. isOnlyCamera: false,
  1387. uploadUrl: config.webapi + 'learun/adms/annexes/upload',
  1388. downUrl: config.webapi + 'learun/adms/annexes/down?data=',
  1389. getParams: function () {
  1390. var param = {};
  1391. var logininfo = learun.storage.get('logininfo');
  1392. param.token = logininfo.token;
  1393. param.loginMark = learun.deviceId();
  1394. return param;
  1395. },
  1396. deleteImg: function (fileId) {
  1397. learun.httppost(config.webapi + 'learun/adms/annexes/delete', fileId, function () { });
  1398. },
  1399. downFile: function (value, callback) {
  1400. learun.httpget(config.webapi + 'learun/adms/annexes/list', value, function (data) {
  1401. if (data) {
  1402. var _data = [];
  1403. $.each(data, function (_index, _item) {
  1404. if (_item.F_FileType === 'jpg' || _item.F_FileType === 'png') {
  1405. var _point = {
  1406. id: _item.F_Id,
  1407. name: _item.F_Id + '.' + _item.F_FileType
  1408. };
  1409. _data.push(_point);
  1410. }
  1411. });
  1412. callback(_data);
  1413. }
  1414. });
  1415. }
  1416. };
  1417. $.extend(dfop, op || {});
  1418. return $(this).imagepicker(dfop);
  1419. }
  1420. })(window.jQuery, window.lrmui);