pathology-detail.component.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. import { Component, ElementRef, Output, Input, OnInit, EventEmitter } from '@angular/core';
  2. import { HttpHeaders, HttpRequest, HttpClient } from "@angular/common/http";
  3. import host from "../../../assets/js/http";
  4. import { NzMessageService } from "ng-zorro-antd";
  5. import { MainService } from '../../services/main.service';
  6. import {
  7. FormBuilder,
  8. Validators,
  9. FormGroup,
  10. FormControl,
  11. } from "@angular/forms";
  12. import { format, startOfDay, endOfDay, subDays} from "date-fns";
  13. import { ToolService } from "../../services/tool.service";
  14. import { DomSanitizer } from '@angular/platform-browser';
  15. @Component({
  16. selector: 'app-pathology-detail',
  17. templateUrl: './pathology-detail.component.html',
  18. styleUrls: ['./pathology-detail.component.less']
  19. })
  20. export class PathologyDetailComponent implements OnInit {
  21. @Output() pathologyCancel = new EventEmitter();
  22. @Input() surgeryId: string;
  23. @Input() patientId: string;
  24. constructor(
  25. private http: HttpClient,
  26. private message: NzMessageService,
  27. private mainService: MainService,
  28. private fb: FormBuilder,
  29. private tool: ToolService,
  30. private sanitizer: DomSanitizer
  31. ) { }
  32. specimenLookData:any=[
  33. {
  34. name:'通用-头颈部-口腔-黏膜活检',
  35. },
  36. {
  37. name:'通用-头颈部-口腔-黏膜活检',
  38. },
  39. {
  40. name:'通用-头颈部-口腔-黏膜活检',
  41. },
  42. {
  43. name:'通用-头颈部-口腔-黏膜活检',
  44. }
  45. ]
  46. stepLength:any = 0;
  47. btnLoading:boolean = false;
  48. validateForm: FormGroup; //新增/编辑表单
  49. validateSpecimenForm: FormGroup; //选择标本表单
  50. validatePrintForm: FormGroup;
  51. specimenData:any=[]; //标本类型
  52. isDeptLoading:boolean = false;
  53. specimenModal:boolean = false; //选择标本状态
  54. isSpinning:boolean = false; //页面加载状态
  55. detailsData:any;
  56. specimenList:any=[]; //已选标本
  57. placeIndex:any = null;
  58. systemIndex:any = null;
  59. apparatusIndex:any = null;
  60. specimenNameIndex:any = null;
  61. placeList:any=[]; //位置来源数据
  62. systemList:any=[]; //系统数据
  63. apparatusList:any=[]; //器官数据
  64. specimenNameList:any=[]; //标本名称数据
  65. promptContent: string; //操作提示框提示信息
  66. ifSuccess: boolean; //操作成功/失败
  67. promptInfo: string; //操作结果提示信息
  68. promptModalShow: boolean; //操作提示框是否展示
  69. specimenModalShow: boolean; //操作提示框是否展示
  70. type:any = '未打印';
  71. notModal:boolean = false;
  72. hosId:any;
  73. pathologyLogs:any //日志
  74. printLoading:boolean = false;
  75. printData:any = [];
  76. project:any = [];
  77. ngOnInit() {
  78. this.hosId = this.tool.getCurrentHospital().id;
  79. // this.initForm()
  80. this.fetchDataList()
  81. }
  82. // 补打
  83. submitPrint(){
  84. let that = this
  85. let data: any = {
  86. pathologyForm:{
  87. ...this.detailsData,
  88. surgeryId: this.surgeryId || "",
  89. patientId: this.patientId || "",
  90. hosId: this.hosId || ""
  91. }
  92. };
  93. delete data.pathologyForm.patientDTO
  94. delete data.pathologyForm.surgeryDeptDTO
  95. delete data.pathologyForm.surgeryDoctorDTO
  96. delete data.pathologyForm.specimenGenre
  97. this.printLoading = true;
  98. this.mainService
  99. .pathologyPrint(data)
  100. .subscribe((res:any) => {
  101. if(res.status==200){
  102. let arr = res.data;
  103. if(arr.applyBarCode){
  104. arr.applyBarCode = this.sanitizer.bypassSecurityTrustResourceUrl(arr.applyBarCode)
  105. }
  106. for(let i of arr.specimenList){
  107. i.barCode = this.sanitizer.bypassSecurityTrustResourceUrl(i.barCode)
  108. }
  109. that.printLoading = false;
  110. that.printData = arr;
  111. setTimeout(() => {
  112. const printContent = document.getElementById("report");
  113. const WindowPrt = window.open("", "", "width=100,height=1000");
  114. WindowPrt.document.body.innerHTML = printContent.innerHTML;
  115. setTimeout(_=>{
  116. WindowPrt.document.close();
  117. WindowPrt.focus();
  118. WindowPrt.print();
  119. WindowPrt.close();
  120. that.hideModal();
  121. },500)
  122. }, 500);
  123. }else{
  124. this.message.error(res.msg)
  125. }
  126. });
  127. }
  128. // 返回
  129. closeDetailMoadl(){
  130. this.pathologyCancel.emit()
  131. }
  132. // 初始化新增form表单
  133. // initForm() {
  134. // this.validateForm = this.fb.group({
  135. // intraoperativeRapidity: [1, [Validators.required]],
  136. // specimenGenre: [null, [Validators.required]],
  137. // intraoperativeFindings: [null, [Validators.required]],
  138. // surgicalPlan: [null, [Validators.required]],
  139. // specimenNum: [null,[Validators.required]],
  140. // takePart: [null, [Validators.required]]
  141. // });
  142. // }
  143. // 获取详情
  144. fetchDataList(){
  145. let data = {
  146. idx: 0,
  147. sum: 9999,
  148. pathologyForm: {
  149. surgeryId: this.surgeryId || "",
  150. patientId: this.patientId || "",
  151. hosId: this.hosId || "" ,
  152. },
  153. };
  154. this.isSpinning = true;
  155. this.mainService
  156. .getFetchDataList("data", "pathologyForm", data)
  157. .subscribe((data) => {
  158. this.isSpinning = false;
  159. this.detailsData = data.list[0];
  160. this.pathologyLogs = data.list[0].formLogDTOS
  161. this.stepLength = this.pathologyLogs.length
  162. if(this.detailsData.pathologyInspectDTOS){
  163. for(let i of this.detailsData.pathologyInspectDTOS){
  164. this.project.push(i.inspectProject.name)
  165. }
  166. this.project = this.project.join('、')
  167. }
  168. // if(this.detailsData.surgicalPlan){
  169. // this.validateForm.controls.surgicalPlan.setValue(this.detailsData.surgicalPlan);
  170. // }
  171. // if(this.detailsData.intraoperativeFindings){
  172. // this.validateForm.controls.intraoperativeFindings.setValue(this.detailsData.intraoperativeFindings);
  173. // }
  174. this.getSampleData()
  175. });
  176. }
  177. // // 获取标本类型
  178. // getDicData(){
  179. // this.mainService.getDictionary("list", "pathology_specimen_type").subscribe((res) => {
  180. // this.specimenData = res
  181. // });
  182. // }
  183. // // 获取标本-位置来源
  184. // getSourceData(){
  185. // this.mainService.getDictionary("list", "pathology_position").subscribe((res) => {
  186. // this.placeList = res
  187. // });
  188. // }
  189. // // 获取标本-系统
  190. // getSysData(){
  191. // let postData: any = {
  192. // idx: 0,
  193. // sum: 9999,
  194. // dictionaryTree: {
  195. // level: 1,
  196. // key: 'pathology_specimen',
  197. // deleted: 0,
  198. // },
  199. // };
  200. // this.mainService
  201. // .getFetchDataList("simple/data", "dictionaryTree", postData)
  202. // .subscribe((data) => {
  203. // this.systemList = data.list;
  204. // });
  205. // }
  206. // // 获取标本-器官
  207. // getApparatusData(id,item,type){
  208. // let postData: any = {
  209. // idx: 0,
  210. // sum: 9999,
  211. // dictionaryTree: {
  212. // level: 2,
  213. // parent:id,
  214. // key: 'pathology_specimen',
  215. // deleted: 0,
  216. // },
  217. // };
  218. // this.mainService
  219. // .getFetchDataList("simple/data", "dictionaryTree", postData)
  220. // .subscribe((data) => {
  221. // if(data.list.length>0){
  222. // this.apparatusList = data.list;
  223. // if(type=='edit'){
  224. // setTimeout(_=>{
  225. // let index3 = this.apparatusList.findIndex(i=>i.id==item.organ.id)
  226. // this.apparatusIndex = index3
  227. // this.apparatusId = Number(item.organ.id);
  228. // },100)
  229. // }
  230. // }else{
  231. // this.message.info('暂无数据')
  232. // }
  233. // });
  234. // }
  235. // // 获取标本-标本名称
  236. // getSpNameData(id,item,type){
  237. // let postData: any = {
  238. // idx: 0,
  239. // sum: 9999,
  240. // dictionaryTree: {
  241. // level: 3,
  242. // parent:id,
  243. // key: 'pathology_specimen',
  244. // deleted: 0,
  245. // },
  246. // };
  247. // this.mainService
  248. // .getFetchDataList("simple/data", "dictionaryTree", postData)
  249. // .subscribe((data) => {
  250. // this.specimenNameList = data.list;
  251. // this.specimenNameList.push({
  252. // name:'其他',
  253. // id:'qita'
  254. // })
  255. // if(type=='edit'){
  256. // if(item.sample){
  257. // this.validateSpecimenForm = this.fb.group({
  258. // remark: [null, [Validators.required]]
  259. // });
  260. // setTimeout(_=>{
  261. // let index4 = this.specimenNameList.findIndex(i=>i.id==item.sample.id)
  262. // this.specimenNameIndex = index4
  263. // this.specimenNameName = item.sample.name
  264. // this.specimenNameId = Number(item.sample.id);
  265. // },100)
  266. // }else{
  267. // this.validateSpecimenForm = this.fb.group({
  268. // remark: [null, [Validators.required]],
  269. // specimenName: [null, [Validators.required]]
  270. // });
  271. // this.specimenNameIndex = this.specimenNameList.length-1
  272. // this.specimenNameName = 'qita'
  273. // this.validateSpecimenForm.controls.specimenName.setValue(item.specimenName);
  274. // }
  275. // setTimeout(_=>{
  276. // this.validateSpecimenForm.controls.remark.setValue(item.remark);
  277. // this.specimenModal = true
  278. // },50)
  279. // }
  280. // });
  281. // }
  282. // // 删除标本
  283. // delModal:boolean = false
  284. // coopId:any;
  285. // specimenDel(e,item,index){
  286. // this.delModal = true
  287. // this.coopId = item.id
  288. // }
  289. // // 确定删除
  290. // confirmDel(){
  291. // this.mainService
  292. // .coopTypeConfig(
  293. // "rmvData",
  294. // "pathologySpecimen",
  295. // [this.coopId]
  296. // )
  297. // .subscribe((data) => {
  298. // this.btnLoading = false;
  299. // this.delModal = false;
  300. // this.getSampleData()
  301. // if (data.status==200) {
  302. // this.showSpecimenModal("删除", true, "");
  303. // } else {
  304. // this.showSpecimenModal("删除", false, data.data[0].msg);
  305. // }
  306. // });
  307. // }
  308. // // 确定删除
  309. // hideDelModal() {
  310. // this.delModal = false;
  311. // }
  312. // // 编辑标本
  313. // specimenDetailId:any = null;
  314. // specimenEdit(e,item,index){
  315. // this.specimenDetailId = item.id
  316. // let index1 = this.placeList.findIndex(i=>i.id==item.partSource.id)
  317. // this.placeIndex = index1
  318. // this.placeId = Number(item.partSource.id)
  319. // let index2 = this.systemList.findIndex(i=>i.id==item.system.id)
  320. // this.systemIndex = index2
  321. // this.systemId = Number(item.system.id)
  322. // this.getApparatusData(item.system.id,item,'edit')
  323. // this.getSpNameData(item.organ.id,item,'edit')
  324. // }
  325. // // 选择标本
  326. // openSpecimen(){
  327. // this.validateSpecimenForm = this.fb.group({
  328. // remark: [null, [Validators.required]]
  329. // });
  330. // this.specimenDetailId = null;
  331. // this.placeIndex = null;
  332. // this.systemIndex = null;
  333. // this.apparatusIndex = null;
  334. // this.specimenNameIndex = null;
  335. // this.placeId = null;
  336. // this.systemId = null;
  337. // this.apparatusId = null;
  338. // this.specimenNameId = null;
  339. // this.placeList=[]; //位置来源数据
  340. // this.systemList=[]; //系统数据
  341. // this.apparatusList=[]; //器官数据
  342. // this.specimenNameList=[]; //标本名称数据
  343. // this.getSourceData()
  344. // this.getSysData()
  345. // this.specimenModal = true
  346. // }
  347. // // 选择位置来源
  348. // placeId:any = null;
  349. // placeClick(e,item,index){
  350. // this.placeId = item.id
  351. // this.placeIndex = index
  352. // }
  353. // // 选择系统
  354. // systemId:any = null;
  355. // systemClick(e,item,index){
  356. // this.systemId = Number(item.id)
  357. // this.systemIndex = index
  358. // this.apparatusList = [];
  359. // this.apparatusId = null;
  360. // this.apparatusIndex = null;
  361. // this.getApparatusData(item.id,{},'select')
  362. // }
  363. // // 选择器官
  364. // apparatusId:any = null;
  365. // apparatusClick(e,item,index){
  366. // this.apparatusId = Number(item.id)
  367. // this.apparatusIndex = index
  368. // this.specimenNameList = [];
  369. // this.specimenNameId = null;
  370. // this.specimenNameIndex = null;
  371. // this.getSpNameData(item.id,{},'select')
  372. // }
  373. // // 选择标本名称
  374. // specimenNameId:any = null;
  375. // specimenNameName:any = null;
  376. // specimenNameClick(e,item,index){
  377. // this.specimenNameIndex = index
  378. // let remark = this.validateSpecimenForm.value.remark
  379. // if(item.id == 'qita'){
  380. // this.validateSpecimenForm = this.fb.group({
  381. // remark: [remark?remark:null, [Validators.required]],
  382. // specimenName: [null, [Validators.required]]
  383. // });
  384. // this.specimenNameId = 'null'
  385. // this.specimenNameName = 'qita'
  386. // }else{
  387. // this.validateSpecimenForm = this.fb.group({
  388. // remark: [remark?remark:null, [Validators.required]],
  389. // });
  390. // this.specimenNameId = item.id
  391. // this.specimenNameName = item.name
  392. // }
  393. // }
  394. // // 保存标本
  395. // btnSpLoading:boolean = false;
  396. // submitSpecimen(){
  397. // if(this.placeIndex==null){
  398. // this.message.error('请选择位置来源')
  399. // return
  400. // }
  401. // if(this.systemIndex==null){
  402. // this.message.error('请选择系统')
  403. // return
  404. // }
  405. // if(this.apparatusIndex==null){
  406. // this.message.error('请选择器官')
  407. // return
  408. // }
  409. // if(this.specimenNameIndex==null){
  410. // this.message.error('请选择标本名称')
  411. // return
  412. // }
  413. // for (const i in this.validateSpecimenForm.controls) {
  414. // this.validateSpecimenForm.controls[i].markAsDirty();
  415. // this.validateSpecimenForm.controls[i].updateValueAndValidity();
  416. // }
  417. // if (this.validateSpecimenForm.invalid) return;
  418. // let data = {
  419. // pathologyFormId:this.detailsData.id,
  420. // partSource:{
  421. // id:this.placeId
  422. // },
  423. // system:{
  424. // id:this.systemId
  425. // },
  426. // organ:{
  427. // id:this.apparatusId
  428. // },
  429. // sample:{
  430. // id:this.specimenNameId
  431. // },
  432. // hosId:this.hosId,
  433. // specimenName:null,
  434. // id:'',
  435. // remark:this.validateSpecimenForm.value.remark
  436. // };
  437. // if(this.specimenNameName == 'qita'){
  438. // delete data.sample
  439. // data.specimenName = this.validateSpecimenForm.value.specimenName
  440. // }else{
  441. // data.specimenName = this.specimenNameName
  442. // }
  443. // let queryType = null
  444. // if(this.specimenDetailId){
  445. // queryType = 'updData'
  446. // data.id = this.specimenDetailId
  447. // }else{
  448. // queryType = 'addData'
  449. // delete data.id
  450. // }
  451. // this.btnSpLoading = true;
  452. // this.mainService
  453. // .simplePost(queryType, "pathologySpecimen", data)
  454. // .subscribe((res) => {
  455. // this.btnSpLoading = false;
  456. // if (res.status == 200) {
  457. // this.showSpecimenModal("操作", true, "");
  458. // } else {
  459. // this.showSpecimenModal("操作", false, res.msg);
  460. // }
  461. // });
  462. // }
  463. // 获取标本列表
  464. getSampleData(){
  465. let data={
  466. idx: 0,
  467. sum: 9999,
  468. pathologySpecimen:{
  469. pathologyFormId:this.detailsData.id
  470. }
  471. }
  472. this.mainService
  473. .getFetchDataList("data", "pathologySpecimen", data)
  474. .subscribe((res) => {
  475. this.specimenList = res.list
  476. });
  477. }
  478. hideSpecimenModal(){
  479. this.specimenModal = false
  480. }
  481. hideNotModal(){
  482. this.notModal = false
  483. }
  484. // 日期选择
  485. // startDate: string; //时间开始
  486. // formChangeDate(result?): void {
  487. // this.startDate = format(result[0], 'yyyy-MM-dd HH:mm:ss');
  488. // }
  489. //未打印提交
  490. // submitPrintForm(): void{
  491. // for (const i in this.validatePrintForm.controls) {
  492. // this.validatePrintForm.controls[i].markAsDirty();
  493. // this.validatePrintForm.controls[i].updateValueAndValidity();
  494. // }
  495. // if (this.validatePrintForm.invalid) return;
  496. // let data: any = {
  497. // pathologyForm:{
  498. // ...this.validateForm.value,
  499. // ...this.detailsData,
  500. // inVitroTime:this.validatePrintForm.value.inVitroTime,
  501. // surgeryId: this.surgeryId || "",
  502. // patientId: this.patientId || "",
  503. // hosId: this.hosId || "" ,
  504. // handoverUserId:this.handoverUserId,
  505. // specimenType:{
  506. // id:this.validateForm.value.specimenGenre
  507. // }
  508. // }
  509. // };
  510. // delete data.pathologyForm.patientDTO
  511. // delete data.pathologyForm.surgeryDeptDTO
  512. // delete data.pathologyForm.surgeryDoctorDTO
  513. // delete data.pathologyForm.specimenGenre
  514. // this.printLoading = true;
  515. // this.mainService
  516. // .pathologyPrint(data)
  517. // .subscribe((res:any) => {
  518. // console.log(5555,res)
  519. // this.hideModal()
  520. // this.printData = res.data;
  521. // this.printLoading = false;
  522. // setTimeout(() => {
  523. // const printContent = document.getElementById("report");
  524. // const WindowPrt = window.open("", "", "width=100,height=1000");
  525. // WindowPrt.document.write(printContent.innerHTML);
  526. // WindowPrt.document.close();
  527. // WindowPrt.focus();
  528. // WindowPrt.print();
  529. // WindowPrt.close();
  530. // }, 500);
  531. // });
  532. // }
  533. // // 监听工号数据
  534. // handoverUserId:any = null;
  535. // numberChange(e){
  536. // if(e.length < 3) {
  537. // this.validatePrintForm.controls.name.setValue('');
  538. // return
  539. // }
  540. // let data = {
  541. // idx: 0,
  542. // sum: 9999,
  543. // user: {
  544. // account: e || "",
  545. // hospital: { id: this.hosId || "" }
  546. // },
  547. // };
  548. // this.mainService
  549. // .getFetchDataList("data", "user", data)
  550. // .subscribe((data) => {
  551. // if(data.list.length>0){
  552. // this.validatePrintForm.controls.name.setValue(data.list[0].name);
  553. // this.handoverUserId = data.list[0].id
  554. // }else{
  555. // this.validatePrintForm.controls.name.setValue('');
  556. // this.handoverUserId =null
  557. // }
  558. // });
  559. // }
  560. // printData:any;
  561. // submitForm(): void{
  562. // var that = this;
  563. // for (const i in that.validateForm.controls) {
  564. // that.validateForm.controls[i].markAsDirty();
  565. // that.validateForm.controls[i].updateValueAndValidity();
  566. // }
  567. // if (that.validateForm.invalid) return;
  568. // if(this.detailsData.status.name=='未打印'){
  569. // this.notModal = true
  570. // this.validatePrintForm = this.fb.group({
  571. // inVitroTime: [null, [Validators.required]],
  572. // jobNumber: [null, [Validators.required]],
  573. // name:[null, [Validators.required]],
  574. // });
  575. // let date = new Date();
  576. // this.startDate = format(date, "yyyy-MM-dd HH:mm:ss")
  577. // this.validatePrintForm.controls.inVitroTime.setValue(this.startDate);
  578. // return
  579. // }
  580. // let data: any = {
  581. // pathologyForm:{
  582. // ...this.validateForm.value,
  583. // ...this.detailsData,
  584. // surgeryId: this.surgeryId || "",
  585. // patientId: this.patientId || "",
  586. // hosId: this.hosId || "" ,
  587. // specimenType:{
  588. // id:this.validateForm.value.specimenGenre
  589. // }
  590. // }
  591. // };
  592. // delete data.pathologyForm.patientDTO
  593. // delete data.pathologyForm.surgeryDeptDTO
  594. // delete data.pathologyForm.surgeryDoctorDTO
  595. // delete data.pathologyForm.specimenGenre
  596. // that.btnLoading = true;
  597. // that.mainService
  598. // .pathologyPrint(data)
  599. // .subscribe((res:any) => {
  600. // this.hideModal()
  601. // let arr = res.data;
  602. // that.printData = arr;
  603. // that.btnLoading = false;
  604. // setTimeout(() => {
  605. // const printContent = document.getElementById("report");
  606. // const WindowPrt = window.open("", "", "width=100,height=1000");
  607. // WindowPrt.document.write(printContent.innerHTML);
  608. // WindowPrt.document.close();
  609. // WindowPrt.focus();
  610. // WindowPrt.print();
  611. // WindowPrt.close();
  612. // }, 500);
  613. // });
  614. // }
  615. // 关闭标本
  616. closeSpecimenModel(){
  617. this.getSampleData()
  618. this.hideSpecimenModal()
  619. }
  620. closeModel(){
  621. this.hideModal()
  622. }
  623. hideModal(){
  624. this.pathologyCancel.emit()
  625. }
  626. // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
  627. showPromptModal(con, success, promptInfo?) {
  628. this.promptModalShow = false;
  629. this.promptContent = con;
  630. this.ifSuccess = success;
  631. this.promptInfo = promptInfo;
  632. setTimeout(() => {
  633. this.promptModalShow = true;
  634. }, 100);
  635. }
  636. showSpecimenModal(con, success, promptInfo?) {
  637. this.specimenModalShow = false;
  638. this.promptContent = con;
  639. this.ifSuccess = success;
  640. this.promptInfo = promptInfo;
  641. setTimeout(() => {
  642. this.specimenModalShow = true;
  643. }, 100);
  644. }
  645. }