Sin descripción

huayi.http.js 42KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431
  1. var helper = {};
  2. helper.http = {
  3. newXMLHttp: function() {
  4. var XMLHttp = null;
  5. if(window.XMLHttpRequest) {
  6. XMLHttp = new XMLHttpRequest();
  7. }
  8. if(XMLHttp == null && window.ActiveXObject) {
  9. var clsids = ["MSXML2.XMLHttp.7.0", "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp.2.0", "MSXML2.XMLHttp.1.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
  10. for(var i = 0; i < clsids.length && XMLHttp == null; i++) {
  11. try {
  12. XMLHttp = new ActiveXObject(clsids[i]);
  13. } catch(e) {}
  14. }
  15. }
  16. return XMLHttp;
  17. },
  18. get: function(URL, func) {
  19. try {
  20. var XMLHttp = this.newXMLHttp();
  21. if(typeof(func) != "function") {
  22. XMLHttp.open("GET", URL, false);
  23. XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  24. XMLHttp.send(null);
  25. var result = XMLHttp.status;
  26. var responseText = XMLHttp.responseText;
  27. if(result == 200) {
  28. return responseText;
  29. } else {
  30. return result;
  31. }
  32. } else {
  33. XMLHttp.onreadystatechange = function() {
  34. if(XMLHttp.readyState == 4) {
  35. if(XMLHttp.status == 200) {
  36. var responseText = XMLHttp.responseText;
  37. func(responseText);
  38. } else {
  39. func(false);
  40. }
  41. }
  42. };
  43. XMLHttp.open("GET", URL, true);
  44. XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  45. XMLHttp.send(null);
  46. }
  47. } catch(e) {}
  48. },
  49. post: function(URL, data, func) {
  50. try {
  51. var XMLHttp = this.newXMLHttp();
  52. if(typeof(func) != "function") {
  53. XMLHttp.open("POST", URL, false);
  54. XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
  55. XMLHttp.send(data);
  56. var result = XMLHttp.status;
  57. var responseText = XMLHttp.responseText;
  58. if(result == 200) {
  59. return responseText;
  60. } else {
  61. return false;
  62. }
  63. } else {
  64. XMLHttp.onreadystatechange = function() {
  65. if(XMLHttp.readyState == 4) {
  66. if(XMLHttp.status == 200) {
  67. var responseText = XMLHttp.responseText;
  68. func(responseText);
  69. } else {
  70. func(false);
  71. }
  72. }
  73. };
  74. XMLHttp.open("POST", URL, true);
  75. XMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
  76. XMLHttp.send(data);
  77. }
  78. } catch(e) {}
  79. }
  80. };
  81. helper.cookies = {
  82. del: function(name) {
  83. var exp = new Date();
  84. exp.setTime(exp.getTime() - 1);
  85. var cval = helper.cookies.get(name);
  86. if(cval != null)
  87. document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
  88. },
  89. set: function(name, value, remember) {
  90. if(remember == true) {
  91. var Days = 30;
  92. var exp = new Date();
  93. exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  94. document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
  95. } else {
  96. document.cookie = name + "=" + escape(value) + ";path=/";
  97. }
  98. },
  99. setday: function(name, value, remember) {
  100. var Days = remember;
  101. var exp = new Date();
  102. exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  103. document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
  104. },
  105. setdomain: function(name, value, remember) {
  106. var domain = window.location.host.split(".");
  107. if(remember == true) {
  108. var Days = 30;
  109. var exp = new Date();
  110. exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  111. document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=." + domain[domain.length - 2] + "." + domain[domain.length - 1];
  112. } else {
  113. document.cookie = name + "=" + escape(value) + ";path=/" + ";domain=." + domain[1] + "." + domain[2];
  114. }
  115. },
  116. get: function(name) {
  117. var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  118. if(arr = document.cookie.match(reg)) {
  119. return unescape(arr[2]);
  120. } else {
  121. return '';
  122. }
  123. }
  124. };
  125. /*
  126. 获取URL中指定的参数
  127. 例如:
  128. URL:test.com/test.aspx?test=t
  129. var t=help.request.queryString("test");
  130. 得到t
  131. */
  132. helper.request = {
  133. queryString: function(item) {
  134. locationSearch = "";
  135. var tmpLocationArr = location.href.split("?");
  136. if(tmpLocationArr.length > 1) locationSearch = "?" + tmpLocationArr[1];
  137. var svalue = locationSearch.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
  138. var Qvalue = svalue ? svalue[1] : svalue;
  139. if(Qvalue == null) {
  140. return "";
  141. } else {
  142. return Qvalue.trim();
  143. }
  144. },
  145. queryurl: function(url, item) {
  146. locationSearch = "";
  147. var tmpLocationArr = url.split("?");
  148. if(tmpLocationArr.length > 1) locationSearch = "?" + tmpLocationArr[1];
  149. var svalue = locationSearch.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
  150. var Qvalue = svalue ? svalue[1] : svalue;
  151. if(Qvalue == null) {
  152. return "";
  153. } else {
  154. return Qvalue.trim();
  155. }
  156. }
  157. };
  158. helper.pager = {
  159. //分页
  160. PageList1: function(strFunName) {
  161. /***总页数***/
  162. var intPageCount = parseInt((parseInt(intRecordCount) + parseInt(intPageSize) - 1) / parseInt(intPageSize));
  163. if(intPageCount <= 1) {
  164. return "";
  165. }
  166. /***页码距***/
  167. var intPageCurrent = 10;
  168. /***起始页码***/
  169. var intStartPage = (parseInt((parseInt(intPageIndex) + intPageCurrent - 1) / intPageCurrent) - 1) * intPageCurrent + 1;
  170. /***结束页码***/
  171. var intEndPage = intStartPage + intPageCurrent - 1;
  172. if(intPageIndex % intPageCurrent == 0) {
  173. intStartPage++;
  174. intEndPage++;
  175. }
  176. if(intPageIndex % intPageCurrent - 1 == 0 && intPageIndex != 1) {
  177. intStartPage--;
  178. intEndPage--;
  179. }
  180. if(intEndPage >= intPageCount) {
  181. intEndPage = intPageCount;
  182. }
  183. /***上一页,下一页***/
  184. var intUpPage = parseInt(intPageIndex) - 1;
  185. var intDownPage = parseInt(intPageIndex) + 1;
  186. var strUpPage = "<a href=\"#\" onclick=\"" + strFunName + "(" + intUpPage + ")\" >上一页</a>";
  187. var strDownPage = "<a href=\"#\" onclick=\"" + strFunName + "(" + intDownPage + ")\">下一页</a>";
  188. if(intUpPage < 1) {
  189. //intUpPage = 1;
  190. strUpPage = "";
  191. }
  192. if(intPageIndex >= intPageCount) {
  193. //intDownPage = intPageCount;
  194. strDownPage = "";
  195. }
  196. /***生成页码列表***/
  197. var strPageList = strUpPage;
  198. for(var i = intStartPage; i <= intEndPage; i++) {
  199. if(intPageIndex == i) {
  200. /***当前页码***/
  201. strPageList += "<a style=\"background-image:url(../images/bg/menublue22.jpg); background-position:bottom; background-repeat:repeat-x; padding:1px 6px;border-radius: 4px 4px 4px 4px; margin-right:3px; border:1px solid #aeb2b1;\" >" + i + "</a>";
  202. } else {
  203. strPageList += "<a href=\"#\" onclick=\"" + strFunName + "(" + i + ");\">" + i + "</a>";
  204. }
  205. }
  206. strPageList += strDownPage;
  207. //直接跳转
  208. strPageList += "总页数:" + intPageCount + "&nbsp;&nbsp;/&nbsp;&nbsp;";
  209. strPageList += "<input type=\"text\" onkeyup=\"this.value=this.value.replace(/\\D/g,'')\" id=\"tb_index\" />";
  210. strPageList += "&nbsp;&nbsp;<a style=\"cursor:pointer;\" onclick=\"javascript:helper.pager.checkPageValue()\">跳转</a>";
  211. return strPageList;
  212. },
  213. checkPageValue: function() {
  214. var intPageIndexNext = document.getElementById('tb_index').value;
  215. if(parseInt(intPageIndexNext) == 0) {
  216. document.getElementById('tb_index').value = "1";
  217. $.jBox.alert('输入页面不能为0', '提示');
  218. return;
  219. }
  220. if(intPageIndexNext == "") {
  221. document.getElementById('tb_index').value = "1";
  222. $.jBox.alert('输入页面不能为空', '提示');
  223. return;
  224. }
  225. if(intPageIndexNext.length != 0) {
  226. var intPageCount = parseInt((parseInt(intRecordCount) + parseInt(intPageSize) - 1) / parseInt(intPageSize));
  227. if(intPageIndexNext <= intPageCount) {
  228. intPageIndex = intPageIndexNext;
  229. loadlist();
  230. } else {
  231. document.getElementById('tb_index').value = intPageCount;
  232. $.jBox.alert('输入页面不能大于总页数', '提示');
  233. }
  234. } else {
  235. document.getElementById('tb_index').value = "1";
  236. }
  237. },
  238. loadJS: function(url) {
  239. var domScript = document.createElement('script');
  240. domScript.type = "text/javascript";
  241. domScript.src = url;
  242. domScript.onload = domScript.onreadystatechange = function() {
  243. if(!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
  244. this.onload = this.onreadystatechange = null;
  245. this.parentNode.removeChild(this);
  246. }
  247. };
  248. document.getElementsByTagName('head')[0].appendChild(domScript);
  249. }
  250. };
  251. helper.masklayer = {
  252. layer: null,
  253. showcount: 0,
  254. show: function() {
  255. this.layer = document.getElementById("masklayer");
  256. if(!this.layer) {
  257. this.layer = document.createElement("div");
  258. this.layer.id = "masklayer";
  259. this.layer.className = "masklayer";
  260. /*this.layer.style.position = "absolute";
  261. this.layer.style.top = "0";
  262. this.layer.style.left = "0";
  263. this.layer.style.zIndex = 1000;
  264. var width = Math.max(
  265. Math.max(document.body.clientWidth, document.documentElement.clientWidth),
  266. Math.max(document.body.scrollWidth, document.documentElement.scrollWidth)
  267. );
  268. var height = Math.max(
  269. Math.max(document.body.clientHeight, document.documentElement.clientHeight),
  270. Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
  271. );
  272. this.layer.style.width = width + "px";
  273. this.layer.style.height = height + "px";*/
  274. this.layer.innerHTML = "<iframe src='/blank.html' style='width:100%;height:100%;background-color:#fff;" +
  275. "filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;" +
  276. "position:absolute;z-index:999;top:0;left:0;' frameborder='0'></iframe>" +
  277. "<div style='width:100%;height:100%;position:absolute;top:0;left:0;z-index:1000;background:#000;" +
  278. "filter:alpha(opacity=20);-moz-opacity:0.2;-khtml-opacity: 0.2;opacity: 0.2;'></div>";
  279. document.body.appendChild(this.layer);
  280. }
  281. this.showcount++;
  282. },
  283. hide: function() {
  284. if(--this.showcount == 0) {
  285. if(this.layer && this.layer.parentNode) {
  286. this.layer.parentNode.removeChild(this.layer);
  287. }
  288. }
  289. },
  290. moveToCenter: function(e, x, y) {
  291. if(e.style.display == "none") e.style.display = "";
  292. var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  293. var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
  294. if(x > 0) {
  295. x += scrollLeft;
  296. } else x = parseInt((document.documentElement.clientWidth - e.clientWidth) / 2) + scrollLeft;
  297. if(y > 0) {
  298. y += scrollTop;
  299. } else y = parseInt((document.documentElement.clientHeight - e.clientHeight) / 2) + scrollTop;
  300. x = x < 0 ? 0 : x;
  301. y = y < 50 ? 50 : y;
  302. e.style.left = x + "px";
  303. e.style.top = y + "px";
  304. }
  305. };
  306. helper.filter = {
  307. Transcoding: function(content) {
  308. content = content.replace(/∞L/g, "<");
  309. content = content.replace(/∞R/g, ">");
  310. content = content.replace(/∞∴/g, "'");
  311. content = content.replace(/∞≡/g, "#");
  312. content = content.replace(/∞※/g, "\"");
  313. return content;
  314. },
  315. delHtmlTag: function(str) { //匹配html标签中的内容
  316. return str.replace(/<[^>]+>/g, "");
  317. },
  318. //原样式输出内容
  319. content: function(content) {
  320. if(content === "null" || content === "undefined" || content === null || content === undefined || content == "") {
  321. content = "暂无内容。。。";
  322. } else {
  323. content = content.replace(/[ ]/g, "&nbsp;").replace(/\ +/g, "&nbsp;").replace(/\r\n/g, "<br />").replace(/\n/g, "<br />");
  324. }
  325. return content;
  326. },
  327. };
  328. function str2asc(strstr) {
  329. return("0" + strstr.charCodeAt(0).toString(16)).slice(-2);
  330. }
  331. helper.url = {
  332. getpara: function(name) {
  333. var val;
  334. paras = window.location.search;
  335. paras = paras.substr(1);
  336. paraarray = paras.split("&");
  337. for(i = 0; i < paraarray.length; i++) {
  338. temp = paraarray[i].split("=");
  339. if(temp[0] == name) {
  340. val = temp[1];
  341. break;
  342. }
  343. }
  344. if(val == null || val == "") {
  345. return "";
  346. } else {
  347. return val;
  348. }
  349. }
  350. };
  351. helper.sys = {
  352. getElementsByClassName: function(pnode, className) {
  353. var nodes = pnode.getElementsByTagName('*');
  354. var elements = new Array();
  355. for(var i = 0; i < nodes.length; i++) {
  356. if(nodes[i].className == className) {
  357. elements[elements.length] = nodes[i];
  358. }
  359. }
  360. return elements;
  361. },
  362. removeElement: function(element) {
  363. if(element && element.parentNode) {
  364. element.parentNode.removeChild(element);
  365. return true;
  366. } else {
  367. return false;
  368. }
  369. },
  370. Return: function(url) {
  371. top.location.href = url;
  372. }
  373. };
  374. helper.getDropList = {
  375. //获取字典下拉
  376. getlistDropByDic: function(el, fg, isasync) {
  377. if(isasync != false) {
  378. isasync = true;
  379. }
  380. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  381. $.ajax({
  382. type: "get",
  383. url: huayi.config.callcenter_url + "configurationapi/api/dictionary/getdicvaluelistdrop",
  384. dataType: 'json',
  385. async: isasync,
  386. data: {
  387. code: fg,
  388. },
  389. success: function(data) {
  390. var res = data.data;
  391. for(var i = 0; i < res.length; i++) {
  392. $('<option value=' + res[i].id + '>' + res[i].name + '</option>').appendTo(el);
  393. }
  394. el.selectpicker('refresh');
  395. dtd.resolve(); // 改变Deferred对象的执行状态
  396. }
  397. });
  398. return dtd.promise(); // 返回promise对象
  399. },
  400. /**
  401. * 根据字典 获取 动态radio
  402. * el 元素 fg 元素值 ran radio的name
  403. * */
  404. getlistDropRadioByDic: function(el, fg, ran) {
  405. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  406. $.ajax({
  407. type: "get",
  408. url: huayi.config.callcenter_url + "configurationapi/api/dictionary/getdicvaluelistdrop",
  409. dataType: 'json',
  410. async: true,
  411. data: {
  412. code: fg,
  413. },
  414. success: function(data) {
  415. if(data.state.toLowerCase() === 'success') {
  416. var res = data.data;
  417. for(var i = 0; i < res.length; i++) {
  418. $('<label class="radio-inline">' +
  419. '<input type="radio" name="' + ran + '" value="' + res[i].id + '">' + res[i].name +
  420. '</label>').appendTo(el);
  421. }
  422. $(el).find('input[type="radio"]').eq(0).attr('checked', true);
  423. dtd.resolve(); // 改变Deferred对象的执行状态
  424. }
  425. }
  426. });
  427. return dtd.promise(); // 返回promise对象
  428. },
  429. //获取字典(用于checkbox)
  430. getlistDropCheckboxByDic: function(el, fg, isasync) {
  431. if(isasync != false) {
  432. isasync = true;
  433. }
  434. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  435. $.ajax({
  436. type: "get",
  437. url: huayi.config.callcenter_url + "configurationapi/api/dictionary/getdicvaluelistdrop",
  438. dataType: 'json',
  439. async: isasync,
  440. data: {
  441. code: fg,
  442. },
  443. success: function(data) {
  444. var res = data.data;
  445. for(var i = 0; i < res.length; i++) {
  446. var h = '<label class="checkbox-inline">' +
  447. '<input type="checkbox" data-text="' + res[i].name + '" value="' + res[i].id + '" >' + res[i].name +
  448. '</label>';
  449. $(h).appendTo(el);
  450. }
  451. dtd.resolve(); // 改变Deferred对象的执行状态
  452. }
  453. });
  454. return dtd.promise(); // 返回promise对象
  455. },
  456. /**
  457. * 获取项目下拉
  458. * @el 元素
  459. * @tips 第一条option信息
  460. */
  461. getProlistDrop: function(el, tips) {
  462. tips = tips ? tips : '请选择项目';
  463. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  464. $.ajax({
  465. type: "get",
  466. url: huayi.config.callcenter_url + "equipmentapi/api/ProjectInfo/getlistdrop",
  467. dataType: 'json',
  468. async: true,
  469. data: {},
  470. success: function(data) {
  471. el.empty();
  472. if(el.attr('id') === 'projectid') {
  473. el.append("<option value='' disabled>"+ tips +"</option>");
  474. } else {
  475. el.append("<option value=''>"+ tips +"</option>");
  476. }
  477. var res = data.data;
  478. if(res){
  479. for(var i = 0; i < res.length; i++) {
  480. $('<option value=' + res[i].id + '>' + res[i].text + '</option>').appendTo(el);
  481. }
  482. el.selectpicker('refresh');
  483. }
  484. dtd.resolve(); // 改变Deferred对象的执行状态
  485. }
  486. });
  487. return dtd.promise(); // 返回promise对象
  488. },
  489. //省市二级联动
  490. getProLocation: function(obj, obj1) {
  491. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  492. obj.empty();
  493. obj1.empty();
  494. obj.append('<option selected="selected" value="">请选择所在省</option>');
  495. obj1.append('<option selected="selected" value="">请选择所在市</option>');
  496. $.ajax({
  497. type: "get",
  498. url: huayi.config.callcenter_url + "configurationapi/api/provincesaddress/getaddressjson",
  499. dataType: 'json',
  500. //async: false,
  501. success: function(data) {
  502. var content = data.data; //省信息
  503. var cityInfos = []; //市信息
  504. //初始化省
  505. $(content).each(function(i, n) {
  506. if(n.parentcode === null) {
  507. $("<option value='" + n.code + "'>" + n.name + "</option>").appendTo(obj);
  508. }
  509. if(n.entityJson != null) {
  510. cityInfos.push(n.entityJson);
  511. }
  512. });
  513. obj.selectpicker('refresh');
  514. //市
  515. obj.change(function() {
  516. obj1.empty();
  517. for(var i = 0; i < cityInfos.length; i++) {
  518. $(cityInfos[i]).each(function(j, v) {
  519. if(v.parentcode > 0) {
  520. if(obj.find("option:selected").val() == v.parentcode) {
  521. $("<option value='" + v.code + "'>" + v.name + "</option>").appendTo(obj1);
  522. }
  523. }
  524. });
  525. }
  526. if(obj.find("option:selected").val() == '') {
  527. obj1.append('<option selected="selected" value="">请选择所在市</option>');
  528. }
  529. if(obj1.val() == null) {
  530. obj1.append('<option selected="selected" value="">没有数据</option>');
  531. }
  532. obj1.selectpicker('refresh');
  533. });
  534. dtd.resolve(); // 改变Deferred对象的执行状态
  535. },
  536. });
  537. return dtd.promise(); // 返回promise对象
  538. },
  539. /**
  540. * 获取楼宇下拉
  541. * @el 元素
  542. * @proid 项目id
  543. */
  544. getBuildlistDrop: function(el, proid) {
  545. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  546. $.ajax({
  547. type: "get",
  548. url: huayi.config.callcenter_url + "configurationapi/api/FloorManage/getbuildlistdrop",
  549. dataType: 'json',
  550. async: true,
  551. data: {
  552. projectid: proid, //否 string 项目id
  553. },
  554. success: function(data) {
  555. if(data.state.toLowerCase() === 'success'){
  556. el.empty();
  557. el.append("<option value=''>请选择楼宇</option>");
  558. var res = data.data;
  559. if(res && res.length > 0){
  560. for(var i = 0; i < res.length; i++) {
  561. $('<option value=' + res[i].id + '>' + res[i].buildname + '</option>').appendTo(el);
  562. }
  563. el.selectpicker('refresh');
  564. }
  565. dtd.resolve(); // 改变Deferred对象的执行状态
  566. }
  567. }
  568. });
  569. return dtd.promise(); // 返回promise对象
  570. },
  571. /**
  572. * 获取楼层下拉
  573. * @el 元素
  574. * @bid 楼id
  575. */
  576. getFloorlistDrop: function(el, bid) {
  577. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  578. $.ajax({
  579. type: "get",
  580. url: huayi.config.callcenter_url + "configurationapi/api/FloorManage/getlistdrop",
  581. dataType: 'json',
  582. async: true,
  583. data: {
  584. buildid: bid,// 否 string 楼id
  585. },
  586. success: function(data) {
  587. if(data.state.toLowerCase() === 'success'){
  588. el.empty();
  589. el.append("<option value=''>请选择楼层</option>");
  590. var res = data.data;
  591. if(res && res.length > 0){
  592. for(var i = 0; i < res.length; i++) {
  593. $('<option value=' + res[i].id + '>' + res[i].floorname + ' ' + res[i].remark +'</option>').appendTo(el);
  594. }
  595. el.selectpicker('refresh');
  596. }
  597. dtd.resolve(); // 改变Deferred对象的执行状态
  598. }
  599. }
  600. });
  601. return dtd.promise(); // 返回promise对象
  602. },
  603. /**
  604. * 科室物品种类下拉(树形)
  605. * @el1 绑定的input元素
  606. * @el2 下拉框 元素
  607. * @option {} 请求的参数
  608. * @url API地址
  609. */
  610. getDeptTreeLists: function(el1, el2, option, url) {
  611. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  612. $.getJSON(huayi.config.callcenter_url + url, option, function(result) {
  613. if (result.state.toLowerCase() === "success") {
  614. var defaultDatas = result.data;
  615. defaultDatas = JSON.parse(JSON.stringify(defaultDatas).replace(/departmenname/g, "text"));
  616. defaultDatas = JSON.parse(JSON.stringify(defaultDatas).replace(/kindname/g, "text"));
  617. defaultDatas = JSON.parse(JSON.stringify(defaultDatas).replace(/\[\]/g, null));
  618. var $sTree = el2.treeview({
  619. color: "#428bca",
  620. expandIcon: 'glyphicon glyphicon-chevron-right',
  621. collapseIcon: 'glyphicon glyphicon-chevron-down',
  622. nodeIcon: 'fa fa-folder-o',
  623. //selectedIcon: "glyphicon glyphicon-stop",
  624. //icon: "glyphicon glyphicon-stop",
  625. //emptyIcon: 'glyphicon',
  626. //showCheckbox: true,
  627. selectable: true,
  628. state: {
  629. selected: true
  630. },
  631. data: defaultDatas,
  632. onNodeSelected: function(event, node) {
  633. $sTree.treeview('clearSearch');
  634. el1.val(node.text);
  635. el1.attr('data-id', node.id);
  636. el2.removeClass('show').addClass('hidden');
  637. },
  638. onNodeUnselected: function(event, node) {
  639. el1.val('请选择');
  640. el1.attr('data-id', '');
  641. }
  642. });
  643. el2.treeview('collapseAll', {
  644. silent: true
  645. });
  646. var findSNodes = function() {
  647. return $sTree.treeview('search', [el1.val(), {
  648. ignoreCase: false,
  649. exactMatch: false
  650. }]);
  651. };
  652. el1.on('keyup', function(e) {
  653. var selectableNodes = findSNodes();
  654. });
  655. dtd.resolve(); // 改变Deferred对象的执行状态
  656. }
  657. });
  658. return dtd.promise(); // 返回promise对象
  659. },
  660. //获取科室下拉
  661. getDepartmentList: function(el, isasync) {
  662. if(isasync != false) {
  663. isasync = true;
  664. }
  665. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  666. $.ajax({
  667. type: "get",
  668. url: huayi.config.callcenter_url + "configurationapi/api/Department/getlistdrop",
  669. dataType: 'json',
  670. async: isasync,
  671. data: {
  672. //projectid: ,//string 项目名称id
  673. //floorid: ,//string 楼层名称id
  674. },
  675. success: function(data) {
  676. var res = data.data;
  677. for(var i = 0; i < res.length; i++) {
  678. $('<option value=' + res[i].id + '>' + res[i].departmenname + '</option>').appendTo(el);
  679. }
  680. el.selectpicker('refresh');
  681. dtd.resolve(); // 改变Deferred对象的执行状态
  682. }
  683. });
  684. return dtd.promise(); // 返回promise对象
  685. },
  686. //获取设备下拉
  687. getEqplistDrop: function(el, isasync) {
  688. if(isasync != false) {
  689. isasync = true;
  690. }
  691. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  692. $.ajax({
  693. type: "get",
  694. url: huayi.config.callcenter_url + "equipmentapi/api/equipment/getlistdrop",
  695. dataType: 'json',
  696. async: isasync,
  697. data: {},
  698. success: function(data) {
  699. var res = data.data;
  700. if(res){
  701. for(var i = 0; i < res.length; i++) {
  702. $('<option value=' + res[i].id + '>' + res[i].text + '</option>').appendTo(el);
  703. }
  704. el.selectpicker('refresh');
  705. }
  706. dtd.resolve(); // 改变Deferred对象的执行状态
  707. }
  708. });
  709. return dtd.promise(); // 返回promise对象
  710. },
  711. //获取人员下拉
  712. getProUser: function(proId, el, rolecode) {
  713. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  714. $.ajax({
  715. type: "get",
  716. url: huayi.config.callcenter_url + "signtokenapi/api/useraccount/getprojectuser",
  717. dataType: 'json',
  718. async: true,
  719. data: {
  720. projectid: proId, // 是 string 项目id
  721. rolecode: rolecode,// 角色code(例如:YWYG,DFDF,ERER,用英文“,”隔开),不传此参数的话默认是YWYG,就是运维员工
  722. },
  723. success: function(data) {
  724. var res = data.data;
  725. $(res).each(function(i, n) {
  726. $('<option value=' + n.usercode + '>' + n.usercode + '-' + n.username + '</option>').appendTo(el);
  727. })
  728. el.selectpicker('refresh');
  729. dtd.resolve(); // 改变Deferred对象的执行状态
  730. }
  731. });
  732. return dtd.promise(); // 返回promise对象
  733. },
  734. //获取坐席下拉
  735. getSeatlistDrop: function(el, isasync) {
  736. if(isasync != false) {
  737. isasync = true;
  738. }
  739. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  740. $.ajax({
  741. type: "get",
  742. url: huayi.config.callcenter_url + "signtokenapi/api/useraccount/getseatlist",
  743. dataType: 'json',
  744. async: isasync,
  745. data: {
  746. // key:,// 否 string 模糊查询,坐席工号或坐席名字
  747. },
  748. success: function(data) {
  749. if(data.state.toLowerCase() === 'success') {
  750. var res = data.data;
  751. if(res && res.length > 0) {
  752. for(var i = 0; i < res.length; i++) {
  753. $('<option value=' + res[i].usercode + '>' + res[i].usercode + '-' + res[i].username + '</option>').appendTo(el);
  754. }
  755. el.selectpicker('refresh');
  756. dtd.resolve(); // 改变Deferred对象的执行状态
  757. }
  758. }
  759. }
  760. });
  761. return dtd.promise(); // 返回promise对象
  762. },
  763. //获取坐席组下拉
  764. getSeatGrouplistDrop: function(el, isasync) {
  765. if(isasync != false) {
  766. isasync = true;
  767. }
  768. var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象
  769. $.ajax({
  770. type: "get",
  771. url: huayi.config.callcenter_url + "callcenterapi/api/sysseatgroup/getlist",
  772. dataType: 'json',
  773. async: isasync,
  774. data: {
  775. // key:,// 否 string 模糊查询,坐席工号或坐席名字
  776. },
  777. success: function(data) {
  778. if(data.state.toLowerCase() === 'success') {
  779. el.empty();
  780. el.append("<option value=''>请选择坐席组</option>");
  781. var res = data.data;
  782. if(res && res.length > 0) {
  783. for(var i = 0; i < res.length; i++) {
  784. $("<option value='" + res[i].zxzcode + "'>" + res[i].zxzname + "</option>").appendTo(el);
  785. }
  786. el.selectpicker('refresh');
  787. dtd.resolve(); // 改变Deferred对象的执行状态
  788. }
  789. }
  790. }
  791. });
  792. return dtd.promise(); // 返回promise对象
  793. },
  794. };
  795. helper.methods = {
  796. /**
  797. * 文件上传删除
  798. * @param string smallimgUrl 小图 当该值为 null时是非图片类型
  799. * @param string bigimgUrl 大图
  800. */
  801. delImgs: function(smallimgUrl, bigimgUrl) {
  802. //console.log("文件删除01========" + smallimgUrl);
  803. //console.log("文件删除02========" + bigimgUrl);
  804. if(smallimgUrl === null) {
  805. $.get(bigimgUrl, {
  806. isdel: 1,
  807. });
  808. } else {
  809. $.get(smallimgUrl, {
  810. isdel: 1,
  811. });
  812. $.get(bigimgUrl, {
  813. isdel: 1,
  814. });
  815. }
  816. },
  817. //点击操作图标
  818. taskTools: function(taskobj) {
  819. $(taskobj).find('.tool_down').toggle();
  820. $(taskobj).parent().parent().siblings().find('.tool_down').hide();
  821. },
  822. //数组去重
  823. unique: function(arr) {  
  824. var res = [];  
  825. var json = {};  
  826. for(var i = 0; i < arr.length; i++) {
  827. if(!json[arr[i]]) {      
  828. res.push(arr[i]);      
  829. json[arr[i]] = 1;    
  830. }  
  831. }  
  832. return res;
  833. },
  834. /**
  835. * 对象数组去重(用于自定义字段保存时)
  836. * @oldArr 数组
  837. * @name 要比较的属性 String
  838. */
  839. uniqueObjArray: function(oldArr, name) {
  840. var allArr = [];
  841. for(var i = 0; i < oldArr.length; i++) {  
  842. var flag = true;  
  843. for(var j = 0; j < allArr.length; j++) {
  844. if(oldArr[i][name] == allArr[j][name]) {      
  845. flag = false;    
  846. };  
  847. };
  848. if(flag) {    
  849. allArr.push(oldArr[i]);  
  850. };
  851. };
  852. return allArr;
  853. },
  854. //比较器(可以根据对象的属性进行比较) 用法 arr.sort(compare('age'))
  855. //sequence 正序 (有小到大)1 还是倒序 -1
  856. compare: function(prop, sequence) {
  857. return function(obj1, obj2) {
  858. var val1 = obj1[prop];
  859. var val2 = obj2[prop];
  860. //将数字 字符串 转为数字
  861. if(!isNaN(Number(val1)) && !isNaN(Number(val2))) {
  862. val1 = Number(val1);
  863. val2 = Number(val2);
  864. }
  865. //值是 时间字符串 转为 时间戳
  866. if(isNaN(val1) && !isNaN(Date.parse(val1)) && isNaN(val2) && !isNaN(Date.parse(val2))) {
  867. val1 = Number(new Date(val1));
  868. val2 = Number(new Date(val2));
  869. }
  870. if(val1 < val2) {
  871. return(-1) * (sequence);
  872. } else if(val1 > val2) {
  873. return 1 * (sequence);
  874. } else {
  875. return 0;
  876. }
  877. }
  878. },
  879. /**
  880. * 将一维的扁平数组转换为多层级对象
  881. * @param {[type]} list 一维数组,数组中每一个元素需包含id和ParentId两个属性
  882. * @return {[type]} tree 多层级树状结构
  883. */
  884. buildTree: function(list) {
  885. var temp = {};
  886. var tree = {};
  887. var arr = [];
  888. for(var j in list) {
  889. temp[list[j].id] = list[j];
  890. }
  891. for(var i in temp) {
  892. if(temp[i].ParentId) {
  893. if(!temp[temp[i].ParentId].children) {
  894. temp[temp[i].ParentId].children = new Object();
  895. }
  896. temp[temp[i].ParentId].children[temp[i].id] = temp[i];
  897. } else {
  898. tree[temp[i].id] = temp[i];
  899. }
  900. }
  901. for(var k in tree) {
  902. arr.push(tree[k]);
  903. }
  904. return arr;
  905. },
  906. objToArray: function(mobj) {
  907. var arr = [];
  908. for(var k in mobj) {
  909. arr.push(mobj[k]);
  910. }
  911. return arr;
  912. },
  913. arrayToObj: function(marr) {
  914. var tobj = {};
  915. for(var k in marr) {
  916. tobj[k] = marr[k];
  917. }
  918. return tobj;
  919. },
  920. // 判断浏览器是否支持placeholder属性
  921. isSupportPlaceholder: function() {
  922. var input = document.createElement('input');
  923. return 'placeholder' in input;
  924. },
  925. /**
  926. * 判断是否是IE浏览器 版本,包括Edge浏览器(下面是返回值)
  927. * -1 Number 不是ie浏览器
  928. * 6 Number ie版本<=6
  929. * 7 Number ie7
  930. * 8 Number ie8
  931. * 9 Number ie9
  932. * 10 Number ie10
  933. * 11 Number ie11
  934. * 'edge' String ie的edge浏览器
  935. */
  936. IEVersion: function() {
  937. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  938. var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
  939. var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
  940. var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
  941. if(isIE) {
  942. var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
  943. reIE.test(userAgent);
  944. var fIEVersion = parseFloat(RegExp["$1"]);
  945. if(fIEVersion == 7) {
  946. return 7;
  947. } else if(fIEVersion == 8) {
  948. return 8;
  949. } else if(fIEVersion == 9) {
  950. return 9;
  951. } else if(fIEVersion == 10) {
  952. return 10;
  953. } else {
  954. return 6; //IE版本<=7
  955. }
  956. } else if(isEdge) {
  957. return 'edge'; //edge
  958. } else if(isIE11) {
  959. return 11; //IE11
  960. } else {
  961. return -1; //不是ie浏览器
  962. }
  963. },
  964. /**
  965. * 鼠标滚轮放大缩小
  966. * o img元素
  967. * d 滚轮的方向
  968. * */
  969. zoomImg: function(o, d) {
  970. //d 1 上 -1 下
  971. var width = $(o).width();
  972. var height = $(o).height();
  973. if(d === 1) {
  974. $(o).css({
  975. "left": "50%",
  976. "marginLeft": -(width * 1.2) / 2,
  977. "top": "50%",
  978. "marginTop": -(height * 1.2) / 2,
  979. "width": width * 1.2,
  980. "height": height * 1.2
  981. });
  982. }
  983. if(d === -1) {
  984. $(o).css({
  985. "left": "50%",
  986. "marginLeft": -(width * 1.2) / 2,
  987. "top": "50%",
  988. "marginTop": -(height * 1.2) / 2,
  989. "width": width / 1.2,
  990. "height": height / 1.2
  991. });
  992. }
  993. },
  994. /**
  995. * 初始化layer-photo 图片的大小
  996. * @el 图片元素
  997. * @pic layer-photo 回调的参数 当前图片的一些信息
  998. * @layero layer-photo 回调的参数 当前弹框的一些信息
  999. */
  1000. initLayerPhotos: function(el, pic, layero) {
  1001. var layerHeight = $(layero[0]).height();
  1002. var picHeight = $(el).find('img[alt="' + pic.alt + '"]').height() / 2;
  1003. var picWidth = $(el).find('img[alt="' + pic.alt + '"]').width() / 2;
  1004. var rate = picWidth / picHeight;
  1005. if(picHeight > layerHeight){
  1006. picHeight = layerHeight - 110;
  1007. picWidth = rate * picHeight;
  1008. }
  1009. $(el).find('img[alt="' + pic.alt + '"]').css({
  1010. width: picWidth,
  1011. height: picHeight,
  1012. overflow: 'auto',
  1013. margin: 'auto',
  1014. position: 'absolute',
  1015. top: 0, left: 0, bottom: 0, right: 0,
  1016. });
  1017. }
  1018. }
  1019. helper.DateFormat = {
  1020. /**
  1021. * 常用 API
  1022. * myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
  1023. * myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
  1024. * myDate.getHours(); //获取当前小时数(0-23)
  1025. * myDate.getMinutes(); //获取当前分钟数(0-59)
  1026. * myDate.getSeconds(); //获取当前秒数(0-59)
  1027. * myDate.getMilliseconds(); //获取当前毫秒数(0-999)
  1028. * myDate.toLocaleDateString(); //获取当前日期
  1029. * myDate.toLocaleTimeString(); //获取当前时间
  1030. * myDate.toLocaleString(); //获取日期与时间
  1031. */
  1032. d2s: function(postdate) {
  1033. var second = 1000;
  1034. var minutes = second * 60;
  1035. var hours = minutes * 60;
  1036. var days = hours * 24;
  1037. var months = days * 30;
  1038. var twomonths = days * 365;
  1039. var myDate = new Date(Date.parse(postdate));
  1040. if(isNaN(myDate)) {
  1041. myDate = new Date(postdate.replace(/-/g, "/"));
  1042. }
  1043. var nowtime = new Date();
  1044. var longtime = nowtime.getTime() - myDate.getTime();
  1045. var showtime = 0;
  1046. if(longtime > months * 2) {
  1047. return postdate;
  1048. } else if(longtime > months) {
  1049. return "1个月前";
  1050. } else if(longtime > days * 7) {
  1051. return("1周前");
  1052. } else if(longtime > days) {
  1053. return(Math.floor(longtime / days) + "天前");
  1054. } else if(longtime > hours) {
  1055. return(Math.floor(longtime / hours) + "小时前");
  1056. } else if(longtime > minutes) {
  1057. return(Math.floor(longtime / minutes) + "分钟前");
  1058. } else if(longtime > second) {
  1059. return(Math.floor(longtime / second) + "秒前");
  1060. } else {
  1061. return("刚刚");
  1062. }
  1063. },
  1064. /**
  1065. * 获取上一个月
  1066. *
  1067. * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
  1068. */
  1069. getPreMonth: function(date) {
  1070. var arr = date.split('-');
  1071. var year = arr[0]; //获取当前日期的年份
  1072. var month = arr[1]; //获取当前日期的月份
  1073. var day = arr[2]; //获取当前日期的日
  1074. var days = new Date(year, month, 0);
  1075. days = days.getDate(); //获取当前日期中月的天数
  1076. var year2 = year;
  1077. var month2 = parseInt(month) - 1;
  1078. if(month2 == 0) {
  1079. year2 = parseInt(year2) - 1;
  1080. month2 = 12;
  1081. }
  1082. var day2 = day;
  1083. var days2 = new Date(year2, month2, 0);
  1084. days2 = days2.getDate();
  1085. if(day2 > days2) {
  1086. day2 = days2;
  1087. }
  1088. if(month2 < 10) {
  1089. month2 = '0' + month2;
  1090. }
  1091. var t2 = year2 + '-' + month2 + '-' + day2;
  1092. return t2;
  1093. },
  1094. /**
  1095. * 获取下一个月
  1096. *
  1097. * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
  1098. */
  1099. getNextMonth: function(date) {
  1100. var arr = date.split('-');
  1101. var year = arr[0]; //获取当前日期的年份
  1102. var month = arr[1]; //获取当前日期的月份
  1103. var day = arr[2]; //获取当前日期的日
  1104. var days = new Date(year, month, 0);
  1105. days = days.getDate(); //获取当前日期中的月的天数
  1106. var year2 = year;
  1107. var month2 = parseInt(month) + 1;
  1108. if(month2 == 13) {
  1109. year2 = parseInt(year2) + 1;
  1110. month2 = 1;
  1111. }
  1112. var day2 = day;
  1113. var days2 = new Date(year2, month2, 0);
  1114. days2 = days2.getDate();
  1115. if(day2 > days2) {
  1116. day2 = days2;
  1117. }
  1118. if(month2 < 10) {
  1119. month2 = '0' + month2;
  1120. }
  1121. var t2 = year2 + '-' + month2 + '-' + day2;
  1122. return t2;
  1123. },
  1124. /**
  1125. *获取当前时间: YYYY-MM-DD hh:mm:ss
  1126. */
  1127. getNowDateTime: function() {
  1128. var NowDate;
  1129. var myDate = new Date();
  1130. myDate.getYear(); //获取当前年份(2位)
  1131. var YY = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  1132. var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  1133. MM = MM > 9 ? MM : ("0" + MM);
  1134. var DD = myDate.getDate(); //获取当前日(1-31)
  1135. DD = DD > 9 ? DD : ("0" + DD);
  1136. var hh = myDate.getHours();
  1137. hh = hh > 9 ? hh : ("0" + hh);
  1138. var mm = myDate.getMinutes();
  1139. mm = mm > 9 ? mm : ("0" + mm);
  1140. var ss = myDate.getSeconds();
  1141. ss = ss > 9 ? ss : ("0" + ss);
  1142. NowDate = YY + "-" + MM + "-" + DD + ' ' + hh + ":" + mm + ":" + ss;
  1143. return NowDate;
  1144. },
  1145. /**
  1146. *获取当前日期: YYYY-MM-DD
  1147. */
  1148. getNowDate: function() {
  1149. var NowDate;
  1150. var myDate = new Date();
  1151. myDate.getYear(); //获取当前年份(2位)
  1152. var YY = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  1153. var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  1154. MM = MM > 9 ? MM : ("0" + MM);
  1155. var DD = myDate.getDate(); //获取当前日(1-31)
  1156. DD = DD > 9 ? DD : ("0" + DD);
  1157. NowDate = YY + "-" + MM + "-" + DD;
  1158. return NowDate;
  1159. },
  1160. getNowYear: function() { //获取当前年份
  1161. var NowDate;
  1162. var myDate = new Date();
  1163. NowDate = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  1164. return NowDate;
  1165. },
  1166. getPreYear: function() { //获取上一个年份
  1167. var NowDate;
  1168. var myDate = new Date();
  1169. NowDate = myDate.getFullYear() - 1; //获取完整的年份(4位,1970-????)
  1170. return NowDate;
  1171. },
  1172. getFirstDayInCurrentMonth: function() {
  1173. var NowDate;
  1174. var myDate = new Date();
  1175. myDate.getYear(); //获取当前年份(2位)
  1176. var YY = myDate.getFullYear(); //获取完整的年份(4位,1970-????)
  1177. var MM = myDate.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  1178. MM = MM > 9 ? MM : ("0" + MM);
  1179. var DD = myDate.getDate(); //获取当前日(1-31)
  1180. DD = DD > 9 ? DD : ("0" + DD);
  1181. NowDate = YY + "-" + MM + "-01";
  1182. return NowDate;
  1183. },
  1184. /**
  1185. * 将秒转换成 天时分秒
  1186. */
  1187. getDuring: function(ss) {
  1188. var days = parseInt(ss / (60 * 60 * 24));
  1189. var hours = parseInt((ss % (60 * 60 * 24)) / (60 * 60));
  1190. var minutes = parseInt((ss % (60 * 60)) / (60));
  1191. var seconds = ss % 60;
  1192. days = days > 0 ? (days + '天') : '';
  1193. hours = hours > 0 ? (hours + '小时') : '';
  1194. minutes = minutes > 0 ? (minutes + '分') : '';
  1195. seconds = seconds >= 0 ? (seconds + '秒') : '';
  1196. return days + hours + minutes + seconds;
  1197. },
  1198. /**
  1199. * 计算 两个时间的差 值
  1200. * time1 > time2
  1201. */
  1202. compearTime: function(time1, time2) {
  1203. if(time1 && time2) {
  1204. time1 = time1.replace(/-/g, "/");
  1205. time2 = time2.replace(/-/g, "/");
  1206. var ntime = Date.parse(time1) - Date.parse(time2)
  1207. return this.getDuring(ntime / 1000);;
  1208. } else {
  1209. return '-';
  1210. }
  1211. },
  1212. /**
  1213. * 将时间戳 转换成 日期格式 (2018-07-20 11:38:34)
  1214. * @timestamp 时间戳为10位需*1000,时间戳为13位的话不需乘1000
  1215. * 注意:如果是Unix时间戳记得乘以1000。比如:PHP函数time()获得的时间戳就要乘以1000。
  1216. */
  1217. timestampToTime: function(timestamp) {
  1218. if(Number(timestamp) <= 0){
  1219. return '-';
  1220. }
  1221. var date;
  1222. if (('' + timestamp).length === 10){
  1223. timestamp = parseInt(timestamp) * 1000
  1224. }
  1225. date = new Date(timestamp);
  1226. var Y = date.getFullYear() + '-';
  1227. var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
  1228. var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
  1229. var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
  1230. var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
  1231. var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
  1232. return Y + M + D + h + m + s;
  1233. }
  1234. };
  1235. helper.string = {
  1236. stringbuilder: function() {
  1237. this.arr = new Array();
  1238. this.append = function(str) {
  1239. this.arr.push(str);
  1240. };
  1241. this.tostring = function() {
  1242. return this.arr.join('');
  1243. };
  1244. }
  1245. };
  1246. helper.init = {
  1247. setajax: function(isload) { /// 配置AJAX
  1248. if(!window.localStorage.getItem('token')) {
  1249. top.window.location.href = "./login.html";
  1250. return;
  1251. }
  1252. $.ajaxSetup({
  1253. cache: false,
  1254. headers: {
  1255. "Authorization": "Bearer " + window.localStorage.getItem('token')
  1256. }
  1257. });
  1258. var loadindex;
  1259. $(document).on("ajaxStart", function() {
  1260. if(isload) {
  1261. //加载框显示
  1262. loadindex = layer.load(2);
  1263. }
  1264. }).on("ajaxSuccess", function(e, jqXHR, s, data) {
  1265. try {
  1266. if(s.type == "POST") {
  1267. if(typeof(data) != 'object') {
  1268. data = $.parseJSON(data);
  1269. }
  1270. }
  1271. if(s.type == "GET") {
  1272. if(typeof(data) != 'object') {
  1273. data = $.parseJSON(data);
  1274. } else {
  1275. data = data;
  1276. }
  1277. }
  1278. if(data.state.toLowerCase() == "notoken") {
  1279. top.window.location.href = "./login.html";
  1280. return;
  1281. }
  1282. if(data.state.toLowerCase() == "unauthorized") {
  1283. layer.confirm(data.message, {
  1284. icon: 7,
  1285. btn: ['确定'] //按钮
  1286. });
  1287. }
  1288. if(data.state.toLowerCase() == "error") {
  1289. layer.confirm(data.message, {
  1290. icon: 7,
  1291. btn: ['确定'] //按钮
  1292. });
  1293. }
  1294. } catch(e) {
  1295. if(isload) {
  1296. //加载框消失
  1297. layer.close(loadindex);
  1298. }
  1299. }
  1300. }).on("ajaxStop", function() {
  1301. if(isload) {
  1302. //加载框消失
  1303. layer.close(loadindex);
  1304. }
  1305. }).on("ajaxError", function(event, xhr, options, exc) {
  1306. // layer.confirm(xhr.status+'网络繁忙,请稍后再试...', {
  1307. // icon: 7,
  1308. // closeBtn: 0,
  1309. // btn: ['确定'] //按钮
  1310. // });
  1311. if(xhr.status == 401) {
  1312. top.window.location.href = "./login.html";
  1313. return;
  1314. }
  1315. //layer.confirm("操作失败", {
  1316. // btn: ['确定'] //按钮
  1317. //});
  1318. })
  1319. },
  1320. setdh: function() { //回到首页
  1321. $(document).on('click', '#ReIndex', function() {
  1322. // top.location.href = "/index.html";
  1323. top.$("iframe:visible")[0].src = "widgets.html";
  1324. top.$(".J_menuTab").eq(0).addClass("active").text('首页');
  1325. top.$(".J_menuTab").eq(0).attr("data-id", 'widgets.html');
  1326. top.$(".J_mainContent .J_iframe0").attr("data-id", "widgets.html");
  1327. });
  1328. },
  1329. enterSearch: function() { //enter搜索
  1330. $(document).on('keypress', function(event) {
  1331. if(event.keyCode === 32) {
  1332. if($(event.target).context.nodeName != "TEXTAREA") {
  1333. $(event.target).blur();
  1334. }
  1335. }
  1336. if(event.keyCode === 13) {
  1337. $('#sc_btns').trigger("click");
  1338. }
  1339. });
  1340. },
  1341. clickTools: function() {
  1342. //判断点击的是否是 操作图标
  1343. $(document).click(function(e) {
  1344. if(!$(e.target).is($('.task_tools')) && !$(e.target).is($('.tool_down')) && !$(e.target).is($('.task_tools>a')) && !$(e.target).is($('.task_tools i')) && $(e.target).parent('.tool_down').length === 0) {
  1345. $('.tool_down').hide();
  1346. }
  1347. });
  1348. },
  1349. /**
  1350. *面包屑导航
  1351. *
  1352. */
  1353. crumbsNavs: function() {
  1354. var moduleId = top.$(".J_iframe:visible").attr("id") && top.$(".J_iframe:visible").attr("id");
  1355. var currentEl = top.$('#side-menu').find('a.J_menuItem[data-id="' + moduleId + '"]');
  1356. var currentTxt = currentEl.text();
  1357. var secondEl = currentEl.parent().parent();
  1358. var secondTxt = secondEl.siblings('a').find('.nav-label').text();
  1359. var firstEl = secondEl.parent().parent();
  1360. var firstTxt = firstEl.siblings('a').find('.nav-label').text();
  1361. var crumbsTpl = '';
  1362. if(firstTxt === '') {
  1363. crumbsTpl = '<div class="dhLeft">' +
  1364. '<sapn><i class="syIcon"></i>位置:' +
  1365. '<a id="ReIndex" href="javaScript:;" class="indexreturn">首页</a>&gt;' +
  1366. '<a href="javaScript:;">' + secondTxt + '</a>&gt;' +
  1367. '<a href="javascript:location.reload()" class="now_position">' + currentTxt + '</a>' +
  1368. '</sapn>' +
  1369. '</div>'
  1370. } else {
  1371. crumbsTpl = '<div class="dhLeft">' +
  1372. '<sapn><i class="syIcon"></i>位置:' +
  1373. '<a id="ReIndex" href="javaScript:;" class="indexreturn">首页</a>&gt;' +
  1374. '<a href="javaScript:;">' + firstTxt + '</a>&gt;' +
  1375. '<a href="javaScript:;">' + secondTxt + '</a>&gt;' +
  1376. '<a href="javascript:location.reload()" class="now_position">' + currentTxt + '</a>' +
  1377. '</sapn>' +
  1378. '</div>'
  1379. }
  1380. $(function() {
  1381. top.$("iframe:visible").contents().find('.daoHang').show();
  1382. top.$("iframe:visible").contents().find('.daoHang').html(crumbsTpl);
  1383. top.$("iframe:visible").contents().find('.wrapper').show();
  1384. });
  1385. }
  1386. }
  1387. helper.init.setajax(0);
  1388. helper.init.crumbsNavs();
  1389. helper.init.setdh();
  1390. helper.init.enterSearch();
  1391. helper.init.clickTools();