fee_rate.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /**
  2. * Created by CSL on 2017-06-20.
  3. */
  4. //var ModuleNames = require('./main_consts.js');
  5. var FeeRate = {
  6. createNew: function (project) {
  7. function FeeRate(proj){
  8. this.datas = null;
  9. this.sourceType = ModuleNames.feeRate;
  10. proj.registerModule(ModuleNames.feeRate, this);
  11. };
  12. FeeRate.prototype.loadData = function (datas) {
  13. this.datas = datas;
  14. socketObject.connect();
  15. };
  16. /* FeeRate.prototype.getViewDatas = function(){
  17. var rates=[];
  18. _.forEach(this.datas,function (item) {
  19. if(item.status == 'activate'){
  20. rates= item.rates;
  21. }
  22. })
  23. return rates;
  24. };*/
  25. FeeRate.prototype.getActivateFeeRate = function () {
  26. var feeRate={
  27. rates:[]
  28. };
  29. if(this.datas){
  30. feeRate = this.datas;
  31. }
  32. return feeRate;
  33. };
  34. FeeRate.prototype.getActivateFeeRateID = function(){
  35. var feeRate = this.getActivateFeeRate()
  36. if(feeRate){
  37. return feeRate.ID;
  38. }else {
  39. return 0;
  40. }
  41. };
  42. FeeRate.prototype.getSubViewData= function(item) {
  43. var datas = [];
  44. if(item.hasOwnProperty('subFeeRate')&&item.subFeeRate!=undefined){
  45. datas = item.subFeeRate.recodes;
  46. }
  47. return datas;
  48. };
  49. FeeRate.prototype.getValueMap= function(item) {
  50. var valueMap = {};
  51. if(item.hasOwnProperty('subFeeRate')&&item.subFeeRate!=undefined){
  52. var recodes = item.subFeeRate.valueMaps;
  53. _.forEach(recodes,function (r) {
  54. valueMap[r.ID] = r.value;
  55. })
  56. return valueMap;
  57. }else {
  58. return null;
  59. }
  60. };
  61. FeeRate.prototype.getOptions=function (options,subRates,parentID,itemID) {
  62. var data = {};
  63. var list = _.filter(subRates, {'ParentID':parentID});
  64. if(list&&list.length>0){
  65. if(parentID==-1){
  66. data.ID = itemID+'_'+0;
  67. }else {
  68. data.ID = itemID+'_'+parentID;
  69. }
  70. data.name = list[0].type;
  71. data.optionList=[];
  72. }
  73. var nexParent = null;
  74. _.forEach(list,function (c) {
  75. var option={};
  76. option.name = c.name;
  77. option.value = c.ID;
  78. option.selected = c.selected;
  79. data.optionList.push(option);
  80. if(c.selected&&!c.isLeaf){
  81. nexParent = c.ID;
  82. }
  83. })
  84. options.push(data);
  85. if(nexParent!=null){
  86. this.getOptions(options,subRates,nexParent,itemID);
  87. }
  88. };
  89. FeeRate.prototype.getUpdateData=function(type,query,doc,callfunction){
  90. var updateData = [];
  91. var newobj = {
  92. 'updateType': type,
  93. 'query': query,
  94. }
  95. if(doc){
  96. newobj['doc']=doc;
  97. }
  98. if(callfunction){
  99. newobj['updateFunction']=callfunction;
  100. }
  101. updateData.push(newobj);
  102. return updateData;
  103. };
  104. FeeRate.prototype.updateFeeRateByEdit = function(params,feerate){
  105. var query={
  106. ID:feerate.feeRateID
  107. };
  108. var doc ={
  109. rateIndex:params.sourceIndex,
  110. rate:params.dataItem
  111. }
  112. this.updateFeeRate(query,doc);
  113. if(this.ifRateChange(params)){
  114. this.synchronizeFeeRate();
  115. }
  116. };
  117. FeeRate.prototype.batchUpdateFeeRate = function (items,feerate) {
  118. var query={
  119. ID:feerate.feeRateID
  120. };
  121. this.updateFeeRate(query,items);
  122. };
  123. FeeRate.prototype.updateFeeRate=function (query,doc) {
  124. var updateData = this.getUpdateData('ut_update',query,doc,'update_rates');
  125. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  126. socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
  127. };
  128. FeeRate.prototype.updateStatusBySelected = function (updateTasks) {
  129. var updateData = [];
  130. var newobj = {
  131. 'updateType': 'ut_update',
  132. 'tasks': updateTasks,
  133. 'updateFunction':'updateStatusBySelected'
  134. }
  135. updateData.push(newobj);
  136. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  137. };
  138. FeeRate.prototype.synchronizeFeeRate = function () {
  139. var node = project.mainTree.selected;
  140. if(node){
  141. if (node.sourceType==='ration' && calcProgramObj.sheet) {
  142. project.calcProgram.compileAllTemps();
  143. calcProgramObj.showData(node);
  144. }
  145. }
  146. };
  147. FeeRate.prototype.ifRateChange=function (params) {
  148. if(params.dataItem.rate!=params.oldDataItem.rate){
  149. return true;
  150. }else {
  151. return false;
  152. }
  153. };
  154. FeeRate.prototype.changeFeeRateStandard=function(newVal,callback){
  155. var me =this;
  156. var feeRate = this.getActivateFeeRate();
  157. var data={
  158. "newLibID": newVal,
  159. "feeRateFileID":feeRate.ID,
  160. "feeRateID":feeRate.feeRateID,
  161. "user_id":userID
  162. };
  163. CommonAjax.post('/feeRates/changeFeeRateStandard', data, function (data) {
  164. if (data) {
  165. me.datas.libID=data.libID;
  166. me.datas.libName=data.libName;
  167. me.datas.feeRateID=data.feeRateID;
  168. me.datas.rates=data.rates;
  169. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  170. callback();
  171. }
  172. });
  173. };
  174. FeeRate.prototype.checkFeeRateName = function(newVal,callback){
  175. var me =this;
  176. var feeRate = this.getActivateFeeRate();
  177. var data = {
  178. name:newVal,
  179. rootProjectID:feeRate.rootProjectID
  180. }
  181. CommonAjax.post('/feeRates/checkFeeRateName', data, function (data) {
  182. callback(data);
  183. });
  184. };
  185. FeeRate.prototype.feeRateFileSaveAs = function (newName) {
  186. this.datas.name = newName;
  187. this.datas.ID = uuid.v1();
  188. this.datas.feeRateID=uuid.v1();
  189. this.datas.usageProjects=[];
  190. this.datas.usageProjects.push({name:projectInfoObj.projectInfo.name,ID:projectInfoObj.projectInfo.ID});
  191. var updateData = this.getUpdateData('ut_update',{projectID:projectInfoObj.projectInfo.ID},this.datas,'feeRateFileSaveAs');
  192. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  193. socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
  194. return this.datas;
  195. };
  196. FeeRate.prototype.getChangeInfo = function (callback) {
  197. // var projectID = projectInfoObj.projectInfo.ID;
  198. var feeRate = this.getActivateFeeRate();
  199. var rootProjectID= feeRate.rootProjectID;
  200. if(!rootProjectID){
  201. rootProjectID=projectInfoObj.projectInfo.property.rootProjectID;
  202. }
  203. var data={
  204. "user_id":userID,
  205. "rootProjectID":rootProjectID
  206. };
  207. CommonAjax.post('/feeRates/getChangeInfo', data, function (data) {
  208. callback(data);
  209. });
  210. };
  211. FeeRate.prototype.changeFeeRateFileFromCurrent = function (newFeeRateFile,callback){
  212. var me=this;
  213. var projectID = projectInfoObj.projectInfo.ID;
  214. var data={
  215. "projectID": projectID,
  216. "newFeeRateFile":newFeeRateFile
  217. };
  218. CommonAjax.post('/feeRates/changeFeeRateFileFromCurrent', data, function (data) {
  219. if (data) {
  220. me.datas=data;
  221. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  222. callback();
  223. }
  224. });
  225. };
  226. FeeRate.prototype.changeFeeRateFileFromOthers=function (feeRateFileID,name,callback) {
  227. var me = this;
  228. var projectID = projectInfoObj.projectInfo.ID;
  229. var data={
  230. "projectID": projectID,
  231. "feeRateFileID":feeRateFileID,
  232. "name":name,
  233. "rootProjectID":me.getActivateFeeRate().rootProjectID
  234. };
  235. CommonAjax.post('/feeRates/changeFeeRateFileFromOthers', data, function (data) {
  236. if (data) {
  237. me.datas=data;
  238. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  239. callback();
  240. }
  241. });
  242. };
  243. FeeRate.prototype.getRate = function (fileID, rateID){
  244. return 1.25;
  245. };
  246. var feeRate = new FeeRate(project);
  247. return feeRate;
  248. },
  249. };