edit.component.ts 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. import { HospitalService } from 'app/services/basedata/hospital.service';
  2. import { Component, OnInit, ViewChild, Output, EventEmitter, HostListener } from '@angular/core';
  3. import { NzNotificationService, NzModalService } from 'ng-zorro-antd';
  4. import { _HttpClient } from '@delon/theme';
  5. import { HospitalContacts } from 'app/entity/basedata/hospital-contacts';
  6. import { FormBuilder, FormGroup, Validators } from '@angular/forms';
  7. import { Hospital } from 'app/entity/basedata/hospital';
  8. import { BasedataHospitalHospitalNewComponent } from '../../hospital-new/hospital-new.component';
  9. import { HospitalContactsService } from 'app/services/basedata/hospital-contacts.service';
  10. import { I18NService } from '@core';
  11. import { BasedataHospitalHospitalDocEditContactsAddRowComponent } from './contacts-add-row/contacts-add-row.component';
  12. import { messageShared } from '@shared/utils/message';
  13. @Component({
  14. selector: 'app-basedata-hospital-hospital-doc-edit',
  15. templateUrl: './edit.component.html',
  16. styles: [
  17. `
  18. .base{
  19. position: absolute;
  20. bottom: 0px;
  21. width: 100%;
  22. border-top: 1px solid rgb(232, 232, 232);
  23. padding: 10px 16px;
  24. text-align: right;
  25. left: 0px;
  26. background: #fff;
  27. z-index:99;
  28. }
  29. .buttonDistance{
  30. margin-right:2%;
  31. }
  32. .textCenter{
  33. text-align:center
  34. }
  35. `
  36. ]
  37. })
  38. export class BasedataHospitalHospitalDocEditComponent implements OnInit {
  39. //元数据
  40. ngOnInit(): void {
  41. this.validateForm = this.fb.group({
  42. code: [null, [Validators.required]],
  43. name: [null, [Validators.required]],
  44. pig: [null]
  45. });
  46. this.initHospital();
  47. this.hospitalContacts = [];
  48. }
  49. constructor(
  50. private nzNotificationService: NzNotificationService,
  51. private hospitalService: HospitalService,
  52. private hospitalContactsService: HospitalContactsService,
  53. private fb: FormBuilder,
  54. private nzModalService:NzModalService,
  55. private i18NService:I18NService
  56. ) { }
  57. isLoading = false;
  58. drawerWidth = 1100;
  59. visible = false;
  60. validateForm: FormGroup;
  61. hospital: Hospital;
  62. enable = false;
  63. hospitalContact: HospitalContacts;
  64. @ViewChild("basedataHospitalHospitalNew") basedataHospitalHospitalNew: BasedataHospitalHospitalNewComponent
  65. @Output() afterSave = new EventEmitter();
  66. @HostListener('window:resize', ['$event'])
  67. onResize(event) {
  68. const width = event.target.innerWidth;
  69. if (width > 900) {
  70. this.drawerWidth = 900;
  71. } else {
  72. this.drawerWidth = width;
  73. }
  74. }
  75. //对<nz-form-control>标签逐一校验
  76. a = 0;
  77. save(): void {
  78. // this.hospitalContacts.forEach(element => {
  79. // console.log(this.hospitalContacts)
  80. // if (element.isDefault == true) {
  81. // element.isDefault="1";
  82. // this.a++
  83. // console.log("默认联系人有" + this.a)
  84. // }else{
  85. // element.isDefault="0";
  86. // }
  87. // });
  88. // this.hospital.hospitalContacts = this.hospitalContacts;
  89. if (this.enable) {
  90. this.hospital.enable = "1";
  91. } else {
  92. this.hospital.enable = "0";
  93. }
  94. for (const i in this.validateForm.controls) {
  95. this.validateForm.controls[i].markAsDirty();
  96. this.validateForm.controls[i].updateValueAndValidity();
  97. }
  98. //alert(JSON.stringify(this.hospital));
  99. //return;
  100. let valid = this.validateForm.valid;
  101. //验证通过保存
  102. if (valid) {
  103. this.hospitalService.editHospital(this.hospital).then((response) => {
  104. if (response.success) {
  105. this.nzNotificationService.success(this.i18NService.fanyi("successful.revision"), "");
  106. this.afterSave.emit();
  107. this.initHospital();
  108. this.close();
  109. } else {
  110. this.nzNotificationService.error(this.i18NService.fanyi("modification.failed"), messageShared(this.i18NService,response.message));
  111. }
  112. })
  113. }
  114. }
  115. openEdit(id: string): void {
  116. this.visible = true;//打开drawer并清除校验提示信息
  117. this.hospital.id = id;
  118. // this.enable = true;
  119. // this.hospitalContacts = [];
  120. for (const i in this.validateForm.controls) {
  121. this.validateForm.controls[i].reset();
  122. }
  123. this.hospitalService.queryById(id).then((response) => {
  124. this.hospital = response.result;
  125. //装换是否停用
  126. if(this.hospital.enable=="0"){
  127. this.enable=false;
  128. }else{
  129. this.enable=true;
  130. }
  131. })
  132. this.getContacts(id);
  133. }
  134. getContacts(id) {
  135. this.isLoading = true
  136. this.hospitalContact = {
  137. pkHospitalId: id
  138. }
  139. this.hospitalContactsService.getHospitalContacts(this.hospitalContact).then((response) => {
  140. console.log(this.i18NService.fanyi("the.data.queried.is"))
  141. console.log(response.result.records)
  142. this.hospitalContacts = response.result.records;
  143. this.hospitalContacts.forEach(element => {
  144. //转换是否默认
  145. if(element.isDefault=="1"){
  146. element.isDefault=true;
  147. }else{
  148. element.isDefault=false;
  149. }
  150. });
  151. this.isLoading = false
  152. })
  153. }
  154. editNewContact() {
  155. this.basedataHospitalHospitalNew.editNewContact(this.hospital.id);
  156. }
  157. edit(id: string) {
  158. this.basedataHospitalHospitalNew.editContact(id);
  159. }
  160. close(): void {
  161. this.visible = false;//关闭drawer
  162. this.enable=false;
  163. this.hospital={}
  164. }
  165. /**
  166. * 删除
  167. * @param id 联系人id
  168. */
  169. confirmDel(id: string) {
  170. this.isLoading = true
  171. this.hospitalContactsService.deleteHospitalContacts(id).then((response) => {
  172. if (response.success) {
  173. //删除成功
  174. this.nzNotificationService.success(this.i18NService.fanyi("successful.deletion"), "")
  175. this.getContacts(this.hospital.id)
  176. this.isLoading = false
  177. } else {
  178. //删除失败
  179. this.nzNotificationService.error(this.i18NService.fanyi("delete.failed"), response.message);
  180. this.getContacts(this.hospital.id)
  181. this.isLoading = false
  182. }
  183. })
  184. }
  185. cancelDel() {
  186. }
  187. initHospital() {
  188. this.hospital = {
  189. id: "",
  190. code: "",// 医院编码
  191. name: "",// 医院名称
  192. enable: "",// 是否停用
  193. memo: "",// 备注
  194. hospitalContacts: []
  195. }
  196. }
  197. index = 1;
  198. hospitalContacts: any[] = [];
  199. // 生物分析方法号增行
  200. addRow(): void {
  201. this.nzModalService.create({
  202. nzTitle:this.i18NService.fanyi("hospital.contarts.add"),
  203. nzWidth:900,
  204. nzContent:BasedataHospitalHospitalDocEditContactsAddRowComponent,
  205. nzFooter:[
  206. {
  207. label: this.i18NService.fanyi("button.cancel"),
  208. type:"default",
  209. onClick: BasedataHospitalHospitalDocEditContactsAddRowComponent => {
  210. BasedataHospitalHospitalDocEditContactsAddRowComponent.close();
  211. }
  212. },
  213. {
  214. label: this.i18NService.fanyi("button.save"),
  215. type:"primary",
  216. onClick: BasedataHospitalHospitalDocEditContactsAddRowComponent => {
  217. BasedataHospitalHospitalDocEditContactsAddRowComponent.save(this.hospital.id,this.hospitalContacts).then(()=>{
  218. this.getContacts(this.hospital.id);
  219. });
  220. }
  221. }
  222. ]
  223. })
  224. }
  225. /**
  226. * 修改
  227. * @param contratsId 联系人id
  228. */
  229. updateRow(contratsId){
  230. this.nzModalService.create({
  231. nzTitle:this.i18NService.fanyi("hospital.contarts.add"),
  232. nzWidth:900,
  233. nzContent:BasedataHospitalHospitalDocEditContactsAddRowComponent,
  234. nzComponentParams:{
  235. contratsId:contratsId
  236. },
  237. nzFooter:[
  238. {
  239. label: this.i18NService.fanyi("button.cancel"),
  240. type:"default",
  241. onClick: BasedataHospitalHospitalDocEditContactsAddRowComponent => {
  242. BasedataHospitalHospitalDocEditContactsAddRowComponent.close();
  243. }
  244. },
  245. {
  246. label: this.i18NService.fanyi("button.save"),
  247. type:"primary",
  248. onClick: BasedataHospitalHospitalDocEditContactsAddRowComponent => {
  249. BasedataHospitalHospitalDocEditContactsAddRowComponent.save(this.hospital.id,this.hospitalContacts).then(()=>{
  250. this.getContacts(this.hospital.id);
  251. });
  252. }
  253. }
  254. ]
  255. })
  256. }
  257. // 生物分析方法号删行
  258. deleteRow(index: number): void {
  259. this.hospitalContacts = this.hospitalContacts.filter(d => d.index !== index);
  260. }
  261. }