installation_fee.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /**
  2. * Created by zhang on 2018/1/31.
  3. */
  4. var installation_fee = {
  5. createNew: function (project) {
  6. // 用户定义private方法
  7. var tools = {};
  8. // 所有通过this访问的属性,都不应在此单元外部进行写入操作
  9. var installation_fee = function (proj) {
  10. // this.project = proj;
  11. this.datas = [];
  12. var sourceType = ModuleNames.installation_fee;
  13. this.getSourceType = function () {
  14. return sourceType;
  15. }
  16. proj.registerModule(ModuleNames.installation_fee, this);
  17. };
  18. // prototype用于定义public方法
  19. installation_fee.prototype.loadData = function (datas) {
  20. this.datas = datas;
  21. };
  22. installation_fee.prototype.getInstallationFeeByLibID=function(libID){
  23. return _.find(this.datas,{'libID':libID});
  24. };
  25. installation_fee.prototype.getFeeRuleByFeeItem = function (feeItem) {
  26. let installFee = projectObj.project.installation_fee.getInstallationFeeByLibID(feeItem.libID);
  27. let impacRules = _.filter(installFee.feeRule,{'feeItemId':feeItem.ID});
  28. return impacRules;
  29. };
  30. installation_fee.prototype.getFeeRuleBySection = function (section) {
  31. let installFee = projectObj.project.installation_fee.getInstallationFeeByLibID(section.libID);
  32. let impacRules = _.filter(installFee.feeRule,{'sectionId':section.ID});
  33. return impacRules;
  34. };
  35. installation_fee.prototype.getInstallSectionsByfeeItemID=function(libID,feeItemId){
  36. let installationFee = this.getInstallationFeeByLibID(libID);
  37. let installSections = _.filter(installationFee.installSection,{'feeItemId':feeItemId});
  38. return installSections;
  39. };
  40. installation_fee.prototype.getFeeItemByID = function(libID,ID){
  41. let installFee = projectObj.project.installation_fee.getInstallationFeeByLibID(libID);
  42. return _.find(installFee.installFeeItem,{'ID':ID});
  43. };
  44. installation_fee.prototype.getInstallSectionByID = function(libID,ID){
  45. let installFee = projectObj.project.installation_fee.getInstallationFeeByLibID(libID);
  46. return _.find(installFee.installSection,{'ID':ID});
  47. };
  48. installation_fee.prototype.getFeeRuleBySectionID=function(libID,sectionId){
  49. let installationFee = this.getInstallationFeeByLibID(libID);
  50. let feeRules = _.filter(installationFee.feeRule,{'sectionId':sectionId});
  51. return feeRules;
  52. };
  53. installation_fee.prototype.getFeeRuleByID = function (libID,feeRuleID) {
  54. let installationFee = this.getInstallationFeeByLibID(libID);
  55. return _.find(installationFee.feeRule,{'ID':feeRuleID});
  56. };
  57. installation_fee.prototype.updateFeeItem = function(doc,libID,feeItemID,callback){
  58. let me = this,ration_install=projectObj.project.ration_installation;
  59. let feeItem = me.getFeeItemByID(libID,feeItemID);
  60. let temFeeItem = _.cloneDeep(feeItem);//暂时不更新缓存
  61. let updateData = [];
  62. let rationInstallations = [];
  63. for(let d_key in doc){
  64. temFeeItem[d_key] = doc[d_key]
  65. }
  66. updateData.push(me.getFeeItemUpdateData(libID,feeItemID,doc));
  67. if(temFeeItem.isCal == 1){//勾选记取的时候要同步更新对应的定额安装费
  68. let sections = me.getInstallSectionsByfeeItemID(libID,feeItemID);
  69. for (let s of sections){
  70. me.getRIUpdateDataBySectionUpdate(s.ID,s.feeRuleId,rationInstallations);//生成受影响的定额安装增加费并加入到数组中
  71. }
  72. }
  73. $.bootstrapLoading.start();
  74. me.submitInstallationUpdate(updateData,rationInstallations,function (data) {
  75. //更新缓存
  76. for(let d_key in doc){
  77. feeItem[d_key] = doc[d_key]
  78. }
  79. if(callback){
  80. callback();
  81. }
  82. $.bootstrapLoading.end();
  83. });
  84. };
  85. installation_fee.prototype.getRIUpdateDataBySectionUpdate = function (sectionID,newRuleID,rationInstallations) {
  86. let ration_install=projectObj.project.ration_installation;
  87. let ris = ration_install.getBySectionID(sectionID);
  88. for(let ri of ris){
  89. if(ri.unifiedSetting==1&&ri.ruleId!=newRuleID){//勾选按统一设置并且费率规则选择的不一样
  90. rationInstallations.push({ID:ri.ID,doc:{'ruleId':newRuleID}});
  91. }
  92. }
  93. };
  94. installation_fee.prototype.updateFeeRule = function (doc,libID,feeRuleID,callback) {
  95. let me = this;
  96. let itemUpdateData = null;
  97. let feeItem=null;
  98. let ruleUpdateData=null;
  99. let updateData = [];
  100. let feeRule = me.getFeeRuleByID(libID,feeRuleID);
  101. if(feeRule){
  102. if(doc){//如果有需要更新的属性
  103. ruleUpdateData = me.getFeeRuleUpdateData(libID,feeRuleID,doc);
  104. updateData.push(ruleUpdateData);
  105. if(doc.hasOwnProperty("billID")){//改变了选取位置后如果与费用项里的位置不一致的话要清空费用项的选取位置
  106. feeItem = me.getFeeItemByID(libID,feeRule.feeItemId);
  107. if(feeItem.position!=''&&feeItem.billID!=doc.billID){
  108. itemUpdateData = me.getFeeItemUpdateData(libID,feeItem.ID,{position: "", billID:""});
  109. updateData.push(itemUpdateData);
  110. }
  111. }
  112. $.bootstrapLoading.start();
  113. me.submitInstallationUpdate(updateData,null,function (data) {
  114. //更新缓存
  115. let isFeeItemUpdate = false;
  116. if(itemUpdateData){
  117. feeItem.position ="";
  118. feeItem.billID = "";
  119. isFeeItemUpdate= true;
  120. }
  121. for(let ukey in doc){
  122. feeRule[ukey]=doc[ukey];
  123. }
  124. if(callback){//回调
  125. callback(isFeeItemUpdate);
  126. }
  127. $.bootstrapLoading.end();
  128. });
  129. }
  130. }else {
  131. if(callback){
  132. callback(false);
  133. }
  134. }
  135. };
  136. installation_fee.prototype.getFeeRuleUpdateData = function (libID,feeRuleID,doc) {
  137. let installationFee = this.getInstallationFeeByLibID(libID);
  138. let updateData = {
  139. ID:installationFee.ID,
  140. itemID:feeRuleID,
  141. type:"feeRule",
  142. doc:doc
  143. };
  144. return updateData;
  145. };
  146. installation_fee.prototype.getSectionUpdateData = function (libID,sectionID,doc) {
  147. let installationFee = this.getInstallationFeeByLibID(libID);
  148. let updateData = {
  149. ID:installationFee.ID,
  150. itemID:sectionID,
  151. type:"installSection",
  152. doc:doc
  153. };
  154. return updateData;
  155. };
  156. installation_fee.prototype.getFeeItemUpdateData = function (libID,itemID,doc) {
  157. let installationFee = this.getInstallationFeeByLibID(libID);
  158. let updateData = {
  159. ID:installationFee.ID,
  160. itemID:itemID,
  161. type:'installFeeItem',
  162. doc:doc
  163. };
  164. return updateData;
  165. };
  166. installation_fee.prototype.submitInstallationUpdate = function (updateData,rationInstallations,callback) {
  167. if(updateData){
  168. let data = {'projectID':projectInfoObj.projectInfo.ID,'updateData':updateData};
  169. if(rationInstallations){//是否附带更新定额安装费
  170. data['rationInstallations'] = rationInstallations;
  171. }
  172. CommonAjax.post('/installation/updateInstallationFee',data,function (data) {
  173. //更新定额安装费的缓存
  174. if(rationInstallations){
  175. for(let ri of rationInstallations){
  176. let c_ri = project.ration_installation.getByID(ri.ID);
  177. if(c_ri){
  178. for(let rkey in ri.doc){
  179. c_ri[rkey] = ri.doc[rkey];
  180. }
  181. }
  182. }
  183. }
  184. callback(data);
  185. })
  186. }
  187. };
  188. // 提交数据后返回数据处理
  189. installation_fee.prototype.doAfterUpdate = function(err, data){
  190. };
  191. return new installation_fee(project);
  192. }
  193. };