123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545 |
- import { Component, OnInit, ViewChild } from "@angular/core";
- import { ActivatedRoute, Router } from "@angular/router";
- import { FormBuilder, Validators, FormGroup } from "@angular/forms";
- import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
- import { ToolService } from "../../services/tool.service";
- import { Subject } from "rxjs";
- import { debounceTime } from "rxjs/operators";
- import { EmergencyInfoService } from './emergency-info.service';
- import { format, startOfDay, endOfDay } from 'date-fns';
- import { NzMessageService } from "ng-zorro-antd";
- import { MainService } from 'src/app/services/main.service';
- @Component({
- selector: "app-emergency-info",
- templateUrl: "./emergency-info.component.html",
- styleUrls: ["./emergency-info.component.less"],
- })
- export class EmergencyInfoComponent implements OnInit {
- @ViewChild("osComponentRef1", {
- read: OverlayScrollbarsComponent,
- static: false,
- })
- osComponentRef1: OverlayScrollbarsComponent;
- constructor(
- private message: NzMessageService,
- private fb: FormBuilder,
- private route: ActivatedRoute,
- private router: Router,
- private tool: ToolService,
- private quickOrderAcceptanceService: EmergencyInfoService,
- private mainService: MainService,
- ) {}
- listOfData: any[] = []; //表格数据
- modal: boolean = false; //新增/编辑模态框
- add: boolean; //true:新增;false:编辑
- validateForm: FormGroup; //新增/编辑表单
- coopId: number; //表格中执行操作的id
- department: any; //所属科室
- hosId: any; //院区(搜索)
- typeList: Array<any>; //快捷类型
- taskTypeList: Array<any>; //所有任务类型
- deptList: Array<any>; //所有科室
- pageIndex: number = 1; //页码
- listLength: number = 10; //总条数
- pageSize: number = 10; //每页条数
- promptContent: string; //操作提示框提示信息
- ifSuccess: boolean; //操作成功/失败
- promptInfo: string; //操作结果提示信息
- promptModalShow: boolean; //操作提示框是否展示
- btnLoading: boolean = false; //提交按钮loading状态
- changeInpSubject = new Subject(); //防抖
- changeInpDeptSubject = new Subject(); //防抖
- // 初始化增删改按钮
- coopBtns: any = {};
- alarmStatus:any;
- incidentStatus:any;
- alarmIp:any;
- alarmUrgency:any;
- dateRange:any = [];
-
- ngOnInit() {
- // 全局监听
- this.tool.getEventEndObservable().subscribe(res => {
- console.log('全局的监听触发2222', res);
- let data:any = res;
- if(data.message == '关单'){
- this.getList(true)
- }
- });
- //防抖
- this.changeInpSubject.pipe(debounceTime(500)).subscribe((v) => {
- this.getTasktype(v[0]);
- });
- //防抖
- this.changeInpDeptSubject.pipe(debounceTime(500)).subscribe((v) => {
- this.getDept(v[0]);
- });
- this.coopBtns = this.tool.initCoopBtns(this.route);
- this.initForm();
- this.hosId = this.tool.getCurrentHospital().id;
- this.getList(true);
- this.getGdList();
- }
-
- // 日期选择
- startDate: string; //发起时间开始
- endDate: string; //发起时间结束
- changeDate(result?): void {
- if (result.length==0) {
- this.startDate = this.endDate = null;
- return;
- }
- this.startDate = format(result[0], 'yyyy-MM-dd HH:mm:ss');
- this.endDate = format(result[1], 'yyyy-MM-dd HH:mm:ss');
- this.dateRange = [this.startDate,this.endDate]
- }
-
- onCalendarChangeDate(dateArr){
- console.log(dateArr)
- if(dateArr.length == 2){
- let dateStart = new Date(dateArr[0]);
- let dateEnd = new Date(dateArr[1]);
- dateStart.setHours(0,0,0);
- dateEnd.setHours(23,59,59);
- this.dateRange = [dateStart,dateEnd];
- }
- }
-
- // 获取工单状态
- gdList:any = [];
- alarmList:any = [];
- urgencyList:any = [];
- getGdList() {
- this.isLoading = true;
- this.quickOrderAcceptanceService.getDictionary("incident_status").subscribe((res) => {
- this.isLoading = false;
- this.gdList = res || [];
- });
- this.quickOrderAcceptanceService.getDictionary("alarm_status").subscribe((res) => {
- this.isLoading = false;
- this.alarmList = res || [];
- });
- this.quickOrderAcceptanceService.getDictionary("alarm_urgency").subscribe((res) => {
- this.isLoading = false;
- this.urgencyList = res || [];
- });
- }
-
- // 搜索
- search() {
- this.getList(true);
- }
-
- // 重置
- reset() {
- this.alarmStatus = null;
- this.incidentStatus = null;
- this.alarmIp = null;
- this.alarmUrgency = null;
- this.startDate = null;
- this.endDate = null;
- this.dateRange = [];
- this.getList(true);
- }
-
- // 表格数据
- loading1 = false;
- getList(isResetPageIndex = false, type?) {
- isResetPageIndex && (this.pageIndex = 1);
- let data = {
- pageIndex: this.pageIndex,
- pageSize: this.pageSize,
- alarm:{
- hosId: this.hosId,
- alarmStatus:{
- id:this.alarmStatus
- },
- incidentStatus:this.incidentStatus,
- alarmIp:this.alarmIp,
- alarmUrgency:{
- id:this.alarmUrgency,
- },
- startTime: this.startDate || undefined,
- endTime: this.endDate || undefined,
- }
- };
- if(this.alarmStatus){
- data.alarm.alarmStatus.id = this.alarmStatus
- }else{
- delete data.alarm.alarmStatus
- }
- if(this.alarmUrgency){
- data.alarm.alarmUrgency.id = this.alarmUrgency
- }else{
- delete data.alarm.alarmUrgency
- }
- this.loading1 = true;
- if(type!='page'){
- this.mapOfCheckedId = {};
- this.checkedDepIds = [];
- }
- this.isAllDisplayDataChecked = false;
- this.quickOrderAcceptanceService
- .query(data)
- .subscribe((result) => {
- this.loading1 = false;
- this.listOfData = result.list;
- this.listLength = result.totalNum;
- });
- }
- // 获取任务类型列表
- getTasktype(keywords = '') {
- let hosId = this.tool.getCurrentHospital().id;
- this.isLoading = true;
- this.quickOrderAcceptanceService.queryTasktype({
- hosId,
- keywords,
- }).subscribe((res) => {
- this.isLoading = false;
- this.taskTypeList = res.list || [];
- });
- }
- // 获取科室列表
- getDept(keywords = '') {
- let hosId = this.tool.getCurrentHospital().id;
- this.isLoading = true;
- this.quickOrderAcceptanceService.queryDept({
- hosId,
- keywords,
- }).subscribe((res) => {
- this.isLoading = false;
- this.deptList = res.list || [];
- });
- }
- // 获取快捷类型
- getTypeList() {
- this.isLoading = true;
- this.quickOrderAcceptanceService.getDictionary("receiveRuleType").subscribe((res) => {
- this.isLoading = false;
- this.typeList = res || [];
- });
- }
- // 新增弹框
- showModal() {
- this.add = true;
- this.modal = true;
- this.initForm();
- }
- hideModal() {
- this.modal = false;
- this.initForm();
- }
- // 初始化新增form表单
- initForm() {
- if (this.add) {
- this.typeList = [];
- this.taskTypeList = [];
- this.deptList = [];
- }
- this.validateForm = this.fb.group({
- title: ['', [Validators.required]],
- taskTypeIds: [null, [Validators.required]],
- deptIds: [null, [Validators.required]],
- type: [null, [Validators.required]],
- });
- }
- // 表单提交
- submitForm(): void {
- for (const i in this.validateForm.controls) {
- this.validateForm.controls[i].markAsDirty({ onlySelf: true });
- this.validateForm.controls[i].updateValueAndValidity();
- }
- if (this.validateForm.invalid) return;
- this.btnLoading = true;
- if(this.add){
- this.quickOrderAcceptanceService
- .add({
- title: this.validateForm.value.title,
- taskTypeIds: this.validateForm.value.taskTypeIds,
- deptIds: this.validateForm.value.deptIds,
- type: {id: this.validateForm.value.type},
- hosId: this.hosId,
- })
- .subscribe((data) => {
- this.btnLoading = false;
- this.hideModal();
- this.initForm();
- this.operateType = 'no'
- if (data.status == 200) {
- this.showPromptModal(this.add ? "新增" : "编辑", true, "");
- } else {
- this.showPromptModal(this.add ? "新增" : "编辑", false, data.msg);
- }
- });
- }else{
- this.quickOrderAcceptanceService
- .update({
- title: this.validateForm.value.title,
- taskTypeIds: this.validateForm.value.taskTypeIds,
- deptIds: this.validateForm.value.deptIds,
- type: {id: this.validateForm.value.type},
- coopData: this.coopData,
- })
- .subscribe((data) => {
- this.btnLoading = false;
- this.hideModal();
- this.initForm();
- this.operateType = 'no'
- if (data.status == 200) {
- this.showPromptModal(this.add ? "新增" : "编辑", true, "");
- } else {
- this.showPromptModal(this.add ? "新增" : "编辑", false, data.msg);
- }
- });
- }
- }
-
- // 批量恢复
- infoContent:any;
- optModal:boolean = false;
- operationType:any;
- batchRecover(){
- if(this.checkedDepIds.length==0){
- this.message.error('请勾选告警列表')
- return
- }
- this.operationType = 'batchRecovery'
- this.infoContent=`您确认要恢复${this.checkedDepIds.length}项告警吗?`
- this.optModal = true
- }
-
- // 批量不处理
- batchNo(){
- if(this.checkedDepIds.length==0){
- this.message.error('请勾选告警列表')
- return
- }
- this.operationType = 'batchUnprocessed'
- this.infoContent=`您确认要不处理${this.checkedDepIds.length}项告警吗?`
- this.optModal = true
- }
-
- // 确认
- confirmOpt() {
- this.btnLoading = true;
- this.quickOrderAcceptanceService
- .operation({
- operationType: this.operationType,
- ids: this.checkedDepIds,
- })
- .subscribe((data) => {
- this.btnLoading = false;
- this.hideOptModal();
- this.operateType = 'no'
- if (data.status == 200) {
- this.showPromptModal("操作", true, "");
- } else {
- this.showPromptModal("操作", false, data.msg);
- }
- });
- }
-
- // 关闭模态框
- hideOptModal() {
- this.optModal = false;
- }
-
- // 消息发送
- sendModal:boolean = false;
- tipsMsg2:any = '您确定要发送消息吗?';
- send(data){
- this.itemData = data;
- this.sendModal = true;
- }
-
- hideSendModal(){
- this.sendModal = false;
- }
-
- // 确定发送消息
- operateType:any;
- confirmSend(){
- let data = {
- alarm:{
- operationType: 'sendMsg',
- id: this.itemData.id,
- }
- };
- this.btnLoading = true;
- this.mainService
- .dataPost("updData", "alarm", data)
- .subscribe((data) => {
- this.btnLoading = false;
- this.sendModal = false;
- if (data.status == 200) {
- this.operateType = 'send'
- this.showPromptModal("操作", true, "");
- } else {
- this.showPromptModal("操作", false, data.msg);
- }
- });
- }
-
- // 建单
- addOrder(data){
- this.tool.triggerEvent({
- message:'建单',
- data: data
- })
- }
-
- // 查看工单
- detailModalShow = false; //弹窗开关
- detail(e, data) {
- e.stopPropagation();
- if(!data.incidentSign){
- return
- }
- this.coopData = data;
- this.detailModalShow = true;
- }
- // 关闭弹窗
- closeDetailModelOrder(e) {
- this.detailModalShow = JSON.parse(e).show;
- }
- // 弹窗确定
- confirmDetailModelOrder(e){
- console.log(e);
- this.detailModalShow = false;
- this.getList(true);
- }
-
- refreshList(){
-
- }
-
- // 查看列表
- itemData:any;
- lookModal:boolean = false;
- look(data){
- this.itemData = data;
- this.lookModal = true
- }
-
- // 关闭查看
- close(){
- this.lookModal = false
- }
-
- // 选中表格中科室
- mapOfCheckedId: { [key: string]: boolean } = {};
- checkedDepIds = []; //已选中科室id
- refreshStatus(): void {
- this.isAllDisplayDataChecked = this.listOfData.every(
- (item) => this.mapOfCheckedId[item.id]
- );
- let arr = [];
- for (var k in this.mapOfCheckedId) {
- if (this.mapOfCheckedId[k]) {
- arr.push(Number(k));
- }
- }
- this.checkedDepIds = arr;
- console.log(this.checkedDepIds);
- }
- //表格整行选中
- selectedListData(id) {
- this.mapOfCheckedId[id] = !this.mapOfCheckedId[id];
- this.refreshStatus();
- }
- // 全选
- isAllDisplayDataChecked = false; //当前页是否全选
- checkAll(value: boolean): void {
- this.listOfData.forEach((item) => (this.mapOfCheckedId[item.id] = value));
- this.refreshStatus();
- }
- // 编辑
- maskFlag: any = false;
- coopData = {};
- edit(data) {
- this.validateForm.controls.title.setValue(data.title);
- this.validateForm.controls.type.setValue(data.type ? data.type.id : null);
- this.validateForm.controls.taskTypeIds.setValue(data.taskTypeList ? data.taskTypeList.map(v => v.id) : null);
- this.validateForm.controls.deptIds.setValue(data.deptList ? data.deptList.map(v => v.id) : null);
- this.modal = true;
- this.add = false;
- this.coopId = data.id;
- this.coopData = data;
- this.getTasktype();
- this.getDept();
- this.getTypeList();
- }
- // 删除
- delModal: boolean = false; //删除模态框
- del(data) {
- this.coopId = data.id;
- this.delModal = true;
- }
- // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
- showPromptModal(con, success, promptInfo?) {
- this.promptModalShow = false;
- this.promptContent = con;
- this.ifSuccess = success;
- this.promptInfo = promptInfo;
- setTimeout(() => {
- this.promptModalShow = true;
- }, 100);
- if(this.operateType = 'send'){
- this.getList();
- }else{
- this.getList(true);
- }
- }
- // 边输边搜节流阀
- isLoading = false;
- changeInp(e) {
- this.changeInpSubject.next([e]);
- }
- // 边输边搜节流阀
- changeDeptInp(e) {
- this.changeInpDeptSubject.next([e]);
- }
- // 打开任务类型
- openTasktype(e){
- if(e){
- this.getTasktype();
- }
- }
- // 打开科室
- openDept(e){
- if(e){
- this.getDept();
- }
- }
- // 打开班次
- openSchedule(e){
- if(e){
- this.getTypeList();
- }
- }
- }
|