浏览代码

手术通知

seimin 1 年之前
父节点
当前提交
ecaaca47e8

+ 19 - 0
src/app/share/dialog-surgery/dialog-surgery.component.html

@@ -0,0 +1,19 @@
1
+<!-- 模态框 -->
2
+<div class="dialog-delete" *ngIf="delModal">
3
+  <div class="modalBody">
4
+    <div class="title"><span style="color: #fff;">提示</span><i class="icon_transport transport-guanbi" (click)="hideDelModal('x')"></i></div>
5
+    <div class="content">
6
+      <div class="defeat" [innerHTML]="content | htmlTransform"></div>
7
+      <ul class="list">
8
+        <li><span>主刀医生:</span><span>{{ dataObj.doctorName }}</span></li>
9
+        <li><span>麻醉医师:</span><span>{{ dataObj.anesthetistName }}</span></li>
10
+        <li><span>助理医生:</span><span>{{ dataObj.docAssistantInfos }}</span></li>
11
+        <li><span>护士:</span><span>{{ dataObj.nurseName }}</span></li>
12
+      </ul>
13
+    </div>
14
+    <div class="operate">
15
+      <button nz-button nzType="primary" (click)="confirmDel()" [nzLoading]="btnLoading" *ngIf="isShowConfirm">{{confirmTxt}}</button>
16
+      <button class="btn cancel ml8" nz-button nzType="default" (click)="cancel()" [nzLoading]="cancenlLoading">{{cancelTxt}}</button>
17
+    </div>
18
+  </div>
19
+</div>

+ 105 - 0
src/app/share/dialog-surgery/dialog-surgery.component.less

@@ -0,0 +1,105 @@
1
+.dialog-delete {
2
+  display: flex;
3
+  justify-content: center;
4
+  align-items: center;
5
+  position: fixed;
6
+  left: 0;
7
+  top: 0;
8
+  width: 100%;
9
+  height: 100%;
10
+  background: rgba(0, 0, 0, 0.4);
11
+  z-index: 9999999;
12
+
13
+  .modalBody {
14
+    width: 600px;
15
+    min-height: 320px;
16
+    background: #fff;
17
+    border-radius: 8px;
18
+    padding: 8px 28px;
19
+    color: #333;
20
+    display: flex;
21
+    flex-direction: column;
22
+
23
+    .title {
24
+      text-align: center;
25
+      font-size: 18px;
26
+      position: relative;
27
+
28
+      i {
29
+        position: absolute;
30
+        right: 0;
31
+        top: 0;
32
+        font-size: 20px;
33
+        color: #666;
34
+        cursor: pointer;
35
+        padding: 0 5px;
36
+      }
37
+    }
38
+
39
+    .content {
40
+      flex: 1;
41
+      min-height: 227px;
42
+      background: #f9fafb;
43
+      border: 1px solid #e5e9ed;
44
+      border-radius: 8px;
45
+      margin-top: 8px;
46
+      display: flex;
47
+      flex-direction: column;
48
+      align-items: center;
49
+      justify-content: center;
50
+
51
+      .defeat{
52
+        width: 100%;
53
+      }
54
+
55
+      ul.list{
56
+        list-style: none;
57
+        text-align: left;
58
+        font-size: 16px;
59
+        margin: 0;
60
+        padding: 8px 0;
61
+        width: 100%;
62
+        & > li:last-of-type{
63
+          text-indent: 2em;
64
+        }
65
+        li{
66
+          padding: 6px 55px;
67
+          display: flex;
68
+
69
+          span:last-of-type{
70
+            flex: 1;
71
+            word-break: break-all;
72
+            text-indent: 0;
73
+          }
74
+        }
75
+      }
76
+
77
+      & > div {
78
+        text-align: center;
79
+        margin: 0;
80
+
81
+        &.defeat {
82
+          color: #525252;
83
+          font-size: 16px;
84
+          padding: 12px 0;
85
+          border-bottom: 1px solid #e5e9ed;
86
+          span {
87
+            color: red;
88
+          }
89
+        }
90
+
91
+        &:nth-child(3) {
92
+          font-size: 14px;
93
+          color: #666;
94
+        }
95
+      }
96
+    }
97
+    .operate {
98
+      display: flex;
99
+      justify-content: center;
100
+      align-items: center;
101
+      margin-top: 8px;
102
+    }
103
+  }
104
+
105
+}

+ 37 - 0
src/app/share/dialog-surgery/dialog-surgery.component.ts

@@ -0,0 +1,37 @@
1
+import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
2
+@Component({
3
+  selector: "app-dialog-surgery",
4
+  templateUrl: "./dialog-surgery.component.html",
5
+  styleUrls: ["./dialog-surgery.component.less"],
6
+})
7
+export class DialogSurgeryComponent implements OnInit {
8
+  @Output() hideDelModalEvent = new EventEmitter<any>();
9
+  @Output() confirmDelEvent = new EventEmitter<any>();
10
+  @Output() cancelDelEvent = new EventEmitter<any>();
11
+  @Input() btnLoading: boolean = false;
12
+  @Input() cancenlLoading: boolean = false;
13
+  @Input() delModal: boolean = false;
14
+  @Input() content: string = "";
15
+  @Input() confirmTxt: string = "确定";
16
+  @Input() cancelTxt: string = "取消";
17
+  @Input() isShowConfirm: boolean = true;
18
+  @Input() dataObj: object = {};
19
+  constructor() {}
20
+
21
+  ngOnInit() {}
22
+
23
+  // 隐藏
24
+  hideDelModal(e: string) {
25
+    this.hideDelModalEvent.emit(e);
26
+  }
27
+
28
+  // 确认
29
+  confirmDel() {
30
+    this.confirmDelEvent.emit(this.dataObj);
31
+  }
32
+
33
+  // 取消
34
+  cancel() {
35
+    this.hideDelModal("cancel");
36
+  }
37
+}

+ 3 - 0
src/app/share/share.module.ts

@@ -22,6 +22,7 @@ import { DragDirective } from '../directives/drag.directive';
22 22
 import { AppraiseDetailComponent } from './appraise-detail/appraise-detail.component';
23 23
 import { OrderDetailComponent } from './order-detail/order-detail.component';
24 24
 import { DialogDeleteComponent } from './dialog-delete/dialog-delete.component';
25
+import { DialogSurgeryComponent } from './dialog-surgery/dialog-surgery.component';
25 26
 import { MaskComponent } from './mask/mask.component';
26 27
 import { GenerateFloorComponent } from './generate-floor/generate-floor.component';
27 28
 import { BatchOrdersComponent } from './batch-orders/batch-orders.component';
@@ -61,6 +62,7 @@ import { BloodHistoryPromptModalComponent } from './blood-history-prompt-modal/b
61 62
     DateTransformPipe,
62 63
     DragDirective,
63 64
     DialogDeleteComponent,
65
+    DialogSurgeryComponent,
64 66
     MaskComponent,
65 67
     GenerateFloorComponent,
66 68
     BatchOrdersComponent,
@@ -115,6 +117,7 @@ import { BloodHistoryPromptModalComponent } from './blood-history-prompt-modal/b
115 117
     DateTransformPipe,
116 118
     DragDirective,
117 119
     DialogDeleteComponent,
120
+    DialogSurgeryComponent,
118 121
     MaskComponent,
119 122
     GenerateFloorComponent,
120 123
     BatchOrdersComponent,

+ 8 - 1
src/app/views/hushijiandan/hushijiandan.component.html

@@ -381,7 +381,10 @@
381 381
                   <span nz-col nzSpan="24" class="wordBreak">{{ item.areaDeptDTO ? (deptDisplay == 2 ? item.areaDeptDTO.deptalias : item.areaDeptDTO.dept) : '' }}</span>
382 382
                   <span nz-col nzSpan="24" class="wordBreak">{{ item.surgeryName }}</span>
383 383
                 </div>
384
-                <div class="btn" (click)="pickUpPatient($event, item)">一键接患者</div>
384
+                <div class="btnNews">
385
+                  <div class="btn" (click)="surgeryBegin($event, item)" *ngIf="surgeryConfigs.surgeryBegin == 1">即将开始</div>
386
+                  <div class="btn" (click)="pickUpPatient($event, item)">一键接患者</div>
387
+                </div>
385 388
               </div>
386 389
             </div>
387 390
           </overlay-scrollbars>
@@ -3789,6 +3792,10 @@
3789 3792
 <app-dialog-delete [delModal]="pickUpModal" (hideDelModalEvent)="hidePickUpModal()" [btnLoading]="btnLoading"
3790 3793
 (confirmDelEvent)="confirmPickUp()" [content]="pickUpInfo"></app-dialog-delete>
3791 3794
 
3795
+<!-- 手术即将开始通知 -->
3796
+<app-dialog-surgery [delModal]="surgeryModal" (hideDelModalEvent)="hideSurgeryModal()" [btnLoading]="btnLoading"
3797
+(confirmDelEvent)="confirmSurgery($event)" [content]="surgeryInfo" [dataObj]="surgeryItem"></app-dialog-surgery>
3798
+
3792 3799
 <!-- 手术中患者-送回病房 -->
3793 3800
 <app-dialog-delete [delModal]="sendWardModal" (hideDelModalEvent)="hideSendWardModal()" [btnLoading]="sLoading1"
3794 3801
 (confirmDelEvent)="confirmSendWard($event)" [content]="sendWardInfo" [isChecked]="surgeryConfigs && surgeryConfigs.remandClean == 1"></app-dialog-delete>

+ 11 - 0
src/app/views/hushijiandan/hushijiandan.component.less

@@ -796,6 +796,17 @@
796 796
               }
797 797
             }
798 798
 
799
+            .btnNews{
800
+              display: flex;
801
+              justify-content: center;
802
+              align-items: center;
803
+              .btn{
804
+                flex: 1;
805
+                margin: 0 1%;
806
+                cursor: pointer;
807
+              }
808
+            }
809
+
799 810
             .row {
800 811
               overflow: hidden;
801 812
 

+ 39 - 0
src/app/views/hushijiandan/hushijiandan.component.ts

@@ -1741,6 +1741,44 @@ export class HushijiandanComponent implements OnInit {
1741 1741
     }
1742 1742
   };
1743 1743
 
1744
+  surgeryModal: boolean = false; //模态框
1745
+  surgeryInfo:string = '';
1746
+  surgeryItem: any = {};
1747
+  hideSurgeryModal() {
1748
+    this.surgeryModal = false;
1749
+  }
1750
+  // 确认
1751
+  confirmSurgery(surgeryItem) {
1752
+    console.log(surgeryItem);
1753
+    this.btnLoading = true;
1754
+    this.mainService
1755
+      .listMsgByMain('surgeryMsg', {
1756
+        surgeryId: surgeryItem.id,
1757
+        code: 'surgery_begin',
1758
+      })
1759
+      .subscribe((result:any) => {
1760
+        this.btnLoading = false;
1761
+        this.surgeryModal = false;
1762
+        if(result.state == 200){
1763
+          this.showPromptModal("操作", true, "");
1764
+        }else{
1765
+          this.showPromptModal("操作", false, result.msg);
1766
+        }
1767
+      });
1768
+  }
1769
+
1770
+  // 手术安排信息-即将开始
1771
+  surgeryBegin(e, item){
1772
+    e.stopPropagation();
1773
+    this.surgeryModal = true;
1774
+    if(item.docAssistantInfos){
1775
+      item.docAssistantInfos = item.docAssistantInfos.split('|').map(v => v.split(',')[0]).join(' / ');
1776
+    }
1777
+    this.surgeryItem = item;
1778
+    this.surgeryInfo = `提示:您即将给以下工作人员发送短信/微信提醒,请确认以下信息`
1779
+  }
1780
+  // -----------------
1781
+
1744 1782
   pickUpModal: boolean = false; //模态框
1745 1783
   pickUpInfo:string = '';
1746 1784
   pickUpItem: any = {};
@@ -1774,6 +1812,7 @@ export class HushijiandanComponent implements OnInit {
1774 1812
         }
1775 1813
       });
1776 1814
   }
1815
+
1777 1816
   // 手术安排信息-一键接患者
1778 1817
   pickUpPatient(e, item){
1779 1818
     e.stopPropagation();

+ 5 - 0
src/app/views/operation-config/operation-config.component.html

@@ -79,6 +79,11 @@
79 79
             </nz-option>
80 80
           </nz-select>
81 81
         </div>
82
+        <!-- 是否开启手术即将开始通知 -->
83
+        <div class="display_flex align-items_center mb8">
84
+          <nz-form-label class="label">是否开启手术即将开始通知</nz-form-label>
85
+          <nz-checkbox-group [(ngModel)]="surgeryBegin"></nz-checkbox-group>
86
+        </div>
82 87
       </div>
83 88
       <!-- 自动建单配置 -->
84 89
       <div *ngIf="tabModalName=='automaticOrderCreation'">

+ 7 - 0
src/app/views/operation-config/operation-config.component.ts

@@ -40,6 +40,10 @@ export class OperationConfigComponent implements OnInit {
40 40
   autoRemandClean:any[] = [
41 41
     {label:'是否开启',value: 0}
42 42
   ];
43
+  // 是否开启手术即将开始通知
44
+  surgeryBegin:any[] = [
45
+    {label:'是否开启',value: 0}
46
+  ];
43 47
   // 建单时间
44 48
   autoTime:Date | null = null;
45 49
   tasktype1Id:any;
@@ -138,6 +142,7 @@ export class OperationConfigComponent implements OnInit {
138 142
       remandRecovery: this.autoSendAwakeningRoom[0].checked ? 1 : 0,
139 143
       recoveryTypeId: this.tasktype2Id || undefined,
140 144
       remandClean: this.autoRemandClean[0].checked ? 1 : 0,
145
+      surgeryBegin: this.surgeryBegin[0].checked ? 1 : 0,
141 146
       cleanTypeId: this.cleanTypeId || undefined,
142 147
     };
143 148
     let postData = Object.assign({}, this.configs, editData);
@@ -324,6 +329,8 @@ export class OperationConfigComponent implements OnInit {
324 329
                     this.taskTypes2.unshift(this.configs.cleanType);
325 330
                   }
326 331
                 }
332
+
333
+                this.surgeryBegin[0].checked = this.configs.surgeryBegin == 1;
327 334
               }
328 335
             });
329 336
         }else{