common.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. /**
  2. * ajax 加载数据
  3. * @param url 地址
  4. * @param data post数据
  5. * @param calBackFunction 回掉函数
  6. */
  7. function requestData(url, data, calBackFunction) {
  8. var fdStart = url.indexOf("/");
  9. if (fdStart == 0)
  10. url = "http://" + window.location.host + url;
  11. else
  12. url = "http://" + window.location.host + "/" + url;
  13. $.ajax({
  14. type: "POST",
  15. url: url,
  16. data: data,
  17. dataType: "JSON",
  18. timeout: 30000,
  19. async: true,
  20. beforeSend: function () {
  21. //$("body").append(loadDialog);
  22. },
  23. success: function (json) {
  24. if (json != null && json.length == 2 && json[0] == "status=1") {
  25. LayerLoadClose();
  26. window.location.href = "/index.aspx";
  27. return;
  28. } else if (json != null && json.length == 2 && json[0] == "status=2") {
  29. LayerLoadClose();
  30. LayerMsg(json[1]);
  31. return;
  32. }
  33. calBackFunction(json);
  34. },
  35. error: function (xhr, textStatus, errorThrown) {
  36. console.log("进入error---" + url);
  37. console.log("状态码:" + xhr.status);
  38. console.log("状态:" + xhr.readyState) //当前状态,0-未初始化,1-正在载入,2-已经载入,3-数据进行交互,4-完成。
  39. console.log("错误信息:" + xhr.statusText);
  40. console.log("返回响应信息:" + xhr.responseText);//这里是详细的信息
  41. console.log("请求状态:" + textStatus);
  42. console.log(errorThrown);
  43. console.log("请求失败");
  44. //LayerMsg('系统错误');
  45. }
  46. });
  47. }
  48. function requestCheckAuth(permitOid) {
  49. let url = "http://" + window.location.host + "/Tools/AuthPermit.ashx?CheckAuth=" + permitOid;
  50. let CheckAuth = false;
  51. $.ajax({
  52. type: "GET",
  53. url: url,
  54. dataType: "JSON",
  55. timeout: 30000,
  56. async: false,
  57. success: function (json) {
  58. if (json != null && json.length == 2 && json[0] == "status=0") {
  59. CheckAuth = true;
  60. return true;
  61. } else {
  62. return false;
  63. }
  64. },
  65. error: function (xhr, textStatus, errorThrown) {
  66. return false;
  67. }
  68. });
  69. return CheckAuth;
  70. }
  71. /**
  72. * 日期字符串转换为日期类型
  73. * @param 日期时间(格式yyyy-MM-dd)
  74. */
  75. function GetDateFromString(str) {
  76. var strs = str.split('-');
  77. var dt = new Date();
  78. dt.setFullYear(strs[0]);
  79. dt.setMonth(parseInt(strs[1]) - 1);
  80. dt.setDate(strs[2]);
  81. return dt;
  82. }
  83. /**
  84. * 比较两个日期时间(格式yyyy-MM-dd)
  85. * @param time1 时间1
  86. * @param time2 时间2
  87. * @returns time1大于time2返回true,否则返回false
  88. */
  89. function compareTime(time1, time2) {
  90. console.log(time1, time2);
  91. var arr1 = time1.split("-");
  92. var arr2 = time2.split("-");
  93. var date1 = new Date(parseInt(arr1[0]), parseInt(arr1[1]) - 1, parseInt(arr1[2]), 0, 0, 0);
  94. var date2 = new Date(parseInt(arr2[0]), parseInt(arr2[1]) - 1, parseInt(arr2[2]), 0, 0, 0);
  95. if (date1.getTime() > date2.getTime()) {
  96. return true;
  97. } else {
  98. return false;
  99. }
  100. }
  101. // 校验电话格式
  102. function checkPhone(str) {
  103. var re = /^0\d{2,3}-?\d{7,8}$/;
  104. if (re.test(str)) {
  105. return true;
  106. } else {
  107. return false;
  108. }
  109. }
  110. // 校验邮箱
  111. function checkEmail(str) {
  112. //var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
  113. var re = /^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/;
  114. if (re.test(str)) {
  115. return true;
  116. } else {
  117. return false;
  118. }
  119. }
  120. // 校验邮编
  121. function checkPostalCode(str) {
  122. var re = /^[1-9][0-9]{5}$/;
  123. if (re.test(str)) {
  124. return true;
  125. } else {
  126. return false;
  127. }
  128. }
  129. // 去除多余空格 可以更换第二个参数去替换别的
  130. function Trim(str, is_global) {
  131. var result;
  132. result = str.replace(/(^\s+)|(\s+$)/g, "");
  133. if (is_global.toLowerCase() == "g") {
  134. result = result.replace(/\s/g, "");
  135. }
  136. return result;
  137. }
  138. function chooseCompany() {
  139. window.open("../Common/SelectCallBack.aspx?cat=728&field=ParentComoanyName", 'new', 'left=200,top=200,width=600,height=800', false);
  140. //window.open(url, "newwindow", "height=200,width=400", "toolbar =no", "menubar=no", "scrollbars=no", "resizable=no", "location=no", "status=no");
  141. //这些要写在一行
  142. }
  143. // 检查日期是否正确。正确返回true
  144. function check(date) {
  145. return (new Date(date).getDate() == date.substring(date.length - 2));
  146. }
  147. // 保留两位小数
  148. function toDecimal2(x) {
  149. var f = parseFloat(x);
  150. if (isNaN(f)) {
  151. return "";
  152. }
  153. var f = Math.round(x * 100) / 100;
  154. var s = f.toString();
  155. var rs = s.indexOf('.');
  156. if (rs < 0) {
  157. rs = s.length;
  158. s += '.';
  159. }
  160. while (s.length <= rs + 2) {
  161. s += '0';
  162. }
  163. return s;
  164. }
  165. function toDecimal4(x) {
  166. var f = parseFloat(x);
  167. if (isNaN(f)) {
  168. return "";
  169. }
  170. var f = Math.round(x * 10000) / 10000;
  171. var s = f.toString();
  172. var rs = s.indexOf('.');
  173. if (rs < 0) {
  174. rs = s.length;
  175. s += '.';
  176. }
  177. while (s.length <= rs + 4) {
  178. s += '0';
  179. }
  180. return s;
  181. }
  182. document.write("<script src='../Scripts/layer/layer.js' type='text/javascript'></script>");
  183. // 加载弹层
  184. function LayerLoad() {
  185. layer.msg("加载中", {
  186. icon: 16
  187. , shade: 0.6
  188. , time: 0
  189. });
  190. }
  191. // 关闭加载弹层
  192. function LayerLoadClose() {
  193. layer.closeAll('dialog');
  194. }
  195. // 消息框
  196. function LayerMsg(msg) {
  197. var index = layer.msg(msg, {
  198. time: 4000
  199. });
  200. layer.style(index, {
  201. width: 'auto',
  202. height: 'auto'
  203. });
  204. }
  205. // 弹层一个按钮
  206. function LayerAlert(msg, btn, btnFunc) {
  207. if (btn == undefined || btn == null)
  208. btn = "确定";
  209. layer.confirm(msg, {
  210. btn: [btn]
  211. },
  212. function (index) {
  213. if (btnFunc != null) {
  214. btnFunc();
  215. }
  216. layer.close(index);
  217. });
  218. }
  219. // 弹层一个按钮
  220. function LayerAlertEx(msg, t, btn, btnFunc) {
  221. layer.confirm(msg, {
  222. title: t,
  223. btn: [btn]
  224. },
  225. function (index) {
  226. btnFunc();
  227. layer.close(index);
  228. });
  229. }
  230. // 弹层两个按钮
  231. function LayerConfirm(msg, btn1, btn2, btn1Func, btn2Func) {
  232. layer.confirm(msg, {
  233. btn: [btn1, btn2]
  234. },
  235. function (index) {
  236. btn1Func();
  237. layer.close(index);
  238. },
  239. function (index) {
  240. if ($.isFunction(btn2Func))
  241. btn2Func();
  242. layer.close(index);
  243. });
  244. }
  245. // 弹层两个按钮,一个关闭
  246. function LayerConfirmOk(msg, btn1, btn2, btn1Func) {
  247. layer.confirm(msg, {
  248. btn: [btn1, btn2]
  249. },
  250. function (index) {
  251. btn1Func();
  252. layer.close(index);
  253. },
  254. function (index) {
  255. layer.close(index);
  256. });
  257. }
  258. // 发送邮件 -- eamil代表接收人的地址
  259. function Email(email) {
  260. location.href = "mailto:" + email + "";
  261. }
  262. // 返回个带0的整数
  263. function returnNumber(param) {
  264. if (param < 10) {
  265. return "0" + param
  266. }
  267. return param;
  268. }
  269. function DateDiff(sDate1, sDate2) { //sDate1和sDate2是2002-12-18格式
  270. var aDate, oDate1, oDate2, iDays
  271. aDate = sDate1.split("-")
  272. oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为12-18-2002格式
  273. aDate = sDate2.split("-")
  274. oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
  275. iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) //把相差的毫秒数转换为天数
  276. return iDays
  277. }
  278. function MonthDiff(date1, date2) {
  279. // 拆分年月日
  280. date1 = date1.split('-');
  281. // 得到月数
  282. totalMonth1 = parseInt(date1[0]) * 12 + parseInt(date1[1]);
  283. // 拆分年月日
  284. date2 = date2.split('-');
  285. // 得到月数
  286. totalMonth2 = parseInt(date2[0]) * 12 + parseInt(date2[1]);
  287. var m = Math.abs(totalMonth1 - totalMonth2);
  288. if (parseInt(date2[2]) >= parseInt(date1[2])) {
  289. m = m + 1;
  290. }
  291. return m;
  292. }
  293. $.fn.populateForm = function (data) {
  294. return this.each(function () {
  295. var formElem, name;
  296. if (data == null) { this.reset(); return; }
  297. for (var i = 0; i < this.length; i++) {
  298. formElem = this.elements[i];
  299. //checkbox的name可能是name[]数组形式
  300. name = (formElem.type == "checkbox") ? formElem.name.replace(/(.+)\[\]$/, "$1") : formElem.name;
  301. if (data[name] == undefined) continue;
  302. switch (formElem.type) {
  303. case "checkbox":
  304. if (data[name] == "") {
  305. formElem.checked = false;
  306. } else {
  307. //数组查找元素
  308. if (data[name] == formElem.value) {
  309. formElem.checked = true;
  310. } else {
  311. formElem.checked = false;
  312. }
  313. }
  314. break;
  315. case "radio":
  316. if (data[name] == "") {
  317. formElem.checked = false;
  318. } else if (formElem.value == data[name]) {
  319. formElem.checked = true;
  320. }
  321. break;
  322. case "button": break;
  323. case "select": formElem.value = data[name].value; break;
  324. default: formElem.value = data[name];
  325. }
  326. }
  327. });
  328. };
  329. var windowObj = {
  330. company: 'company',
  331. contact: 'contact',
  332. saleOrder: 'saleOrder',
  333. configurationItem: 'configurationItem',
  334. subscription: 'subscription',
  335. quote: 'quote',
  336. quoteItem: 'quoteItem',
  337. contract: 'contract',
  338. contractService: 'contractService',
  339. contractCost: "contractCost",
  340. contractCharge: 'contractCharge',
  341. contractNotRule: 'contractNotRule',
  342. notes: 'notes',
  343. todos: 'todos',
  344. attachment: 'attachment',
  345. holiday: 'holiday',
  346. holidaySet: 'holidaySet',
  347. invoice: 'invoice',
  348. inventoryLocation: 'inventoryLocation',
  349. inventoryOrder: 'inventoryOrder',
  350. inventoryItem: 'inventoryItem',
  351. inventoryItemSerailNum: 'inventoryItemSerailNum',
  352. inventoryOrderItem: 'inventoryOrderItem',
  353. inventoryOrderPaymentPlan: 'inventoryOrderPaymentPlan',
  354. project: 'project',
  355. projectReport: 'projectReport',
  356. projectTeam: 'projectTeam',
  357. projectCalendar: 'projectCalendar',
  358. projectAttach: 'projectAttach',
  359. projectUdf: 'projectUdf',
  360. quoteEmailTmpl: 'quoteEmailTmpl',
  361. expense: "expense",
  362. expenseReport: "expenseReport",
  363. workEntry: "workEntry",
  364. task: "task",
  365. ticket: "ticket",
  366. service: "service",
  367. serviceBundle: "serviceBundle",
  368. workflow: "workflow",
  369. timeoffPolicy: "timeoffPolicy",
  370. masterTicket: 'masterTicket',
  371. serviceCall: "serviceCall",
  372. timeoffRequest: 'timeoffRequest',
  373. kbArticle: "kbArticle",
  374. select: "select",
  375. appointment: "appointment",
  376. resource: "resource",
  377. resourcePolicy: "resourcePolicy",
  378. contactGroup: "contactGroup",
  379. opportunity: "opportunity",
  380. contactActionTemp: "contactActionTemp",
  381. formTemp: "formTemp",
  382. general: "general",
  383. generalCate: "generalCate",
  384. resourceWorkGroup: "resourceWorkGroup",
  385. resourceApproval: "resourceApproval",
  386. queue: "queue",
  387. logo: "logo",
  388. board: "board",
  389. CheckListLibrary: "CheckListLibrary",
  390. shareDashboard: "shareDashboard",
  391. costCode: "costCode",
  392. Region: "Region",
  393. sla: "sla",
  394. slaItem: "slaItem",
  395. saleQuota: "saleQuota",
  396. dataImport: "dataImport",
  397. addToOtherResWorkList: "addToOtherResWorkList",
  398. InvoiceApply: "InvoiceApply",
  399. InvoiceApplyView: "InvoiceApplyView",
  400. InvoiceApplyActualInvoic: "InvoiceApplyActualInvoic",
  401. NoticeTempl: "NoticeTempl",
  402. ServiceSerialized: "ServiceSerialized",
  403. }
  404. var windowType = {
  405. blank: '_blank',
  406. add: 'add',
  407. edit: 'edit',
  408. view: 'view',
  409. manage: 'manage',
  410. }
  411. //正则获取url中的参数
  412. function URL_Request(strName) {
  413. debugger;
  414. var strHref = document.location.toString();
  415. var intPos = strHref.indexOf("?");
  416. var strRight = strHref.substr(intPos + 1); //==========获取到右边的参数部分
  417. var arrTmp = strRight.split("&"); //=============以&分割成数组
  418. for (var i = 0; i < arrTmp.length; i++) //===========循环数组
  419. {
  420. var dIntPos = arrTmp[i].indexOf("=");
  421. var paraName = arrTmp[i].substr(0, dIntPos);
  422. var paraData = arrTmp[i].substr(dIntPos + 1);
  423. if (paraName.toUpperCase() == strName.toUpperCase()) {
  424. return paraData;
  425. }
  426. }
  427. return "";
  428. }
  429. var permitAuhtOid = {
  430. 工时1173: 1173,
  431. 工时1172: 1172,
  432. 工时1107: 1107,
  433. 工时1144: 1144,
  434. 休假1148: 1148,
  435. 客户24: 24,
  436. 待办219: 219,
  437. 待办223: 223,
  438. 待办225: 225,
  439. 备注212: 212,
  440. 备注213: 213,
  441. 备注214: 214,
  442. 商机125: 125,
  443. UDF832: 832,
  444. 知识库1734: 1734,
  445. 知识库1737: 1737,
  446. 知识库1738: 1738,
  447. 知识库1739: 1739,
  448. 配送1026: 1026,
  449. 配送1031: 1031,
  450. 配送1027: 1027,
  451. 配送1028: 1028,
  452. 仪表板1923:1923,
  453. 仪表板1933: 1933,
  454. 仪表板1934: 1934,
  455. 仪表板1935: 1935,
  456. 仪表板1936: 1936,
  457. 仪表板1937: 1937,
  458. 仪表板1938: 1938,
  459. 配置项导入3621: 3621,
  460. 附件2873: 2873,
  461. 附件2876: 2876,
  462. 附件2879: 2879,
  463. 采购订单1015: 1015,
  464. 项目827: 827,
  465. 工单成本和费用1615: 1615,
  466. 工单成本和费用1616: 1616,
  467. 工单成本和费用809: 809,
  468. 工单成本和费用810: 810,
  469. 销售订单187: 187,
  470. 合同产品646: 646,
  471. 项目产品和费用808: 808,
  472. 合同产品645: 645,
  473. 费用报表1136: 1136,
  474. 合同产品651: 651,
  475. 费用报表1137:1137
  476. }