util.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. var numberreg = new RegExp(
  2. "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$");
  3. function doajax(method, dataurl, data, sucessCallBack, errorCallBack) {
  4. var user_key = undefined;
  5. var user = $.zui.store.get("user")
  6. if (typeof(user) == "undefined" || user == null) {
  7. } else {
  8. user_key = "XinTong " + (user.token);
  9. }
  10. if (typeof(user_key) == "undefined" || user_key == null) {
  11. $.ajax({
  12. type: method,
  13. url: dataurl,
  14. contentType: "application/json",
  15. dataType: "json",
  16. async: true,
  17. data: JSON.stringify(data),
  18. success: function(data) {
  19. sucessCallBack(data);
  20. },
  21. error: function(error) {
  22. if (HandleError(error)) return;
  23. errorCallBack(error);
  24. }
  25. })
  26. } else {
  27. $.ajax({
  28. type: method,
  29. url: dataurl,
  30. contentType: "application/json",
  31. dataType: "json",
  32. beforeSend: function(xhr) {
  33. xhr.setRequestHeader("token", user_key);
  34. },
  35. headers: {
  36. 'token': user_key
  37. },
  38. async: true,
  39. data: JSON.stringify(data),
  40. success: sucessCallBack,
  41. error: function(error) {
  42. if (HandleError(error)) return;
  43. errorCallBack(error);
  44. }
  45. })
  46. }
  47. }
  48. function ajaxGet(dataurl, data, sucessCallBack, errorCallBack) {
  49. doajax("GET", dataurl, data, sucessCallBack, errorCallBack)
  50. }
  51. function ajaxPost(dataurl, data, sucessCallBack, errorCallBack) {
  52. doajax("POST", dataurl, data, sucessCallBack, errorCallBack)
  53. }
  54. function ajaxPut(dataurl, data, sucessCallBack, errorCallBack) {
  55. doajax("PUT", dataurl, data, sucessCallBack, errorCallBack)
  56. }
  57. function ajaxDelete(dataurl, data, sucessCallBack, errorCallBack) {
  58. doajax("DELETE", dataurl, data, sucessCallBack, errorCallBack)
  59. }
  60. function HandleError(error) {
  61. if (typeof(error) != "undefined" && error != null) {
  62. if (typeof(error.status) != "undefined" && error.status != null) {
  63. if (error.status == 403) {
  64. //未登录退出
  65. layer.msg('登陆已经过期,将重新登陆!', {
  66. time: 2000, //20s后自动关闭
  67. }, function() {
  68. self.location = base_ui_url + UI_USER_LOGIN + "?time=" + (Date.parse(new Date()));
  69. })
  70. return true;
  71. }
  72. }
  73. }
  74. return false;
  75. }
  76. function GetQueryString(name) {
  77. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  78. var r = window.location.search.substr(1).match(reg);
  79. if (r != null) {
  80. return unescape(r[2]);
  81. }
  82. return null;
  83. }
  84. function getItemByIdFromArr(id, curDatas) {
  85. var rowData;
  86. for (var i = 0; i < curDatas.length; i++) {
  87. if (id == curDatas[i].id) {
  88. rowData = curDatas[i];
  89. break;
  90. }
  91. }
  92. return rowData;
  93. }
  94. function showPopup4Common(title, callback, area, divId, offset, btnName) {
  95. if (!area) area = 'auto';
  96. if (!divId) divId = '#form-div';
  97. if (!offset) offset = 'auto';
  98. if (!btnName) btnName = '保存';
  99. //添加常量页面
  100. return layer.open({
  101. type: 1,
  102. area: area,
  103. title: title,
  104. closeBtn: 1,
  105. shadeClose: true,
  106. offset: offset,
  107. skin: 'layui-layer-lan',
  108. content: $(divId),
  109. btn: btnName,
  110. btnAlign: 'c', //按钮居中
  111. shade: 0, //不显示遮罩
  112. yes: function(index) {
  113. if (callback != false) {
  114. callback();
  115. }
  116. layer.close(index);
  117. }
  118. });
  119. }
  120. function deleteItem4Common(id, url, okCb, offset) {
  121. if (!offset) offset = 'auto';
  122. //询问框
  123. layer.confirm('确定删除记录?', {
  124. btn: ['删除', '取消'], //按钮
  125. offset: offset
  126. }, function() {
  127. var param = { "id": id };
  128. no_return_common_service(url, param, function(data) {
  129. okCb(); //重新加载表格数据
  130. layer.msg(data, {
  131. time: 2000 //20s后自动关闭
  132. });
  133. }, function(error) {
  134. // alert(error);
  135. });
  136. }, function(index) {
  137. layer.close(index);
  138. });
  139. }
  140. function deleteItem4CallBack(cb) {
  141. layer.confirm('确定删除记录?', {
  142. shade: 0,
  143. btn: ['确定', '取消'] //按钮
  144. }, function() {
  145. if (cb) cb();
  146. }, function(index) {
  147. layer.close(index);
  148. });
  149. }
  150. function addOrUpdateItem4Common(param, url, okCb) {
  151. no_return_common_service(url, param, function(data) {
  152. if (okCb) okCb(); //重新加载表格数据
  153. layer.msg(data, {
  154. time: 2000 //20s后自动关闭
  155. });
  156. }, function(error) {
  157. // alert(error);
  158. });
  159. }
  160. //获取道管中心列表
  161. function getRoadManagerList() {
  162. get_common_service("/dept/getAllRM", null, function(data) {
  163. $.zui.store.set("cache_road_manager_list", data);
  164. // cb(data);
  165. });
  166. }
  167. function setRoadManagerSelect(div, selectId, hasAll) {
  168. var rmList = $.zui.store.get("cache_road_manager_list");
  169. setRoadManagerValue(rmList, div, selectId, hasAll, false);
  170. }
  171. function setRoadManagerSelect_1(div, selectId, hasAll) {
  172. var rmList = $.zui.store.get("cache_road_manager_list");
  173. setRoadManagerValue(rmList, div, selectId, hasAll, true);
  174. }
  175. function setRoadManagerValue(data, div, selectId, hasAll, isname) {
  176. var optStr = ''; //<option value="">全部</option>';
  177. if (hasAll) optStr = '<option value="">全部</option>';
  178. for (var i in data) {
  179. if (isname ? (data[i].name.indexOf(selectId) != -1) : (data[i].deptid == selectId))
  180. optStr += '<option value="' + data[i].deptid + '" selected="selected">' + data[i].name + '</option>';
  181. else
  182. optStr += '<option value="' + data[i].deptid + '">' + data[i].name + '</option>';
  183. }
  184. $(div).html('');
  185. $(div).html(optStr);
  186. }
  187. var cache_road_manager_fee_list_map;
  188. function getFeeList(callback) {
  189. get_common_service("/dept/getAllFs", null, function(data) {
  190. $.zui.store.set("cache_fee_station_list", data);
  191. var map = new Map();
  192. for (var i = 0; i < data.length; i++) {
  193. if (!map.get(data[i].parentid)) {
  194. map.put(data[i].parentid, []);
  195. }
  196. var arr = map.get(data[i].parentid);
  197. arr.push(data[i]);
  198. }
  199. cache_road_manager_fee_list_map = map;
  200. if (callback) callback(data);
  201. });
  202. }
  203. function setFeSelect(div, selectId) {
  204. var feeList = $.zui.store.get("cache_fee_station_list");
  205. if (feeList) {
  206. setFeeSelectValue(feeList, div, selectId);
  207. } else {
  208. get_common_service("/dept/getAllFs", null, function(data) {
  209. setFeeSelectValue(data, div, selectId);
  210. });
  211. }
  212. }
  213. function setFeeSelectValue(data, div, selectId) {
  214. var optStr = '<option value="">全部</option>';
  215. for (var i in data) {
  216. if (data[i].deptid == selectId)
  217. optStr += '<option value="' + data[i].deptid + '" selected="selected">' + data[i].name + '</option>';
  218. else
  219. optStr += '<option value="' + data[i].deptid + '">' + data[i].name + '</option>';
  220. }
  221. $(div).html('');
  222. $(div).html(optStr);
  223. }
  224. function setFeeSelectValueNoAll(data, div, selectId) {
  225. var optStr = '';
  226. for (var i in data) {
  227. if (data[i].deptid == selectId)
  228. optStr += '<option value="' + data[i].deptid + '" selected="selected">' + data[i].name + '</option>';
  229. else
  230. optStr += '<option value="' + data[i].deptid + '">' + data[i].name + '</option>';
  231. }
  232. $(div).html('');
  233. $(div).html(optStr);
  234. }
  235. function setLaneSelect(div, selectId) {
  236. var optStr = '';
  237. var data = [];
  238. for (var i = 0; i <= 8; i++) {
  239. if (i == 0)
  240. data.push({ id: i, name: '值机室' });
  241. else
  242. data.push({ id: i, name: i + '车道' });
  243. }
  244. for (var i in data) {
  245. if (i == selectId)
  246. optStr += '<option value="' + data[i].id + '" selected="selected">' + data[i].name + '</option>';
  247. else
  248. optStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
  249. }
  250. $(div).html('');
  251. $(div).html(optStr);
  252. }
  253. // var ViewMap = new HashMap()
  254. // ViewMap.set("/view/mytask/unchecked.html", __inline('/view/mytask/unchecked.html'));
  255. // ViewMap.set("/view/mytask/unexamined.html", __inline('/view/mytask/unexamined.html'));
  256. // ViewMap.set("/view/mytask/undispatched.html", __inline('/view/mytask/undispatched.html'));
  257. // ViewMap.set("/view/mytask/dispatched.html", __inline('/view/mytask/dispatched.html'));
  258. // ViewMap.set("/view/constant/constant.html", __inline('/view/constant/constant.html'));
  259. /**
  260. * @Func 处理长整形时间格式化
  261. * @time long
  262. * @format string 有默认值
  263. */
  264. function timeStamp2String(time, format) {
  265. if (time == "" || time == null)
  266. return;
  267. if (format == undefined || format == "")
  268. format = "yyyy/MM/dd hh:mm:ss";
  269. var datetime = new Date();
  270. datetime.setTime(time);
  271. return datetime.Format(format);
  272. };
  273. /**
  274. * @Func 时间格式化
  275. * @FuncName Format
  276. * (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
  277. */
  278. Date.prototype.Format = function(fmt) {
  279. var o = {
  280. "M+": this.getMonth() + 1,
  281. "d+": this.getDate(),
  282. "H+": this.getHours(),
  283. "m+": this.getMinutes(),
  284. "s+": this.getSeconds(),
  285. "q+": Math.floor((this.getMonth() + 3) / 3),
  286. "S": this.getMilliseconds()
  287. };
  288. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  289. for (var k in o)
  290. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  291. return fmt;
  292. };
  293. String.prototype.trim = function() {
  294. // 用正则表达式将前后空格
  295. // 用空字符串替代。
  296. return this.replace(/(^\s*)|(\s*$)/g, "");
  297. }
  298. /**
  299. * 提示框
  300. */
  301. function tip(data, timeout) {
  302. if (data == undefined || data == '')
  303. return;
  304. layer.msg(data, {
  305. time: (timeout != null) ? timeout : 2000 //20s后自动关闭
  306. });
  307. }
  308. function showPopup4CommonBtns(title, area, divId, btns, callback1, callback2) {
  309. if (!area) area = 'auto';
  310. if (!divId) divId = '#form-div';
  311. //添加常量页面
  312. return layer.open({
  313. type: 1,
  314. area: area,
  315. title: title,
  316. closeBtn: 1,
  317. shadeClose: true,
  318. content: $(divId),
  319. btn: btns,
  320. btnAlign: 'c', //按钮居中
  321. shade: 0, //不显示遮罩
  322. yes: function(index) {
  323. if (callback != false) {
  324. callback();
  325. }
  326. layer.close(index);
  327. }
  328. });
  329. }
  330. function getCurrentUser() {
  331. var user = $.zui.store.get("user")
  332. return user;
  333. }
  334. function hasRole(role) {
  335. var user = getCurrentUser();
  336. var roles = user.roles;
  337. for (var i in roles) {
  338. if (roles[i].name == role) return true;
  339. }
  340. return false;
  341. }
  342. function roleContains(role) {
  343. var user = getCurrentUser();
  344. var roles = user.roles;
  345. for (var i in roles) {
  346. if (roles[i].name.indexOf(role) >= 0) return true;
  347. }
  348. return false;
  349. }
  350. function setCheckmanSelect(div, selectId, notHaveUserId, callback) {
  351. post_common_service("/user/getAllCheckman", null, function(data) {
  352. var optStr = '';
  353. for (var i in data) {
  354. if (data[i].id == notHaveUserId) continue;
  355. if (data[i].id == selectId)
  356. optStr += '<option value="' + data[i].id + '" selected="selected">' + data[i].truename + '</option>';
  357. else
  358. optStr += '<option value="' + data[i].id + '">' + data[i].truename + '</option>';
  359. }
  360. $(div).html('');
  361. $(div).html(optStr);
  362. if (callback) callback();
  363. });
  364. }
  365. function genAppeaFiles(file_src) {
  366. initStringfunc();
  367. var files = file_src.split(",");
  368. var optionStr = "";
  369. for (var i in files) {
  370. var fileSrc = base_image_server_url + files[i];
  371. if (fileSrc.endWith("png") || fileSrc.endWith("jpg") || fileSrc.endWith("ico")) {
  372. if (ISCLIENT) {
  373. optionStr += '<a href="javascript:void(0)" onclick="showClientImg(' + fileSrc + ')"><img src="' + fileSrc + '" style="height:55px;margin:5px;"></a>';
  374. } else {
  375. optionStr += '<a href="' + fileSrc + '" target="_blank"><img src="' + fileSrc + '" style="height:55px;margin:5px;"></a>';
  376. }
  377. } else if (fileSrc.endWith("doc") || fileSrc.endWith("docx")) {
  378. if (ISCLIENT) {
  379. optionStr += '<a href="javascript:void(0)" onclick="downloadClientfile(' + fileSrc + ')"><i class="icon icon-file-word icon-4x" style="vertical-align: middle"></a>';
  380. } else {
  381. optionStr += '<a href="' + fileSrc + '" target="_blank"><i class="icon icon-file-word icon-4x" style="vertical-align: middle"></a>';
  382. }
  383. } else if (fileSrc.endWith("txt")) {
  384. if (ISCLIENT) {
  385. optionStr += '<a href="javascript:void(0)" onclick="downloadClientfile(' + fileSrc + ')"><i class="icon icon-file-code icon-4x" style="vertical-align: middle"></a>';
  386. } else {
  387. optionStr += '<a href="' + fileSrc + '" target="_blank"><i class="icon icon-file-code icon-4x" style="vertical-align: middle"></a>';
  388. }
  389. }
  390. }
  391. return optionStr;
  392. }
  393. initStringfunc();
  394. function initStringfunc() {
  395. String.prototype.endWith = function(str) {
  396. if (str == null || str == "" || this.length == 0 || str.length > this.length) {
  397. return false;
  398. }
  399. if (this.substring(this.length - str.length) == str) {
  400. return true;
  401. } else {
  402. return false;
  403. }
  404. };
  405. String.prototype.startWith = function(str) {
  406. if (str == null || str == "" || this.length == 0 || str.length > this.length) {
  407. return false;
  408. }
  409. if (this.substr(0, str.length) == str) {
  410. return true;
  411. } else {
  412. return false;
  413. }
  414. };
  415. }
  416. function showClientImg(src) {
  417. callFunc("showImage", src);
  418. }
  419. function showClientVideo(src) {
  420. callFunc("showVideo", src);
  421. }
  422. function downloadClientfile(src) {
  423. callFunc("downloadfile", src);
  424. }
  425. function setTeamUserSelect(div, selectId, classId) {
  426. post_common_service("/team/getTeamPersonsByUserClassId/" + classId, null, function(data) {
  427. var optStr = '';
  428. for (var i in data) {
  429. if (data[i].positionid == 4) data[i].truename = data[i].truename + '(班长)';
  430. if (data[i].id == selectId)
  431. optStr += '<option value="' + data[i].id + '" selected="selected">' + data[i].truename + '</option>';
  432. else
  433. optStr += '<option value="' + data[i].id + '">' + data[i].truename + '</option>';
  434. }
  435. $(div).html('');
  436. $(div).html(optStr);
  437. });
  438. }
  439. function getJobList(callback) {
  440. var param = {
  441. "dept_id": 1
  442. };
  443. post_common_service("/job/getList/", param, function(data) {
  444. $.zui.store.set("cache_job_list", data);
  445. callback(data);
  446. });
  447. }
  448. function setJobSelect(div, selectId) {
  449. var jobList = $.zui.store.get("cache_job_list");
  450. if (jobList) {
  451. setJobSelectValue(jobList, div, selectId);
  452. } else {
  453. var param = {
  454. "dept_id": 1
  455. };
  456. post_common_service("/job/getList/", param, function(data) {
  457. setJobSelectValue(data, div, selectId);
  458. });
  459. }
  460. }
  461. function setJobSelectValue(data, div, selectId) {
  462. var optStr = '<option value="">全部</option>';
  463. for (var i in data) {
  464. if (data[i].id == selectId)
  465. optStr += '<option value="' + data[i].id + '" selected="selected">' + data[i].name + '</option>';
  466. else
  467. optStr += '<option value="' + data[i].id + '">' + data[i].name + '</option>';
  468. }
  469. $(div).html('');
  470. $(div).html(optStr);
  471. }
  472. var cache_fee_person_list_map;
  473. function getFeePersonList(callback) {
  474. // var param={
  475. // "dept_id":1
  476. // };
  477. post_common_service("/user/getFsUserList/", {}, function(data) {
  478. $.zui.store.set("cache_fee_person_list", data);
  479. var map = new Map();
  480. for (var i = 0; i < data.length; i++) {
  481. if (!map.get(data[i].organid)) {
  482. map.put(data[i].organid, []);
  483. }
  484. var arr = map.get(data[i].organid);
  485. arr.push(data[i]);
  486. }
  487. cache_fee_person_list_map = map;
  488. callback(data);
  489. });
  490. }
  491. function setFeePersonSelect(div, selectId, deptId) {
  492. var jobList = $.zui.store.get("cache_fee_person_list");
  493. if (deptId) {
  494. var map = cache_fee_person_list_map;
  495. jobList = map.get(deptId);
  496. }
  497. if (jobList) {
  498. setFeePersonSelectValue(jobList, div, selectId);
  499. } else {
  500. post_common_service("/user/getFsUserList/", {}, function(data) {
  501. setFeePersonSelectValue(data, div, selectId);
  502. });
  503. }
  504. }
  505. function setFeePersonSelectValue(data, div, selectId) {
  506. var optStr = '<option value="">全部</option>';
  507. for (var i in data) {
  508. if (data[i].id == selectId)
  509. optStr += '<option value="' + data[i].id + '" selected="selected">' + data[i].truename + '</option>';
  510. else
  511. optStr += '<option value="' + data[i].id + '">' + data[i].truename + '</option>';
  512. }
  513. $(div).html('');
  514. $(div).html(optStr);
  515. }
  516. /**
  517. * 自定义Map对象
  518. */
  519. function Map() {
  520. var mapObj = {};
  521. this.put = function(key, value) {
  522. mapObj[key] = value;
  523. };
  524. this.remove = function(key) {
  525. if (mapObj.hasOwnProperty(key)) {
  526. delete mapObj[key];
  527. }
  528. };
  529. this.get = function(key) {
  530. if (mapObj.hasOwnProperty(key)) {
  531. return mapObj[key];
  532. }
  533. return null;
  534. };
  535. this.getKeys = function() {
  536. var keys = [];
  537. for (var k in mapObj) {
  538. keys.push(k);
  539. }
  540. return keys;
  541. };
  542. // 遍历map
  543. this.each = function(fn) {
  544. for (var key in mapObj) {
  545. fn(key, mapObj[key]);
  546. }
  547. };
  548. this.toString = function() {
  549. var str = "{";
  550. for (var k in mapObj) {
  551. str += "\"" + k + "\" : \"" + mapObj[k] + "\",";
  552. }
  553. str = str.substring(0, str.length - 1);
  554. str += "}";
  555. return str;
  556. }
  557. }
  558. function getTags(url, div, tagDiv, field) {
  559. post_common_service(url, null, function(data) {
  560. if (data) {
  561. var str = "";
  562. for (var i = 0; i < data.length; i++) {
  563. str += '<a href="javascript:void(0)" onclick="addTag(\'' + data[i][field] + '\',\'' + tagDiv + '\')" style="float:left;margin:5px;"><span class="label label-success" style="padding:5px;">' + data[i][field] + '</span></a>';
  564. }
  565. $(div).html(str);
  566. }
  567. });
  568. }
  569. var nowStr;
  570. function getServerTime() {
  571. get_common_service("/comm/getTime", "", function(data) {
  572. nowStr = data;
  573. gettime();
  574. },
  575. function(data) {
  576. nowStr = moment().format('YYYY-MM-DD HH:mm:ss');
  577. gettime();
  578. });
  579. }
  580. function gettime() {
  581. nowStr = moment(nowStr).add(1, 's').format('YYYY-MM-DD HH:mm:ss');
  582. // console.log("时间:"+nowStr);
  583. settime();
  584. }
  585. function settime() {
  586. nowStr = moment(nowStr).format('YYYY-MM-DD HH:mm:ss');
  587. $("#time_p").html(nowStr);
  588. $("#main").css("min-height", window.innerHeight);
  589. var height = window.innerHeight - $("body").height();
  590. $("#foot").css("bottom", height > 0 ? 0 : height);
  591. setTimeout(gettime, 1000);
  592. }
  593. var job_array = new Array();
  594. function getJob() {
  595. post_common_service("/job/getList", {}, function(data) {
  596. job_array = data;
  597. }, function(error) {});
  598. }