HyUtil.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. if (typeof HyUtil == 'undefined') {
  2. HyUtil = {};
  3. };
  4. $().ready(function() {
  5. HyUtil.init();
  6. });
  7. HyUtil.init = function() {
  8. HyUtil.formatDate();
  9. };
  10. /**
  11. * 绑定日期格式化
  12. */
  13. HyUtil.formatDate = function() {
  14. $("[datefmt]").live('change', function() {
  15. var me = $(this), val = me.val();
  16. if (!$.isEmpty(val)) {
  17. var datefmt = me.attr("datefmt");
  18. var arry = val.split(".");
  19. var sTime = arry[0].replace(/\-/g, "/");
  20. if(datefmt == "yyyyMM" ){
  21. sTime = sTime.substr(0,4) + "/" + sTime.substr(4,5) + "/01";
  22. }
  23. var nowDate = new Date(sTime).Format(datefmt);
  24. me.val(nowDate);
  25. }
  26. });
  27. };
  28. /**
  29. * 获取某年某月的天数
  30. */
  31. HyUtil.getDaysInMonth = function(year, month) {
  32. month = parseInt(month, 10);
  33. var temp = new Date(year, month, "0");
  34. var day = temp.getDate();
  35. return temp.getDate();
  36. };
  37. /**
  38. * 计算时间段内的总金额,头一月和尾一月独立计算
  39. */
  40. HyUtil.calMoneyWithMount = function(startTime, endTime, money) {
  41. startTime = startTime.replace(/\-/g, "/");
  42. endTime = endTime.replace(/\-/g, "/");
  43. var startDate = new Date(startTime); // 开始时间
  44. var endDate = new Date(endTime); // 结束时间
  45. var startDay = HyUtil.getDaysInMonth(startDate.getFullYear(), startDate
  46. .getMonth() + 1); // 获取开始年月拥有多少天数
  47. var endDay = HyUtil.getDaysInMonth(endDate.getFullYear(), endDate
  48. .getMonth() + 1); // 获取结束年月拥有多少天数
  49. var sDay = startDay - startDate.getDate() + 1; // 第一月有多少天
  50. var eDay = endDate.getDate(); // 最后一月有多少天
  51. var num = 0;
  52. var year = endDate.getFullYear() - startDate.getFullYear();
  53. num += year * 12;
  54. var month = endDate.getMonth() - startDate.getMonth();
  55. num += month;
  56. var amountAll = 0; // 总租金
  57. var amountTemp = 0; // 中间月租金
  58. var amountFirst = 0;// 头月租金
  59. var amountLast = 0; // 尾月租金
  60. if (num >= 2) {
  61. amountTemp = money * (num - 1); // 月租金
  62. amountFirst = sDay * money / startDay;
  63. amountLast = eDay * money / endDay;
  64. }
  65. if (num == 1) {
  66. amountFirst = sDay * money / startDay;
  67. amountLast = eDay * money / endDay;
  68. }
  69. if (num < 1) {
  70. sDay = endDate.getDate() - startDate.getDate() + 1;
  71. amountFirst = sDay * money / startDay;
  72. }
  73. var amountAll = Number(amountTemp.toFixed(2))
  74. + Number(amountFirst.toFixed(2)) + Number(amountLast.toFixed(2)); // 总租金
  75. return amountAll.toFixed(2);
  76. };
  77. /**
  78. * 显示租户信息
  79. */
  80. HyUtil.showZh = function(zhid) {
  81. if (zhid == null || zhid == "") {
  82. $.ligerDialog.warn("请先选择租户!", "提示");
  83. return;
  84. }
  85. var url = __ctx
  86. + "/platform/form/bpmDataTemplate/detailData_shxxwh.ht?__pk__="
  87. + zhid;
  88. DialogUtil.open({
  89. height : 600,
  90. width : 800,
  91. title : "查看租户信息",
  92. url : url,
  93. isResize : true
  94. });
  95. };
  96. /**
  97. * 显示品牌信息
  98. */
  99. HyUtil.showPP = function(ppId) {
  100. if (!ppId) {
  101. $.ligerDialog.warn("请先选择品牌!", "提示");
  102. return;
  103. }
  104. var url = __ctx
  105. + "/platform/form/bpmDataTemplate/detailData_ppxxdj.ht?__pk__="
  106. + ppId;
  107. DialogUtil.open({
  108. height : 600,
  109. width : 800,
  110. title : "查看品牌信息",
  111. url : url,
  112. isResize : true
  113. });
  114. };
  115. /**
  116. * 显示店铺明细
  117. */
  118. HyUtil.showDpmx = function (pwID){
  119. if(pwID == null || pwID == ""){
  120. $.ligerDialog.warn("请先选择店铺!","提示");
  121. return ;
  122. }
  123. var url=__ctx + "/produce/report/DPMX.ht?op=write&WLDPID="+pwID;
  124. DialogUtil.open({
  125. height:600,
  126. width: 800,
  127. title : "查看店铺信息",
  128. url: url,
  129. isResize: true
  130. });
  131. };
  132. /**
  133. * 验证合同号是否唯一
  134. */
  135. HyUtil.validateHth = function() {
  136. /*
  137. * $("input[name='m:me_zlhtqd:hth']").change(function(){ var hth =
  138. * $(this).val(); if(!hth) return; if(hth.length != 9){
  139. * $.ligerDialog.warn("合同号为:三位门店号 + 三位楼层号 + 三位本楼层流水","提示"); return; } var
  140. * conf = {aliasName:'validateHTHisExist',hth:hth}; var result =
  141. * RunAliasScript(conf); if(result.result === 0) return;
  142. *
  143. * hth = hth.substring(0,6); if(result.isSuccess == 1)
  144. * $.ligerDialog.error(result.msg,"哎呦出错了!"); else
  145. * $.ligerDialog.error("该合同号已经存在!","提示");
  146. *
  147. * $(this).val(hth); });
  148. */
  149. };
  150. /**
  151. * 与目标数据大小进行比较,只读取 name+_td ,非只读去input $:+name
  152. *
  153. * @param currentRow
  154. * 当前行
  155. * @param tragetRow
  156. * 目标行
  157. * @param name
  158. * 名字
  159. */
  160. HyUtil.fillColorByCompare = function(currentRow, tragetRow, name) {
  161. var curObj = $("[name$=':" + name + "']", currentRow);
  162. if (curObj.length == 0) { /* 只读状态 */
  163. curObj = $("[name='" + name + "_td']", currentRow);
  164. var targetVal = FormUtil.commaback($("[name='" + name + "_td']",
  165. tragetRow).text().trim());
  166. var currentVal = FormUtil.commaback(curObj.text().trim());
  167. } else {
  168. var targetVal = FormUtil.commaback($("[name$=':" + name + "']",
  169. tragetRow).val()); // 比较对象金额
  170. var currentVal = FormUtil.commaback(curObj.val());
  171. if (!targetVal || !currentVal) {
  172. return; // 对象为0不再计算
  173. }
  174. }
  175. if (currentVal > targetVal) {
  176. curObj.css("color", "red");
  177. } else if (currentVal < targetVal) {
  178. curObj.css("color", "green");
  179. } else {
  180. curObj.css("color", "");
  181. }
  182. };
  183. /**
  184. * 日期加上多少天 type: m=2/d=1/y=3 number:几天
  185. */
  186. HyUtil.getNewDataStr = function(curDateStr, number, type) {
  187. if (!curDateStr)
  188. return "";
  189. curDateStr = curDateStr.replace(/\-/g, "/");
  190. var curDate = new Date(curDateStr);
  191. if (type == 1)
  192. curDate.setDate(curDate.getDate() + number);
  193. if (type == 2)
  194. curDate.setMonth(curDate.getMonth() + number);
  195. if (type == 3)
  196. curDate.setFullYear(curDate.getFullYear() + number);
  197. var y = curDate.getFullYear();
  198. var m = curDate.getMonth() + 1;
  199. var d = curDate.getDate();
  200. if (m <= 9)
  201. m = "0" + m;
  202. if (d <= 9)
  203. d = "0" + d;
  204. var cdate = y + "-" + m + "-" + d;
  205. return cdate; // 开始时间
  206. };
  207. /**
  208. * 分解
  209. */
  210. HyUtil.decompose = function(sjd, ksrq, jsrq, zj, gzid, mbxs, type) {
  211. if(!zj)
  212. zj =0;
  213. if (!type)
  214. type = 0;
  215. var paramJson = {
  216. jlbh : sjd,
  217. ksrq : ksrq,
  218. jsrq : jsrq,
  219. yzj : zj,
  220. zjjsbz : type
  221. };
  222. if (mbxs)
  223. paramJson.mbxs = mbxs;
  224. if (gzid)
  225. paramJson.gzid = gzid;
  226. var jsonParams = [];
  227. jsonParams.push(paramJson);
  228. var conf = {
  229. aliasName : 'decompose',
  230. paramJson : JSON.stringify(jsonParams)
  231. };
  232. var json = RunAliasScript(conf);
  233. if (json.isSuccess == 0) {
  234. return JSON.parse(json.result);
  235. } else {
  236. $.ligerDialog.error("分解失败:" + json.msg, "提示信息");
  237. return [];
  238. }
  239. };
  240. /**
  241. * 显示分解,
  242. * <div type="subtable" tabledesc="月度租金分解" tablename="me_zlhtqd_ydzjfj">
  243. * <table class="listTable" id="me_zlhtqd_ydzjfj">
  244. * 一定要这样子设置
  245. */
  246. HyUtil.showDecompose = function(tableName,xh,xhVal){
  247. var $tableDiv =$("div[tablename='"+tableName+"']");
  248. var $tableName = $("#"+tableName);
  249. $tableDiv.show();
  250. $(".listRow:visible",$tableDiv).hide(); /*先隐藏全部,在显示个体*/
  251. var $tr = $("[name$=':"+xh+"'][value=" + xhVal + "]",$tableDiv).closest("tr");
  252. $tr.show();
  253. handRowEvent(null,$tr);// 重新计算序号
  254. $.ligerDialog.open({
  255. width: 900,
  256. height:500,
  257. title: '查看分解信息',
  258. isResize:true,
  259. showMax : false,
  260. showToggle : true,
  261. allowClose : false,
  262. isDrag : false,
  263. modal:true,
  264. target:$tableName,
  265. buttons: [{ text: '确定', onclick:function(item,dialog){
  266. $tableDiv.append($tableName);
  267. $tableDiv.hide();
  268. $.ligerDialog.hide();
  269. $.ligerDialog.close();
  270. }}]
  271. });
  272. };
  273. /**
  274. * 根据【付款天数】获取【联营结算日】,
  275. * 付款天数为5时、结算日为:5、10、15、20、25;付款天数为10时,结算日为:10、20;
  276. * 付款天数为20时,结算日为20;付款天数等于大于30时,结算日为空;
  277. */
  278. HyUtil.getJsrByFkts = function(fkts){
  279. var rtVal = "";
  280. switch(fkts){
  281. case "5":
  282. rtVal = "5、10、15、20、25";
  283. break;
  284. case "10":
  285. rtVal = "10、20";
  286. break;
  287. case "20":
  288. rtVal = "20";
  289. break;
  290. default:
  291. }
  292. return rtVal;
  293. }
  294. /**
  295. * 禁止右键
  296. */
  297. HyUtil.unbindContextMenuEvent = function (tableName){
  298. $("div[tablename='"+tableName+"']").find("tr[class='listRow']").unbind("contextmenu");
  299. }
  300. /**
  301. * 将数值四舍五入后格式化.
  302. *
  303. * @param num 数值(Number或者String)
  304. * @param cent 要保留的小数位(Number)
  305. * @return 格式的字符串,如'1,234,567.45'
  306. * @type String
  307. */
  308. HyUtil.commafy = function (num,cent){
  309. num = num.toString().replace(/\$|\,/g,'');
  310. // 检查传入数值为数值类型
  311. if(isNaN(num))
  312. num = "0";
  313. // 获取符号(正/负数)
  314. sign = (num == (num = Math.abs(num)));
  315. num = Math.floor(num*Math.pow(10,cent)+0.50000000001); // 把指定的小数位先转换成整数.多余的小数位四舍五入
  316. cents = num%Math.pow(10,cent); // 求出小数位数值
  317. num = Math.floor(num/Math.pow(10,cent)).toString(); // 求出整数位数值
  318. cents = cents.toString(); // 把小数位转换成字符串,以便求小数位长度
  319. // 补足小数位到指定的位数
  320. while(cents.length<cent)
  321. cents = "0" + cents;
  322. // 对整数部分进行千分位格式化.
  323. for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
  324. num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  325. if (cent > 0)
  326. return (((sign)?'':'-') + num + '.' + cents);
  327. else
  328. return (((sign)?'':'-') + num);
  329. }