fee_rate.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  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.getFeeRateByID=function (ID) {
  43. var rates = this.getActivateFeeRate().rates;
  44. return _.find(rates,{'ID':ID})
  45. };
  46. FeeRate.prototype.getSubViewData= function(item) {
  47. var datas = [];
  48. if(item.hasOwnProperty('subFeeRate')&&item.subFeeRate!=undefined){
  49. datas = item.subFeeRate.recodes;
  50. }
  51. return datas;
  52. };
  53. FeeRate.prototype.getValueMap= function(item) {
  54. var valueMap = {};
  55. if(item.hasOwnProperty('subFeeRate')&&item.subFeeRate!=undefined){
  56. var recodes = item.subFeeRate.valueMaps;
  57. _.forEach(recodes,function (r) {
  58. valueMap[r.ID] = r.value;
  59. })
  60. return valueMap;
  61. }else {
  62. return null;
  63. }
  64. };
  65. FeeRate.prototype.getOptions=function (options,subRates,parentID,itemID) {
  66. var data = {};
  67. var list = _.filter(subRates, {'ParentID':parentID});
  68. if(list&&list.length>0){
  69. if(parentID==-1){
  70. data.ID = itemID+'_'+0;
  71. }else {
  72. data.ID = itemID+'_'+parentID;
  73. }
  74. data.name = list[0].type;
  75. data.optionList=[];
  76. }
  77. var nexParent = null;
  78. _.forEach(list,function (c) {
  79. var option={};
  80. option.name = c.name;
  81. option.value = c.ID;
  82. option.selected = c.selected;
  83. data.optionList.push(option);
  84. if(c.selected&&!c.isLeaf){
  85. nexParent = c.ID;
  86. }
  87. })
  88. options.push(data);
  89. if(nexParent!=null){
  90. this.getOptions(options,subRates,nexParent,itemID);
  91. }
  92. };
  93. FeeRate.prototype.getUpdateData=function(type,query,doc,callfunction){
  94. var updateData = [];
  95. var newobj = {
  96. 'updateType': type,
  97. 'query': query,
  98. }
  99. if(doc){
  100. newobj['doc']=doc;
  101. }
  102. if(callfunction){
  103. newobj['updateFunction']=callfunction;
  104. }
  105. updateData.push(newobj);
  106. return updateData;
  107. };
  108. FeeRate.prototype.updateFeeRateByEdit = function(params,feerate){
  109. var query={
  110. ID:feerate.feeRateID
  111. };
  112. var doc ={
  113. rateIndex:params.sourceIndex,
  114. rate:params.dataItem
  115. }
  116. this.updateFeeRate(query,doc);
  117. if(this.ifRateChange(params)){
  118. this.synchronizeFeeRate();
  119. }
  120. };
  121. FeeRate.prototype.batchUpdateFeeRate = function (items,feerate) {
  122. var query={
  123. ID:feerate.feeRateID
  124. };
  125. this.updateFeeRate(query,items);
  126. };
  127. FeeRate.prototype.updateFeeRate=function (query,doc) {
  128. var updateData = this.getUpdateData('ut_update',query,doc,'update_rates');
  129. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  130. socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
  131. };
  132. FeeRate.prototype.updateStatusBySelected = function (updateTasks) {
  133. var updateData = [];
  134. var newobj = {
  135. 'updateType': 'ut_update',
  136. 'tasks': updateTasks,
  137. 'updateFunction':'updateStatusBySelected'
  138. }
  139. updateData.push(newobj);
  140. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  141. };
  142. FeeRate.prototype.synchronizeFeeRate = function () {
  143. var node = project.mainTree.selected;
  144. if(node){
  145. if (node.sourceType==='ration' && calcProgramObj.sheet) {
  146. project.calcProgram.compileAllTemps();
  147. calcProgramObj.showData(node);
  148. }
  149. }
  150. };
  151. FeeRate.prototype.ifRateChange=function (params) {
  152. if(params.dataItem.rate!=params.oldDataItem.rate){
  153. return true;
  154. }else {
  155. return false;
  156. }
  157. };
  158. FeeRate.prototype.changeFeeRateStandard=function(newVal,callback){
  159. var me =this;
  160. var feeRate = this.getActivateFeeRate();
  161. var data={
  162. "newLibID": newVal,
  163. "feeRateFileID":feeRate.ID,
  164. "feeRateID":feeRate.feeRateID,
  165. "user_id":userID
  166. };
  167. CommonAjax.post('/feeRates/changeFeeRateStandard', data, function (data) {
  168. if (data) {
  169. me.datas.libID=data.libID;
  170. me.datas.libName=data.libName;
  171. me.datas.feeRateID=data.feeRateID;
  172. me.datas.rates=data.rates;
  173. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  174. callback();
  175. }
  176. });
  177. };
  178. FeeRate.prototype.checkFeeRateName = function(newVal,callback){
  179. var me =this;
  180. var feeRate = this.getActivateFeeRate();
  181. var data = {
  182. name:newVal,
  183. rootProjectID:feeRate.rootProjectID
  184. }
  185. CommonAjax.post('/feeRates/checkFeeRateName', data, function (data) {
  186. callback(data);
  187. });
  188. };
  189. FeeRate.prototype.feeRateFileSaveAs = function (newName) {
  190. this.datas.name = newName;
  191. this.datas.ID = uuid.v1();
  192. this.datas.feeRateID=uuid.v1();
  193. this.datas.usageProjects=[];
  194. this.datas.usageProjects.push({name:projectInfoObj.projectInfo.name,ID:projectInfoObj.projectInfo.ID});
  195. var updateData = this.getUpdateData('ut_update',{projectID:projectInfoObj.projectInfo.ID},this.datas,'feeRateFileSaveAs');
  196. project.pushNow('updateFeeRate',[this.sourceType],updateData);
  197. socket.emit('feeRateChangeNotify', this.getActivateFeeRateID());
  198. return this.datas;
  199. };
  200. FeeRate.prototype.getChangeInfo = function (callback) {
  201. // var projectID = projectInfoObj.projectInfo.ID;
  202. var feeRate = this.getActivateFeeRate();
  203. var rootProjectID= feeRate.rootProjectID;
  204. if(!rootProjectID){
  205. rootProjectID=projectInfoObj.projectInfo.property.rootProjectID;
  206. }
  207. var data={
  208. "user_id":userID,
  209. "rootProjectID":rootProjectID
  210. };
  211. CommonAjax.post('/feeRates/getChangeInfo', data, function (data) {
  212. callback(data);
  213. });
  214. };
  215. FeeRate.prototype.setFeeRateToBill=function (rate,bills,callback) {
  216. var query={
  217. ID:bills.ID,
  218. projectID:bills.projectID,
  219. deleteInfo:null
  220. }
  221. var doc={
  222. feeRate:null,
  223. feeRateID:rate.ID
  224. }
  225. CommonAjax.post('/feeRates/setFeeRateToBill', {query:query,doc:doc}, function (data) {
  226. callback(data);
  227. });
  228. };
  229. FeeRate.prototype.loadFeeRateToBill=function (node) {
  230. if(node.data.feeRateID){
  231. var feeRate = this.getFeeRateByID(node.data.feeRateID);
  232. if(feeRate){
  233. node.data.feeRate=feeRate.rate.toString();
  234. }
  235. }
  236. };
  237. FeeRate.prototype.changeFeeRateFileFromCurrent = function (newFeeRateFile,callback){
  238. var me=this;
  239. var projectID = projectInfoObj.projectInfo.ID;
  240. var data={
  241. "projectID": projectID,
  242. "newFeeRateFile":newFeeRateFile
  243. };
  244. CommonAjax.post('/feeRates/changeFeeRateFileFromCurrent', data, function (data) {
  245. if (data) {
  246. me.datas=data;
  247. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  248. callback();
  249. }
  250. });
  251. };
  252. FeeRate.prototype.changeFeeRateFileFromOthers=function (feeRateFileID,name,callback) {
  253. var me = this;
  254. var projectID = projectInfoObj.projectInfo.ID;
  255. var data={
  256. "projectID": projectID,
  257. "feeRateFileID":feeRateFileID,
  258. "name":name,
  259. "rootProjectID":me.getActivateFeeRate().rootProjectID
  260. };
  261. CommonAjax.post('/feeRates/changeFeeRateFileFromOthers', data, function (data) {
  262. if (data) {
  263. me.datas=data;
  264. socket.emit('feeRateChangeNotify', me.getActivateFeeRateID());
  265. callback();
  266. }
  267. });
  268. };
  269. FeeRate.prototype.getRate = function (fileID, rateID){
  270. return 1.25;
  271. };
  272. var feeRate = new FeeRate(project);
  273. return feeRate;
  274. },
  275. };