business-affairs.component.ts 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. import { Component, OnInit, Output, EventEmitter } from '@angular/core';
  2. import { NzModalRef, NzMessageService } from 'ng-zorro-antd';
  3. import { _HttpClient } from '@delon/theme';
  4. import { ProjectManageArchives } from 'app/entity/project-manage-archives/project-manage-archives';
  5. import { BaseArchivesMilestoneService } from 'app/services/basedata/base-archives-milestone.service';
  6. import { BaseArchivesMilestone } from 'app/entity/basedata/base-archives-milestone';
  7. @Component({
  8. selector: 'app-project-manage-archives-add-business-affairs',
  9. templateUrl: './business-affairs.component.html',
  10. })
  11. export class ProjectManageArchivesAddBusinessAffairsComponent implements OnInit {
  12. constructor(private baseArchivesMilestoneService: BaseArchivesMilestoneService) {}
  13. ngOnInit(): void {}
  14. projectManageArchives: ProjectManageArchives = {}; //项目档案实体对象
  15. collectionPlanList = []; //收款计划数据
  16. paymentCollectionList = []; //回款情况数据
  17. paymentPlanList = []; //付款计划
  18. paymentStatusList = []; //付款情况
  19. planList: any = []; //计划下来集合数据
  20. formatterDollar = (value: number) => {
  21. if (value) {
  22. return `$ ${value}`;
  23. } else {
  24. return `$ `;
  25. }
  26. };
  27. parserDollar = (value: string) => value.replace('$ ', '');
  28. milestoneList: any = []; //里程碑集合数据
  29. /**
  30. *
  31. 收款计划新增
  32. */
  33. collectionPlanSort = 0; //收款计划排序
  34. collectionPlanAdd() {
  35. this.collectionPlanList = [
  36. ...this.collectionPlanList,
  37. {
  38. price1: 0,
  39. price2: 0,
  40. price3: 0,
  41. price4: 0,
  42. price5: 0,
  43. sort: this.collectionPlanSort,
  44. planType: '1',
  45. },
  46. ];
  47. this.collectionPlanSort++;
  48. //回款计划新增
  49. this.paymentCollectionAdd();
  50. //付款计划新增
  51. this.paymentPlanAdd();
  52. //付款计划新增
  53. this.paymentStatusAdd();
  54. }
  55. /**
  56. * 收款删除按钮
  57. */
  58. collectionPlanDelete(sort) {
  59. this.collectionPlanList = this.collectionPlanList.filter(d => d.sort !== sort);
  60. }
  61. /**
  62. * 回款计划新增
  63. */
  64. paymentCollectionSort = 0; //回款情况排序
  65. paymentCollectionAdd() {
  66. this.paymentCollectionList = [
  67. ...this.paymentCollectionList,
  68. {
  69. price1: 0,
  70. price2: 0,
  71. price3: 0,
  72. price4: 0,
  73. price5: 0,
  74. sort: this.paymentCollectionSort,
  75. planType: '2',
  76. },
  77. ];
  78. this.paymentCollectionSort++;
  79. }
  80. /**
  81. * 回款删除按钮
  82. */
  83. paymentCollectionDelete(sort) {
  84. this.paymentCollectionList = this.paymentCollectionList.filter(d => d.sort !== sort);
  85. }
  86. /**
  87. * 付款计划新增
  88. */
  89. paymentPlanSort = 0;
  90. paymentPlanAdd() {
  91. this.paymentPlanList = [
  92. ...this.paymentPlanList,
  93. {
  94. price1: 0,
  95. price2: 0,
  96. price3: 0,
  97. price4: 0,
  98. price5: 0,
  99. sort: this.paymentPlanSort,
  100. planType: '3',
  101. },
  102. ];
  103. this.paymentPlanSort++;
  104. }
  105. /**
  106. * 付款计划删除按钮
  107. */
  108. paymentPlanDelete(sort) {
  109. this.paymentPlanList = this.paymentPlanList.filter(d => d.sort !== sort);
  110. }
  111. /**
  112. * 付款情况
  113. */
  114. paymentStatusSort = 0;
  115. paymentStatusAdd() {
  116. this.paymentStatusList = [
  117. ...this.paymentStatusList,
  118. {
  119. price1: 0,
  120. price2: 0,
  121. price3: 0,
  122. price4: 0,
  123. price5: 0,
  124. sort: this.paymentPlanSort,
  125. planType: '4',
  126. },
  127. ];
  128. this.paymentPlanSort++;
  129. }
  130. /**
  131. * 付款情况删除按钮
  132. */
  133. paymentStatusDelete(sort) {
  134. this.paymentStatusList = this.paymentStatusList.filter(d => d.sort !== sort);
  135. }
  136. /**
  137. * 类型触发事件
  138. */
  139. planIdChange(data, type) {
  140. //获取类型名称
  141. this.getPlanName(data);
  142. //同步其他三个表格数据
  143. this.getData();
  144. //如果是回款情况表格中下拉触发
  145. // if (type === '2') {
  146. // //获取收款计划的金额
  147. // this.getCollectionPlanPrice(this.collectionPlanList, data);
  148. // //回写数据到实施、开发、服务页签的回款信息
  149. // this.getRemittanceInformationChange(data);
  150. // }
  151. // //如果是付款情况表格中下来触发
  152. // if (type === '4') {
  153. // //获取付款计划中的金额
  154. // this.getCollectionPlanPrice(this.paymentPlanList, data);
  155. // }
  156. }
  157. /**
  158. * 获取类型名称
  159. * @param data 计划对象
  160. */
  161. getPlanName(data) {
  162. this.planList.forEach(element => {
  163. if (element.id === data.planId) {
  164. data.planName = element.name;
  165. }
  166. });
  167. }
  168. /**
  169. * 根据回款情况类型获取对应的收款计划金额
  170. * @param list 表格数据
  171. * @param data 表格中的对象
  172. */
  173. getCollectionPlanPrice(list, data) {
  174. list.forEach(element => {
  175. if (data.planId === element.planId) {
  176. data.price1 = element.price1;
  177. data.price2 = element.price2;
  178. data.price3 = element.price3;
  179. data.price4 = element.price4;
  180. data.price5 = element.price5;
  181. }
  182. });
  183. }
  184. /**
  185. * 里程碑选择事件
  186. * @param data
  187. */
  188. mileChange(data) {
  189. //已汇款金额
  190. this.getReceived();
  191. //回写数据到实施、开发、服务页签的回款信息
  192. this.getRemittanceInformationChange(data);
  193. }
  194. /**
  195. * 获取回款情况中的回款金额累加(已汇款金额)
  196. */
  197. getReceived() {
  198. let received = 0;
  199. this.paymentCollectionList.forEach(element => {
  200. if (element.desc1 && !isNaN(Number(element.desc1))) {
  201. received += Number(element.desc1);
  202. }
  203. if (element.desc2 && !isNaN(Number(element.desc2))) {
  204. received += Number(element.desc2);
  205. }
  206. if (element.desc3 && !isNaN(Number(element.desc3))) {
  207. received += Number(element.desc3);
  208. }
  209. if (element.desc4 && !isNaN(Number(element.desc4))) {
  210. received += Number(element.desc4);
  211. }
  212. if (element.desc5 && !isNaN(Number(element.desc5))) {
  213. received += Number(element.desc5);
  214. }
  215. });
  216. this.projectManageArchives.received = received;
  217. }
  218. /**
  219. * 里程碑选择事件
  220. */
  221. mileIdChange(data){
  222. //获取里程碑名称
  223. this.getMileName(data)
  224. //同步其他表格数据
  225. this.getData();
  226. }
  227. /**
  228. * 获取里程碑名称
  229. */
  230. getMileName(element){
  231. //判断是否选择里程碑
  232. if(element.mileId1){
  233. //循环商务页签中计划表中里程碑下拉数据获取名称
  234. this.milestoneList.forEach(mile => {
  235. if(mile.id===element.mileId1){
  236. element.milestone1=mile.name;
  237. }
  238. });
  239. }else{
  240. element.milestone1="";
  241. }
  242. //判断是否选择里程碑
  243. if(element.mileId2){
  244. //循环商务页签中计划表中里程碑下拉数据获取名称
  245. this.milestoneList.forEach(mile => {
  246. if(mile.id===element.mileId2){
  247. element.milestone2=mile.name;
  248. }
  249. });
  250. }else{
  251. element.milestone2="";
  252. }
  253. //判断是否选择里程碑
  254. if(element.mileId3){
  255. //循环商务页签中计划表中里程碑下拉数据获取名称
  256. this.milestoneList.forEach(mile => {
  257. if(mile.id===element.mileId3){
  258. element.milestone3=mile.name;
  259. }
  260. });
  261. }else{
  262. element.milestone3="";
  263. }
  264. //判断是否选择里程碑
  265. if(element.mileId4){
  266. //循环商务页签中计划表中里程碑下拉数据获取名称
  267. this.milestoneList.forEach(mile => {
  268. if(mile.id===element.mileId4){
  269. element.milestone4=mile.name;
  270. }
  271. });
  272. }else{
  273. element.milestone4="";
  274. }
  275. //判断是否选择里程碑
  276. if(element.mileId5){
  277. //循环商务页签中计划表中里程碑下拉数据获取名称
  278. this.milestoneList.forEach(mile => {
  279. if(mile.id===element.mileId5){
  280. element.milestone5=mile.name;
  281. }
  282. });
  283. }else{
  284. element.milestone5="";
  285. }
  286. }
  287. /**
  288. * 金额鼠标离开事件
  289. */
  290. priceBlur(){
  291. this.getData();
  292. }
  293. /**
  294. * 描述输入改变事件
  295. */
  296. descChange(){
  297. this.getData();
  298. }
  299. //根据计划收款信息表格数据复制到其他三个表格数据
  300. getData() {
  301. if (this.collectionPlanList) {
  302. this.getAddData(this.collectionPlanList);
  303. }
  304. }
  305. /**
  306. * 根据计划收款信息表格数据复制到其他三个表格数据
  307. *
  308. */
  309. getAddData(dataList) {
  310. this.paymentCollectionList = [];
  311. this.paymentCollectionList=[];
  312. this.paymentPlanList=[];
  313. this.paymentStatusList=[];
  314. //循环收款情况
  315. dataList.forEach(element => {
  316. //回款表格数据
  317. let data =
  318. {
  319. planId: element.planId, //计划条线id
  320. planName: element.planName, //计划条线名称
  321. price1: element.price1, //金额
  322. mileId1: element.mileId1, //里程碑id
  323. milestone1: element.milestone1, //里程碑名称
  324. price2: element.price2, //金额
  325. mileId2: element.mileId2, //里程碑id
  326. milestone2: element.milestone2, //里程碑名称
  327. price3: element.price3, //金额
  328. mileId3: element.mileId3, //里程碑id
  329. milestone3: element.milestone3, //里程碑名称
  330. price4: element.price4, //金额
  331. mileId4: element.mileId4, //里程碑id
  332. milestone4: element.milestone4, //里程碑名称
  333. price5: element.price5, //金额
  334. mileId5: element.mileId5, //里程碑id
  335. milestone5: element.milestone5, //里程碑名称
  336. sort: element.sort,
  337. planType: '2',
  338. }
  339. //回款情况
  340. let data2=JSON.parse(JSON.stringify(data));
  341. data2.planType='2';
  342. //回写数据到实施、开发、服务页签的回款信息
  343. this.getRemittanceInformationChange(data2);
  344. this.paymentCollectionList.push(data2);
  345. //付款计划
  346. let data3=JSON.parse(JSON.stringify(data))
  347. data3.planType='3'
  348. data3.desc1=element.desc1;
  349. data3.desc2=element.desc2;
  350. data3.desc3=element.desc3;
  351. data3.desc4=element.desc4;
  352. data3.desc5=element.desc5;
  353. this.paymentPlanList.push(data3);
  354. //付款情况
  355. let data4=JSON.parse(JSON.stringify(data))
  356. data4.planType='4'
  357. this.paymentStatusList.push(data4);
  358. });
  359. console.log(this.paymentCollectionList)
  360. }
  361. /**
  362. * 回写数据到实施、开发、服务页签的回款信息
  363. * @param 对象
  364. */
  365. @Output() remittanceInformationChange = new EventEmitter<{}>();
  366. getRemittanceInformationChange(data) {
  367. this.remittanceInformationChange.emit(data);
  368. }
  369. }