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

1495 рядки
55 KiB

  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. console.log(data);
  770. var obj={};
  771. obj[op.ivalue] = op.placeHolders;
  772. obj[op.itext] = op.placeHolders;
  773. data.splice(0, 0, obj);
  774. }
  775. $this.lrpickerSetData(data);
  776. }
  777. });
  778. break;
  779. default:
  780. $this.lrpicker(op);
  781. if (op.url) {// 如果有连接地址
  782. learun.clientdata.getAll('custmerData', {
  783. url: op.url,
  784. callback: function (data) {
  785. $this.lrpickerSetData(data);
  786. }
  787. });
  788. }
  789. break;
  790. }
  791. } else {
  792. $this.lrpicker(op);
  793. }
  794. return $this;
  795. };
  796. // 组织单位选择
  797. $.fn.lrselect = function (op) {
  798. var $this = $(this);
  799. if ($this.length === 0) {
  800. return $this;
  801. }
  802. var dfop = {
  803. placeholder: '请选择',
  804. type: 'company',
  805. companyId: '',
  806. departmentId: '',
  807. change: false
  808. };
  809. $.extend(dfop, op || {});
  810. $this.attr('type', 'lrselect');
  811. $this.addClass('lr-select');
  812. $this.html('<div class="text">' + dfop.placeholder + '</div>');
  813. dfop.id = $this.attr('id');
  814. $this[0].dfop = dfop;
  815. $this.on('tap', function () {
  816. var $this = $(this);
  817. if ($this.attr('readonly') || $this.parents('.lr-form-row').attr('readonly')) {
  818. return false;
  819. }
  820. learun.formblur();
  821. var op = $this[0].dfop;
  822. if (op.needPre) {
  823. learun.layer.toast('请先选择上一级!');
  824. return false;
  825. }
  826. var name = '';
  827. switch (op.type) {
  828. case 'company':
  829. name = '选择公司';
  830. break;
  831. case 'department':
  832. name = '选择部门';
  833. break;
  834. case 'user':
  835. name = '选择人员';
  836. break;
  837. }
  838. learun.nav.go({
  839. path: 'lrselect/' + op.type, title: name, type: 'right', param: {
  840. callback: function (data, _op, $this) {
  841. $this.find('.text').text(data.name);
  842. _op.value = data.id;
  843. _op.text = data.name;
  844. _op.change && _op.change(data);
  845. $this.trigger('change');
  846. },
  847. op: op,
  848. $this: $this
  849. }
  850. });
  851. });
  852. return $this;
  853. };
  854. $.fn.lrselectGet = function (type) {
  855. var $this = $(this);
  856. if ($this.length === 0) {
  857. return '';
  858. }
  859. var op = $this[0].dfop;
  860. $this = null;
  861. if (type === 'text') {
  862. return op.text;
  863. }
  864. else {
  865. return op.value;
  866. }
  867. };
  868. $.fn.lrselectSet = function (value) {
  869. var $this = $(this);
  870. if ($this.length === 0) {
  871. return '';
  872. }
  873. var op = $this[0].dfop;
  874. op.value = value;
  875. $this = null;
  876. learun.clientdata.get(op.type, {
  877. key: value,
  878. set: op,
  879. callback: function (data, _op) {
  880. $('#' + _op.set.id).find('.text').text(data.name || '');
  881. _op.set.text = data.name || '';
  882. data.id = _op.key;
  883. _op.change && _op.change(data);
  884. $('#' + _op.set.id).trigger('change');
  885. }
  886. });
  887. };
  888. $.fn.lrselectUpdate = function (op) {
  889. var $this = $(this);
  890. if ($this.length === 0) {
  891. return $this;
  892. }
  893. $.extend($this[0].dfop, op || {});
  894. $this[0].dfop.value = '';
  895. $this[0].dfop.text = '';
  896. $this.find('.text').text($this[0].dfop.placeholder);
  897. $this = null;
  898. };
  899. // 弹层选择框(数据字典和数据源)
  900. $.fn.layerSelect = function (op) {
  901. var $this = $(this);
  902. if ($this.length === 0) {
  903. return $this;
  904. }
  905. var dfop = {
  906. placeholder: '请选择',
  907. type: 'dataItem',// sourceData
  908. layerData: [],
  909. callback: false
  910. };
  911. $.extend(dfop, op || {});
  912. $this.attr('type', 'lrlayerSelect');
  913. $this.addClass('lr-layerSelect');
  914. $this.html('<div class="text">' + dfop.placeholder + '</div>');
  915. dfop.id = $this.attr('id');
  916. $this[0].dfop = dfop;
  917. $this.on('tap', function () {
  918. var $this = $(this);
  919. if ($this.attr('readonly') || $this.parents('.lr-form-row').attr('readonly')) {
  920. return false;
  921. }
  922. learun.formblur();
  923. var op = $this[0].dfop;
  924. learun.nav.go({
  925. path: 'lrselect/layer', title: op.placeholder, type: 'right', param: {
  926. callback: function (data, _op, _$this) {
  927. _op.callback && _op.callback(data, _op.layerData, _$this);
  928. _$this = null;
  929. },
  930. op: op,
  931. $this: $this
  932. }
  933. });
  934. $this = null;
  935. return false;
  936. });
  937. return $this;
  938. };
  939. $.fn.layerSelectSet = function (value) {
  940. var $this = $(this);
  941. var op = $(this)[0].dfop;
  942. if (value) {
  943. $this.find('.text').text(value);
  944. op.value = value;
  945. }
  946. else {
  947. op.value = '';
  948. $(this).find('.text').text(op.placeholder);
  949. }
  950. };
  951. $.fn.layerSelectGet = function () {
  952. return $(this)[0].dfop.value;
  953. };
  954. /*多选框方法扩展*/
  955. $.fn.lrcheckboxex = function (op) {
  956. var $this = $(this);
  957. if ($this.length === 0) {
  958. return $this;
  959. }
  960. if (!op.data) {
  961. op.data = [];
  962. switch (op.type) {
  963. case 'dataItem':
  964. $this.lrcheckbox(op);
  965. learun.clientdata.getAll('dataItem', {
  966. code: op.code,
  967. callback: function (data) {
  968. var _tmpdata = [];
  969. $.each(data, function (_index, _item) {
  970. _tmpdata.push({ value: _item.value, text: _item.text });
  971. });
  972. $this.lrcheckboxSetData(_tmpdata);
  973. }
  974. });
  975. break;
  976. case 'sourceData':
  977. $this.lrcheckbox(op);
  978. learun.clientdata('sourceData', {
  979. code: op.code,
  980. callback: function (data) {
  981. $this.lrcheckboxSetData(data);
  982. }
  983. });
  984. break;
  985. default:
  986. $this.lrcheckbox(op);
  987. if (op.url) {// 如果有连接地址
  988. learun.clientdata('custmerData', {
  989. url: op.url,
  990. callback: function (data) {
  991. $this.lrcheckboxSetData(data);
  992. }
  993. });
  994. }
  995. break;
  996. }
  997. } else {
  998. $this.lrcheckbox(op);
  999. }
  1000. return $this;
  1001. };
  1002. /*编辑表格方法扩展*/
  1003. function setGridRowValue($block, id, type, value) {// 设置编辑表格每个块的值
  1004. switch (type) {
  1005. case 'label':
  1006. case 'input':
  1007. $block.find('#' + id).val(value);
  1008. break;
  1009. case 'radio':
  1010. case 'select':
  1011. $block.find('#' + id).lrpickerSet(value);
  1012. break;
  1013. case 'picker':
  1014. $block.find('#' + id).lrpickerSet(value);
  1015. break;
  1016. case 'checkbox':
  1017. $block.find('#' + id).lrcheckboxSet(value);
  1018. break;
  1019. case 'layer':
  1020. $block.find('#' + id).layerSelectSet(value);
  1021. break;
  1022. case 'datetime':
  1023. $block.find('#' + id).lrdateSet(value);
  1024. break;
  1025. }
  1026. $block = null;
  1027. }
  1028. function getGridRowValue($block, id, type) {// 设置编辑表格每个块的值
  1029. var v = '';
  1030. switch (type) {
  1031. case 'label':
  1032. case 'input':
  1033. v = $block.find('#' + id).val();
  1034. break;
  1035. case 'radio':
  1036. case 'select':
  1037. v = $block.find('#' + id).lrpickerGet();
  1038. if (v == 'undefined') { v = 0 }
  1039. break;
  1040. case 'picker':
  1041. v = $block.find('#' + id).lrpickerGet();
  1042. break;
  1043. case 'checkbox':
  1044. v = $block.find('#' + id).lrcheckboxGet();
  1045. break;
  1046. case 'layer':
  1047. v = $block.find('#' + id).layerSelectGet();
  1048. break;
  1049. case 'datetime':
  1050. v = $block.find('#' + id).lrdateGet();
  1051. break;
  1052. }
  1053. $block = null;
  1054. return v;
  1055. }
  1056. function addGridRow($this, op) {
  1057. // 添加编辑集合块
  1058. var $html = $('<div class="lr-edit-grid-block" ></div>');
  1059. if (op.hasBtn) {
  1060. $this.find('.lr-edit-grid-btn').before($html);
  1061. }
  1062. else {
  1063. $this.append($html);
  1064. }
  1065. // 添加标题栏
  1066. var $title = $('<div class="lr-edit-grid-title" >' + op.title + '(<span>' + op._index + '</span>)</div>');
  1067. if (op._index > 1) {
  1068. $title.append('<div class="lr-edit-grid-deletebtn" data-value="' + op._index + '">删除</div>');
  1069. }
  1070. $html.html($title);
  1071. var _compontHtml = '';
  1072. op.compontsMap = op.compontsMap || {};
  1073. // 编辑表格-组件初始化
  1074. $.each(op.componts, function (_index, _item) {
  1075. if (op._index === 1) {
  1076. op.compontsMap[_item.field] = _item;
  1077. }
  1078. switch (_item.type) {
  1079. case 'label':
  1080. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><input type="text" readonly id="' + _item.field + '" ></div>';
  1081. $html.append(_compontHtml);
  1082. break;
  1083. case 'input':
  1084. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><input type="text" id="' + _item.field + '" ></div>';
  1085. $html.append(_compontHtml);
  1086. // 值改变
  1087. if (_item.change) {
  1088. $html.find('#' + _item.field).on('input propertychange', { change: _item.change }, function (e) {
  1089. e = e || window.event;
  1090. var _change = e.data.change;
  1091. var $this = $(this);
  1092. var _$block = $this.parents('.lr-edit-grid-block');
  1093. var v = $this.val();
  1094. _change(v, _$block);
  1095. $this = null;
  1096. _$block = null;
  1097. });
  1098. }
  1099. break;
  1100. case 'radio':
  1101. case 'select':
  1102. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1103. $html.append(_compontHtml);
  1104. $html.find('#' + _item.field).lrpickerex({
  1105. code: _item.code,
  1106. type: _item.datatype,
  1107. ivalue: _item.ivalue,
  1108. itext: _item.itext,
  1109. data: _item.data,
  1110. url: _item.url,
  1111. change: function (value, text, datalist, $self) {
  1112. var _$block = $self.parents('.lr-edit-grid-block');
  1113. _item.change && _item.change(value, text, datalist, _$block);
  1114. $self = null;
  1115. _$block = null;
  1116. }
  1117. });
  1118. break;
  1119. case 'picker':
  1120. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1121. $html.append(_compontHtml);
  1122. $html.find('#' + _item.field).lrpicker({
  1123. placeholder: _item.placeholder,
  1124. data: _item.data,
  1125. level: _item.level
  1126. });
  1127. break;
  1128. case 'checkbox':
  1129. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1130. $html.append(_compontHtml);
  1131. $html.find('#' + _item.field).lrcheckboxex({
  1132. code: _item.code,
  1133. type: _item.datatype,
  1134. ivalue: _item.ivalue,
  1135. itext: _item.itext,
  1136. data: _item.data,
  1137. url: _item.url,
  1138. change: function (value, text, datalist, $self) {
  1139. var _$block = $self.parents('.lr-edit-grid-block');
  1140. _item.change && _item.change(value, text, datalist, _$block);
  1141. $self = null;
  1142. _$block = null;
  1143. }
  1144. });
  1145. break;
  1146. case 'layer':
  1147. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1148. $html.append(_compontHtml);
  1149. $html.find('#' + _item.field).layerSelect({
  1150. code: _item.code,
  1151. type: _item.datatype,
  1152. layerData: _item.layerData,
  1153. callback: function (data, layerData, _$this) {
  1154. var $block = _$this.parents('.lr-edit-grid-block');
  1155. $.each(layerData, function (_jindex, _jitem) {
  1156. setGridRowValue($block, _jitem.value, op.compontsMap[_jitem.value].type, data[_jitem.name]);
  1157. });
  1158. _item.change && _item.change(data, $block);
  1159. $block = null;
  1160. _$this = null;
  1161. }
  1162. });
  1163. break;
  1164. case 'datetime':
  1165. _compontHtml = '<div class="lr-edit-grid-row" ><label>' + _item.name + '</label><div id="' + _item.field + '" ></div></div>';
  1166. $html.append(_compontHtml);
  1167. $html.find('#' + _item.field).lrdate({
  1168. type: _item.datetime === 'date' ? 'date' : 'datetime',
  1169. change: function (v, _$this) {
  1170. var $block = _$this.parents('.lr-edit-grid-block');
  1171. _item.change && _item.change(v, $block);
  1172. $block = null;
  1173. _$this = null;
  1174. }
  1175. });
  1176. break;
  1177. default:
  1178. break;
  1179. }
  1180. });
  1181. $title = null;
  1182. $this = null;
  1183. return $html;
  1184. }
  1185. $.fn.lrgrid = function (op) {
  1186. var $this = $(this);
  1187. if ($this.length === 0) {
  1188. return $this;
  1189. }
  1190. if ($this[0].dfop) {
  1191. return $this;
  1192. }
  1193. var dfop = {
  1194. title: '编辑表格',
  1195. componts: [],
  1196. hasBtn: true,
  1197. _index: 1
  1198. };
  1199. $.extend(dfop, op || {});
  1200. $this[0].dfop = dfop;
  1201. $this.addClass('lr-edit-gird');
  1202. if (dfop.hasBtn) {
  1203. // 添加增加按钮
  1204. var $btn = $('<div class="lr-edit-grid-btn" ><i class="iconfont icon-add1" ></i>增加' + (dfop.title || '') + '</div>');
  1205. $btn.on('tap', { op: dfop }, function (e) {// 添加一块编辑集合
  1206. e = e || window.event;
  1207. var _op = e.data.op;
  1208. var $grid = $(this).parents('.lr-edit-gird');
  1209. _op._index++;// 增加块数
  1210. learun.formblur();
  1211. addGridRow($grid, _op);
  1212. });
  1213. $this.html($btn);
  1214. // 注册删除按钮事件
  1215. $this.delegate('.lr-edit-grid-deletebtn', 'tap', { op: dfop }, function (e) {
  1216. e = e || window.event;
  1217. var _op = e.data.op;
  1218. var $my = $(this);
  1219. var myIndex = $my.attr('data-value');
  1220. learun.formblur();
  1221. learun.layer.confirm('你确定要删除' + _op.title + myIndex + '吗?', function (isOk) {
  1222. if (isOk === '1') {
  1223. _op._index--;// 减少块数
  1224. // 排在后面的块需要重新调整序号
  1225. $my.parents('.lr-edit-gird').find('.lr-edit-grid-block:gt(' + (parseInt(myIndex) - 1) + ')').each(function () {
  1226. var $this = $(this);
  1227. var $deletebtn = $this.find('.lr-edit-grid-deletebtn');
  1228. var _index = parseInt($deletebtn.attr('data-value')) - 1;
  1229. $deletebtn.attr('data-value', _index);
  1230. $this.find('.lr-edit-grid-title span').text(_index);
  1231. $deletebtn = null;
  1232. $this = null;
  1233. });
  1234. // 移除绑定在自己身上的弹层,选择框,单选框,多选框,日期
  1235. var $block = $my.parents('.lr-edit-grid-block');
  1236. $block.find('.lr-date,.lr-picker,.lr-checkbox').each(function () {
  1237. var $this = $(this);
  1238. var _op = $this[0].fop;
  1239. $('#pop_' + _op.id).remove();
  1240. $('#dt_' + _op.id).remove();
  1241. });
  1242. // 移除自己
  1243. $block.remove();
  1244. $block = null;
  1245. }
  1246. $my = null;
  1247. }, '', ['取消', '确定']);
  1248. });
  1249. }
  1250. addGridRow($this, dfop);
  1251. return $this;
  1252. };
  1253. $.fn.lrgridSet = function (data) {
  1254. var $this = $(this);
  1255. var op = $this[0].dfop;
  1256. $.each(data, function (_index, _item) {
  1257. if (_index === 0) {
  1258. // 如果是第一行数据
  1259. $.each(op.componts, function (_jindex, jitem) {
  1260. var _id = jitem.field;
  1261. if (op.isToLowerCase) {
  1262. _id = _id.toLowerCase();
  1263. }
  1264. setGridRowValue($this.find('.lr-edit-grid-block'), jitem.field, jitem.type, _item[_id]);
  1265. });
  1266. } else {
  1267. // 如果不是第一行数据就先添加一行
  1268. op._index++;// 增加块数
  1269. var $block = addGridRow($this, op);
  1270. $.each(op.componts, function (_jindex, jitem) {
  1271. var _id = jitem.field;
  1272. if (op.isToLowerCase) {
  1273. _id = _id.toLowerCase();
  1274. }
  1275. setGridRowValue($block, jitem.field, jitem.type, _item[_id]);
  1276. });
  1277. }
  1278. });
  1279. $this = null;
  1280. };
  1281. $.fn.lrgridGet = function () {
  1282. var $this = $(this);
  1283. var op = $this[0].dfop;
  1284. var data = [];
  1285. $this.find('.lr-edit-grid-block').each(function () {
  1286. var $block = $(this);
  1287. var point = {};
  1288. $.each(op.componts, function (_jindex, jitem) {
  1289. point[jitem.field] = getGridRowValue($block, jitem.field, jitem.type);
  1290. });
  1291. data.push(point);
  1292. });
  1293. $this = null;
  1294. return data;
  1295. };
  1296. // 设置表单组件为只读
  1297. $.fn.setFormRead = function () {
  1298. $(this).find('.lr-form-row').each(function () {
  1299. $(this).attr('readonly', 'readonly');
  1300. });
  1301. }
  1302. $.fn.setFormWrite = function () {
  1303. $(this).find('.lr-form-row').each(function () {
  1304. $(this).removeAttr('readonly');
  1305. });
  1306. }
  1307. // 数据格式化
  1308. $.fn.dataFormatter = function (op) {
  1309. var $this = $(this);
  1310. var _v = '';
  1311. if (op.value === null || op.value === undefined || op.value === 'null' || op.value === 'undefined') {
  1312. op.value = '';
  1313. }
  1314. op.value = op.value + '';
  1315. switch (op.type) {
  1316. case 'datetime':
  1317. $this.append(learun.date.format(op.value, op.dateformat));
  1318. break;
  1319. case 'dataItem':
  1320. _v = op.value.split(',');
  1321. $.each(_v || [], function (_index, _item) {
  1322. if (_item) {
  1323. learun.clientdata.get('dataItem', {
  1324. key: _item,
  1325. code: op.code,
  1326. $this: $this,
  1327. callback: function (_data, _op) {
  1328. _op.$this.append(_data.text);
  1329. }
  1330. });
  1331. }
  1332. });
  1333. break;
  1334. case 'dataSource':
  1335. _v = op.value.split(',');
  1336. $.each(_v || [], function (_index, _item) {
  1337. if (_item) {
  1338. learun.clientdata.get('sourceData', {
  1339. key: _item,
  1340. keyId: op.keyId,
  1341. code: op.code,
  1342. set: op,
  1343. $this: $this,
  1344. callback: function (_data, _op) {
  1345. _op.$this.append(_data[_op.set.text]);
  1346. }
  1347. });
  1348. }
  1349. });
  1350. break;
  1351. case 'dataCustmer':
  1352. _v = op.value.split(',');
  1353. $.each(_v || [], function (_index, _item) {
  1354. if (_item) {
  1355. learun.clientdata.get('custmerData', {
  1356. key: _item,
  1357. keyId: op.keyId,
  1358. url: op.url,
  1359. set: op,
  1360. $this: $this,
  1361. callback: function (_data, _op) {
  1362. _op.$this.append(_data[_op.set.text]);
  1363. }
  1364. });
  1365. }
  1366. });
  1367. break;
  1368. case 'organize':
  1369. learun.clientdata.get(op.dataType, {
  1370. key: op.value,
  1371. $this: $this,
  1372. callback: function (_data, _op) {
  1373. _op.$this.append(_data.name);
  1374. }
  1375. });
  1376. break;
  1377. default:
  1378. $this.append(op.value);
  1379. break;
  1380. }
  1381. return $this;
  1382. }
  1383. // 图片选择,上传,下载
  1384. $.fn.lrImagepicker = function (op) {
  1385. var dfop = {
  1386. maxCount: 9,
  1387. isOnlyCamera: false,
  1388. uploadUrl: config.webapi + 'learun/adms/annexes/upload',
  1389. downUrl: config.webapi + 'learun/adms/annexes/down?data=',
  1390. getParams: function () {
  1391. var param = {};
  1392. var logininfo = learun.storage.get('logininfo');
  1393. param.token = logininfo.token;
  1394. param.loginMark = learun.deviceId();
  1395. return param;
  1396. },
  1397. deleteImg: function (fileId) {
  1398. learun.httppost(config.webapi + 'learun/adms/annexes/delete', fileId, function () { });
  1399. },
  1400. downFile: function (value, callback) {
  1401. learun.httpget(config.webapi + 'learun/adms/annexes/list', value, function (data) {
  1402. if (data) {
  1403. var _data = [];
  1404. $.each(data, function (_index, _item) {
  1405. if (_item.F_FileType === 'jpg' || _item.F_FileType === 'png') {
  1406. var _point = {
  1407. id: _item.F_Id,
  1408. name: _item.F_Id + '.' + _item.F_FileType
  1409. };
  1410. _data.push(_point);
  1411. }
  1412. });
  1413. callback(_data);
  1414. }
  1415. });
  1416. }
  1417. };
  1418. $.extend(dfop, op || {});
  1419. return $(this).imagepicker(dfop);
  1420. }
  1421. })(window.jQuery, window.lrmui);