xycpb.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. /*【协议呈批】**/
  2. $(function() {
  3. loadChangeSffs();
  4. $("div[tablename='op_xycpb_ydzjfj']").hide(); /* 【月度租金分解】不能直接控制隐藏,否则权限控制不了,先隐藏全部,在显示个体 */
  5. });
  6. /* 租赁时间变化事件* */
  7. function zlsjChangeEvent() {
  8. validateZujinBiaozhunDates();
  9. $("[name='s:op_xycpb_klzgz:sjd']").trigger("change");
  10. validateMysfxm();
  11. }
  12. /* 校验临时场地子表填充数据是否重复* */
  13. function checkDataBeforeInsert(data, tableName) {
  14. if (tableName == 'op_xycpb_lscd') {
  15. var rows = $(".listRow", $("[tableName='" + tableName + "']")); // 左右子表列
  16. for ( var i = 0, row; row = rows[i++];) {
  17. var id = $("[name='s:" + tableName + ":cddm']", $(row)).val(); // 唯一值
  18. if (id == data.WLDPDM) { // 对话框,返回数据的那列
  19. $.ligerDialog.warn(data.WLDPDM + "已经存在了!", "提示信息");
  20. return false;
  21. }
  22. }
  23. // 校验该铺位是否被租出去
  24. var zuLinStartDate = $("[name='m:op_xycpb:zlyxqq']").val();
  25. if (!zuLinStartDate) {
  26. $.ligerDialog.warn("尚未输入开始日期!", '请核查');
  27. return false;
  28. }
  29. /*var conf = {
  30. aliasName : 'validatePuweiIsUsed',
  31. pwid : data.WLDPID,
  32. sDate : zuLinStartDate
  33. };
  34. var json = RunAliasScript(conf);
  35. if (json.isSuccess == 1) {
  36. $.ligerDialog.warn(json.msg);
  37. return false;
  38. } else if (json.result) {
  39. $.ligerDialog.warn("该铺位到期日期为:" + json.result + ",请核查!");
  40. return false;
  41. }*/
  42. }
  43. return true;
  44. }
  45. /* 表租金标准信息 添加行事件 */
  46. function op_xycpb_zjbzxxAddRowAfterEvent(row) {
  47. // 取出最后一行序号、再次基础上加
  48. var preRow = $(".listRow:visible", $("[tablename='op_xycpb_zjbzxx']")).not(
  49. row).last();
  50. var preNx = $("[name$=':xh']", preRow).val();
  51. if (!preNx)
  52. preNx = 0;
  53. $("[name$=':xh']", row).val(1 + Number(preNx));
  54. $("[name$=':sjd']", row).val(1 + Number(preNx));
  55. validateZujinBiaozhunDates(row);
  56. };
  57. // 校验租金标准 时间
  58. function validateZujinBiaozhunDates(curRow) {
  59. // 租赁有效期起,止
  60. var zuLinStartDate = $("[name='m:op_xycpb:zlyxqq']").val();
  61. var zuLinEndDate = $("[name='m:op_xycpb:zlyxqz']").val();
  62. if ((!zuLinStartDate || !zuLinEndDate) && curRow) {
  63. $.ligerDialog.warn("尚未输入租赁起止日期!", '请核查');
  64. $(curRow).remove();
  65. return;
  66. }
  67. var rows = $(".listRow:visible", $("[tablename='op_xycpb_zjbzxx']"));
  68. for(var i=0,row;row=rows[i++];){
  69. if(i>1){
  70. // 处理比较颜色
  71. HyUtil.fillColorByCompare(row,$(rows[i-2]),"dj"); // 单价
  72. HyUtil.fillColorByCompare(row,$(rows[i-2]),"zj"); // 租金
  73. HyUtil.fillColorByCompare(row,$(rows[i-2]),"zzj"); // 总租金
  74. }
  75. if(zuLinStartDate.length ==0) continue; // 如果只读状态不再判断其他
  76. if(i>1){
  77. // 开始日期等于上个结束日期加1
  78. var startDate = HyUtil.getNewDataStr($("[name$=':jsrq']",$(rows[i-2])).val(),1,1);
  79. $("[name$=':ksrq']",$(row)).val(startDate);
  80. }else{
  81. var differTotalStartDate = FormDate.compareDate($("[name$=':ksrq']",$(row)).val(), zuLinStartDate);
  82. if(differTotalEndDate>=0) {
  83. $.ligerDialog.warn("当前开始日期不能早于 租赁开始日期!",'请核查');
  84. }
  85. $("[name$=':ksrq']",$(row)).val(zuLinStartDate);
  86. }
  87. var differTotalEndDate = FormDate.compareDate($("[name$=':jsrq']",$(row)).val(), zuLinEndDate);
  88. if(differTotalEndDate<0) {
  89. $.ligerDialog.warn("当前结束日期不能晚于 租赁有效期止!",'请核查');
  90. $("[name$=':jsrq']",$(row)).val("");
  91. return ;
  92. }
  93. }
  94. $("[name='s:op_xycpb_klzgz:sjd']").trigger("change");
  95. }
  96. /* 修改租金规则 */
  97. function changeZujinGz(obj) {
  98. var curRow = $(obj).closest(".listRow");
  99. var danJia = $("[name$=':dj']", curRow);
  100. var zuJin = $("[name$=':zj']", curRow);
  101. var rule = $(obj).val();
  102. if (rule == "2" || rule == "4") { // 纯扣
  103. danJia.val(0);
  104. zuJin.val(0);
  105. danJia.attr("readonly", "readonly");
  106. zuJin.attr("readonly", "readonly");
  107. } else {
  108. danJia.removeAttr("readonly");
  109. zuJin.removeAttr("readonly");
  110. }
  111. danJia.trigger("change");
  112. zuJin.trigger("change");
  113. }
  114. /**
  115. * 单价计算总租金 trigger 'dj'/'zj' 触发者 obj = this
  116. */
  117. function calZongZuJin(obj) {
  118. var trigger = $(obj).attr("name").split(":")[2];
  119. var curRow = $(obj).closest(".listRow");
  120. var val = FormUtil.commaback($(obj).val());
  121. var mianJi = $("[name='m:op_xycpb:jzmj']").val();
  122. if (!mianJi) {
  123. $.ligerDialog.warn(" 合同建筑面积不能为空!", '请核查');
  124. return;
  125. }
  126. var zuJin, danJia;
  127. /* 如果是单价 */
  128. if ('dj' == trigger) {
  129. danJia = val;
  130. zuJin = mianJi * danJia;
  131. $("[name$=':zj']", curRow).val(FormMath.tofixed(zuJin, 2));
  132. } else if ('zj' == trigger) {
  133. zuJin = val;
  134. danJia = zuJin / mianJi;
  135. $("[name$=':dj']", curRow).val(FormMath.tofixed(danJia, 2));
  136. }
  137. var baoDiType = $("[name$=':bdxx']", curRow).val();
  138. var startDate = $("[name$=':ksrq']", curRow).val();
  139. var endDate = $("[name$=':jsrq']", curRow).val();
  140. if (baoDiType == "0") { // 按月
  141. var zongZujin = HyUtil.calMoneyWithMount(startDate, endDate, zuJin);
  142. } else {
  143. var days = FormDate.dateVal(startDate, endDate, "day");
  144. var zongZujin = zuJin * days;
  145. }
  146. zongZujin = FormMath.tofixed(zongZujin, 2);
  147. $("[name$=':zzj']", curRow).val(zongZujin).trigger("change");
  148. }
  149. /* 加载时,改变【每月收费项目】的【收费方式】 */
  150. function loadChangeSffs() {
  151. var sffs = $("[name$=':sffs']:visible", $("[tablename='op_xycpb']"));
  152. sffs.each(function(i) {
  153. changeSffs(this);
  154. });
  155. }
  156. /* 改变【每月收费项目】的【收费方式】 */
  157. function changeSffs(obj) {
  158. var $tr = $(obj).closest("tr");
  159. var sffs = $("[name$=':sffs']", $tr).val(); /* 收费方式 */
  160. $("[name$=':dj']", $tr).off();
  161. switch (sffs) {
  162. case "0": /* 固定金额类型 : 只能录入收费金额 */
  163. case "4":
  164. $("[name$=':dj']", $tr).attr("readonly", "readonly").val("");
  165. $("[name$=':sfje']", $tr).removeAttr("readonly");
  166. $("[name$=':kl']", $tr).attr("readonly", "readonly").val("");
  167. break;
  168. case "1": /* 比率类型:只能录入比率 */
  169. case "2":
  170. case "5":
  171. $("[name$=':sfgz']", $tr).val("");
  172. $("[name$=':sfgzID']", $tr).val("");
  173. $("[name$=':dj']", $tr).attr("readonly", "readonly").val("");
  174. $("[name$=':sfje']", $tr).attr("readonly", "readonly").val("");
  175. $("[name$=':kl']", $tr).removeAttr("readonly");
  176. break;
  177. case "3": /* 每平方米单价类型:只能录入单价 */
  178. $("[name$=':dj']", $tr).removeAttr("readonly");
  179. $("[name$=':sfje']", $tr).attr("readonly", "readonly").val("");
  180. $("[name$=':kl']", $tr).attr("readonly", "readonly").val("");
  181. // 计算价格
  182. $("[name$=':dj']", $tr).on("blur", function() {
  183. var dj = FormUtil.commaback($(this).val());
  184. var curRow = $(this).closest(".listRow");
  185. var mianJi = $("[name='m:op_xycpb:jzmj']").val();
  186. if (!mianJi) {
  187. $.ligerDialog.warn("尚未生成面积");
  188. }
  189. $("[name$=':sfje']", curRow).val(FormMath.tofixed(dj * mianJi, 2));
  190. });
  191. break;
  192. default:
  193. }
  194. }
  195. /* 校验每月收费项目 */
  196. function validateMysfxm() {
  197. var zuLinStartDate = $("[name='m:op_xycpb:zlyxqq']").val();
  198. var zuLinEndDate = $("[name='m:op_xycpb:zlyxqz']").val();
  199. var sfxm = $(".listRow:visible", $("[tablename='op_xycpb_mysfxm']"));
  200. var sfxmArray = [];
  201. for ( var i = 0, row; row = sfxm[i++];) {
  202. var ksrq = $("[name$=':ksrq']", $(row)).val();
  203. var jsrq = $("[name$=':jsrq']", $(row)).val();
  204. if (!ksrq)
  205. continue;
  206. var differTotalStartDate = FormDate.compareDate(ksrq, zuLinStartDate);
  207. if (differTotalStartDate > 0) {
  208. $.ligerDialog.warn("每月收费项目开始日期不能早于 租赁开始日期!", '请核查');
  209. $("[name$=':ksrq']", $(row)).val("")
  210. }
  211. var differTotalEndDate = FormDate.compareDate(jsrq, zuLinEndDate);
  212. if (differTotalEndDate < 0) {
  213. $.ligerDialog.warn("每月收费项目结束日期不能晚于 租赁有效期止!", '请核查');
  214. $("[name$=':jsrq']", $(row)).val("")
  215. }
  216. var curSfxmID = $("[name$=':sfxmID']", $(row)).val();
  217. if (curSfxmID) {
  218. for ( var j = 0, prevSfxm; prevSfxm = sfxmArray[j++];) {
  219. var thisSfxmId = prevSfxm.split("$")[0];
  220. /* 当前收费项目第二次出现 */
  221. if (thisSfxmId == curSfxmID) {
  222. var differToPrevDate = FormDate.compareDate(ksrq, prevSfxm
  223. .split("$")[1]);
  224. if (differToPrevDate >= 0) {
  225. $.ligerDialog.warn("同一收费项目日期不得重复!", '请核查');
  226. $("[name$=':ksrq']", $(row)).val("");
  227. }
  228. }
  229. }
  230. sfxmArray.push(curSfxmID + "$" + jsrq);
  231. }
  232. }
  233. }
  234. /* 结算标准信息 删除行事件 */
  235. function op_xycpb_zjbzxxDelRowBeforeEvent(row) {
  236. var xh = $("[name$=':xh']", row).val();
  237. $("[name='s:op_xycpb_bdxx:xh'][value=" + xh + "]").closest("tr").remove();/* 清除旧的记录 */
  238. }
  239. /* 分解所有结算标准信息 */
  240. function decomposeAllJs(tableName, fenjieTable) {
  241. var $jsbzxxTrs = $(".listRow:visible", $("[tablename='" + tableName + "']"));
  242. $jsbzxxTrs.each(function(i) {
  243. decomposeSingle($(this), fenjieTable);
  244. });
  245. }
  246. function decomposeAllYzj() {
  247. decomposeAllJs('op_xycpb_zjbzxx', 'op_xycpb_ydzjfj');
  248. }
  249. function decomposeSingleYzj() {
  250. decomposeSingleJs('op_xycpb_zjbzxx', 'op_xycpb_ydzjfj');
  251. }
  252. /* 单个分解 */
  253. function decomposeSingleJs(tableName, fenjieTable) {
  254. var $jsbzxxTrs = $("input[name$=':fjsj']:checked",$("div[tablename='"+tableName+"']")).closest("tr");
  255. if($jsbzxxTrs.length ==0){
  256. $.ligerDialog.warn("请选择要分解的数据!","提示信息");
  257. return;
  258. }
  259. // 分解
  260. decomposeSingle($jsbzxxTrs,fenjieTable);
  261. }
  262. /*
  263. * 【通过分解目标行来分解信息,将结果输出至分解表】 被选中的行:selectRow,分解表的表明fenJieTable
  264. */
  265. function decomposeSingle(selectRow, fenJieTable) {
  266. var xh = selectRow.find("[name$=':xh']").val();
  267. if (!xh) {
  268. $.ligerDialog.warn("请选择要分解的时间段", "提示");
  269. return;
  270. }
  271. // 分解表
  272. var fenJieTableDiv = $("div[tablename='" + fenJieTable + "']");
  273. /* 将序号与当前选中行所有分解信息删除 */
  274. $("[name$=':xh'][value=" + xh + "]", fenJieTableDiv).closest("tr").remove(); /* 清除旧的记录 */
  275. var sjd = $("[name$=':xh']", selectRow).val(); // 序号
  276. var ksrq = $("[name$=':ksrq']", selectRow).val();
  277. var jsrq = $("[name$=':jsrq']", selectRow).val();
  278. var type = $("[name$=':bdxx']", selectRow).val();
  279. var zj = FormUtil.commaback($("[name$=':zj']", selectRow).val());
  280. var sfgz = $("[name='m:op_xycpb:zjsfgzID']").val();
  281. var jsonData = HyUtil.decompose(sjd, ksrq, jsrq, zj, sfgz, "", type);
  282. /* 填充数据 */
  283. for ( var i = 0, c; c = jsonData[i++];) {
  284. FormUtil.addRow(fenJieTableDiv);
  285. var rowcount = $("input[name$=':ny']", fenJieTableDiv).length;
  286. $($("input[name$=':xh']", fenJieTableDiv).get(rowcount - 1)).val(xh);
  287. $($("input[name$=':ny']", fenJieTableDiv).get(rowcount - 1)).val(c.ZQY);
  288. $($("input[name$=':ksrq']", fenJieTableDiv).get(rowcount - 1)).val(c.KSRQ);
  289. $($("input[name$=':jsrq']", fenJieTableDiv).get(rowcount - 1)).val(c.JSRQ);
  290. $($("input[name$=':je']", fenJieTableDiv).get(rowcount - 1)).val(c.YZJ);
  291. $($("input[name$=':scrq']", fenJieTableDiv).get(rowcount - 1)).val(c.CDRQ);
  292. }
  293. }
  294. /* 显示分解信息列表 */
  295. function showFjsj(obj, fenJieTable) {
  296. var fenJieTableDiv =$("div[tablename='"+fenJieTable+"']");
  297. var tableDiv = $(obj).closest("[tablename]");
  298. var selectRow =$("input[name=':fjsj']:checked",tableDiv).closest("tr");
  299. var xhVal = selectRow.find("[name$=':xh']").val();/* 选择行 */
  300. HyUtil.showDecompose(fenJieTable,'xh',xhVal);
  301. }