import {
  Component,
  OnInit,
  TemplateRef,
  ViewChild,
  ElementRef,
  HostListener,
} from "@angular/core";
import { FormBuilder, FormGroup, Validators, FormControl } from "@angular/forms";
import { Router, ActivatedRoute } from "@angular/router";

import { MainService } from "../../services/main.service";
import { WebsocketPhoneService } from "../../services/websocket-phone.service";
import { WebsocketSerService } from "../../services/websocket-ser.service";
import http from "../../../assets/js/http";

import { NzMessageService } from "ng-zorro-antd/message";
import { NzNotificationService } from "ng-zorro-antd/notification";
import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
import { Subject, forkJoin } from "rxjs";
import { debounceTime, filter, map } from "rxjs/operators";
import { SourceId } from "src/app/type/types";
import { ToolService } from 'src/app/services/tool.service';
import { addDays, differenceInCalendarDays, getHours, getMinutes, setMinutes, parse, format, addHours, startOfDay, endOfDay, addMinutes } from 'date-fns';
import { UploadFile } from 'ng-zorro-antd';
import { HttpRequest, HttpClient, HttpResponse } from '@angular/common/http';
import cloneDeep from 'lodash-es/cloneDeep'
import { WebsocketIncomingService } from 'src/app/services/websocket-incoming.service';

declare const tlwsa: any;
declare const TLWSA: any;

// 日期禁用
function range(start: number, end: number): number[] {
  const result: number[] = [];
  for (let i = start; i < end; i++) {
    result.push(i);
  }
  return result;
}

@Component({
  selector: "app-fuwutai",
  templateUrl: "./fuwutai.component.html",
  styleUrls: ["./fuwutai.component.less"],
})
export class FuwutaiComponent implements OnInit {
  @ViewChild('printBtn', { static: false }) printBtn: ElementRef<HTMLElement>;
  @ViewChild("remarksEle", { static: false }) remarksEle: ElementRef;
  @ViewChild("tabs", { static: false }) tabs: ElementRef;
  @ViewChild("tab", { static: false }) elementView: ElementRef;
  @ViewChild("osComponentRef7", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef7: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef8", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef8: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef9", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef9: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef10", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef10: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef11", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef11: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef12", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef12: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef13", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef13: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef14", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef14: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef15", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef15: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef16", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef16: OverlayScrollbarsComponent;
  @ViewChild("osComponentRef17", {
    read: OverlayScrollbarsComponent,
    static: false,
  })
  osComponentRef17: OverlayScrollbarsComponent;
	@ViewChild("osComponentRef25", {
	  read: OverlayScrollbarsComponent,
	  static: false,
	})
	osComponentRef25: OverlayScrollbarsComponent;
	@ViewChild("osComponentRef26", {
	  read: OverlayScrollbarsComponent,
	  static: false,
	})
	osComponentRef26: OverlayScrollbarsComponent;
  constructor(
    private fb: FormBuilder,
    public router: Router,
    private mainService: MainService,
    private msg: NzMessageService,
    private notification: NzNotificationService,
    private phones: WebsocketPhoneService,
    private sers: WebsocketSerService,
    private tool: ToolService,
    private http: HttpClient,
    public route: ActivatedRoute,
    public incomingService: WebsocketIncomingService,
  ) {
    // 在组件中订阅服务的Observable
    this.phones.getDataUpdate().subscribe(data => {
      this.websocketLoading = data;
    });
  }
  validateFormZy!: FormGroup;
  validateFormQt!: FormGroup;
  // ---------------------------------------
  noWorkerPhone = false; //请求是否携带来电号码
  patientList; //患者信息列表
  isLoading: Boolean = false; //下拉框loading
  disX = 0; //移动的距离
  disStep = 0; //移动的步长
  applicationDepartmentList = []; //新建工单->申请科室列表（搜索）
  callNumber = ""; //来电号码
  workTypes = []; //任务类型
  workTypesArrange = []; //整理后的任务类型
  workTypesFlag = false; //任务类型是否显示操作项
  currentTabIndex = ""; //获取任务类型的key
  radioValueZy: any = ""; //转运->类型
  radioValueZyPre: any = ""; //转运->类型
  deptZyList: any = {}; //转运->请求结果
  startDeptZy = ""; //转运->选中起点科室
  endDeptZy = ""; //转运->选中终点科室
  patientZy = ""; //转运->选中患者编码
  radioValueQt: any = ""; //转运->类型
  deptQtList: any = {}; //其他->请求结果
  startDeptQt = ""; //其他->选中起点科室
  endDeptQt = ""; //其他->选中终点科室
  workOrderRemark = ""; //工单备注
  workOrderRemarkZy = ""; //工单备注
  // 新建工单弹框
  newOrderShow = false; //展示/隐藏新建工单弹框
  newOrderShowOpen = false; //展示/隐藏新建工单弹框(辅助项)
  isOkLoading = false; //确认按钮loading状态
  applyDept; //申请科室
  applyDeptMiddle; //申请科室(中间传递)
  taskBuild; //任务类型选择
  residenceNo; //住院号
  targetDept; //目标科室
  noArrives = []; //未到达列表
  newLoading = false; //loading
  //防抖
  changeInpSubject = new Subject();
  changeCommonInpSubject = new Subject();
  onSearchTaskBuildSubject = new Subject();
  searchHosDepartmentSubject = new Subject();
  searchHosDepartmentQtSubject = new Subject();
  searchPatientListSubject = new Subject();
  inspectSubject = new Subject();
	changeAssetInpSubject = new Subject();
  // 运维相关
  incidentModel:any = {};
  incidentMsg:any = {};

  // 初始化增删改按钮
  coopBtns: any = {};
	validateZwForm: FormGroup; //新增政务值班表单
	
	// 一键派单
	sendModal:boolean = false;
	allSendOrders(){
		this.sendModal = true;
	}
	
	//  一键派单取消
	closeSecdModal(){
		this.sendModal = false;
	}
	
	// 一键派单提交
	confirmSecd(){
		let types = "";
		this.user.user.scope.typeIds.forEach((e) => {
		  types += e.id + ",";
		});
		types = types.slice(0, types.length - 1);
		
		let postData = {
			workOrder: {
				serTaskTypes: types || undefined,
				serGdState: 1,
				range: this.orderScopeRadio,
				platform: 3,
				searchDays: this.searchDay || 1,
			},
			hosId: this.checkedHos,
			idx: 0,
			sum: 1
		}
		if (this.unassignedBuilding.length) {
		  postData.workOrder["deptIds"] = this.unassignedBuilding.toString();
		}
		
		this.btnLoading = true
		this.mainService.oneClickAssignOrders(postData).subscribe((result:any) =>{
		  if(result.status == 200){
				this.btnLoading = false
		    this.closeSecdModal();
		    this.showPromptModal("派单", true, "");
		  }else{
				this.showPromptModal('派单', false, result.msg);
			}
		});
	}
	
  // 获取院区配置配置，是否核酸打印
  isShowNucleicAcidPrinting = false;
  getHospitalConfigList(key) {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData = { idx: 0, sum: 1, hospitalConfig: { hosId: this.checkedHos, key } };
    this.mainService.getFetchDataList("simple/data", "hospitalConfig", postData).subscribe(result=>{
      if(result.status == 200){
        this.isShowNucleicAcidPrinting = result.list[0].value == 1;
      }else{
        this.isShowNucleicAcidPrinting = false;
      }
    });
  }

  // 打开选择楼栋多选框
  openChangeUnassignedBuilding(e) {
    if (e) {
      this.getUnassignedBuilding();
    }
  }
  // 获取楼栋-未派单
  unassignedBuildings = [];
  unassignedBuilding = [];
  bLoading = false;
  getUnassignedBuilding() {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData: any = {
      hosId: this.checkedHos,
      unassignedOder: 1, //未派单
    };
    if (this.allUnassignedOrders) {
      postData.wokerIds = this.allUnassignedOrders;
    }
    this.bLoading = true;
    this.mainService
      .coopData("getBuildingOrFloor", "building", postData)
      .subscribe((result) => {
        this.bLoading = false;
        if (result.status == 200) {
          this.unassignedBuildings = result.data;
        }
      });
  }
  allUnassignedOrders = "";
  b2Loading = false;
  getUnassignedBuilding2() {
    if (this.user.user.scope) {
      this.user.user.scope.typeIds = this.user.user.scope.typeIds || [];
    } else {
      return;
    }
    let types = "";
    this.user.user.scope.typeIds.forEach((e) => {
      types += e.id + ",";
    });
    types = types.slice(0, types.length - 1);
    let postData = {
      workOrder: {
        serTaskTypes: types || undefined,
        serGdState: 1,
        range: this.orderScopeRadio,
        platform: 3,
        searchDays: this.searchDay,
        keyWord: "",
      },
      idx: 0,
      sum: 9999,
    };
    this.b2Loading = true;
    this.mainService
      .getFetchDataList("ser", "workOrder", postData)
      .subscribe((result) => {
        this.b2Loading = false;
        if (result.status == 200) {
          this.allUnassignedOrders = result.list
            .map((item) => item.id)
            .toString();
        }
      });
    // -----------------------
  }
  // 选中未派单列表-全选
  changeAllUnassignedList(e) {
    this.unassignedList.forEach((v) => (v.checked = e));
    this.unassignedList.forEach((item1) => {
      this.unassignedListClone.forEach((item2) => {
        if (item1.data.id == item2.data.id) {
          item2.checked = item1.checked;
        }
      });
    });
    this.batchType = this.unassignedListClone.some((item) => item.checked);
  }
  // 选中待到达列表-全选
  changeAllArriveList(e) {
    this.arriveList.forEach((v) => (v.checked = e));
    this.arriveList.forEach((item1) => {
      this.arriveListClone.forEach((item2) => {
        if (item1.data.id == item2.data.id) {
          item2.checked = item1.checked;
        }
      });
    });
    this.batchType1 = this.arriveListClone.some((item) => item.checked);
  }
  // 添加备注
  addRemarks(item) {
    this.remarksEle.nativeElement.focus();
    this.workOrderRemark += item;
  }
  // 批量分派
  batchType = false; //是否开启批量派单
  batchDispatch() {
    let ids_types = [];
    let stateIds = [];
    this.unassignedList.forEach((item) => {
      if (item.checked) {
        if (item.data.gdState.value == 2) {
          //普通派单
          ids_types.push(`${item.data.id}_assign`);
        } else if (!item.data.worker && item.data.gdState.value != 2) {
          ids_types.push(`${item.data.id}_reassign`);
        }
        stateIds.push(item.data.gdState.id);
      }
    });
    this.router.navigateByUrl(
      "dispatchingDesk/allotWorker/" +
        ids_types.join("-") +
        "/" +
        stateIds.join("-") +
        "/2/" +
        this.checkedHos
    );
  }
  // 批量撤回
  batchType1 = false; //是否开启批量撤回
  batchClickType1 = false; //是否点击批量撤回
  batchWithdrawal() {
    this.batchClickType1 = true;
    let ids = [];
    this.arriveList.forEach((item) => {
      if (item.checked) {
        ids.push(item.data.id);
      }
    });
    this.openRecallModal(ids.join("-"));
  }
  // 批量分派选中
  allUnassignedList = false;
  batchDispatchSelect(e, id, event?) {
    event && event.stopPropagation();
    this.unassignedList.forEach((item) => {
      if (item.data.id == id) {
        item.checked = e;
      }
    });
    this.unassignedList.forEach((item1) => {
      this.unassignedListClone.forEach((item2) => {
        if (item1.data.id == item2.data.id) {
          item2.checked = item1.checked;
        }
      });
    });
    this.batchType = this.unassignedListClone.some((item) => item.checked);
    if (this.unassignedListClone.length) {
      this.allUnassignedList = this.unassignedListClone.every(
        (item) => item.checked
      );
    } else {
      this.allUnassignedList = false;
    }
  }
  // 批量撤回选中
  allArriveList = false;
  batchWithdrawalSelect(e, id, event?) {
    event && event.stopPropagation();
    this.arriveList.forEach((item) => {
      if (item.data.id == id) {
        item.checked = e;
      }
    });
    this.arriveList.forEach((item1) => {
      this.arriveListClone.forEach((item2) => {
        if (item1.data.id == item2.data.id) {
          item2.checked = item1.checked;
        }
      });
    });
    this.batchType1 = this.arriveListClone.some((item) => item.checked);
    if (this.arriveListClone.length) {
      this.allArriveList = this.arriveListClone.every((item) => item.checked);
    } else {
      this.allArriveList = false;
    }
  }

  // 获取科室
  applyStartDept;
	patientCode:any;
	taskTypeId:any;
	patientObj:any;
  // 患者转运表单提交
  submitFormZy(go?): void {
    let newOrderShowFlag = true; //是否可以关闭弹窗
    for (const i in this.validateFormZy.controls) {
      this.validateFormZy.controls[i].markAsDirty();
      this.validateFormZy.controls[i].updateValueAndValidity();
      if (this.validateFormZy.controls[i].valid === false && i !== "goods" && i !== "inspectScore") {
        //携带设备非必填
        // if (this.validateFormZy.controls[i].valid === false && i !== 'goods' && i !== 'patient') {//携带设备非必填
        newOrderShowFlag = false;
      }
      if (!this.validateFormZy.controls[i].valid) {
        this.isOkLoading = false;
        this.isGoLoading = false;
      }
    }
    if (newOrderShowFlag) {
      let goods = this.validateFormZy.controls.goods.value
        ? this.validateFormZy.controls.goods.value.filter(
            (item) => item.checked === true
          )
        : [];
      goods = goods.map((current) => current.value).join();

      // 预约日期
      let yyTime1;
      if(this.isYyInspect && this.currentTabIndex == '患者转运'){
        let yyDateZy = (typeof this.yyDateZy === 'object') ? new Date(this.yyDateZy) : parse(this.yyDateZy, 'yyyy-MM-dd HH:mm:ss', new Date());
        let yyTimeZy = (typeof this.yyTimeZy === 'object') ? new Date(this.yyTimeZy) : parse(this.yyTimeZy, 'yyyy-MM-dd HH:mm:ss', new Date());
        yyTime1 = format(yyDateZy, "yyyy-MM-dd") + " " + format(yyTimeZy, "HH:mm") + ":00";
      }

      let postData = {
        workOrder: {
          yyTime: yyTime1,
          sourceId: SourceId.fuwutai,
          taskType: {
            id: this.validateFormZy.controls.taskType.value,
          },
          startDept: {
            id: this.validateFormZy.controls.startDept.value,
          },
          createDept: this.applyDept,
          endDepts: [
            {
              id: this.validateFormZy.controls.endDepts.value,
            },
          ],
          patient: {
            patientCode: this.validateFormZy.controls.patient.value,
          },
          goods: goods,
          inspectScore: this.validateFormZy.controls.inspectScore.value ? { id: this.validateFormZy.controls.inspectScore.value } : undefined,
          workOrderRemark: this.validateFormZy.controls.workOrderRemarkZy.value,
        },
      };
      if (!this.noWorkerPhone) {
        postData.workOrder["workOrderPhone"] = this.callNumber;
      }
      this.mainService.buildOrder(postData).subscribe((data) => {
        console.log(data);
        this.isOkLoading = false;
        this.isGoLoading = false;
				this.dataStatus = data["status"];
        if (data["status"] == 200) {
          this.newOrderShow = false; //关闭弹窗
          if (go === "&go&") {
            this.applyDept = data["createDept"].id;
            this.applyStartDept = data["createDept"];
						this.patientObj = data["patient"] ? data["patient"] : null;
						this.patientCode = data["patient"] ? data["patient"].patientCode : null;
						console.log(99999,this.patientCode)
						this.taskTypeId = data["taskTypeId"];
            this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
            this.showPromptModal("建单", true, "", "closeGo");
          } else {
            if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
              this.jry_shixian();
            }
            this.showPromptModal("建单", true, "", "close");
          }
        }
				else if(data["status"] == 1000033){
					this.newOrderShow = false; //关闭弹窗
					if (go === "&go&") {
					  this.applyDept = data["createDept"].id;
					  this.applyStartDept = data["createDept"];
						this.patientObj = data["patient"] ? data["patient"] : null;
						this.patientCode = data["patient"] ? data["patient"].patientCode : null;
						this.taskTypeId = data["taskTypeId"];
					  this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
					}
					//重复建单那策略
					this.repeatMsg = data["msg"];
					this.showRepeatModal(postData, "transport", go);
				}else if (data["status"] == 100043){
					this.showPromptModal("建单", true, data["msg"]);
				}
				else{
					this.showPromptModal("建单", false, data["msg"]);
				}
      });
    }
  }
  // 患者陪检表单提交
  submitFormInspect(go?): void {
    let newOrderShowFlag = true; //是否可以关闭弹窗
    for (const i in this.validateFormZy.controls) {
      this.validateFormZy.controls[i].markAsDirty();
      this.validateFormZy.controls[i].updateValueAndValidity();
      if (this.validateFormZy.controls[i].valid === false && i !== "goods" && i !== "inspectScore") {
        //携带设备非必填
        // if (this.validateFormZy.controls[i].valid === false && i !== 'goods' && i !== 'patient') {//携带设备非必填
        newOrderShowFlag = false;
      }
      if (!this.validateFormZy.controls[i].valid) {
        this.isOkLoading = false;
        this.isGoLoading = false;
      }
    }
    if (newOrderShowFlag) {
      let goods = this.validateFormZy.controls.goods.value ? this.validateFormZy.controls.goods.value.filter((item) => item.checked === true) : [];
      goods = goods.map((current) => current.value).join();

      // 预约日期
      let yyTime1;
      if(this.isYyInspect && this.currentTabIndex == '患者转运'){
        let yyDateZy = (typeof this.yyDateZy === 'object') ? new Date(this.yyDateZy) : parse(this.yyDateZy, 'yyyy-MM-dd HH:mm:ss', new Date());
        let yyTimeZy = (typeof this.yyTimeZy === 'object') ? new Date(this.yyTimeZy) : parse(this.yyTimeZy, 'yyyy-MM-dd HH:mm:ss', new Date());
        yyTime1 = format(yyDateZy, "yyyy-MM-dd") + " " + format(yyTimeZy, "HH:mm") + ":00";
      }

      let postData: any = {
        workOrder: {
          yyTime: yyTime1,
          sourceId: SourceId.fuwutai,
          taskType: { id: this.validateFormZy.controls.taskType.value },
          startDept: { id: this.applyDept },
          // endDepts: [{ id: this.deptZyList.data.endDept }],
          createDept: this.applyDept,
          patient: {
            patientCode: this.validateFormZy.controls.patient.value,
          },
          goods,
          inspectScore: this.validateFormZy.controls.inspectScore.value ? { id: this.validateFormZy.controls.inspectScore.value } : undefined,
          workOrderRemark: this.validateFormZy.controls.workOrderRemarkZy.value,
        },
      };
      postData.workOrder.taskType.isHalfInspect = this.currentTasktype.isHalfInspect === 1 ? 1 : 0; //半程陪检

      let checkedArr = [];
      if (this.linkCheckLis && this.linkCheckLis.length) {
        this.linkCheckLis.forEach((e) => {
          if (e.checked) {
            checkedArr.push({ id: e.value });
          }
        });
      }

      postData.workOrder["checkList"] = checkedArr;
      postData.workOrder.isAccompany = 0; //是否需要医护陪同检查

      if (!this.noWorkerPhone) {
        postData.workOrder["workOrderPhone"] = this.callNumber;
      }
      this.mainService.buildOrder(postData).subscribe((data) => {
        console.log(data);
        this.isOkLoading = false;
        this.isGoLoading = false;
				this.dataStatus = data["status"];
        if (data["status"] == 200) {
          this.newOrderShow = false; //关闭弹窗
          if (go === "&go&") {
            this.applyDept = data["createDept"].id;
            this.applyStartDept = data["createDept"];
						this.patientObj = data["patient"] ? data["patient"] : null;
						this.patientCode = data["patient"] ? data["patient"].patientCode : null;
						this.taskTypeId = data["taskTypeId"];
            this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
            this.showPromptModal("建单", true, "", "closeGo");
          } else {
            if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
              this.jry_shixian();
            }
            this.showPromptModal("建单", true, "", "close");
          }
        } else if(data["status"] == 100042){
          this.newOrderShow = false; //关闭弹窗
					if (go === "&go&") {
						this.applyDept = data["createDept"].id;
						this.applyStartDept = data["createDept"];
						this.patientObj = data["patient"] ? data["patient"] : null;
						this.patientCode = data["patient"] ? data["patient"].patientCode : null;
						this.taskTypeId = data["taskTypeId"];
						this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
						this.showPromptModal("建单", false, data["msg"], "closeGo");
					}else{
						this.showPromptModal("建单", false, data["msg"]);
					}
        }
				else if(data["status"] == 1000033){
					this.newOrderShow = false; //关闭弹窗
					if (go === "&go&") {
						this.applyDept = data["createDept"].id;
						this.applyStartDept = data["createDept"];
						this.patientObj = data["patient"] ? data["patient"] : null;
						this.patientCode = data["patient"] ? data["patient"].patientCode : null;
						this.taskTypeId = data["taskTypeId"];
						this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
					}
					//重复建单那策略
					this.repeatMsg = data["msg"];
					this.showRepeatModal(postData, "inspection", go);
				}else if (data["status"] == 100043){
					this.showPromptModal("建单", true, data["msg"]);
				}
				else{
					this.showPromptModal("建单", false, data["msg"]);
				}
      });
    }
  }
  // 标本配送表单提交
	dataStatus:any;
  submitFormBbps(go?) {
    let postData = {
      workOrder: {
        workOrderRemark: this.validateFormQt.controls.workOrderRemark.value,
        sourceId: SourceId.fuwutai,
        taskType: {
          id: this.validateFormQt.controls.taskTypeQt.value,
        },
        startDept: {
          id: this.applyDept,
        },
      },
    };
    if (!this.noWorkerPhone) {
      postData.workOrder["workOrderPhone"] = this.callNumber;
    }
    this.mainService.buildOrder(postData).subscribe((data) => {
      this.isOkLoading = false;
      this.isGoLoading = false;
			this.dataStatus = data["status"];
      if (data["status"] == 200) {
        this.newOrderShow = false; //关闭弹窗
        if (go === "&go&") {
          this.applyDept = data["createDept"].id;
          this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
          this.showPromptModal("建单", true, "", "closeGo");
        } else {
          if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
            this.jry_shixian();
          }
          this.showPromptModal("建单", true, "", "close");
        }
      }else if(data["status"] == 1000033){
				 this.newOrderShow = false; //关闭弹窗
				 if (go === "&go&") {
				 	this.applyDept = data["createDept"].id;
				 	this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
				 	this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
				 }
				 //重复建单那策略
				 this.repeatMsg = data["msg"];
				 this.showRepeatModal(postData, "specimen", go);
			}else if (data["status"] == 100043){
				this.showPromptModal("建单", true, data["msg"]);
			} else{
				this.showPromptModal("建单", false, data["msg"]);
			}
    });
  }
  // 其他表单提交
  submitFormQt(go?) {
    for (const i in this.validateFormQt.controls) {
      this.validateFormQt.controls[i].markAsDirty();
      this.validateFormQt.controls[i].updateValueAndValidity();
      if (!this.validateFormQt.controls[i].valid) {
        this.isOkLoading = false;
        this.isGoLoading = false;
        return;
      }
    }

    // 预约日期
    let yyTime1;
    if(this.isYyInspect && this.currentTabIndex == '物品配送'){
      let yyDate = (typeof this.yyDate === 'object') ? new Date(this.yyDate) : parse(this.yyDate, 'yyyy-MM-dd HH:mm:ss', new Date());
      let yyTime = (typeof this.yyTime === 'object') ? new Date(this.yyTime) : parse(this.yyTime, 'yyyy-MM-dd HH:mm:ss', new Date());
      yyTime1 = format(yyDate, "yyyy-MM-dd") + " " + format(yyTime, "HH:mm") + ":00";
    }
    let postData = {
      workOrder: {
        yyTime: yyTime1,
        sourceId: SourceId.fuwutai,
        workOrderRemark: this.validateFormQt.controls.workOrderRemark.value,
        taskType: {
          id: this.validateFormQt.controls.taskTypeQt.value,
        },
        startDept: {
          id: this.validateFormQt.controls.startDeptQt.value,
        },
        createDept: this.applyDept,
        endDepts: [
          {
            id: this.validateFormQt.controls.endDeptsQt.value,
          },
        ],
      },
    };
    if (!this.noWorkerPhone) {
      postData.workOrder["workOrderPhone"] = this.callNumber;
    }
    this.mainService.buildOrder(postData).subscribe((data) => {
      this.isOkLoading = false;
      this.isGoLoading = false;
			this.dataStatus = data["status"];
      if (data["status"] == 200) {
        this.newOrderShow = false; //关闭弹窗
        if (go === "&go&") {
          this.applyDept = data["createDept"].id;
          this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
          this.showPromptModal("建单", true, "", "closeGo");
        } else {
          if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
            this.jry_shixian();
          }
          this.showPromptModal("建单", true, "", "close");
        }
      }
			else if(data["status"] == 1000033){
				this.newOrderShow = false; //关闭弹窗
				if (go === "&go&") {
					this.applyDept = data["createDept"].id;
					this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
					this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
				}
				//重复建单那策略
				this.repeatMsg = data["msg"];
				this.showRepeatModal(postData, "other", go);

			}else if (data["status"] == 100043){
				this.showPromptModal("建单", true, data["msg"]);
			}
			else{
				this.showPromptModal("建单", false, data["msg"]);
			}
    });
  }
  // 万能交接表单提交
  submitFormOrdinary(go?) {
    for (const i in this.validateFormQt.controls) {
      this.validateFormQt.controls[i].markAsDirty();
      this.validateFormQt.controls[i].updateValueAndValidity();
      if (!this.validateFormQt.controls[i].valid) {
        this.isOkLoading = false;
        this.isGoLoading = false;
        return;
      }
    }

    let postData = {
      workOrder: {
        sourceId: SourceId.fuwutai,
        workOrderRemark: this.validateFormQt.controls.workOrderRemark.value,
        taskType: {
          id: this.validateFormQt.controls.taskTypeQt.value,
        },
        startDept: {
          id: this.validateFormQt.controls.startDeptQt.value,
        },
        createDept: this.applyDept,
        endDepts: [
          {
            id: this.validateFormQt.controls.endDeptsQt.value,
          },
        ],
      },
    };
    if (!this.noWorkerPhone) {
      postData.workOrder["workOrderPhone"] = this.callNumber;
    }
    this.mainService.buildOrder(postData).subscribe((data) => {
      this.isOkLoading = false;
      this.isGoLoading = false;
			this.dataStatus = data["status"];
      if (data["status"] == 200) {
        this.newOrderShow = false; //关闭弹窗
        if (go === "&go&") {
          this.applyDept = data["createDept"].id;
          this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
          this.showPromptModal("建单", true, "", "closeGo");
        } else {
          if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
            this.jry_shixian();
          }
          this.showPromptModal("建单", true, "", "close");
        }
      }
			else if(data["status"] == 1000033){
				this.newOrderShow = false; //关闭弹窗
				if (go === "&go&") {
					this.applyDept = data["createDept"].id;
					this.applyStartDept = data["createDept"];
					this.patientObj = data["patient"] ? data["patient"] : null;
					this.patientCode = data["patient"] ? data["patient"].patientCode : null;
					this.taskTypeId = data["taskTypeId"];
					this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data["phone"];
				}
				//重复建单那策略
				this.repeatMsg = data["msg"];
				this.showRepeatModal(postData, "ordinary", go);
			}else if (data["status"] == 100043){
				this.showPromptModal("建单", true, data["msg"]);
			}
			else{
				this.showPromptModal("建单", false, data["msg"]);
			}
    });
  }
  // 核酸打印
  nucleicAcidLoading = false;
  nucleicAcidList: any = [];
  // nucleicAcidListPageIndex: number = 1;//表格当前页码
  // nucleicAcidListPageSize: number = 5;//表格每页展示条数
  // nucleicAcidListLength: number = 10;//表格总数据量
  // 获取列表数据
  getNucleicAcidBuildingSummary(idx?) {
    // if (idx) {
    //   this.nucleicAcidListPageIndex = 1;
    // }
    this.nucleicAcidLoading = true;
    this.mainService.getNucleicAcidBuildingSummary({}).subscribe((data:any) => {
      this.nucleicAcidLoading = false;
      let nucleicAcidList = data.data || [];
      for (let i = 0; i < nucleicAcidList.length; i++) {
        if(nucleicAcidList[i].deptData && Array.isArray(nucleicAcidList[i].deptData)){
          nucleicAcidList[i].deptNames = nucleicAcidList[i].deptData.map(v=>v.deptName).toString();
        }else{
          nucleicAcidList[i].deptData = [];
          nucleicAcidList[i].deptNames = '';
        }
      }
      this.nucleicAcidList = nucleicAcidList;
      console.log(this.nucleicAcidList)
      // this.nucleicAcidListLength = data.totalNum || 0;
    })
  }
  // 打印
  mapQrcodes:any = {};
  printDate:number = Date.now();
  printAucleicAcid(){
    this.isOkLoading = true;
    this.mainService.printNucleicAcid({}).subscribe((data:any) => {
      this.isOkLoading = false;
      if(data.state == 200){
        let mapQrcodes = {};
        data.data.forEach(v=>{
          mapQrcodes[v.buildId] = v.qrcode;
        })
        this.mapQrcodes = mapQrcodes;
        this.nucleicAcidPrintingCancel();
        setTimeout(()=>{
          this.printBtn.nativeElement.click();
        },0)
      }else{
        this.msg.create('error', `操作失败!`);
      }
    })
  }
  //获取检查页面任务类型
	allTaskType:any;
  getInspectAndPatientTransportConfigTasktype() {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData = {
      idx: 0,
      sum: 10,
      taskType: {
        simpleQuery: true,
        hosId: {
          id: this.checkedHos
        },
        associationType: {
          key:"association_types",
          value: 'inspect'
        }
      }
    };
    this.mainService
      .getFetchDataList("simple/data", "taskType", postData)
      .subscribe((result) => {
        if (result.status == 200) {
          let tasktype:any = result.list[0] || {};
          this.getInspectAndPatientTransportConfig(tasktype);
        }
      });
			// let query = {
			//   idx: 0,
			//   sum: 9999,
			//   taskType: {
			//     hosId: {
			//       id: this.checkedHos
			//     }
			//   }
			// };
			// this.mainService
			//   .getFetchDataList("simple/data", "taskType", query)
			//   .subscribe((result) => {
			//     if (result.status == 200) {
			//       this.allTaskType = result.list || {};
			// 			this.initControlView();
			//     }
			//   });
  }
  // 获取检查页面信息配置
  getInspectAndPatientTransportConfig(tasktype) {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData = {
      idx: 0,
      sum: 10,
      taskTypeConfig: {
        taskTypeDTO: {
          hosId: {
            id: this.checkedHos
          },
          associationType: tasktype.associationType
        }
      }
    };
    this.mainService
      .getFetchDataList("simple/data", "taskTypeConfig", postData)
      .subscribe((result) => {
        if (result.status == 200) {
          let inspectAndPatientTransportConfig = result.list[0] || {};
          this.inspectAndPatientTransportConfig = {...this.inspectAndPatientTransportConfig, ...inspectAndPatientTransportConfig};
        }
      });
  }
	currentDept:any;
	currentHospital:any;
  ngOnInit() {
    this.websocketLoading = true;
		this.currentDept = this.tool.getCurrentUserDept();
		this.currentHospital = this.tool.getCurrentHospital();
    this.coopBtns = this.tool.initCoopBtns(this.route);
		// console.log(8989899,this.coopBtns)
    //防抖
    this.changeInpSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.searchApplicationDepartment(v[0], v[1]);
    });
    this.inspectSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.refreshInspectList();
    });
		this.changeAssetInpSubject.pipe(debounceTime(500)).subscribe((v) => {
		  this.getAssetData(v);
		});
    this.changeCommonInpSubject.pipe(debounceTime(500)).subscribe((v) => {
      if(v[0] === 'requester'){
        this.searchApplicationRequester(v[1]);
      }else if(v[0] === 'category'){
        this.searchApplicationCategory(v[1]);
      }else if(v[0] === 'group'){
        this.searchApplicationGroup(v[1]);
      }else if(v[0] === 'user'){
        this.searchApplicationUser(v[1]);
      }else if(v[0] === 'patient'){
        this.getPatientByResidenceNo(v[1]);
      }
    });
    this.onSearchTaskBuildSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.getTasktypeByPhone(v);
    });
    this.searchHosDepartmentSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.getHosDepartment(v[0], v[1], v[2]);
    });
    this.searchHosDepartmentQtSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.getHosDepartmentQt(v[0], v[1], v[2]);
    });
    this.searchPatientListSubject.pipe(debounceTime(500)).subscribe((v) => {
      this.getPatientList(v[0], v[1]);
    });
    //患者转运
    this.validateFormZy = this.fb.group({
      taskType: [null, [Validators.required]], //类型
      linkCheck: [null, []],
      startDept: [null, [Validators.required]], //起点科室
      endDepts: [null, [Validators.required]], //终点科室
      patient: [null, [Validators.required]], //患者信息
      // patient: [null],//患者信息ca
      goods: [null], //携带设备
      inspectScore: [null], //陪检方式
      workOrderRemarkZy: [null], //工单备注
			startHosId: [null, [Validators.required]],
			endHosId: [null, [Validators.required]],
    });
    //其他
    this.validateFormQt = this.fb.group({
      taskTypeQt: [null, [Validators.required]], //类型
      startDeptQt: [null, [Validators.required]], //起点科室
      endDeptsQt: [null, [Validators.required]], //终点科室
      workOrderRemark: [null], //工单备注
			startHosId: [null, [Validators.required]],
			endHosId: [null, [Validators.required]],
    });

    this.getWebsocketSer();
    this.initRole();
    this.initLogin();
    this.retract();
    this.refresh();
    this.initOrderScope();
    this.getVisitList();
    this.getMessageList();
		this.initControlView();
    this.moveMenu("fixedMenu");
    this.moveMenu("fixedMenuLeft");
    this.moveMenuAll("fixedMenuAll");
    if(this.incomingService.getSign() === 'box'){
      this.getPhoneNum();
    }else if(this.incomingService.getSign() === 'callCenter'){
      setTimeout(this.getPhoneNum.bind(this), 2000)
    }else{
      this.websocketLoading = false;
    }
    this.getUnassignedBuilding2();
    this.getInspectAndPatientTransportConfigTasktype();
    this.initCallCenter();
  }
  ngOnDestroy() {
    document.removeEventListener("keydown", this.quickShowNewOrder.bind(this));
    this.quickShowNewOrder = null;
    clearTimeout(this.refreshTimerId);
    this.incomingService.closeWs(true);
    this.sers.closeWs(true);
  }
  ngAfterViewInit() {
    // 快捷键打开新建工单
    document.addEventListener("keydown", this.quickShowNewOrder.bind(this));
  }

  requiredConfigChange(form: string, name: string, required: boolean): void {
    if (!required) {
      this[form].get(name)!.clearValidators();
      this[form].get(name)!.markAsPristine();
    } else {
      this[form].get(name)!.setValidators(Validators.required);
      this[form].get(name)!.markAsDirty();
    }
    this[form].get(name)!.updateValueAndValidity();
  }

  // 初始化呼叫中心方法
  initCallCenter(){
    let _this = this;
    // 状态回调函数
    // TLWSA.onStatechange = onstatechange;
    // function onstatechange() {
    //   console.log('事件:状态变化----------------------------------------------------');
    //   _this.getState();
    // }
    //连接呼叫中心回调函数
    TLWSA.onOpenreturn = (err) => {
      err = Number(err);
      if (!err) {
        _this.incomingService.setPhoneNumber(TLWSA.phoneNumber);
        _this.websocketLoading = false;
        _this.cancelBindExtensionNumber();
        console.log('呼叫中心连接成功-----seimin');
        _this.getState(0);
        _this.msg.success('呼叫中心连接成功')

        //如果设置过话机
        if (_this.incomingService.getPhoneNumberPre()) {
          //强制签出，然后签入
          tlwsa.tlaKillworkid(+_this.incomingService.getPhoneNumberPre());
        }else{
          // 签入并绑定分机
          tlwsa.tlaLogin(_this.user.user.id, 1, -1);
        }
      } else {
        console.log('呼叫中心连接失败-----seimin');
        _this.getState(0);
        _this.msg.error('呼叫中心连接失败')
      }
    }
    //绑定分机回调函数
    TLWSA.onSetphonenumberreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('绑定分机成功-----seimin');
        _this.msg.success('绑定分机成功')
        _this.incomingService.setPhoneNumberPre(_this.user.user.id);
        _this.qShimang(1);
      } else {
        console.log('绑定分机失败-----seimin');
        _this.getState(0);
        _this.msg.error('绑定分机失败')
      }
    }
    //强制示忙回调函数
    // TLWSA.onAcw = onacw;
    // function onacw(err) {
    //   err = Number(err);
    //   if (!err) {
    //     console.log('强制示忙成功-----seimin');
    //     _this.getState(2);
    //     $.toaster({
    //       priority: 'info',
    //       title: '操作',
    //       message: '示忙成功'
    //     });
    //   } else {
    //     console.log('强制示忙失败-----seimin');
    //     $.toaster({
    //       priority: 'info',
    //       title: '操作',
    //       message: '示忙失败'
    //     });
    //   }
    // }
    // //强制示闲回调函数
    // TLWSA.onWca = onwca;
    // function onwca(err) {
    //   console.log(err)
    //   err = Number(err);
    //   if (!err) {
    //     console.log('强制示闲成功-----seimin');
    //     _this.getState(1);
    //     $.toaster({
    //       priority: 'info',
    //       title: '操作',
    //       message: '示闲成功'
    //     });
    //   } else {
    //     console.log('强制示闲失败-----seimin');
    //     $.toaster({
    //       priority: 'info',
    //       title: '操作',
    //       message: '示闲失败'
    //     });
    //   }
    // }
    //与服务器网络连接中断回调函数
    let timer = null;
    TLWSA.onClosed = () => {
      _this.getState(0);
      clearTimeout(timer);
      if(location.hash === '#/dispatchingDesk'){
        console.log('与服务器网络连接中断-----seimin');
        if(this.incomingService.getPhoneNumber()){
          _this.msg.info('与服务器网络连接中断,2分钟后重连')
          console.log('2分钟后自动重连-----seimin')
          timer = setTimeout(function () {
            //连接
            TLWSA.phoneNumber = _this.incomingService.getPhoneNumber();
            tlwsa.tlaOpen(_this.incomingService.getSocketUrl());
          }, 120000)
        }else{
          _this.websocketLoading = false;
        }
      }
    }
    //签入回调函数
    TLWSA.onLoginreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('签入成功-----seimin');
        _this.msg.success('签入成功')
        setTimeout(function () {
          console.log(_this.incomingService.getPhoneNumber(), 1111)
          var phoneNumber = _this.incomingService.getPhoneNumber();
          console.log('开始绑定分机【' + phoneNumber + '】-----seimin');
          tlwsa.tlaSetphonenumber(phoneNumber);
        }, 0)
      } else if (err == 9011) {
        console.log('签入失败，该分机已登录-----seimin');
        _this.msg.error('签入失败，该分机已登录')
      } else {
        console.log('签入失败-----seimin');
        _this.msg.error('签入失败')
      }
    }
    // 强制签出回调函数
    TLWSA.onKillreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('强制签出成功-----seimin');
        _this.getState(0);
        // $.toaster({
        //   priority: 'info',
        //   title: '操作',
        //   message: '强制签出成功'
        // });
      } else {
        console.log('强制签出失败,该分机不是签入状态-----seimin');
        // $.toaster({
        //   priority: 'info',
        //   title: '操作',
        //   message: '强制签出失败'
        // });
      }
      //如果设置过话机
      if (_this.incomingService.getPhoneNumberPre()) {
        // 签入并绑定分机
        tlwsa.tlaLogin(+_this.incomingService.getPhoneNumberPre(), 1, -1);
      }
    }
    // 签出回调函数
    TLWSA.onLogoffreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('签出成功-----seimin');
        _this.getState(0);
        _this.msg.success('签出成功')
        _this.incomingService.removePhoneNumberPre();
        _this.incomingService.removePhoneNumber();
      } else {
        console.log('签出失败-----seimin');
        _this.msg.error('签出失败')
      }
    }
    //示忙回调函数
    TLWSA.onAcwreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('示忙成功-----seimin');
        if (location.href.includes('app/incident/editor') || location.href.includes('app/incident/chart')) {
          _this.isShixian = false;
        } else {
          _this.isShixian = true;
        }
        _this.getState(2);
        _this.preState = 2;
        _this.msg.success('示忙成功')
      } else {
        console.log('示忙失败-----seimin');
        // $.toaster({
        //   priority: 'info',
        //   title: '操作',
        //   message: '示忙失败'
        // });
      }
    }
    //示闲回调函数
    TLWSA.onWcareturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('示闲成功-----seimin');
        _this.getState(1);
        _this.preState = 1;
        _this.msg.success('示闲成功')
      } else {
        console.log('示闲失败-----seimin');
        _this.msg.error('示闲失败')
      }
    }
    //呼叫坐席回调函数
    TLWSA.onCallreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('呼叫成功,请摘机-----seimin');
        _this.getState(6);
        _this.msg.success('呼叫成功,请摘机')
      } else {
        console.log('呼叫失败-----seimin');
        _this.msg.error('呼叫失败')
      }
    }
    //呼叫坐席被接听回调函数
    TLWSA.onCallresult = function (jso) {
      console.log(jso);
      var err = Number(jso.err);
      if (!err) {
        console.log('呼叫被接听成功-----seimin');
        _this.getState(5);
        _this.msg.success('呼叫被接听成功')
      } else {
        console.log('呼叫被接听失败-----seimin');
        _this.qShimang(1);
        _this.msg.error('呼叫被接听失败')
      }
    }
    //挂断回调函数
    TLWSA.onCallend = function (jso) {
      console.log(jso);//lmm
      if (jso) {
        console.log('挂断成功-----seimin');
        console.log('最近一次话机状态', _this.preState);
        _this.qShimang(_this.preState);
        _this.msg.success('挂断成功')
      } else {
        console.log('挂断失败-----seimin');
        _this.msg.error('挂断失败')
      }
    }
    //呼入回调函数
    TLWSA.onCallin = function (jso) {
      console.log(jso);
      _this.incidentModel = { repairIncidentType: 'dept' };
      _this.callNumber = _this.incidentModel.incomingPhone = jso.caller;//来电的电话
			_this.contactsPhone = jso.caller
      _this.incidentModel.callID = jso.crs;//来电的话机id
      if (jso) {
        console.log('呼入坐席成功，请摘机-----seimin');
        _this.getState(3);
        _this.msg.success('呼入坐席成功，请摘机')
        console.log('来电了！电话号码是【' + _this.incidentModel.incomingPhone + '】');
      } else {
        console.log('呼入坐席失败-----seimin');
        _this.msg.error('呼入坐席失败')
      }
    }
    // 测试代码start
    // searchBxDept();
    // 测试代码end
    // 查报修科室
    // function searchBxDept() {
    //   var postData = { "idx": 0, "sum": 10, "department": { phone: _this.callNumber = _this.incidentModel.incomingPhone } };//hjzxPhone
    //   api_user_data.fetchDataList('department', postData).then(function (result) {
    //     if (result.status == 200) {
    //       console.log(result.list);
    //       var requesters = result.list;


    //       if (requesters.length === 0) {
    //         //未匹配到报修科室
    //         $rootScope.newOrder({
    //           incident: {
    //             sockid: _this.incidentModel.callID,
    //             incomingPhone: _this.callNumber = _this.incidentModel.incomingPhone,
    //             source: { id: 1547, name: '电话' }
    //           },
    //         }, 'incomingCall')
    //       } else if (requesters.length === 1) {
    //         //匹配到一个报修科室
    //         $rootScope.newOrder({
    //           incident: {
    //             department: requesters[0],
    //             phone: requesters[0].phone,
    //             sockid: _this.incidentModel.callID,
    //             incomingPhone: _this.callNumber = _this.incidentModel.incomingPhone,
    //             source: { id: 1547, name: '电话' }
    //           },
    //         }, 'incomingCall')
    //       } else {
    //         //匹配到多个报修科室
    //         $modal.open({
    //           templateUrl: 'assets/views/incident/tpl/tel.html',
    //           controller: function ($scope, $modalInstance, $timeout, SweetAlert) {
    //             $scope.list = requesters;
    //             $scope.selected = {
    //               selectedItem: 0
    //             };
    //             $scope.cancel = function () {
    //               $modalInstance.dismiss('cancel');
    //             };
    //             $scope.changeBxr = function (id) {
    //               $scope.selected.selectedItem = id;
    //             }
    //             $scope.save = function () {
    //               var item = $scope.list.find(v => v.id == $scope.selected.selectedItem);
    //               if (item) {
    //                 $scope.cancel();
    //                 $rootScope.newOrder({
    //                   incident: {
    //                     department: item,
    //                     phone: item.phone,
    //                     sockid: _this.incidentModel.callID,
    //                     incomingPhone: _this.callNumber = _this.incidentModel.incomingPhone,
    //                     source: { id: 1547, name: '电话' }
    //                   },
    //                 }, 'incomingCall')
    //               } else {
    //                 SweetAlert.swal({
    //                   title: "请选择报修科室!",
    //                   type: "error"
    //                 })
    //               }
    //             }
    //           }
    //         });
    //       }
    //     }
    //   })
    // }

    //呼入摘机应答回调函数
    TLWSA.onAnswer = function (err) {
      err = Number(err);
      if (!err) {
        console.log('呼入摘机应答成功-----seimin');
        _this.getState(5);
        _this.msg.success('呼入摘机应答成功')

        // 查报修科室
        _this.searchBxDept();
      } else {
        console.log('呼入摘机应答失败-----seimin');
        _this.msg.error('呼入摘机应答失败')
      }
    }
    //呼入未摘机应答回调函数
    TLWSA.onMisscall = function (err) {
      err = Number(err);
      if (!err) {
        console.log('呼入未摘机应答成功-----seimin');
        _this.getState(1);
        _this.msg.success('呼入未摘机应答成功')
      } else {
        console.log('呼入未摘机应答失败-----seimin');
        _this.msg.error('呼入未摘机应答失败')
      }
    }
    //转接开始回调函数
    //调用转移方法之后，返回该事件 如果错误码为0，仅仅表示开始转移，不代表转移目标已经接听或已经拒绝
    TLWSA.onTransferreturn = function (err) {
      err = Number(err);
      if (!err) {
        console.log('转接坐席开始成功-----seimin');
        _this.getState(7);
        _this.msg.success('转接坐席开始成功')
      } else {
        console.log('转接坐席开始失败-----seimin');
        _this.msg.error('转接坐席开始失败')
      }
    }
    //转接结果回调函数
    TLWSA.onTransferresult = function (err) {
      err = Number(err);
      if (!err) {
        console.log('转接坐席结果成功-----seimin');
        _this.getState(1);
        _this.msg.success('转接坐席结果成功')
      } else {
        console.log('转接坐席结果失败-----seimin');
        _this.msg.error('转接坐席结果失败')
      }
    }
    // 呼叫中心----end
  }
  // 快捷键打开新建工单
  quickShowNewOrder(e){
    if (e.ctrlKey && e.key == "s") {
      this.showNewOrder(1);
      e.preventDefault();
    }
  }
  unassignedSearchCon: string = ""; //未分派搜索框内容
  arriveSearchCon: string = ""; //待到达搜索框内容
  executionSearchCon: string = ""; //执行中搜索框内容
  workerMessage: any = []; //顶部全部工单
  // 展示形式
  patientCareCol: number = 7; //顶部工单列数(4列-8人，7列-14人，6列-单排 ）
  hurseInfoHiding = 1; //护工信息隐藏
  txtLabelCol: number = 1; //工单信息列数
  workerInfoTime: number = 60; //配送人员刷新时间
  orderInfoTime: number = 60; //工单刷新时间
  audioNotDispatched: boolean = true; //是否开启定时播报未派出工单提示音
  cotHeight: number; //工单初始化高度
  unassignedList: any = []; //未分派数据
  arriveList: any = []; //待到达数据
  executionList: any = []; //执行中数据
  unassignedListClone: any = null; //未分派数据clone
  arriveListClone: any = null; //待到达数据clone
  executionListClone: any = null; //执行中数据clone
  workerRefreshTime: number = 30; //配送人员刷新倒计时
  orderRefreshTime: number = 30; //工单刷新倒计时
  recallOrderShow: boolean = false; //撤回模态框
  delOrderShow: boolean = false; //删除模态框
  logoutModal: boolean = false; //退出模态框
  user = JSON.parse(localStorage.getItem("user")); //用户信息

  promptContent: string; //操作提示框提示信息
  ifSuccess: boolean; //操作成功/失败
  promptInfo: string; //操作结果提示信息
  promptModalShow: boolean; //是否展示提示框
  back = ""; //标识符

  btnLoading: boolean = false; //确认按钮loading状态
  recDelLoading: boolean = false; //撤回并删除loading状态
  saveLoading: boolean = false; //保存按钮loading状态

  flagList:any = {
    itsmFlag1: false,
    hsmsFlag1: false,
    itsmFlag2: false,
    hsmsFlag2: false,
    itsmFlag3: false,
    hsmsFlag3: false,
  }

  mainRole: boolean = false; //回到系统管理权限
  initRole() {
    // let roles = JSON.parse(localStorage.getItem('user')).user.role;
    let menus = JSON.parse(localStorage.getItem("menu"));
    let that = this;
    console.log("菜单数量" + menus.length);
    if (menus.length >= 2) {
      that.mainRole = true;
      return;
    }
  }
  // 判断登录是否已失效
  initLogin() {
    let that = this;
    if (!localStorage.getItem("user")) {
      that.msg.error("您的登录已失效，请重新登录！", {
        nzDuration: 3000,
      });
      setTimeout(() => {
        that.router.navigateByUrl("login");
      }, 2000);
      return;
    }
  }

  // 工单范围设置回显
  checkedHos;// 配送-院区选择
  checkedHosDTO;// 配送-院区选择
  scopeGroups = []; //配送-当前所属人员分组
  orderScopeRadio;// 配送-工单范围
	crossHospital:any = '0'; // 配送-是否支持跨院区
  itsmCheckedHos;// 运维-院区选择
  itsmScopeGroups = []; //运维-当前所属人员分组
  itsmOrderScopeRadio;// 运维-工单范围
  hsmsData: any = {
    checkedHos: undefined,
    scopeGroups: [],
    orderScopeRadio: '0',
		crossHospital: '0',
  }; //转运工单范围相关信息
	showGovDuty:any; //是否开通政务值班
  itsmData: any = {
    checkedHos: [],
    scopeGroups: [],
		groupIds: [],
    orderScopeRadio: '0',
  }; //运维工单范围相关信息
	inHosId:any;
	dutyGroupUserRangeList:any = [];
  initOrderScope() {
    if (!this.user || !this.user.user || !this.user.user.scope){
      this.showOrderScope();
      return;
    }
    let scopeInfo = this.user.user.scope;
    this.checkedHos = scopeInfo.hospitalId ? scopeInfo.hospitalId.id : undefined;
    this.checkedHosDTO = scopeInfo.hospitalId || undefined;
    this.orderScopeRadio = scopeInfo.range + "";
		this.crossHospital = scopeInfo.crossHospital || '0';
		this.showGovDuty = scopeInfo.showGovDuty;
    let groupIds = scopeInfo.groupIds || [];
    let dutyGroupList = scopeInfo.dutyGroupUserRangeList || [];
    this.scopeGroups = dutyGroupList.concat(groupIds);
    if(this.scopeGroups.length){
      this.typeId = this.scopeGroups[0].id;
    }
    this.hsmsData = {
      checkedHos: this.checkedHos,
      checkedHosDTO: this.checkedHosDTO,
      scopeGroups: this.scopeGroups,
      orderScopeRadio: this.orderScopeRadio || '0',
      hsmsSwitch: scopeInfo.hsmsSwitch === 1,
			crossHospital: this.crossHospital || '0',
    }
    this.flagList.hsmsFlag1 = this.hsmsData.hsmsSwitch;
    this.flagList.hsmsFlag2 = this.hsmsData.hsmsSwitch;
    this.flagList.hsmsFlag3 = this.hsmsData.hsmsSwitch;
    this.itsmCheckedHos = scopeInfo.dutyList || [];
    this.itsmOrderScopeRadio = scopeInfo.dutyRange + "";
    this.itsmScopeGroups = scopeInfo.dutyGroupUserRangeList || [];
		this.dutyGroupUserRangeList = scopeInfo.dutyGroupList || []
    this.itsmData = {
      checkedHos: this.itsmCheckedHos,
      scopeGroups: this.itsmScopeGroups,
			groupIds: this.dutyGroupUserRangeList,
      orderScopeRadio: this.itsmOrderScopeRadio || '0',
      mdv2Switch: scopeInfo.mdv2Switch === 1,
      allDuty: scopeInfo.allDuty === undefined ? 1 : scopeInfo.allDuty,
			showReassign: scopeInfo.showReassign == null || scopeInfo.showReassign == 0 ? 0 : 1,
			showGovDuty: scopeInfo.showGovDuty == null || scopeInfo.showGovDuty == 0 ? 0 : 1,
		}
    this.flagList.itsmFlag1 = this.itsmData.mdv2Switch;
    this.flagList.itsmFlag2 = this.itsmData.mdv2Switch;
    this.flagList.itsmFlag3 = this.itsmData.mdv2Switch;
    this.getHospitalConfigList('allowNucleicAcidPrinting');
    this.getConfigTasktype();
    this.patientLogTasktype();
  }

  // 保存工单信息
  confirmOrderScope(data){
    if (data.status == 200) {
      // this.websocketLoading = true;
      this.cancelOrderScope();
      this.showPromptModal("保存", true, "");
      // 关闭phone的websocket
      // this.incomingService.closeWs(true);
      // this.getPhoneNum(false);
      this.user.user.scope = data.data;
      localStorage.setItem("user", JSON.stringify(this.user));
      this.initOrderScope();
    } else {
      this.showPromptModal("保存", false, data.msg);
    }
  }

  // 第一次打开调度台页面初始化范围设置
  showInitModal: boolean = false;
  cancelOrderScope() {
    this.showInitModal = false;
  }

  showOrderScope() {
		console.log(1111,this.itsmData)
    this.showInitModal = true;
  }

  // 展示形式
  showDisplayFormModal: boolean = false;
  cancelDisplayForm() {
    this.showDisplayFormModal = false;
  }

  showDisplayForm() {
    this.showDisplayFormModal = true;
  }

  confirmDisplayForm(data){
    if (data.status == 200) {
      this.cancelDisplayForm();
      this.msg.success('保存成功');
      this.initControlView();
    } else {
      this.msg.error(data.msg || '保存失败');
    }
  }

  // 绑定分机
  showBindExtensionNumberModal: boolean = false;
  cancelBindExtensionNumber() {
    this.showBindExtensionNumberModal = false;
  }

  showBindExtensionNumber() {
    this.showBindExtensionNumberModal = true;
    this.websocketLoading = false;
  }

  // 保存绑定分机-签入
  checkIn(phoneNumber){
    this.websocketLoading = true;
    // this.incomingService.setPhoneNumber(phoneNumber);
    this.incomingService.closeWs(true);
    this.getWebsocketPhone(phoneNumber);
  }

  // 签出
  checkOut(){
    this.showDelModal(undefined, undefined,'您确认要签出吗？','签出','checkout');
  }

  // 连接websocket
  getWebsocketSer() {
    this.sers
      .connectWs(http.fwtWs, { userCount: this.user.user.account })
      .subscribe((result) => {
        console.log(result);
        if (result && result.content) {
          this.createBasicNotification(result);
        }
      });
  }

  // 连接websocket
  websocketLoading:boolean = false; //websocket连接状态
  preState:any = '';//最近一次示忙还是示闲的状态
  isShixian = false;//是否示闲
  jry_state = '';//话机状态
  jry_extnNumberObj = {
    // tel1: '',//目的号码对象
    // tel2: '',//转接坐席对象
  }
  getWebsocketPhone(phoneNumber) {
    const sign = this.incomingService.getSign();
    if(sign === 'box'){
      // 录音盒
      this.incomingService.connectWs(phoneNumber).subscribe((data) => {
        // data = { status: 201, phone: '013581394341' };//ceshi
        console.log(data);
        console.log(this.incidentModel);
        this.websocketLoading = false;
        // 200签入 201摘机 202来电
        if (data.status == 200 && data.phone) {
          this.incomingService.setPhoneNumber(phoneNumber);
          this.incidentModel = { repairIncidentType: 'dept' };
          this.incidentMsg = {};
          this.incidentModel.callID = data.callId || undefined;
          this.msg.info('签入成功');
          this.cancelBindExtensionNumber();
					this.moveMenuAll("fixedMenuAll");
        } else if (data.status == 201 && data.phone) {
          this.incidentModel = { repairIncidentType: 'dept' };
          this.incidentMsg = {};
          this.incidentModel.callID = data.callId || undefined;
					this.contactsPhone = data.phone;
          this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = data.phone;
          this.searchBxDept();
					this.moveMenuAll("fixedMenuAll");
        } else if (data.status == 201 && data.phone === "") {
          this.incidentModel = { repairIncidentType: 'dept' };
          this.incidentMsg = {};
          this.incidentModel.callID = data.callId || undefined;
          //没绑定科室
          if (!this.newOrderShow && !this.newOrderShowOpen) {
            this.applyDept = null;
            this.showNewOrder(1, "no", data.phone, true, '来电弹屏');
          }
					this.moveMenuAll("fixedMenuAll");
        } else if (data.status == 202) {
          this.msg.warning(data.msg);
        }
      });
    }else if(sign === 'callCenter'){
      // 呼叫中心----start
      this.preState = '';
      //连接
      TLWSA.phoneNumber = phoneNumber;
      tlwsa.tlaOpen(this.incomingService.getSocketUrl());
    }else{
      this.websocketLoading = false;
    }
  }

  // 呼叫中心---start
  searchBxDept(){
    let dataObj = {
      hosId: this.tool.getCurrentHospital().id,
      phone: this.incidentModel.incomingPhone,
    };
    this.mainService
      .findPhoneDept(dataObj)
      .subscribe((result:any) => {
        if (result.state == 200) {
          console.log(result);
          if (result.data.length > 0) {
            let deptDTO;
            if(result.type === 'qrCode'){
              deptDTO = result.data[0].deptDTO;
              deptDTO.address = result.data[0].name;
            }else if(result.type === 'dept'){
              deptDTO = result.data[0];
            }
            //绑定了科室
            // if (!this.newOrderShow && !this.newOrderShowOpen) {
              let incidentModel:any = Object.assign({}, this.incidentModel);
              let incidentMsg:any = Object.assign({}, this.incidentMsg);
              incidentModel.department = deptDTO;
              incidentModel.department && incidentModel.department.hospital && (incidentModel.hosId = incidentModel.department.hospital.parent ? incidentModel.department.hospital.parent.id : incidentModel.department.hospital.id);
              incidentModel.department && incidentModel.department.building && (incidentModel.area = incidentModel.department.building.id);
              incidentModel.department && incidentModel.department.floor && (incidentModel.place = incidentModel.department.floor.id);
              incidentModel.department && incidentModel.department.address && (incidentModel.houseNumber = incidentModel.department.address);
              incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
              incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);

              incidentModel.department && (incidentModel.department = incidentModel.department.id);

              this.incidentModel = incidentModel;
              this.incidentMsg = incidentMsg;
              this.searchApplicationRequester();
              this.applyDeptMiddle = deptDTO;
              this.showNewOrder(1, "yes", this.incidentModel.incomingPhone, true, '来电弹屏');
            // }
          } else {
            //没绑定科室
            console.log(this.newOrderShow);
            console.log(this.incidentModel);
            console.log(this.incidentMsg);
            this.incidentMsg = {};
            if (!this.newOrderShow && !this.newOrderShowOpen) {
              this.applyDept = null;
              this.showNewOrder(1, "no", this.incidentModel.incomingPhone, true, '来电弹屏');
            }
          }
        }
      });
  }
  // 强制示忙
  qShimang(state) {
    if (location.href.includes('app/incident/editor') || location.href.includes('app/incident/chart')) {
      //进入页面,强制示忙
      // tlwsa.tlaForceacw(this.user.user.id);
      setTimeout(() => {
        tlwsa.tlaAcw();
      }, 0)
    } else {
      this.getState(state);
    }
  }
  // 获取状态
  getState(state) {
    switch (state) {
      case 0:
        this.jry_state = 'weiqianru';
        break;
      case 1:
        this.jry_state = 'shixian';
        break;
      case 2:
        this.jry_state = 'shimang';
        break;
      case 3:
        this.jry_state = 'laidian';
        break;
      case 5:
        this.jry_state = 'tonghuazhong';
        break;
      case 6:
        this.jry_state = 'zhengzaiwaihu';
        break;
      case 7:
        this.jry_state = 'zhengzaizhuanyi';
        break;
    }
  }
  // 签入
  jry_qianru = function () {
    if (!this.incomingService.getPhoneNumber()) {
      this.msg.warning('绑定分机不能为空')
      return;
    }
    // 签入并绑定分机
    // this.incomingService.getPhoneNumber() 分机号
    // this.user.user.id  坐席号（用户id）
    tlwsa.tlaLogin(this.user.user.id, 1, -1);
  }
  // 示闲
  jry_shixian = function () {
    tlwsa.tlaWca();
  }
  // 示忙
  jry_shimang = function () {
    tlwsa.tlaAcw();
  }
  // 签出
  jry_qianchu = function () {
    tlwsa.tlaLogoff();
  }
  // 呼叫坐席
  // tlaCallagc = function () {
  //   tlwsa.tlaCallagc(this.jry_extnNumberObj.tel1)
  // }
  // 呼叫外线
  tlaCallout = function () {
    // 选择目的号码
    var reg1 = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
    var reg2 = /^(0|9|90|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
    if (!reg1.test(this.jry_extnNumberObj.tel1) && !reg2.test(this.jry_extnNumberObj.tel1)) {
      this.msg.warning('请输入正确的手机号或座机号')
      return;
    }
    // tlwsa.tlaCallout(this.jry_extnNumberObj.tel1,this.incomingService.getPhoneNumber(),0)
    tlwsa.tlaCallout(this.jry_extnNumberObj.tel1, '3558177', 1);//襄阳主叫号码写死
  }
  // // 转移坐席
  // tlaTransfertoagc = function () {
  //   tlwsa.tlaTransfertoagc(this.jry_extnNumberObj.tel2)
  // }
  // 转移外线
  tlaTransferout = function () {
    // 选择转接号码
    var reg1 = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
    var reg2 = /^(0|9|90|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
    if (!reg1.test(this.jry_extnNumberObj.tel2) && !reg2.test(this.jry_extnNumberObj.tel2)) {
      this.msg.warning('请输入正确的手机号或座机号')
      return;
    }
    tlwsa.tlaTransferout(this.jry_extnNumberObj.tel2, '3558177', 1);//襄阳主叫号码写死
  }
  // 呼叫中心---end

  onChange(value: number): void {
    console.log(`onChange: ${value}`);
  }

  onAfterChange(value: number): void {
    console.log(`onAfterChange: ${value}`);
  }
  // 来电咨询右侧的tab页
  // 服务台新建工单—根据申请科室id来查询转入院记录(科室id)
  rightTitle_tab:any[] = [
    // { id: 0, name: '近期配送' },
    // { id: 1, name: '转出院记录' },
    // { id: 2, name: '近期维修' },
    // { id: 3, name: '知识库' },
  ]
  currentRTab:any; //当前选中的
  loading5 = false;
  patientLogList = [];
  getPatientLog(id) {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    if (id == -1 || id === null || id === undefined) {
      this.patientLogList = [];
      return;
    }
    let postData = {
      patientLog: {
        sqDept: { id },
        hosId: this.checkedHos,
      },
      idx: 0,
      sum: 10000,
    };
    this.loading5 = true;
    this.mainService
      .getFetchDataList("api", "patientLog", postData)
      .subscribe((result) => {
        this.loading5 = false;
        if (result.status == 200) {
          this.patientLogList = result.list;
        }
      });
  }
  rightTitleHandler(i) {
		console.log(4444, i)
    this.currentRTab = i;
    if (i === 0) {
      this.getWorkOrders(this.applyDept);
    } else if (i === 1) {
      this.getPatientLog(this.applyDept);
    } else if (i === 2) {
      this.getItsmOrders(this.incidentModel.department);
    } else if (i === 3) {
      this.getDictionaryList();
    }else if (i === 4) {
      this.getZwOrders();
    }
  }
  // 服务台新建工单—根据申请科室id来查询未到达工单(科室id)
  loading4 = false;
  getWorkOrders(id) {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    if (id == -1 || id === null || id === undefined) {
      this.noArrives = [];
      return;
    }
    let types = "";
    this.user.user.scope.typeIds.forEach((e) => {
      types += e.id + ",";
    });
    types = types.slice(0, types.length - 1);
    let dataObj = {
      workOrder: {
        serTaskTypes: types,
        // serGdState: 4,
        range: "0",
        platform: 3,
        searchDays: this.searchDay,
				createDept: this.applyDept
        // startDept: {
        //   id: id,
        // },
      },
      idx: 0,
      sum: 5,
    };
    this.loading4 = true;
    this.mainService
      .getFetchDataList("data", "workOrder", dataObj)
      .subscribe((data) => {
        this.loading4 = false;
        if (data.status == 200) {
          this.noArrives = data.list;
        }
      });
  }
  // 服务台新建工单—根据申请科室id来查询
  loading6 = false;
  itsmOrders:any[] = [];
  getItsmOrders(id) {
    if(!this.itsmData.mdv2Switch){
      return;
    }
    if ((id == -1 || id === null || id === undefined) && this.incidentModel.repairIncidentType === 'dept') {
      this.itsmOrders = [];
      return;
    }
		if(!this.incidentModel.department && this.incidentModel.repairIncidentType === 'dept'){
			this.itsmOrders = [];
			return;
		}
    let postData = {
      incident: {
        "deleteFlag": 0,
        queryTask: 'all',
        department: {
          id,
        },
				requester:{
					id:null
				}
      },
      idx: 0,
      sum: 6,
    };
		if(this.incidentModel.repairIncidentType === 'public'){
			if(!this.incidentModel.requester){
				this.itsmOrders = [];
				return
			}
			postData.incident.requester.id = this.incidentModel.requester || null
			delete postData.incident.department
		}else{
			delete postData.incident.requester
		}
    this.loading6 = true;
    this.mainService
      .getFetchDataList("simple/data", "incident", postData)
      .subscribe((data) => {
        this.loading6 = false;
        if (data.status == 200) {
          this.itsmOrders = data.list;
        }
      });
  }

	// 获取政务值班近期记录
	itsmZwOrders:any=[];
	getZwOrders(){
		if(!this.incidentModel.callID && !this.selectProvince){
			return
		}
		let postData = {
		  governmentDuty: {
				callAccept: this.incidentModel.callID || undefined,
		    province: {
		    	id:null
		    },
		    city: {
		    	id:null
		    },
		    district: {
		    	id:null
		    }
		  },
		  idx: 0,
		  sum: 6,
		};
		if(this.province.length>0){
			postData.governmentDuty.province.id = this.province[0]
			postData.governmentDuty.city.id = this.province[1]
			postData.governmentDuty.district.id = this.province[2]
		}else{
			delete postData.governmentDuty.province
			delete postData.governmentDuty.city
			delete postData.governmentDuty.district
		}
		this.loading6 = true;
		this.mainService
		  .getFetchDataList("data", "governmentDuty", postData)
		  .subscribe((data) => {
		    this.loading6 = false;
		    if (data.status == 200) {
		      this.itsmZwOrders = data.list;
		    }
		  });
	}
  //获取知识库状态/类型
  getDictionaryList() {
    let solutionStatus$ = this.mainService.getDictionary('list', 'solution_status', true);
    let solutionType$ = this.mainService.getDictionary('list', 'solution_type', true);
    forkJoin(solutionStatus$, solutionType$).subscribe((data:any[]) => {
      let solutionStatusList = data[0] || [];
      let solutionTypeList = data[1] || [];

      this.solutionStatus = solutionStatusList.find(item => item.value == 3);
      	console.log('this.solutionStatus:', this.solutionStatus)
      this.solutionType = solutionTypeList.find(item => item.value == 1);
      	console.log('this.solutionType:', this.solutionType)

      this.getKnowageList();
    })
  }
  solutionStatus;//知识库状态
  solutionType;//知识库类型
  // 服务台新建工单—知识库
  loading7 = false;
  knowageList:any[] = [];
  getKnowageList() {
    if(!this.itsmData.mdv2Switch){
      return;
    }

    if(!(this.incidentModel.category && this.solutionStatus && this.solutionType)){
      this.loading7 = false;
      this.knowageList = [];
      return;
    }
    this.loading7 = true;
    let postData:any = {
      idx: 0,
      sum: 9999,
      solution: {
        categoryId: this.incidentModel.category,
				status: this.solutionStatus,
				type: this.solutionType,
      },
    };

    this.mainService
      .getFetchDataList('simple/data', 'solution', postData)
      .subscribe((result) => {
        this.loading7 = false;
        if(result.status == 200){
          this.knowageList = result.list || [];
        }else{
          this.msg.error(result.msg || '请求数据失败！');
        }
      });
  }
  // 引入知识库
  solutionId;//引用的知识库Id
  importKnowage(item){
    console.log(item)
    this.incidentModel = {...this.incidentModel, description:  `引用知识库解决，知识库编号：${item.solutionNumber}`};
    this.solutionId = item.id;
  }
  // 知识库查看-知道了
  coopData:any = {};
  isShowKnowledge:boolean = false;
  showKnowledgeModal(data) {
    this.coopData = data || {};
    this.isShowKnowledge = true;
  }

  cancelKnowledgeModal(flag) {
    this.isShowKnowledge = false;
  }

  // 定时刷新数据
  refreshTimerId; //定时刷新定时器
  refresh() {
    clearTimeout(this.refreshTimerId);
    this.refreshTimerId = setTimeout(() => {
      this.refresh()
      // 如果没选择复选框
      if (!this.batchType && !this.batchType1) {
        this.orderRefreshTime--;
      }
      this.workerRefreshTime--;
      if (this.orderRefreshTime == 0) {
        this.getUnassignedBuilding2();
        this.getOrderList(1, true);
        this.getOrderList(2);
        this.getOrderList(3);
        this.getVisitList();
        this.getMessageList();
        if (this.currentRTab === 0) {
          this.getWorkOrders(this.applyDept);
        } else if (this.currentRTab === 1) {
          this.getPatientLog(this.applyDept);
        } else if (this.currentRTab === 2) {
          this.getItsmOrders(this.incidentModel.department);
        } else if (this.currentRTab === 3) {
          this.getDictionaryList();
        } else if (this.currentRTab === 4) {
					this.getZwOrders();
				}
        this.orderRefreshTime = this.orderInfoTime;
      }
      if (this.workerRefreshTime == 0) {
        this.checkTab(this.typeId);
        this.workerRefreshTime = this.workerInfoTime;
      }
    }, 1000);
  }
  resetList() {
    this.unassignedListClone = null;
    this.arriveListClone = null;
    this.batchType = false;
    this.batchType1 = false;
  }
  // 刷新工单列表
  refreshList(e) {
    if (!e.promptContent) {
      return;
    }
    this.getUnassignedBuilding2();
    this.resetList();
    this.getOrderList(1);
    this.getOrderList(2);
    this.getOrderList(3);
    this.getVisitList();
    this.getMessageList();
    if (this.currentRTab === 0) {
      this.getWorkOrders(this.applyDept);
    } else if (this.currentRTab === 1) {
      this.getPatientLog(this.applyDept);
    } else if (this.currentRTab === 2) {
      this.getItsmOrders(this.incidentModel.department);
    } else if (this.currentRTab === 3) {
      this.getDictionaryList();
    }else if (this.currentRTab === 4) {
			this.getZwOrders();
		}
  }

  // 切换顶部tab栏
  // typeId = -1; //当前选中tab ID
  typeId; //当前选中tab ID
  typeData; //当前选中tab
  wLoading:boolean = false;
  checkTab(typeId) {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let that = this;
    that.typeId = typeId;
    this.typeData = this.scopeGroups.find(v => v.id === typeId);
    if(this.typeData){
      let type = this.typeData.type;
      // 配送
      if(type === 1 || type === 2){
        let postData = {
          groups: [typeId],
          idx: 0,
          sum: 100,
          hosId: this.checkedHos,
        };
        // if (typeId == -1) {
        //   let groups = [];
        //   that.scopeGroups.forEach((e) => {
        //     groups.push(e.id);
        //   });
        //   postData.groups = groups;
        // }
        if (this.hurseInfoHiding == 1){
          that.workerMessage = [];
          that.initTopCount();
          return;
        }
        this.wLoading = true;
        that.mainService.getSerInfo("getWorkInfo", postData).subscribe((data) => {
          this.wLoading = false;
          that.workerMessage = data.data ? data.data : [];
          that.initTopCount();
        });
      }

      // 运维
      if(type === 3){
        let postData = {
          groups: [typeId],
        };
        if (this.hurseInfoHiding == 1){
          that.workerMessage = [];
          that.initTopCount();
          return;
        }
        this.wLoading = true;
        that.mainService.incidentUserTaskCount(postData).subscribe((data:any) => {
          this.wLoading = false;
          that.workerMessage = data.data ? data.data : [];
          that.initTopCount();
        });
      }
    }
  }

  // 获取回访列表
  visitNum:any;
  getVisitList(){
    if(!this.itsmData.mdv2Switch){
      return;
    }
    let postData: any = {
      idx: 0,
      sum: 1,
      incident: {
        // "groupIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.scopeGroups.map(v => v.id).toString() || undefined),
        "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
        "urgentType": +this.itsmData.orderScopeRadio + 1,
        "queryTask": "callback",
        "assignee": this.tool.getCurrentUserId(),
        "deleteFlag": 0,
      },
    };

    this.mainService
      .getFetchDataList("simple/data", "incident", postData)
      .subscribe((result) => {
        this.visitNum = result.totalNum;
      });
  }

  // 获取留言列表
  messageNum:any;
  getMessageList(){
    if(!this.itsmData.mdv2Switch){
      return;
    }
    let postData: any = {
      idx: 0,
      sum: 1,
      hjzxRecord: {
        isExcute: 0,
      },
    };

    this.mainService
      .getFetchDataList("simple/data", "hjzxRecord", postData)
      .subscribe((result) => {
        this.messageNum = result.totalNum;
      });
  }

  //trackBy
  trackById(index, item) {
    return item.type + item.data.id;
  }

  // 获取三个状态数据数据
  loading1 = true;
  loading2 = true;
  loading3 = true;
  getOrderList(stateId, isAudio?) {
    this[`loading${stateId}`] = true;
    let keyWords = "";
    let types = "";

    let postData:any = {
      orderType: this.orderType,
    };
    // 配送
    if(this.flagList['hsmsFlag' + stateId]){
      if (stateId == 1) {
        keyWords = this.unassignedSearchCon || "";
      } else if (stateId == 2) {
        keyWords = this.arriveSearchCon || "";
      } else if (stateId == 3) {
        keyWords = this.executionSearchCon || "";
      }
      if (this.user.user.scope) {
        this.user.user.scope.typeIds = this.user.user.scope.typeIds || [];
      }
      if (!this.user.user.scope || !this.user.user.scope.typeIds) {
        this.loading1 = this.loading2 = this.loading3 = false;
      }else{
        this.user.user.scope.typeIds.forEach((e) => {
          types += e.id + ",";
        });
        types = types.slice(0, types.length - 1);

        postData.workOrderQuery = {
          workOrder: {
            serTaskTypes: types || undefined,
            serGdState: stateId,
            range: this.orderScopeRadio,
            platform: 3,
            searchDays: this.searchDay,
            keyWord: keyWords
          },
          idx: 0,
          sum: 1
        }
        if (this.unassignedBuilding.length && stateId == 1) {
          postData.workOrderQuery.workOrder["deptIds"] = this.unassignedBuilding.toString();
        }
      }
    }
    // 运维
    if(this.flagList['itsmFlag' + stateId]){
			if (stateId == 1) {
			  keyWords = this.unassignedSearchCon || "";
			} else if (stateId == 2) {
			  keyWords = this.arriveSearchCon || "";
			} else if (stateId == 3) {
			  keyWords = this.executionSearchCon || "";
			}
      postData.incidentQuery = {
        idx: 0,
        sum: 1,
      }
			let groupIds = this.dutyGroupUserRangeList.map(i=> i.id)
      if(stateId == 1){
        postData.incidentQuery.incident = {
          "groupIds": groupIds.length>0 ? groupIds.toString() : undefined,
          "acceptDutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
          "urgentType": +this.itsmData.orderScopeRadio + 1,
          "queryTask": "storageAcceptReassign",
          "assignee": this.tool.getCurrentUserId(),
          "deleteFlag": 0,
					"showReassign":null,
					"showGovDuty":null,
					keyWord: keyWords
        }
				postData.incidentQuery.incident.showReassign = this.user.user.scope.showReassign==0 || !this.user.user.scope.showReassign ? undefined : this.user.user.scope.showReassign
				postData.incidentQuery.incident.showGovDuty =
				this.user.user.scope.showGovDuty==0 ||
				!this.user.user.scope.showGovDuty ? undefined : this.user.user.scope.showGovDuty
			}else if(stateId == 2){
        postData.incidentQuery.incident = {
          "groupIds": groupIds.length>0 ? groupIds.toString() : undefined,
          "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
          "urgentType": +this.itsmData.orderScopeRadio + 1,
          "queryTask": "todoState",
          "deleteFlag": 0,
					keyWord: keyWords
        }
      }else if(stateId == 3){
        postData.incidentQuery.incident = {
          "groupIds": groupIds.length>0 ? groupIds.toString() : undefined,
          "dutyIds": this.itsmData.allDuty == 1 ? undefined : (this.itsmData.checkedHos.map(v => v.id).toString() || undefined),
          "urgentType": +this.itsmData.orderScopeRadio + 1,
          "queryTask": "doing",
          "assignee": this.tool.getCurrentUserId(),
          "deleteFlag": 0,
          "platform": 3,
					keyWord: keyWords
        }
      }
    }

    console.log(postData);
    this.mainService.orderList(postData).subscribe((data:any) => {
        if (stateId == 1) {
          // 未分派
          let unassignedList = data.data || [];
          unassignedList.forEach((item) => {
            item.checked = false;
            if(item.type === 'mdv2'){
              item.computedSubstitutionFlag = this.computedSubstitution(item.data)
              item.computedReceiveFlag = this.computedReceive(item.data)
              item.computedEditFlag = this.computedEdit(item.data)
            }
						// else{
						// 	item.taskTypeConfig = this.allTaskType.find(i=>i.id == item.data.taskType.id)
						// }
          });
          this.unassignedList = unassignedList;
					console.log(5555,unassignedList)
          this.batchType = false;
          this.allUnassignedList = false;
          this.unassignedListClone = cloneDeep(this.unassignedList);

          if (this.audioNotDispatched && this.unassignedList.length > 0 && isAudio) {
            //语音播报开启
            let audio = document.createElement("audio");
            audio.src = "./../../assets/audio/audioNotDispatched.mp3";
            audio.addEventListener("canplay", function () {
              //监听audio是否加载完毕
              audio.play();
            });
          }
          this.loading1 = false;
        } else if (stateId == 2) {
          // 待到达
          let arriveList = data.data || [];
          arriveList.forEach((item) => {
            item.checked = false;
            if(item.type === 'mdv2'){
              item.computedSubstitutionFlag = this.computedSubstitution(item.data)
              item.computedReceiveFlag = this.computedReceive(item.data)
              item.computedEditFlag = this.computedEdit(item.data)
            }
						// else{
						// 	item.taskTypeConfig = this.allTaskType.find(i=>i.id == item.data.taskType.id)
						// }
          });
          this.arriveList = arriveList;
          this.batchType1 = false;
          this.allArriveList = false;
          this.arriveListClone = cloneDeep(this.arriveList);
          this.loading2 = false;
        } else if (stateId == 3) {
          // 执行中
          let executionList = data.data || [];
          executionList.forEach((item) => {
            if(item.type === 'mdv2'){
              item.computedSubstitutionFlag = this.computedSubstitution(item.data)
              item.computedHandleFlag = this.computedHandle(item.data)
              item.computedEditFlag = this.computedEdit(item.data)
            }
						// else{
						// 	item.taskTypeConfig = this.allTaskType.find(i=>i.id == item.data.taskType.id)
						// }
          });
          this.executionList = executionList;
          this.loading3 = false;
        }

        if (keyWords) {
          this.loading1 = this.loading2 = this.loading3 = false;
        }
      });
  }

  // 计算顶部行数
  showRowNum: number; // 已展示行数
  maxNum: number; //可展示行数最大值
  initTopCount() {
    let that = this;
    that.maxNum = Math.ceil(that.workerMessage.length / that.patientCareCol);
    that.showRowNum = that.patientCareCol == 6 ? 4 : 2;
    console.log(that.maxNum, that.showRowNum);
    that.cotHeight = 140;
  }

  // 展开顶部列表
  unfold() {
    if (this.showRowNum < this.maxNum && this.patientCareCol != 6) {
      this.cotHeight += 70;
      this.showRowNum++;
    } else if (this.showRowNum < this.maxNum && this.patientCareCol == 6) {
      this.cotHeight += 35;
      this.showRowNum++;
    } else {
      return;
    }
  }

  // 收起顶部列表
  retract() {
    this.showRowNum = this.patientCareCol == 6 ? 4 : 2;
    this.cotHeight = 140;
  }

  // 查看工单详情
  openDetails(data) {
    if (data.taskType.associationType.value == 'specimen' || data.taskType.associationType.value == 'specimenPlan') {
      // 标本类
      this.router.navigateByUrl("dispatchingDesk/detailSample/" + data.id);
    } else if (data.taskType.associationType.value == 'inspect' || data.taskType.associationType.value == 'patientTransport') {
      // 送患者
      this.router.navigateByUrl("dispatchingDesk/detailPatients/" + data.id);
    } else if (data.taskType.associationType.value == 'drugsBag' || data.taskType.associationType.value == 'jPBag') {
      // 药品配送/静配
      this.router.navigateByUrl("dispatchingDesk/detailDrug/" + data.id);
    } else if (data.taskType.associationType.value == 'ordinary') {
      // 万能交接服务
      this.router.navigateByUrl("dispatchingDesk/detailOrdinary/" + data.id);
    } else {
      // 其他
      this.router.navigateByUrl("dispatchingDesk/detailOthers/" + data.id);
    }
  }

  // 查看ITSM工单详情
  detailModalShow = false; //弹窗开关
  openItsmDetails(data) {
    this.coopData = data;
    this.detailModalShow = true;
  }
  // 关闭弹窗
  closeDetailModelOrder(e) {
    this.detailModalShow = JSON.parse(e).show;
  }
  // 弹窗确定
  confirmDetailModelOrder(e){
    console.log(e);
    this.detailModalShow = false;
  }
  // 选择楼栋
  changeUnassignedBuilding(e) {
    this.getOrderList(1);
  }
  // 未分派搜索
  searchUnassigned() {
    this.getOrderList(1);
  }

  // 待到达搜索
  searchArrive() {
    this.getOrderList(2);
  }

  // 执行中搜索
  searchExecution() {
    this.getOrderList(3);
  }

  // 派单,flag是否是下班后进入未分派的单子
  allotWorker(id, stateId, flag?) {
    if (flag == 1) {
      this.router.navigateByUrl(
        "dispatchingDesk/allotWorker/" +
          id +
          "/" +
          stateId +
          "/1/" +
          this.checkedHos
      );
    } else {
      this.router.navigateByUrl(
        "dispatchingDesk/allotWorker/" +
          id +
          "/" +
          stateId +
          "/0/" +
          this.checkedHos
      );
    }
  }

  // 右侧菜单
  showLastItems: boolean = false;
  // 下拉
  fixedMenuXiala() {
    this.showLastItems = true;
  }

  // 上拉
  fixedMenuShangla() {
    this.showLastItems = false;
    this.fixedTab = "";
  }
  // 退出系统
  logOut(): void {
    this.logoutModal = true;
  }
  // 确认退出
  confirmLogout() {
    this.btnLoading = true;
    // 假退出
    this.btnLoading = false;
    this.closeLogoutModal();
    let hospital = this.tool.getCurrentHospital();
    if(hospital){
      this.router.navigate(["login", hospital.id]);
    }else{
      this.router.navigateByUrl("login");
    }
    localStorage.removeItem("user");
    localStorage.removeItem("menu");
    this.incomingService.removePhoneNumber();
    this.incomingService.removePhoneNumberPre();
    this.incomingService.removeSocketUrl();
    this.incomingService.removeSign();
    this.incomingService.removePhoneNumberPre();
    localStorage.removeItem("index");
    // 假退出
    this.mainService.logOut().subscribe((data) => {
      this.btnLoading = false;
      this.closeLogoutModal();
      if (data.status == 200) {
        if(hospital){
          this.router.navigate(["login", hospital.id]);
        }else{
          this.router.navigateByUrl("login");
        }
        localStorage.removeItem("user");
        localStorage.removeItem("menu");
        this.incomingService.removePhoneNumber();
        this.incomingService.removeSocketUrl();
        this.incomingService.removeSign();
        this.incomingService.removePhoneNumberPre();
        localStorage.removeItem("index");
      }
    });
  }

  // 关闭模态框
  closeLogoutModal() {
    this.logoutModal = false;
  }
  // 切换右侧菜单Tab
  fixedTab: string = "";
  checkFixedTab(type: string) {
    if (type == "toSystem") {
			let roleMenus = JSON.parse(localStorage.getItem("user")).menu;
			let sy = false;
			let gglb = false;
			let gzgd = false;
			roleMenus.forEach((e) => {
				if (e.link == "home") {
				  sy = true;
				}else if (e.link == "orderManagement") {
			    gglb = true;
			  }else if (e.link == "incidentManagement") {
			    gzgd = true;
			  }
			});

			if(!gglb && !gzgd && !sy){
				this.msg.error("暂无权限进入系统！", {
				  nzDuration: 2000,
				});
				return
			}
			if(sy){
				this.router.navigateByUrl("main");
				return
			}else if(gglb){
				this.router.navigateByUrl("/main/orderManagement");
				return
			}else if(gzgd){
				this.router.navigateByUrl("/main/incidentManagement");
				return
			}
			if(gglb && gzgd){
				this.router.navigateByUrl("/main/orderManagement");
			}
			if(!gglb && !gzgd && sy){
				this.router.navigateByUrl("/main/home");
			}
      return;
    }
    if (type == "logout") {
      this.logOut();
    }
    if (type == "nucleicAcidPrinting") {
      this.getNucleicAcidBuildingSummary();
    }
    if (this.fixedTab == type) {
      this.fixedTab = "";
    } else {
      this.fixedTab = type;
    }
  }

  // 护工信息展示形式
  // changPatientCareCol(e) {
  //   this.initTopCount();
  // }

  // 获取配置文件写死的任务类型ID(送病人回病房9)，选择此任务类型的话，患者信息从终点科室获取
  getConfigTasktypeLoading: boolean = false;
  getConfigTasktype() {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData = {
      idx: 0,
      sum: 1,
      hospitalConfig: {
        hosId: this.checkedHos,
        key: "rebackPatientTypeId",
      },
    };
    this.getConfigTasktypeLoading = true;
    this.mainService.getFetchDataList("simple/data", "hospitalConfig", postData).subscribe(res => {
      this.getConfigTasktypeLoading = false;
        if (res && res.status == 200) {
          this.deathTasktypeId = res.list.length ? res.list[0].value : undefined;
        } else {
          this.msg.error('请求数据失败');
        }
    });
  }
  // 获取配置文件写死的任务类型ID(转科，给转出院记录用6)
  patientLogTasktypeLoading: boolean = false;
	showGovDutyConfig:any;
	cmdbRepair:boolean = false;
  patientLogTasktype() {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    let postData = {
      idx: 0,
      sum: 999,
      // systemConfiguration: {
      //   keyconfig: "transDeptTypeId",
      // },
    };
    this.patientLogTasktypeLoading = true;
    this.mainService.getFetchDataList("simple/data", "systemConfiguration", postData).subscribe(res => {
      this.patientLogTasktypeLoading = false;
      if (res.status == 200) {
				res.list.forEach((c) => {
					switch (c.keyconfig) {
						case "transDeptTypeId":
							this.deathTasktypeIdPatient =  c.valueconfig
							break;
						case "governmentDuty":
							this.showGovDutyConfig =  c.valueconfig
							break;
					}
				});
      } else {
        this.msg.error('请求数据失败');
      }
    });
  }

	changeAsset(e){
		this.changeAssetInpSubject.next(e);
	}

	// 获取资产列表
	assetData:any = [];
	getAssetData(name?){
		console.log('nimadede===========', this.hospitalModel)
		let data = {
		  idx: 0,
		  sum: 20,
		  asset: {
		    downHosId: this.hospitalModel!=1 ? this.incidentModel.hosId : this.currentHospital.id,
		    name: name
		  },
		};

		this.mainService
		  .getFetchDataList("simple/data", "asset", data)
		  .subscribe((data) => {
		    if (data.status == 200) {
		      this.assetData = data.list;
		    }
		  });
	}

  // 重置新建工单数据
  resetOrderData(){
    this.applicationRequesterList = [];
    this.fileList = [];
    this.repairImgs = [];
    this.isRelatedDepartment = false;
    this.solutionId = undefined;
    delete this.incidentMsg.requesterPhone;
  }
  // 重置新建工单数据-继续建单-编辑-报修转事件
  resetOrderData2(){
    this.fileList = [];
    this.repairImgs = [];
    if(this.incidentModel.repairIncidentType === 'public'){
      this.isRelatedDepartment = false;
    }else{
      this.isRelatedDepartment = false;
    }
  }

	// 获取系统配置
	initConfig:any;
	config:any;
	hospitalModel:any; //院区模式 1:单院区 -1：多院区
	applicantMustFillIn:any; //申请人是否必填 1是，0否
	deptRepair:boolean = false; //科内报修
	publicRepair:boolean = false; //公共报修
	getSysConfig(type) {
		const postData = { idx: 0, sum: 99 };
		this.mainService
			.getFetchDataList("simple/data", "systemConfiguration", postData)
			.subscribe((result) => {
				if (result.status == 200) {
					if (result.list && Array.isArray(result.list)) {
						this.initConfig = JSON.parse(JSON.stringify(result.list));
						this.config = result.list.map((item) => {
							return [item.keyconfig, item.valueconfig, item.id, item.label];
						});
						this.config.forEach((c) => {
							switch (c[0]) {
								case "deptRepair":
									if(c[1]=='1'){
										this.deptRepair = true
									}else{
										this.deptRepair = false
									}
									break;
								case "publicRepair":
									if(c[1]=='1'){
										this.publicRepair = true
									}else{
										this.publicRepair = false
									}
									break;
								case "hospitalModel":
									this.hospitalModel = c[1]
									if(this.hospitalModel==1){
										if(this.tool.getCurrentHospital().parent){
											this.incidentModel.hosId = this.tool.getCurrentHospital().parent.id
										}else{
											this.incidentModel.hosId = this.tool.getCurrentHospital().id
										}
									}
									break;
								case "applicantMustFillIn":
									this.applicantMustFillIn = c[1]
									break;
								case "cmdbRepair":
									if(c[1]=='1'){
										this.cmdbRepair = true
									}else{
										this.cmdbRepair = false
									}
									break;
							}
							if(type==1){
								if(this.publicRepair && !this.deptRepair){
									this.incidentModel.repairIncidentType = 'public'
									this.isRelatedDepartment = false
								}
								if(!this.publicRepair && this.deptRepair){
									this.incidentModel.repairIncidentType = 'dept'
								}
							}
						});
						if(this.hospitalModel==1){
							this.searchApplicationBuilding()
						}
						if(this.cmdbRepair && this.hospitalModel==1){
							this.getAssetData()
						}
					}
				}
			});
	 }

  // 打开新建工单
  deathTasktypeId; //获取这个写死的任务类型的id,送病人回病房
  deathTasktypeIdPatient; //获取这个写死的任务类型的id,转出院记录
  async showNewOrder(type, des = '', phone = '', isInit = false, buildType = '') {
    if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
      //进入弹窗,强制示忙
      setTimeout(()=>{
        tlwsa.tlaAcw();
      },0)
    }
		this.addressDTO = null;
		this.deptPriorityDTO = null;
		this.userPriorityDTO = null;
		this.malPriorityDTO = null;
    this.buildType = buildType;
		console.log(123,buildType)
		this.searchApplicationHospital();
    if(this.itsmData.mdv2Switch){
      if(this.buildType !== '继续建单' && this.buildType !== '编辑事件' && this.buildType !== '报修转事件'){
        this.resetOrderData();
      }else{
        this.resetOrderData2();
      }
			this.getSysConfig(type);
      this.searchApplicationCategory();
      this.searchApplicationPriority();
      this.searchApplicationSource();
      this.getRepairIncidentType();
      isInit ? this.searchApplicationDepartment('itsm', undefined, undefined, undefined, true) : this.searchApplicationDepartment('itsm');
     	isInit && ((this.isRelatedDepartment && this.incidentModel.department) || (!this.isRelatedDepartment && this.incidentModel.hosId) || this.buildType === '报修转事件' ) && this.incidentModel.hosId && this.searchApplicationBuilding();
			isInit && this.incidentModel.area && this.searchApplicationFloor();
      if(!this.hsmsData.hsmsSwitch){
        this.taskBuild = null;
        this.residenceNo = null;
        this.newOrderShow = true;
        this.newOrderShowOpen = true;
        this.fixedTab = "newOrder";
        this.currentRTab = 0;
        this.rightTitle_tab = [];
        this.incidentModel = isInit ? this.incidentModel : { repairIncidentType: 'dept' };
        this.incidentMsg = isInit ? this.incidentMsg : {};
        this.isBuildOrderAgagin = false;
        this.applyDept = null;
        this.countRemarkIndex = -1;
        this.incidentModel.department = isInit ? this.incidentModel.department : null;

        //正常初始化
        this.getAutoWorkTypes(false, isInit);
        return;
      }
    }

    // 预约相关重置
    this.yyDateZy = new Date();
    this.yyDate = new Date();
    this.yyTimeZy = null;
    this.yyTime = null;
    this.isYyInspect = false;
    this.clickYYZyFlag = false;
    this.clickYYFlag = false;
    this.inspectToday = new Date();

    if(!isInit && this.hsmsData.hsmsSwitch){
      if(!this.deathTasktypeId){
        // 送病人回病房
        this.msg.error('【送病人回病房】未配置');
        return;
      }

      if(!this.deathTasktypeIdPatient){
        // 转出院记录
        this.msg.error('【转出院记录】未配置');
        return;
      }
    }

    this.taskBuild = null;
    this.residenceNo = null;
    this.newOrderShow = true;
    this.newOrderShowOpen = true;
    this.fixedTab = "newOrder";
    this.currentRTab = 0;
    this.rightTitle_tab = [];
    this.incidentModel = isInit ? this.incidentModel : { repairIncidentType: 'dept' };
    this.incidentMsg = isInit ? this.incidentMsg : {};
    this.isBuildOrderAgagin = false;
    this.applyDept = null;
    this.countRemarkIndex = -1;
    this.incidentModel.department = isInit ? this.incidentModel.department : null;
    if (des === "no") {
      //没绑定科室
      this.searchApplicationDepartment("hsms", "", phone);
      this.noWorkerPhone = false;
    } else if (des === "yes") {
      //绑定了科室
      this.searchApplicationDepartment("hsms", "&ks&");
      this.noWorkerPhone = false;
    } else if (des === "&go&") {
      //继续建单
      this.searchApplicationDepartment("hsms", "&go&");
      this.noWorkerPhone = false;
    } else {
      //正常初始化
			if(this.crossHospital!=1){
				this.searchApplicationDepartment("hsms");
			}
      this.noWorkerPhone = true;
    }
    this.getSearchTaskList("").subscribe((result) => {
      if (result.status == 200) {
        this.searchTaskLoading = false;
        this.searchTaskList = result.data;
        this.searchTaskList.forEach((item) => {
          item.sid = item.associationTypeId + "_" + item.id + "_" + item.associationTypeValue;
        });
        // if(phone){
        //   this.getAutoWorkTypes(true, isInit);
        // }else{
        //   this.getAutoWorkTypes(false, isInit);
        // }
        this.getAutoWorkTypes(false, isInit);
      }
    });
  }
  // 获取可选择的任务类型列表
  searchTaskList;
  searchTaskLoading = false;
  getSearchTaskList(keyword, countRemark = '') {
    if(!this.hsmsData.hsmsSwitch){
      return;
    }
    this.searchTaskLoading = true;
    return this.mainService.getTaskTypeBySearchKey({
      searchKey: keyword || undefined,
      countRemark: countRemark || undefined,
      hosId: this.checkedHos,
    });
  }

  getPhoneNum(flag = true) {
    if (!flag) {
      //切换院区的时候清除掉缓存中的号码
      this.incomingService.removePhoneNumber();
    }
    if (this.incomingService.getPhoneNumber()) {
      this.getWebsocketPhone(this.incomingService.getPhoneNumber());
    }else{
      this.websocketLoading = false;
    }
  }
  // 患者转运默认陪检
  defaultInspectFn(){
    if(this.currentTabIndex === '患者转运'){
      console.log(this.workTypesArrange);
      let obj = this.workTypesArrange.find(v => v.key == this.currentTabIndex);
      let tabIndex = this.workTypesArrange.findIndex(v => v.key == this.currentTabIndex);
      let arr = obj.value || [];
      let index = arr.findIndex(v => v.associationTypeValue === 'inspect');
      let o = arr.find(v => v.associationTypeValue === 'inspect');
      o && this.radioChangeZy(o.id, tabIndex);
    }
  }
  // 点击tab切换
  tabClick(key, isInit = false, patient?) {
    let preCurrentTabIndex = this.currentTabIndex;
    this.currentTabIndex = key;
		console.log(1112233,this.currentTabIndex)
		if(this.buildType !== '报修转事件'){
			this.incidentModel.requester = null;
		}
		if(this.buildType == '编辑事件' && this.editOrder.requester){
			this.incidentModel.requester = this.editOrder.requester.id;
		}
    this.radioValueQt = null;
    this.startDeptQt = null;
    this.endDeptQt = null;
    this.radioValueZy = null;
    this.radioValueZyPre = null;
    this.defaultInspectFn();
		if(this.showGovDuty==1){
			this.initZwForm()
		}
    if(this.currentTabIndex === '患者转运'){
      this.getPatientList(this.applyDept, "", patient);
    }
    this.startDeptZy = null;
    this.endDeptZy = null;
    this.patientZy = null;
    this.goodsNow = [];
    this.workOrderInspectScore = undefined;
    this.workOrderRemark = "";
    this.workOrderRemarkZy = "";
    this.deptZyList["startDept"] = [];
    this.deptZyList["endDept"] = [];
    this.deptZyList["startStatus"] = 0;
    this.deptZyList["endStatus"] = 0;
    this.deptQtList["startDept"] = [];
    this.deptQtList["endDept"] = [];
    this.deptQtList["startStatus"] = 0;
    this.deptQtList["endStatus"] = 0;
    // if(preCurrentTabIndex === '故障报修'){
    //   if(this.applyDept){
    //     this.rightTitle_tab = [
    //       { id: 0, name: '近期配送' },
    //       // { id: 1, name: '转出院记录' },
    //     ]
    //     this.rightTitleHandler(this.rightTitle_tab[0].id);
    //   }

    //   let deptObj = this.applicationDeptList.find(v => v.id == this.incidentModel.department);

    //   if(this.applyDept != this.incidentModel.department){
    //     this.applyDept = this.incidentModel.department;
    //     this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, this.incidentModel.department);
    //   }
    // }else

		 if(this.currentTabIndex === '故障报修'){
				// this.incidentModel.department = null;
				this.rightTitle_tab = [
					{ id: 2, name: '近期维修' },
					{ id: 3, name: '知识库' },
				]
				this.rightTitleHandler(this.rightTitle_tab[0].id);


      let deptObj = this.applicationDepartmentList.find(v => v.id == this.applyDept);

      if(this.incidentModel.department != this.applyDept && (!isInit || !this.buildType)){
				if(this.incidentModel.repairIncidentType === 'dept'){
					this.incidentModel.department = this.applyDept;
					this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, this.applyDept);
				}
      }
    }else if (this.currentTabIndex === '政务值班'){
			this.rightTitle_tab = [
			  { id: 4, name: '近期记录' },
			]
			this.rightTitleHandler(4);
		}else{
			this.rightTitle_tab = [
			  { id: 0, name: '近期配送' },
			]
			this.rightTitleHandler(this.rightTitle_tab[0].id);
		}
  }

	// 获取省市区
	priorityData:any = [];
	nzOptions:any = [];
	getCity(){
		this.mainService.getDictionary("tree", "administrative_division").subscribe((res) => {
			let list = res;
			list = list.map(v => ({...v, parentId: v.parent ? v.parent : undefined, label: v.name, value: v.id}));
			this.nzOptions = this.tool.tranListToTreeDataLeaf(list, undefined, "parentId");
		});
	}

	// 选择省市区
	selectProvince:boolean = false
	onProvinceChanges	(values: any): void {
		this.selectProvince = true;
		this.getZwOrders();
	}

	// 初始化政务值班form
	sketch:any = null;
	record:any = null;
	contactsPhone:any = null;
	contacts:any = null;
	province:any = [];
	complainant:any = null;
	detailedAddress:any = null;
	initZwForm(){
		this.sketch = null;
		this.record = null;
		this.contactsPhone = null;
		this.contacts = null;
		this.province = [];
		this.complainant = null;
		this.detailedAddress = null;
	}

	// 保存政务值班
	zwLoading:boolean = false;
	saveZwOrder(): void{
		var that = this;
		if(!this.contacts){
			this.msg.error('联系人不能为空')
			return
		}
		if(!this.contactsPhone){
			this.msg.error('联系电话不能为空')
			return
		}
		if(!this.complainant){
			this.msg.error('投诉人不能为空')
			return
		}
		if(this.province.length==0){
			this.msg.error('省市区不能为空')
			return
		}
		if(this.detailedAddress.length==0){
			this.msg.error('详细地址不能为空')
			return
		}
		if(!this.sketch){
			this.msg.error('简述不能为空')
			return
		}
		if(!this.record){
			this.msg.error('记录内容不能为空')
			return
		}
		let data = {
			governmentDuty:{
				sketch: this.sketch,
				record: this.record,
				contactsPhone: this.contactsPhone,
				contacts: this.contacts,
				complainant: this.complainant,
				detailedAddress: this.detailedAddress,
				province: {
					id: null
				},
				city: {
					id: null
				},
				district: {
					id: null
				},
				callAccept: this.incidentModel.callID || undefined,
				platform: '3'
			}
		};
		if(this.province.length>0){
			data.governmentDuty.province.id = this.province[0]
			data.governmentDuty.city.id = this.province[1]
			data.governmentDuty.district.id = this.province[2]
		}else{
			delete data.governmentDuty.province
			delete data.governmentDuty.city
			delete data.governmentDuty.district
		}
		that.zwLoading = true;
		that.mainService
			.dataPost("addData", "governmentDuty", data)
			.subscribe((data) => {
				that.zwLoading = false;
				that.initZwForm();
				if (data.status == 200) {
					this.patientCode = null;
					this.getZwOrders();
					this.selectProvince = false;
					this.newOrderShow = false;
					this.itsmZwOrders = [];
					that.showPromptModal("新增", true, "");
				} else {
					that.showPromptModal("新增", false, data.msg);
				}
			});
	}

  // 获取患者信息
  searchPatientList(id, searchWords) {
		this.patientObj = null;
		this.patientCode = null;
    this.searchPatientListSubject.next([id, searchWords]);
  }
  // 获取患者信息
  isLoadingPatient: boolean = false;
  getPatientList(id, searchWords, patient?, type:any = '') {
    if(patient){
      this.patientList = [patient];
      return;
    }
    if(!id){
      this.patientList = [];
      return;
    }
    let dataObj = { searchWords, deptId: id };
    this.isLoadingPatient = true;
    this.mainService.getPatientList(dataObj).subscribe((result) => {
      this.isLoadingPatient = false;
      if (result["state"] == 200) {
        this.patientList = result["data"];
				console.log(111,Number(this.deathTasktypeId))
				console.log(222,this.taskTypeId)
				console.log(333, type)
				if(type!='change'){
					if(this.patientObj){
						let list = this.patientList.find(i=>i.id == this.patientObj.id)
						if(!list){
							this.patientList.push({
								patientname: this.patientObj.patientName,
								bednum: this.patientObj.bedNum,
								residenceNo: this.patientObj.residenceNo,
								id: this.patientObj.id,
								patientCode: this.patientObj.patientCode
							})
						}
					}
					if(this.taskTypeId){
						if(Number(this.deathTasktypeId) != this.taskTypeId){
							// 患者信息自动带入
							let item = this.patientList.find(i=> i.patientCode == this.patientCode)
							console.log(22222, item)
							if(item){
								this.validateFormZy.controls.patient.setValue(item.patientCode+"");
							}else{
								this.validateFormZy.controls.patient.setValue(null);
							}
						}
					}
				}else{
					this.patientObj = null;
					this.patientCode = null;
					this.taskTypeId = null;
				}
        // if (this.patientList.length) {
        //   this.patientList = this.patientList.filter((item) => !!item.bednum);
        // }
      }
    });
  }

  // 根据住院号获取患者信息
  getPatientByResidenceNo(residenceNo) {
    let postData = {
      residenceNo,
      hosId: this.checkedHos,
      idx: 0,
      sum: 2,
    };
    this.mainService.listMsgByMain('listPatient',postData).subscribe((result) => {
      if (result["status"] == 200) {
        let patientList = result["list"];
        if (patientList.length) {
          patientList = patientList.filter((item) => !!item.bedNum);
        }
        if(patientList.length === 1){
          let patient = patientList[0];
          patient.bednum = patient.bedNum;
          patient.patientname = patient.patientName;
          patient.department && (this.applicationDepartmentList = [patient.department]);
          patient.department && (this.applyDept = patient.department.id);
          patient.department && this.tabClick('患者转运', false, patient);
					this.crossHospital==1 && patient.hospitalDTO && (this.inHosId = patient.hospitalDTO.id);
          // patient.department && (this.patientList = [patient]);
          patient.department && (this.patientZy = patient.patientCode);
          console.log(this.patientList)
        }else{
          this.msg.warning('未查询到患者');
        }
      }
    });
  }

  // tab任务类型向左移动
  toLeft() {
    let maxStep = this.workTypesArrange.length - 5;
    this.disStep = Math.max(-maxStep, --this.disStep);
    this.disX = (this.disStep * this.elementView.nativeElement.offsetWidth) / 5;
  }
  // tab任务类型向右移动
  toRight() {
    this.disStep = Math.min(0, ++this.disStep);
    this.disX = (this.disStep * this.elementView.nativeElement.offsetWidth) / 5;
  }

  // 边输边搜节流阀
  // WS;//边输入边搜索的定时器
  WSNum = 0;
  changeInp(type, e) {
    this.changeInpSubject.next([type, e]);
  }
  changeCommonInp(type, e) {
    this.changeCommonInpSubject.next([type, e]);
  }
  // 院区列表
  applicationHospitalList:any[] = [];
  searchApplicationHospital() {
    let dataObj = {
      idx: 0,
      sum: 9999,
      hospital: {
        selectType:'level1',
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("data", "hospital", dataObj)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationHospitalList = data.list;
        }
      });
  }

	// 患者转运-任务类型-院区切换
	changeTypeHospital(e, type){
		console.log(111,e)
		if(type==1){
			this.validateFormZy.controls.startDept.setValue(null)
		}else{
			this.validateFormZy.controls.endDepts.setValue(null)
		}
		this.getStartDept(type)
	}

	// 患者转运-任务类型-搜索起点科室
	getStartDept(type){
		let dataObj = {
		  idx: 0,
		  sum: 20,
		  department: {
		    searchType: 1,// 简单查询
		    cascadeHosId: type==1 ? this.validateFormZy.controls.startHosId.value : this.validateFormZy.controls.endHosId.value,
		    flag: 1,
		  },
		};
		this.mainService
		  .getFetchDataList("data", "department", dataObj)
		  .subscribe((data) => {
		    if (data.status == 200) {
					if(data.list.length>0){
						data.list.forEach(i=>{
							if(i.inputcode){
								i.inputcode = i.inputcode.toUpperCase()
								i.dept = i.dept + '('+i.inputcode+')'
							}
						})
					}
					if(type==1){
						this.deptZyList.startDept = data.list
					}else{
						this.deptZyList.endDept = data.list
					}
		    }
		  });
	}

	// 物品配送-任务类型-院区切换
	changeTypeQtHospital(e, type){
		if(type==1){
			this.validateFormQt.controls.startDeptQt.setValue(null)
		}else{
			this.validateFormQt.controls.endDeptsQt.setValue(null)
		}
		this.getStartQtDept(type)
	}

	// 物品配送-任务类型-搜索起点科室
	getStartQtDept(type){
		let dataObj = {
		  idx: 0,
		  sum: 20,
		  department: {
		    searchType: 1,// 简单查询
		    cascadeHosId: type==1 ? this.validateFormQt.controls.startHosId.value : this.validateFormQt.controls.endHosId.value,
		    flag: 1,
		  },
		};
		this.mainService
		  .getFetchDataList("data", "department", dataObj)
		  .subscribe((data) => {
		    if (data.status == 200) {
					if(data.list.length>0){
						data.list.forEach(i=>{
							if(i.inputcode){
								i.inputcode = i.inputcode.toUpperCase()
								i.dept = i.dept + '('+i.inputcode+')'
							}
						})
					}
					if(type==1){
						this.deptQtList.startDept = data.list
					}else{
						this.deptQtList.endDept = data.list
					}
		    }
		  });
	}

	// 配送院区选择
	changeInHospital(e){
		this.applyDept = undefined;
		this.searchApplicationDepartment('hsms');
	}

  // 选择院区
  changeApplyHospital(e){
    console.log(e);

    this.incidentModel.department = undefined;
    this.searchApplicationDepartment('itsm');
		if(this.cmdbRepair){
			this.incidentModel.assetId = null;
			this.getAssetData()
		}
    if(this.buildType !== '报修转事件'){
      this.incidentModel.requester = undefined;
      this.searchApplicationRequester();
    }
    this.applicationRequesterList = [];

    this.incidentModel.area = undefined;
    this.searchApplicationBuilding();

    this.incidentModel.place = undefined;
    this.applicationFloorList = [];

    this.incidentModel.houseNumber = undefined;
    this.incidentModel.duty = undefined;

    // 根据院区和故障现象带出责任部门，优先级，维修人/组
    if(this.incidentModel.category && e && this.buildType !== '编辑事件'){
      let postData = {
        idx: 0,
        sum: 9999,
        incidentCategoryConfig: {
          categoryId: this.incidentModel.category,
          hosId: e,
        },
      };
      console.log(postData);
      // return;
      this.isLoading = true;
      this.mainService
        .getFetchDataList("simple/data", "incidentCategoryConfig", postData)
        .subscribe((data) => {
          this.isLoading = false;
          if (data.status == 200) {
            let list = data.list || [];
            if(list.length > 0){
              console.log(list[0]);
              this.incidentCategoryConfig = list[0];
            }else{
              this.incidentCategoryConfig = {};
            }

            // 根据院区和故障现象带出责任部门，优先级，维修人/组
            this.incidentModel.duty = this.incidentCategoryConfig.dutyDTO;
            this.incidentModel.priorityId = this.incidentCategoryConfig.priority;

            // 回显维修人/组
            this.showGroupOrUser();
          }
        });
    }else{
      this.incidentModel.group = undefined;
      this.applicationGroupList = [];
      this.incidentModel.user = undefined;
      this.applicationUserList = [];
    }
  }
  // 申请人列表（搜索）
  applicationRequesterList:any[] = [];
  isRelatedDepartment:boolean = false;
  searchApplicationRequester(keyWord?) {
    // 关联查询，且没选择申请科室
    if(this.isRelatedDepartment && !this.incidentModel.department){
      this.applicationRequesterList = [];
      return;
    }
    // 不关联查询，且没选择院区
    if(!this.isRelatedDepartment && !this.incidentModel.hosId){
      this.applicationRequesterList = [];
      return;
    }
    let postData = {
      idx: 0,
      sum: 20,
      user: {
				statisticalHosId: this.isRelatedDepartment ? undefined :  this.incidentModel.hosId,
        // hospital: this.isRelatedDepartment ? undefined : { id: this.incidentModel.hosId },
        dept: this.isRelatedDepartment ? { id: this.incidentModel.department } : undefined,
        name: keyWord,
				// phone: this.incidentModel.incomingPhone || undefined
        // simpleQuery: true,
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "user", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
					if(this.buildType == '编辑事件' && this.editOrder.requester){
					  let item = data.list.find(i=> i.id == this.editOrder.requester.id)
					  if(!item){
					  	data.list.push({
					  		name: this.editOrder.requester.name,
					  		account: this.editOrder.requester.account,
					  		id: this.editOrder.requester.id
					  	})
					  }
						this.applicationRequesterList = data.list;
					}else{
						this.applicationRequesterList = data.list;
					}
        }
      });
  }
  // 修改申请人
	userPriorityDTO:any;
  changeApplyRequester(e){
		if(this.buildType !== '编辑事件'){
			let userObj = this.applicationRequesterList.find(v => v.id == e);
			console.log('选中的申请人',userObj)
			// 选择申请人回显申请人电话
			if(userObj){
			  this.incidentMsg.requesterPhone = userObj.phone;
			}
			if(userObj && userObj.priorityDTO){
				this.userPriorityDTO = userObj.priorityDTO
			}else{
				this.userPriorityDTO = null
			}
			let orders = [];
			let id = [];
			if(this.addressDTO&&this.addressDTO.id){
				orders.push(this.addressDTO.orders)
				id.push(this.addressDTO.id)
			}
			if(this.deptPriorityDTO&&this.deptPriorityDTO.id){
				orders.push(this.deptPriorityDTO.orders)
				id.push(this.deptPriorityDTO.id)
			}
			if(this.userPriorityDTO&&this.userPriorityDTO.id){
				orders.push(this.userPriorityDTO.orders)
				id.push(this.userPriorityDTO.id)
			}
			if(this.malPriorityDTO&&this.malPriorityDTO.id){
				orders.push(this.malPriorityDTO.orders)
				id.push(this.malPriorityDTO.id)
			}
			if(orders.length>0){
				let minNumber = Math.min(...orders)
				let index = orders.indexOf(minNumber)
				console.log('最小值的orders', orders, minNumber)
				setTimeout(_=>{
					if(index!=-1){
						this.incidentModel.priorityId = minNumber != Infinity ? id[index] : null
					}else{
						this.incidentModel.priorityId = null
					}
				})
			}else{
				this.incidentModel.priorityId = null
			}
		}
		if(this.incidentModel.repairIncidentType === 'public'){
			this.getItsmOrders('')
			if(this.cmdbRepair){
				this.incidentModel.assetId = null;
				this.getAssetData()
			}
		}
  }
  // 故障现象列表
  applicationCategoryList:any[] = [];
  searchApplicationCategory(keyWord?) {
    let dutyIds;
    if(this.buildType === '编辑事件'){
      dutyIds = this.incidentModel.duty.id.toString();
    }else{
      dutyIds = this.itsmData.checkedHos.length ? (this.itsmData.checkedHos.map(v => v.id).toString() || undefined) : undefined;
    }
    let postData = {
      category: {
        category: keyWord,
        selectType: 'mutlQuery',
        hierarchy: 3,//只差有三级的故障现象列表
        dutyIds,
      },
    };
    console.log(postData);
    // return;
    this.isLoading = true;
    this.mainService
      .incidentPost("listIncidentCategory", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationCategoryList = data.data;
        }
      });
  }
  // 修改故障现象
  incidentCategoryConfig:any = {};//当前匹配的故障现象规则
	malPriorityDTO:any;
  changeApplyCategory(e, isCoverage = false){
    // 知识库
    this.getKnowageList();
    if(e && !isCoverage){
      // 根据故障现象带出故障描述
      if(this.incidentModel.description){
        this.incidentModel.description = this.incidentModel.description + '；' + this.applicationCategoryList.find(v => v.id == e).mutiCategory;
      }else{
        this.incidentModel.description = this.applicationCategoryList.find(v => v.id == e).mutiCategory;
      }
    }

    // 根据院区和故障现象带出责任部门，优先级，维修人/组
    if(this.incidentModel.hosId && e && this.buildType !== '编辑事件'){
      let postData = {
        idx: 0,
        sum: 9999,
        incidentCategoryConfig: {
          categoryId: e,
          hosId: this.incidentModel.hosId,
        },
      };
      // return;
      this.isLoading = true;
      this.mainService
        .getFetchDataList("simple/data", "incidentCategoryConfig", postData)
        .subscribe((data) => {
          this.isLoading = false;
          if (data.status == 200) {
            let list = data.list || [];
            if(list.length > 0){
              console.log(list[0]);
              this.incidentCategoryConfig = list[0];
            }else{
              this.incidentCategoryConfig = {};
            }
						if(this.incidentCategoryConfig.priorityDTO){
							this.malPriorityDTO = this.incidentCategoryConfig.priorityDTO
						}else{
							this.malPriorityDTO = null
						}
						let orders = [];
						let id = [];
						if(this.addressDTO&&this.addressDTO.id){
							orders.push(this.addressDTO.orders)
							id.push(this.addressDTO.id)
						}
						if(this.deptPriorityDTO&&this.deptPriorityDTO.id){
							orders.push(this.deptPriorityDTO.orders)
							id.push(this.deptPriorityDTO.id)
						}
						if(this.userPriorityDTO&&this.userPriorityDTO.id){
							orders.push(this.userPriorityDTO.orders)
							id.push(this.userPriorityDTO.id)
						}
						if(this.malPriorityDTO&&this.malPriorityDTO.id){
							orders.push(this.malPriorityDTO.orders)
							id.push(this.malPriorityDTO.id)
						}
						if(orders.length>0){
							let minNumber = Math.min(...orders)
							let index = orders.indexOf(minNumber)
							console.log('最小值的orders', orders, minNumber)
							setTimeout(_=>{
								if(index!=-1){
									this.incidentModel.priorityId = minNumber != Infinity ? id[index] : null
								}else{
									this.incidentModel.priorityId = null
								}
							})
						}else{
							this.incidentModel.priorityId = null
						}

            // 根据院区和故障现象带出责任部门，优先级，维修人/组
            this.incidentModel.duty = this.incidentCategoryConfig.dutyDTO;
            // this.incidentModel.priorityId = this.incidentCategoryConfig.priority;

            // 回显维修人/组
            this.showGroupOrUser();
          }
        });
    }else{
      this.incidentModel.group = undefined;
      this.applicationGroupList = [];
      this.incidentModel.user = undefined;
      this.applicationUserList = [];
    }
  }

  // 直接解决-弹窗
  directOrderModalShow = false; //弹窗开关
  showDirectOrder() {
    this.directOrderModalShow = true;
  }
  // 关闭弹窗
  closeDirectOrderModelOrder(e) {
    this.directOrderModalShow = JSON.parse(e).show;
  }
  // 弹窗确定
  confirmDirectOrderModelOrder(incidentModel){
    console.log(incidentModel);
		console.log(444,this.incidentModel.requester)
    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;
    this.incidentModel = {...this.incidentModel, ...incidentModel};

    let category = this.applicationCategoryList.find(v => v.id == this.incidentModel.category);
    let postData:any = {
      solutionId: this.solutionId,
      "incident": {
        "id": this.incidentModel.id || undefined,
        "deleteFlag": 0,
        "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
        "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
        "alarmType": false,
        "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
        "contactsInformation": this.incidentModel.contactsInformation,
        "contacts": this.incidentModel.contacts,
        "hosId": this.incidentModel.hosId || undefined,
        "area": this.incidentModel.area ? { id: this.incidentModel.area } : undefined,
        "place": this.incidentModel.place ? { id: this.incidentModel.place } : undefined,
        "houseNumber": this.incidentModel.houseNumber,
        "category": this.incidentModel.category ? { id: this.incidentModel.category } : undefined,
        "priorityId": this.incidentModel.priorityId || undefined,
        "source": this.incidentModel.source ? { id: this.incidentModel.source } : undefined,
        // "title": category.mutiCategory,
        "description": this.incidentModel.description,
        "directProcess": 1,
        "handleDescription": this.incidentModel.handleDescription,
        "handlingPersonnelUser": {id: this.tool.getCurrentUserId()},
        "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
        "closecode": this.incidentModel.closecode ? { id: this.incidentModel.closecode } : undefined,
        "acceptUser": { id: this.tool.getCurrentUserId() },
        "callID": this.incidentModel.callID || undefined,
        "incomingPhone": this.incidentModel.incomingPhone || undefined,
        "hjzxRecordId": this.incidentModel.hjzxRecordId || undefined,
				"assetId": this.incidentModel.assetId || undefined
      },
    };

    if(this.buildType){
      if(this.buildType === '报修转事件'){
        postData.incident.fromWx = true;
      }
      if(this.buildType !== '继续建单' && this.buildType !== '编辑事件' && this.buildType !== '报修转事件'){
        postData.incident = Object.assign({}, postData.incident);
      }else{
        postData.incident = Object.assign({}, this.editOrder, postData.incident);
      }
    }

    this.mainService
      .flowPost("incident/task/accept", postData)
      .subscribe((result) => {
        this.msg.remove(this.maskFlag);
        this.maskFlag = false;

        if (result.state == 200) {
          // 图片上传
          if(this.fileList.length){
            console.log(this.fileList.map(v => v.originFileObj));
            this.fileList.map(v => v.originFileObj).forEach(async file => {
              await this.uploadImages(file, result.data.id);
            })
          }
          this.directOrderModalShow = false;
          // this.msg.success('直接解决成功');
          this.isBuildOrderAgaginFn();
        } else {
          this.msg.error(result.msg || '直接解决失败');
        }
      });
  }

  // 回显维修人/组
  showGroupOrUser(){
    // 先判断科室绑定人/组
    if(this.incidentModel.department && this.incidentModel.category && this.incidentModel.duty){
      let postData = {
        idx: 0,
        sum: 10,
        incidentAssignManager: {
          deptId: this.incidentModel.department,
          categoryId: this.incidentModel.category,
          hosId: this.incidentModel.duty.id,
          operationType: 'queryConfig',
        },
      };

      this.mainService
        .getFetchDataList("simple/data", "incidentAssignManager", postData)
        .subscribe((result) => {
          if (result.status == 200) {
            var deptBinduserConfig = result.list.length ? result.list[0] : null;//获取第一条配置
            if(deptBinduserConfig){
              console.log('deptBinduserConfig:', deptBinduserConfig)
              // 如果有科室绑定人员的配置
              if(deptBinduserConfig.handleGroupDTO){
                this.incidentModel.group = deptBinduserConfig.handleGroupDTO.id;
                this.applicationGroupList = [deptBinduserConfig.handleGroupDTO];
              }else{
                this.incidentModel.group = undefined;
                this.applicationGroupList = [];
              }

              if(deptBinduserConfig.handleUserDTO){
                this.incidentModel.user = deptBinduserConfig.handleUserDTO.id;
                this.applicationUserList = [deptBinduserConfig.handleUserDTO];
              }else{
                this.incidentModel.user = undefined;
                this.applicationUserList = [];
              }
            }else{
              if(this.incidentModel.category){
                // 选择了故障现象
                if(this.incidentCategoryConfig.groupId && this.incidentCategoryConfig.groupDTO){
                  this.incidentModel.group = this.incidentCategoryConfig.groupId;
                  this.applicationGroupList = [this.incidentCategoryConfig.groupDTO];
                }else{
                  this.incidentModel.group = undefined;
                  this.applicationGroupList = [];
                }

                if(this.incidentCategoryConfig.userId && this.incidentCategoryConfig.userDTO){
                  this.incidentModel.user = this.incidentCategoryConfig.userId;
                  this.applicationUserList = [this.incidentCategoryConfig.userDTO];
                }else{
                  this.incidentModel.user = undefined;
                  this.applicationUserList = [];
                }
              }
            }
          }
        });
    }else{
      if(this.incidentModel.category){
        // 选择了故障现象
        if(this.incidentCategoryConfig.groupId && this.incidentCategoryConfig.groupDTO){
          this.incidentModel.group = this.incidentCategoryConfig.groupId;
          this.applicationGroupList = [this.incidentCategoryConfig.groupDTO];
        }else{
          this.incidentModel.group = undefined;
          this.applicationGroupList = [];
        }

        if(this.incidentCategoryConfig.userId && this.incidentCategoryConfig.userDTO){
          this.incidentModel.user = this.incidentCategoryConfig.userId;
          this.applicationUserList = [this.incidentCategoryConfig.userDTO];
        }else{
          this.incidentModel.user = undefined;
          this.applicationUserList = [];
        }
      }
    }
  }

  // 图片相关
  showUploadList = {
    showPreviewIcon: true,
    showRemoveIcon: true,
    hidePreviewIconInNonImage: true
  };
  fileList = [
    // {
    //   uid: -1,
    //   name: 'xxx.png',
    //   status: '1',
    //   url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
    // }
  ];
  previewImage: string | undefined = '';
  previewVisible = false;

  handlePreview = (file: UploadFile) => {
  	console.log('file1:', file)
    this.previewImage = file.url || file.thumbUrl;
    this.previewVisible = true;
  };

  beforeUpload = (file: UploadFile): boolean => {
  	console.log('file2:', file)
    this.fileList = [...this.fileList, file];
    setTimeout(async () => {
      file.url = await this.getBase64(file);
    }, 0);
    console.log('this.fileList:', this.fileList)
    return true;
  };

  getBase64(file: any): Promise<any> {
    return new Promise((resolve, reject) => {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => resolve(reader.result);
      reader.onerror = error => reject(error);
    });
  }

  // 临时上传图片
  temporarilyUrl = this.mainService.returnUploadUrl('temporarily', 0);
  // 处理组列表
  applicationGroupList:any[] = [];
  searchApplicationGroup(keyWord?) {
    if(!this.incidentModel.duty){
      this.incidentModel.group = undefined;
      this.applicationGroupList = [];
      this.incidentModel.user = undefined;
      this.applicationUserList = [];
      return;
    }
    let postData = {
      idx: 0,
      sum: 20,
      group2: {
        groupName: keyWord,
        hospitals: this.incidentModel.duty ? this.incidentModel.duty.id.toString() : undefined,
        type: 3,
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "group2", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationGroupList = data.list;
        }
      });
  }
  // 修改处理组
  changeApplyGroup(e){
    console.log(e);
    this.incidentModel.user = undefined;
    this.searchApplicationUser();
  }
  // 处理人列表
  applicationUserList:any[] = [];
  searchApplicationUser(keyWord?) {
    let postData = {
      idx: 0,
      sum: 20,
      user: {
        name:keyWord,
				groupdata: this.incidentModel.group ? { id: this.incidentModel.group } : undefined,
        roleCodes: 'first-line support',
        engineer: 1,
        simpleQuery: true,
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "user", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationUserList = data.list;
        }
      });
  }
  // 优先级列表
  applicationPriorityList:any[] = [];
  searchApplicationPriority(keyWord?) {
    let postData = {
      idx: 0,
      sum: 9999,
      priority: {},
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "priority", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationPriorityList = data.list;
          // 回显报修来源
          let source = this.applicationSourceList.find(v => v.value === 'phone');
          if(!this.incidentModel.source && source){
            this.incidentModel.source = source.id;
          }
        }
      });
  }
  // 报修来源列表
  applicationSourceList:any[] = [];
  searchApplicationSource(keyWord?) {
    this.mainService.getDictionary("list", "incident_source").subscribe((data) => {
      this.applicationSourceList = data || [];
    });
  }
  // 报修类型列表
  repairIncidentTypeList:any[] = [];
  getRepairIncidentType() {
    this.mainService.getDictionary("list", "repair_incident_type").subscribe((data) => {
      this.repairIncidentTypeList = data || [];
    });
  }
  // 选择报修类型
  changeRepairIncidentType(value){
		// this.incidentModel.department = undefined;
    this.incidentMsg.deptManyPhone = '';
		this.incidentModel.requester = null;
    // this.isRelatedDepartment = value !== 'public';
    this.changeApplyRelatedDepartment(this.isRelatedDepartment);
		this.rightTitleHandler(2);
  }
  // 楼栋列表
  applicationBuildingList:any[] = [];
  searchApplicationBuilding(keyWord?, buildingId?) {
    let postData = {
      idx: 0,
      sum: 9999,
      building: {
        cascadeHosId: this.incidentModel.hosId,
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "building", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationBuildingList = data.list;
          if(buildingId){
            let hasBuildingId = this.applicationBuildingList.some(v => v.id == buildingId);
            if(hasBuildingId){
              this.incidentModel.area = buildingId;
            }else{
              this.incidentModel.area = undefined;
            }
          }
        }
      });
  }
  // 修改楼栋
  changeApplyBuilding(e){
    console.log(e)
    this.incidentModel.place = undefined;
    this.searchApplicationFloor();
  }
  // 楼层列表
  applicationFloorList:any[] = [];
  searchApplicationFloor(keyWord?, floorId?, buildingId?) {
    let postData = {
      idx: 0,
      sum: 9999,
      floor: {
        buildId: buildingId || this.incidentModel.area || undefined,
        hosId: this.incidentModel.hosId,
      },
    };
    this.isLoading = true;
    this.mainService
      .getFetchDataList("simple/data", "floor", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data.status == 200) {
          this.applicationFloorList = data.list;
          if(floorId){
            let hasFloorId = this.applicationFloorList.some(v => v.id == floorId);
            if(hasFloorId){
              this.incidentModel.place = floorId;
            }else{
              this.incidentModel.place = undefined;
            }
          }
        }
      });
  }
  // 修改关联查
  changeApplyRelatedDepartment(e){
    if(this.buildType !== '报修转事件'){
      this.incidentModel.requester = undefined;
    }
    this.searchApplicationRequester();
  }
  // 申请科室列表（搜索）
  isLoadingApply: boolean = false;
  applicationDeptList:any[] = [];
  searchApplicationDepartment(type, e?, phone?, deptId?, isInit?) {
    if(!this.hsmsData.hsmsSwitch && !this.itsmData.mdv2Switch){
      return;
    }
		console.log(8787878787878,type, e)
    let keyWord = "";
    if (e && e !== "&ks&" && e !== "&go&") {
      keyWord = e;
    }
    let cascadeHosId;
    if(type == 'itsm'){
      cascadeHosId = this.incidentModel.hosId || undefined;
    }else{
      cascadeHosId = this.inHosId ? this.inHosId : this.checkedHos;
    }
    let dataObj = {
      idx: 0,
      sum: 20,
      department: {
        searchType: type == 'itsm' ? undefined : 1,// 简单查询
        cascadeHosId,
        keyWord: keyWord,
        flag: 1,
      },
    };
    this.WSNum++;
    this.isLoadingApply = true;
    this.mainService
      .getFetchDataList("data", "department", dataObj)
      .subscribe((data) => {
        this.WSNum--;
        if (this.WSNum === 0) {
          this.isLoadingApply = false;
        }
        if (data.status == 200) {
          if(type == 'hsms'){
            this.applicationDepartmentList = data.list;
            deptId && this.changeApply(deptId);
            if (e === undefined) {
              //初始化
              this.changeApplicationDepartment();
            } else if (e === "&ks&") {
              //绑定了科室
              // 配送--start
              let obj = this.applicationDepartmentList.find(
                (item) => item.id == this.applyDeptMiddle.id
              );
              if (!obj) {
                this.applicationDepartmentList.push(this.applyDeptMiddle);
              }
              this.applyDept = this.applyDeptMiddle.id;
              this.changeApplicationDepartment("&ks&");
              // 配送--end
            } else if (e === "&go&") {
              //继续建单
              let obj = this.applicationDepartmentList.find(
                (item) => item.id == this.applyStartDept.id
              );
              if (!obj) {
                this.applicationDepartmentList.push(this.applyStartDept);
              }
              this.applyDept = this.applyStartDept.id;
              this.changeApplicationDepartment("&go&");
            } else if (e === "") {
              //没绑定科室
              this.changeApplicationDepartment(phone);
            }
          }else if(type == 'itsm'){
            this.applicationDeptList = data.list;
            let ids = this.applicationDeptList.map(v => v.id);
            isInit && !ids.includes(this.incidentModel.department) && (this.applicationDeptList.unshift({id: this.incidentModel.department, dept: this.incidentMsg.deptName}))
            deptId && this.changeApplyDept(deptId);
          }
        }
      });
  }
  openChangeApply(flag){
    flag && this.searchApplicationDepartment('hsms')
  }
  openChangeApplyDept(flag){
    flag && this.searchApplicationDepartment('itsm');
  }
  openChangeApplyRequester(flag){
    flag && this.searchApplicationRequester();
  }
  openChangeApplyCategory(flag){
    flag && this.searchApplicationCategory();
  }
  openChangeApplyGroup(flag){
    flag && this.searchApplicationGroup()
  }
  openChangeApplyUser(flag){
    flag && this.searchApplicationUser()
  }
  // 配送-选择科室
	deptPriorityDTO:any;
  changeApply(e) {
    this.changeApplicationDepartment("&same&");
    this.defaultInspectFn();
		if(this.cmdbRepair){
			this.incidentModel.assetId = null;
			this.getAssetData()
		}
    if(this.applyDept && this.currentTabIndex !== '故障报修'){
      this.rightTitle_tab = [
        { id: 0, name: '近期配送' },
        // { id: 1, name: '转出院记录' },
      ]
      this.rightTitleHandler(this.rightTitle_tab[0].id);
    }

    let deptObj = this.applicationDepartmentList.find(v => v.id == e);

    // if(this.incidentModel.department != e){
    //   this.incidentModel.department = e;
    //   this.searchApplicationDepartment('itsm', deptObj ? deptObj.dept : '', undefined, e);
    // }
  }
  // 运维-选择科室
  changeApplyDept(e) {
    console.log(e, this.applicationDeptList);
		if(this.buildType !== '编辑事件'){
			let item = this.applicationDeptList.find(i=>i.id == e)
			console.log('选中的科室11111',item);
			if(item && item.priorityDTO){
				this.addressDTO = null;
				this.userPriorityDTO = null;
				this.deptPriorityDTO = item.priorityDTO
			}else{
				this.addressDTO = null;
				this.userPriorityDTO = null;
				this.deptPriorityDTO = null
			}
			let orders = [];
			let id = [];
			if(this.addressDTO&&this.addressDTO.id){
				orders.push(this.addressDTO.orders)
				id.push(this.addressDTO.id)
			}
			if(this.deptPriorityDTO&&this.deptPriorityDTO.id){
				orders.push(this.deptPriorityDTO.orders)
				id.push(this.deptPriorityDTO.id)
			}
			if(this.userPriorityDTO&&this.userPriorityDTO.id){
				orders.push(this.userPriorityDTO.orders)
				id.push(this.userPriorityDTO.id)
			}
			if(this.malPriorityDTO&&this.malPriorityDTO.id){
				orders.push(this.malPriorityDTO.orders)
				id.push(this.malPriorityDTO.id)
			}
			if(orders.length>0){
				let minNumber = Math.min(...orders)
				let index = orders.indexOf(minNumber)
				console.log('最小值的orders', orders, minNumber)
				setTimeout(_=>{
					if(index!=-1){
						this.incidentModel.priorityId = minNumber != Infinity ? id[index] : null
					}else{
						this.incidentModel.priorityId = null
					}
				})
			}else{
				this.incidentModel.priorityId = null
			}
		}
    if(this.incidentModel.department && this.currentTabIndex === '故障报修'){
      this.rightTitle_tab = [
        { id: 2, name: '近期维修' },
        { id: 3, name: '知识库' },
      ]
      this.rightTitleHandler(this.rightTitle_tab[0].id);
    }

    let deptObj = this.applicationDeptList.find(v => v.id == e);

    if(this.applyDept != e){
      this.applyDept = e;
      this.searchApplicationDepartment('hsms', deptObj ? deptObj.dept : '', undefined, e);
    }

    // 选择科室回显一级院区
    if(!this.incidentModel.hosId){
      if(deptObj){
        this.incidentModel.hosId = deptObj.hospital.parent ? deptObj.hospital.parent.id : deptObj.hospital.id;
      }

      this.incidentModel.area = undefined;
      this.searchApplicationBuilding();

      this.incidentModel.place = undefined;
      this.applicationFloorList = [];
    }

    // 选择科室回显科室电话，楼栋，楼层，地址
    if(deptObj){
      console.log('deptObj:', deptObj)
      this.incidentMsg.deptManyPhone = deptObj.manyPhone;
      let buildingId = deptObj.building ? deptObj.building.id : undefined;
      buildingId && this.searchApplicationBuilding('', buildingId);
      let floorId = deptObj.floor ? deptObj.floor.id : undefined;
      buildingId && floorId && this.searchApplicationFloor('', floorId, buildingId);
      this.incidentModel.houseNumber = deptObj.address;
    }

    // 刷新申请人列表
    if(this.buildType !== '报修转事件'){
      this.incidentModel.requester = undefined;
    }
    this.searchApplicationRequester();

    // 根据院区和故障现象带出责任部门，优先级，维修人/组
    if(this.incidentModel.category && this.incidentModel.hosId && this.buildType !== '编辑事件'){
      let postData = {
        idx: 0,
        sum: 9999,
        incidentCategoryConfig: {
          categoryId: this.incidentModel.category,
          hosId: this.incidentModel.hosId,
        },
      };
      console.log(postData);
      // return;
      this.isLoading = true;
      this.mainService
        .getFetchDataList("simple/data", "incidentCategoryConfig", postData)
        .subscribe((data) => {
          this.isLoading = false;
          if (data.status == 200) {
            let list = data.list || [];
            if(list.length > 0){
              console.log(list[0]);
              this.incidentCategoryConfig = list[0];
            }else{
              this.incidentCategoryConfig = {};
            }

            // 根据院区和故障现象带出责任部门，优先级，维修人/组
            this.incidentModel.duty = this.incidentCategoryConfig.dutyDTO;
            // this.incidentModel.priorityId = this.incidentCategoryConfig.priority;

            // 回显维修人/组
            this.showGroupOrUser();
          }
        });
    }else{
      // 回显维修人/组
      this.showGroupOrUser();
    }
  }
  // 申请科室列表（搜索）失去焦点的时候
  changeApplicationDepartment(phone?) {
    this.radioValueQt = null;
    this.startDeptQt = null;
    this.endDeptQt = null;
    this.radioValueZy = null;
    this.radioValueZyPre = null;
    this.startDeptZy = null;
    this.endDeptZy = null;
    this.patientZy = null;
    this.goodsNow = [];
    this.workOrderInspectScore = undefined;
    // this.patientList = [];
    this.workOrderRemark = "";
    this.workOrderRemarkZy = "";
    this.deptZyList["startDept"] = [];
    this.deptZyList["endDept"] = [];
    this.deptZyList["startStatus"] = 0;
    this.deptZyList["endStatus"] = 0;
    this.deptQtList["startDept"] = [];
    this.deptQtList["endDept"] = [];
    this.deptQtList["startStatus"] = 0;
    this.deptQtList["endStatus"] = 0;
    console.log(phone);
    if (
      phone !== undefined &&
      phone !== "&same&" &&
      phone !== "&ks&" &&
      phone !== "&go&"
    ) {
      // this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = phone;
      this.applyDept = null;
      this.noArrives = []; //近期配送
    } else if (phone === "&ks&") {
      let filter = this.applicationDepartmentList.filter(
        (item) => item.id == this.applyDept
      );
      console.log('filter', filter)
      // this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = filter[0].phone;
      console.log(this.callNumber); //ceshi
      if (this.currentTabIndex == "患者转运") {
        //患者转运
        //获取患者信息
        this.getPatientList(this.applyDept, "", "", "");
      }
      if (this.currentRTab === 0) {
        this.getWorkOrders(this.applyDept);
      } else if (this.currentRTab === 1) {
        this.getPatientLog(this.applyDept);
      } else if (this.currentRTab === 2) {
        this.getItsmOrders(this.incidentModel.department);
      } else if (this.currentRTab === 3) {
        this.getDictionaryList();
      }else if (this.currentRTab === 4) {
				this.getZwOrders();
			}
    } else if (phone === "&go&") {
      if (this.currentTabIndex == "患者转运") {
        //患者转运
        //获取患者信息
        this.getPatientList(this.applyDept, "", "", "");
      }
      if (this.currentRTab === 0) {
        this.getWorkOrders(this.applyDept);
      } else if (this.currentRTab === 1) {
        this.getPatientLog(this.applyDept);
      } else if (this.currentRTab === 2) {
        this.getItsmOrders(this.incidentModel.department);
      } else if (this.currentRTab === 3) {
        this.getDictionaryList();
      }else if (this.currentRTab === 4) {
				this.getZwOrders();
			}
    } else if (phone === "&same&") {
      if (this.currentTabIndex == "患者转运") {
        //患者转运
        //获取患者信息
				this.patientObj = null;
				this.patientCode = null;
				this.taskTypeId = null;
				console.log(99988778899, this.patientCode)
        this.getPatientList(this.applyDept, "", "", "change");
      }
      if (this.currentRTab === 0) {
        this.getWorkOrders(this.applyDept);
      } else if (this.currentRTab === 1) {
        this.getPatientLog(this.applyDept);
      } else if (this.currentRTab === 2) {
        this.getItsmOrders(this.incidentModel.department);
      } else if (this.currentRTab === 3) {
        this.getDictionaryList();
      }else if (this.currentRTab === 4) {
				this.getZwOrders();
			}
    }
  }

  // 引入电话号码
  importPhone(phone, isTransform){
    if(isTransform){
      this.incidentModel.contactsInformation = phone.split(',')[0];
    }else{
      this.incidentModel.contactsInformation = phone;
    }
  }

  // 是否连续建单
  isBuildOrderAgagin:boolean = false;
  maskFlag:any = false;
  // 运维-直接解决
  directOrder(){
    if(this.publicRepair && this.applicantMustFillIn==1 && !this.incidentModel.requester && this.buildType !== '报修转事件'){
      this.msg.warning('请选择申请人!');
      return;
    }

    if(!this.incidentModel.category){
      this.msg.warning('请选择故障现象!');
      return;
    }

    let category = this.applicationCategoryList.find(v => v.id == this.incidentModel.category);
    if(!this.incidentModel.duty){
      this.msg.warning(`故障现象【${category.mutiCategory}】没有设置责任部门!`);
      return;
    }

    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
      this.msg.warning('请选择申请科室!');
      return;
    }

    if(!this.incidentModel.contactsInformation){
      this.msg.warning('请填写联系电话!');
      return;
    }

    if(!this.incidentModel.priorityId){
      this.msg.warning('请选择优先级!');
      return;
    }

		if(!this.incidentModel.source){
		  this.msg.warning('请选择报修来源!');
		  return;
		}

    if(!this.incidentModel.description){
      this.msg.warning('请选择故障描述!');
      return;
    }

    this.showDirectOrder();
  }
  // 图片上传
  uploadImages(file, id){
    const formData = new FormData();
    formData.append('file', file);
    formData.append('fileName', file.name);
    const req = new HttpRequest('Post', this.mainService.returnUploadUrl('wechatRequesterIncident', id), formData, {
      reportProgress: true
    });
    return this.http.request(req).pipe(filter(e => e instanceof HttpResponse)).toPromise();
  }
  // 运维-建单并派单
  assignOrder(){
		console.log(8888,this.incidentModel.requester)
    if(this.publicRepair && this.applicantMustFillIn==1 && !this.incidentModel.requester && this.buildType !== '报修转事件'){
      this.msg.warning('请选择申请人!');
      return;
    }

    if(!this.incidentModel.category){
      this.msg.warning('请选择故障现象!');
      return;
    }

    let category = this.applicationCategoryList.find(v => v.id == this.incidentModel.category);
    console.log('故障现象对象=>>>>>',category)
		if(!this.incidentModel.duty){
      this.msg.warning(`故障现象【${category.mutiCategory}】没有设置责任部门!`);
      return;
    }

    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
      this.msg.warning('请选择申请科室!');
      return;
    }

    if(!this.incidentModel.contactsInformation){
      this.msg.warning('请填写联系电话!');
      return;
    }

    if(!this.incidentModel.priorityId){
      this.msg.warning('请选择优先级!');
      return;
    }

		if(!this.incidentModel.source){
		  this.msg.warning('请选择报修来源!');
		  return;
		}

    if(!this.incidentModel.description){
      this.msg.warning('请选择故障描述!');
      return;
    }

    if(!this.incidentModel.group && this.buildType !== '编辑事件'){
      this.msg.warning('请选择处理组!');
      return;
    }

    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;

    let postData:any = {
      solutionId: this.solutionId,
      "incident": {
        "id": this.incidentModel.id || undefined,
        "deleteFlag": 0,
        "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
        "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
        "contactsInformation": this.incidentModel.contactsInformation,
        "contacts": this.incidentModel.contacts,
        "hosId": this.incidentModel.hosId || undefined,
        "area": this.incidentModel.area ? { id: this.incidentModel.area } : undefined,
        "place": this.incidentModel.place ? { id: this.incidentModel.place } : undefined,
        "houseNumber": this.incidentModel.houseNumber,
        "category": this.incidentModel.category ? { id: this.incidentModel.category } : undefined,
        "priorityId": this.incidentModel.priorityId || undefined,
        "source": this.incidentModel.source ? { id: this.incidentModel.source } : undefined,
        // "title": category.mutiCategory,
        "description": this.incidentModel.description,
        "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
        "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
        "acceptUser": { id: this.tool.getCurrentUserId() },
        "callID": this.incidentModel.callID || undefined,
        "incomingPhone": this.incidentModel.incomingPhone || undefined,
        "candidateGroups": this.incidentModel.group || undefined,
        "assignee": this.incidentModel.user || undefined,
        "hjzxRecordId": this.incidentModel.hjzxRecordId || undefined,
				"assetId": this.incidentModel.assetId || undefined
      }
    };
    if(this.buildType){
      if(this.buildType === '报修转事件'){
        postData.incident.fromWx = true;
      }
      if(this.buildType !== '继续建单' && this.buildType !== '编辑事件' && this.buildType !== '报修转事件'){
        postData.incident = Object.assign({}, postData.incident);
      }else{
        postData.incident = Object.assign({}, this.editOrder, postData.incident);
      }
    }
    console.log(postData);
    // return;

    this.mainService
      .flowPost("incident/task/accept", postData)
      .subscribe((result) => {
        this.msg.remove(this.maskFlag);
        this.maskFlag = false;

        if (result.state == 200) {
          // 图片上传
          if(this.fileList.length){
            console.log(this.fileList.map(v => v.originFileObj));
            this.fileList.map(v => v.originFileObj).forEach(async file => {
              await this.uploadImages(file, result.data.id);
            })
          }
          // this.msg.success('建单并派单成功');
          this.isBuildOrderAgaginFn();
        } else {
          this.msg.error(result.msg || '建单并派单失败');
        }
      });
  }

  // 运维-暂存
  temporaryStorage(){
    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;

    let category;
    if(this.incidentModel.category){
      category = this.applicationCategoryList.find(v => v.id == this.incidentModel.category);
    }

    let postData:any = {
      solutionId: this.solutionId,
      "incident": {
        "id": this.incidentModel.id || undefined,
        "deleteFlag": 0,
        "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
        "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
        "contactsInformation": this.incidentModel.contactsInformation,
        "contacts": this.incidentModel.contacts,
        "hosId": this.incidentModel.hosId || undefined,
        "area": this.incidentModel.area ? { id: this.incidentModel.area } : undefined,
        "place": this.incidentModel.place ? { id: this.incidentModel.place } : undefined,
        "houseNumber": this.incidentModel.houseNumber,
        "category": this.incidentModel.category ? { id: this.incidentModel.category } : undefined,
        "priorityId": this.incidentModel.priorityId || undefined,
        "source": this.incidentModel.source ? { id: this.incidentModel.source } : undefined,
        // "title": category ? category.mutiCategory : '',
        "description": this.incidentModel.description,
        "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
        "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
        "acceptUser": { id: this.tool.getCurrentUserId() },
        "callID": this.incidentModel.callID || undefined,
        "incomingPhone": this.incidentModel.incomingPhone || undefined,
        "candidateGroups": this.incidentModel.group || undefined,
        "assignee": this.incidentModel.user || undefined,
        "hjzxRecordId": this.incidentModel.hjzxRecordId || undefined,
				"assetId": this.incidentModel.assetId || undefined
      }
    };
    if(this.buildType){
      if(this.buildType === '报修转事件'){
        postData.incident.fromWx = true;
      }

      if(this.buildType !== '继续建单' && this.buildType !== '编辑事件' && this.buildType !== '报修转事件'){
        postData.incident = Object.assign({}, postData.incident);
      }else{
        postData.incident = Object.assign({}, this.editOrder, postData.incident);
      }
    }
    console.log(postData);
    // return;

    this.mainService
      .flowPost("incident/task/storage", postData)
      .subscribe((result) => {
        this.msg.remove(this.maskFlag);
        this.maskFlag = false;

        if (result.state == 200) {
          // 图片上传
          if(this.fileList.length){
            console.log(this.fileList.map(v => v.originFileObj));
            this.fileList.map(v => v.originFileObj).forEach(async file => {
              await this.uploadImages(file, result.data.id);
            })
          }
          // this.msg.success('暂存成功');
          this.isBuildOrderAgaginFn();
        } else {
          this.msg.error(result.msg || '暂存失败');
        }
      });
  }

  // 运维-保存
  saveOrder(){
    if(this.publicRepair && this.applicantMustFillIn==1 && !this.incidentModel.requester && this.buildType !== '报修转事件'){
      this.msg.warning('请选择申请人!');
      return;
    }

    if(!this.incidentModel.category){
      this.msg.warning('请选择故障现象!');
      return;
    }

    let category = this.applicationCategoryList.find(v => v.id == this.incidentModel.category);
    if(!this.incidentModel.duty){
      this.msg.warning(`故障现象【${category.mutiCategory}】没有设置责任部门!`);
      return;
    }

    if(this.incidentModel.repairIncidentType === 'dept' && !this.incidentModel.department){
      this.msg.warning('请选择申请科室!');
      return;
    }

    if(!this.incidentModel.contactsInformation){
      this.msg.warning('请填写联系电话!');
      return;
    }

    if(!this.incidentModel.priorityId){
      this.msg.warning('请选择优先级!');
      return;
    }

		if(!this.incidentModel.source){
		  this.msg.warning('请选择报修来源!');
		  return;
		}

    if(!this.incidentModel.description){
      this.msg.warning('请选择故障描述!');
      return;
    }
    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;

    let postData:any = {
      solutionId: this.solutionId,
      "incident": {
        "id": this.incidentModel.id || undefined,
        "deleteFlag": 0,
        "duty": this.incidentModel.duty ? { id: this.incidentModel.duty.id } : undefined,
        "department": this.incidentModel.department ? { id: this.incidentModel.department } : undefined,
        "contactsInformation": this.incidentModel.contactsInformation,
        "contacts": this.incidentModel.contacts,
        "hosId": this.incidentModel.hosId || undefined,
        "area": this.incidentModel.area ? { id: this.incidentModel.area } : undefined,
        "place": this.incidentModel.place ? { id: this.incidentModel.place } : undefined,
        "houseNumber": this.incidentModel.houseNumber,
        "category": this.incidentModel.category ? { id: this.incidentModel.category } : undefined,
        "priorityId": this.incidentModel.priorityId || undefined,
        "source": this.incidentModel.source ? { id: this.incidentModel.source } : undefined,
        // "title": category ? category.mutiCategory : '',
        "description": this.incidentModel.description,
        "yyTime": this.incidentModel.yyTime ? format(new Date(this.incidentModel.yyTime), 'yyyy-MM-dd HH:mm:ss') : undefined,
        "requester": this.incidentModel.requester ? { id: this.incidentModel.requester } : undefined,
        "repairIncidentType": this.incidentModel.repairIncidentType ? this.repairIncidentTypeList.find(v => v.value === this.incidentModel.repairIncidentType) : undefined,
        "acceptUser": { id: this.tool.getCurrentUserId() },
        "callID": this.incidentModel.callID || undefined,
        "incomingPhone": this.incidentModel.incomingPhone || undefined,
        "hjzxRecordId": this.incidentModel.hjzxRecordId || undefined,
      }
    };
    if(this.buildType){
      postData.incident = Object.assign({}, this.editOrder, postData.incident);
    }
    console.log(postData);
    // return;

    this.mainService
      .flowPost("incident/task/edit", postData)
      .subscribe((result) => {
        this.msg.remove(this.maskFlag);
        this.maskFlag = false;

        if (result.state == 200) {
          // 图片上传
          if(this.fileList.length){
            console.log(this.fileList.map(v => v.originFileObj));
            this.fileList.map(v => v.originFileObj).forEach(async file => {
              await this.uploadImages(file, result.data.id);
            })
          }
          // this.msg.success('编辑成功');
          this.isBuildOrderAgaginFn();
        } else {
          this.msg.error(result.msg || '编辑失败');
        }
      });
  }

  // 是否连续建单
  isBuildOrderAgaginFn(){
    if(this.isBuildOrderAgagin){
      // 清除故障现象，维修人/组
      this.incidentModel.category = undefined;
      this.incidentModel.user = undefined;
      this.incidentModel.group = undefined;
      this.showPromptModal("操作", true, "", "");
    }else{
      if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
        this.jry_shixian();
      }
			this.goType = null;
			this.patientObj = null;
			this.taskTypeId = null;
			this.patientCode = null;
      this.newOrderShow = false; //关闭弹窗
      this.newOrderShowOpen = false; //此时可出现新的弹窗
      this.showPromptModal("操作", true, "", "");
    }
  }

  // 选择统计备注
  countRemarkIndex:number = -1;
  addCountRemark(countRemark, index, i){
    if(this.countRemarkIndex == i){
      this.countRemarkIndex = -1;
    }else{
      this.countRemarkIndex = i;
    }

    this.getSearchTaskList('', this.countRemarkIndex > -1 ? countRemark : '').subscribe((result) => {
      if (result.status == 200) {
        this.searchTaskLoading = false;
        this.workTypes = result['data'] || [];
        // 整理后的任务类型
        this.isShowResidenceNo = false;
        this.workTypesArrange[index].value = [];
        // for (const value of this.workTypesArrange) {
        //   value.value = [];
        // }
        this.workTypes.forEach((item) => {
          if(item.associationTypeValue === 'patientTransport' || item.associationTypeValue === 'inspect'){
            // // 患者其他服务
            // let obj = this.workTypesArrange.find(v => v.key === '患者转运');
            // if(obj){
            //   obj.value.push(item);
            // }else{
            //   this.workTypesArrange.unshift({ key: '患者转运', value: [item] });
            //   this.isShowResidenceNo = true;
            // }
          }else if(item.associationTypeValue === 'other' || item.associationTypeValue === 'specimen' || item.associationTypeValue === 'ordinary'){
            // 物品配送
            let obj = this.workTypesArrange.find(v => v.key === '物品配送');
            if(obj){
              obj.value.push(item);
            }else{
              this.workTypesArrange.unshift({ key: '物品配送', value: [item] });
            }
          }
        });
        console.log('workTypesArrange', this.workTypesArrange);
        // 任务类型是否显示操作项
        let arr = this.workTypesArrange;
        this.workTypesFlag = arr.length >= 5;
      }
    });
  }

  // 新建工单->获取新建类型
  countRemarkList:any[] = [];
  isShowResidenceNo = false;
  getAutoWorkTypes(isFirst, isInit) {
    this.workTypesArrange = [];
    // 运维
    if(this.itsmData.mdv2Switch){
      this.workTypesArrange = [{key:'故障报修', value: []}];
			if(this.showGovDuty==1){
				this.workTypesArrange.push({
					key:'政务值班', value: []
				})
				this.initZwForm();
				this.getCity();
			}
      if(!this.hsmsData.hsmsSwitch){
        console.log('workTypesArrange', this.workTypesArrange);
        // 是否显示操作项
        this.workTypesFlag = this.workTypesArrange.length >= 5;
        // 默认选中第一项
        if (this.workTypesArrange.length > 0) {
          this.tabClick(this.workTypesArrange[0].key, isInit);
        }
      }
    }
    // 配送
    if(this.hsmsData.hsmsSwitch){
      this.newLoading = true;
      this.mainService.getTaskTypeBySearchKey({
        hosId: this.checkedHos,
      }).subscribe((data) => {
        this.newLoading = false;
        if (data["status"] == 200) {
          this.workTypes = data["data"];
          // 整理后的任务类型
          this.isShowResidenceNo = false;
          this.workTypes.forEach((item) => {
            if(item.associationTypeValue === 'patientTransport' || item.associationTypeValue === 'inspect'){
              // 患者其他服务
              let obj = this.workTypesArrange.find(v => v.key === '患者转运');
              if(obj){
                obj.value.push(item);
              }else{
                this.workTypesArrange.unshift({ key: '患者转运', value: [item] });
                this.isShowResidenceNo = true;
              }
            }else if(item.associationTypeValue === 'other' || item.associationTypeValue === 'specimen' || item.associationTypeValue === 'ordinary'){
              // 物品配送
              let obj = this.workTypesArrange.find(v => v.key === '物品配送');
              if(obj){
                obj.value.push(item);
              }else{
                this.workTypesArrange.unshift({ key: '物品配送', value: [item] });
              }
            }
          });
          console.log('workTypesArrange', this.workTypesArrange);
          // 任务类型是否显示操作项
          let arr = this.workTypesArrange;
          this.workTypesFlag = arr.length >= 5;
          // 默认选中故障现象
          if (arr.length > 0 && this.patientCode) {
						isFirst ? this.tabClick(arr[0].key, isInit) : this.tabClick(arr[0].key, isInit);
          }else{
						if(this.showGovDuty==1){
							isFirst ? this.tabClick(arr[0].key, isInit) : this.tabClick(arr[arr.length - 2].key, isInit);
						}else{
							isFirst ? this.tabClick(arr[0].key, isInit) : this.tabClick(arr[arr.length - 1].key, isInit);
						}
					}
        }
      });
      this.getTaskTypeCountRemarkList();
    }
  }
  // 查类型
  getTaskTypeCountRemarkList(){
    this.mainService.getTaskTypeCountRemarkList({
        hosId: this.checkedHos,
        typeValues: 'other,specimen,ordinary',
    }).subscribe((data) => {
      if (data["status"] == 200){
        this.countRemarkList = data.data || [];
      }
    })
  }
  // 终点科室选中
  endDeptZyChange() {
    if (!this.applyDept || !this.endDeptZy) {
      return;
    }
    // 终点科室患者信息列表,id是送病人回病房的任务类型
    if (this.radioValueZy == this.deathTasktypeId) {
      //获取患者信息
      this.patientZy = null;
      this.getPatientList(this.endDeptZy, "");
    }
  }
  //搜索院区下面的科室(患者转运)
  searchHosDepartment(id, type, dept?) {
    if (dept) {
      this.searchHosDepartmentSubject.next([id, type, dept]);
    } else {
      this.searchHosDepartmentSubject.next([id, type]);
    }
  }
  // 搜索院区下面的科室(患者转运)
  getHosDepartment(id, type, dept?) {
    //id院区,type起点科室'start',终点科室'end'。科室名称dept。
    let value = "";
    if (dept) {
      value = dept.toUpperCase();
    }
		if (type === "start" && this.deptZyList["startStatus"] == 202) {
		  //固定科室范围，禁止搜索
			this.mainService.getdeptList(this.radioValueZy, this.applyDept).subscribe((data:any) => {
				if(data.startDept){
					data.startDept.forEach(i=>{
						if(i.inputcode){
							i.inputcode = i.inputcode.toUpperCase()
							i.dept = i.dept + '('+i.inputcode+')'
						}
					})
				}
				let arr = data;
				if(value!=''){
					data = arr.startDept.filter(i=>i.dept.indexOf(value) !=-1)
					this.deptZyList.startDept = data
				}else{
					this.deptZyList.startDept = arr.startDept
				}
			})
		  return;
		} else if (type === "end" && this.deptZyList["endStatus"] == 202) {
		  //固定科室范围，禁止搜索
			this.mainService.getdeptList(this.radioValueZy, this.applyDept).subscribe((data:any) => {
				if(data.endDept){
					data.endDept.forEach(i=>{
						if(i.inputcode){
							i.inputcode = i.inputcode.toUpperCase()
							i.dept = i.dept + '('+i.inputcode+')'
						}
					})
				}
				let arr = data;
				if(value!=''){
					data = arr.endDept.filter(i=>i.dept.indexOf(value) !=-1)
					this.deptZyList.endDept = data
				}else{
					this.deptZyList.endDept = arr.endDept
				}
			})
		  return;
		}
		let hsoId = null
		if(type === "start" && this.deptZyList.startMultipleHospital==1){
			hsoId = this.validateFormZy.controls.startHosId.value
		}
		if(type === "end" && this.deptZyList.endMultipleHospital==1){
			hsoId = this.validateFormZy.controls.endHosId.value
		}
    let postData = {
      idx: 0,
      sum: 10,
      department: {
        dept: value,
        cascadeHosId: hsoId ? hsoId : id
      },
    };
    if (type == "start" && this.deptZyList["startStatus"] == 205) {
      postData.department["type"] = { id: this.deptZyList["startTypeId"] };
    } else if (type == "end" && this.deptZyList["endStatus"] == 205) {
      postData.department["type"] = { id: this.deptZyList["endTypeId"] };
    }
    this.isLoading = true;
    this.mainService
      .getFetchDataList("data", "department", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data["status"] == 200) {
					if(data.list.length>0){
						data.list.forEach(i=>{
							if(i.inputcode){
							  i.inputcode = i.inputcode.toUpperCase()
							  i.dept = i.dept + '('+i.inputcode+')'
							}
						})
					}
          if (type === "start") {
            this.deptZyList["startDept"] = data.list;
          } else if (type === "end") {
            this.deptZyList["endDept"] = data.list;
          }
        }
      });
  }
  //搜索院区下面的科室(其他)
  searchHosDepartmentQt(id, type, dept?) {
    if (dept) {
      this.searchHosDepartmentQtSubject.next([id, type, dept]);
    } else {
      this.searchHosDepartmentQtSubject.next([id, type]);
    }
  }
  // 搜索院区下面的科室(其他)
  getHosDepartmentQt(id, type, dept?) {
    //id院区,type起点科室'start',终点科室'end'。科室名称dept。
    let value = "";
    if (dept) {
      value = dept.toUpperCase();
    }
    if (type === "start" && this.deptQtList["startStatus"] == 202) {
      //固定科室范围，禁止搜索
			this.mainService.getdeptList(this.psValue, this.applyDept).subscribe((data:any) => {
				if(data.startDept){
					data.startDept.forEach(i=>{
						if(i.inputcode){
							i.inputcode = i.inputcode.toUpperCase()
							i.dept = i.dept + '('+i.inputcode+')'
						}
					})
				}
				let arr = data;
				if(value!=''){
					data = arr.startDept.filter(i=>i.dept.indexOf(value) !=-1)
					this.deptQtList.startDept = data
				}else{
					this.deptQtList.startDept = arr.startDept
				}
			})
      return;
    } else if (type === "end" && this.deptQtList["endStatus"] == 202) {
      //固定科室范围，禁止搜索
			this.mainService.getdeptList(this.psValue, this.applyDept).subscribe((data:any) => {
				if(data.endDept){
					data.endDept.forEach(i=>{
						if(i.inputcode){
							i.inputcode = i.inputcode.toUpperCase()
							i.dept = i.dept + '('+i.inputcode+')'
						}
					})
				}
				let arr = data;
				if(value!=''){
					data = arr.endDept.filter(i=>i.dept.indexOf(value) !=-1)
					this.deptQtList.endDept = data
				}else{
					this.deptQtList.endDept = arr.endDept
				}
			})
      return;
    }
		let hsoId = null
		if(type === "start" && this.deptQtList.startMultipleHospital==1){
			hsoId = this.validateFormQt.controls.startHosId.value
		}
		if(type === "end" && this.deptQtList.endMultipleHospital==1){
			hsoId = this.validateFormQt.controls.endHosId.value
		}
    let postData = {
      idx: 0,
      sum: 10,
      department: {
        dept: value,
        cascadeHosId: hsoId ? hsoId : id
      },
    };
    if (type == "start" && this.deptQtList["startStatus"] == 205) {
      postData.department["type"] = { id: this.deptQtList["startTypeId"] };
    } else if (type == "end" && this.deptQtList["endStatus"] == 205) {
      postData.department["type"] = { id: this.deptQtList["endTypeId"] };
    }
    this.isLoading = true;
    this.mainService
      .getFetchDataList("data", "department", postData)
      .subscribe((data) => {
        this.isLoading = false;
        if (data["status"] == 200) {
					if(data.list.length>0){
						data.list.forEach(i=>{
							if(i.inputcode){
							  i.inputcode = i.inputcode.toUpperCase()
							  i.dept = i.dept + '('+i.inputcode+')'
							}
						})
					}
          if (type === "start") {
            this.deptQtList["startDept"] = data.list;
          } else if (type === "end") {
            this.deptQtList["endDept"] = data.list;
          }
        }
      });
  }
  // 获取大于x，并且是n的倍数的数字
  getLgNumber(x: number, n:number): number{
    for(let i = x; i < 60; i++){
      if(i % n === 0){
        return i;
      }
    }
    return 0;
  }
  // 禁用小时
  disabledHours = (): number[] => {
    let now = new Date();
    let nHour = now.getHours();
    let nMinute = now.getMinutes();
    if (nMinute > (60 - this.inspectAndPatientTransportConfig.timeMod)) {
      return range(0, nHour + 1);
    } else {
      return range(0, nHour);
    }
  }
  // 禁用分钟
  disabledMinutes = (hour: number): number[] => {
    let now = new Date();
    let nHour = now.getHours();
    let nMinute = now.getMinutes();
    if (hour === nHour || hour === undefined) {
      return this.integralDivision(0, nMinute, this.inspectAndPatientTransportConfig.timeMod);
    } else {
      return [];
    }
  }

  // start和end之间能被n整除的所有数字集合
  integralDivision(start:number, end:number, n:number): number[]{
    let arr = [];
    for(let i = start; i <= end; i++){
      if(i % n === 0){
        arr.push(i);
      }
    }
    return arr;
  }
  //修改预约建单时间的日期
  yyDateChange(e) {
    // 获取年月日
    let yyDate = new Date(e);
    let year = yyDate.getFullYear();
    let month = yyDate.getMonth();
    let date = yyDate.getDate();
    // 获取当前时间的年月日
    let now = new Date();
    let nYear = now.getFullYear();
    let nMonth = now.getMonth();
    let nDate = now.getDate();
    if (year != nYear || month != nMonth || date != nDate) {
      this.disabledHours = () => [];
      this.disabledMinutes = (hour) => [];
    } else {
      // 禁用小时
      this.disabledHours = () => {
        let now = new Date();
        let nHour = now.getHours();
        let nMinute = now.getMinutes();
        if (nMinute > (60 - this.inspectAndPatientTransportConfig.timeMod)) {
          return range(0, nHour + 1);
        } else {
          return range(0, nHour);
        }
      };
      // 禁用分钟
      this.disabledMinutes = (hour) => {
        let now = new Date();
        let nHour = now.getHours();
        let nMinute = now.getMinutes();
        if (hour === nHour || hour === undefined) {
          return this.integralDivision(0, nMinute, this.inspectAndPatientTransportConfig.timeMod);
        } else {
          return [];
        }
      };
    }
  }
  // 下一日(患者其他服务)
  nextDayZy() {
    this.yyDateZy = addDays(this.yyDateZy, 1);
    this.yyDateChange(this.yyDateZy);
  }
  // 下一日(其他临床服务)
  nextDay() {
    this.yyDate = addDays(this.yyDate, 1);
    this.yyDateChange(this.yyDate);
  }
  // 禁用日期(患者其他服务)
  disabledyyDateZy = (current: Date): boolean => {
    return differenceInCalendarDays(current, new Date()) < 0;
  };
  // 禁用日期(其他)
  disabledyyDate = (current: Date): boolean => {
    return differenceInCalendarDays(current, new Date()) < 0;
  };
  yyTimeZyChange(e) {
    if (this.yyTimeZy) {
      let now = new Date();
      // 禁用日期(转运)
      if (getHours(this.yyTimeZy) < getHours(now)) {
        this.disabledyyDateZy = (current: Date): boolean => {
          return differenceInCalendarDays(current, new Date()) < 1;
        };
      } else {
        this.disabledyyDateZy = (current: Date): boolean => {
          return differenceInCalendarDays(current, new Date()) < 0;
        };
      }
      let end = this.getLgNumber(getMinutes(this.yyTimeZy), this.inspectAndPatientTransportConfig.timeMod);
      this.yyTimeZy = setMinutes(this.yyTimeZy, end);
    }
    this.clickYYZyFlag = false;
  }
  yyTimeChange(e) {
    if (this.yyTime) {
      let now = new Date();
      // 禁用日期(其他)
      if (getHours(this.yyTime) < getHours(now)) {
        this.disabledyyDate = (current: Date): boolean => {
          return differenceInCalendarDays(current, new Date()) < 1;
        };
      } else {
        this.disabledyyDate = (current: Date): boolean => {
          return differenceInCalendarDays(current, new Date()) < 0;
        };
      }
      let end = this.getLgNumber(getMinutes(this.yyTime), this.inspectAndPatientTransportConfig.timeMod);
      this.yyTime = setMinutes(this.yyTime, end);
    }
    this.clickYYFlag = false;
  }
  // 需要预约建单-事件
  yyInspectChange(e) {
    if (this.currentTasktype.associationType.value === "other") {
      //其他临床服务
      this.yyTime = null;
      this.yyDate = new Date();
      console.log(this.isYyInspect);
    } else if (this.currentTasktype.associationType.value === "patientTransport") {
      //患者其他服务
      this.yyTimeZy = null;
      this.yyDateZy = new Date();
    }else if (this.currentTasktype.associationType.value === "inspect") {
      //陪检
      let obj = this.filterLinkCheckLis.find((item) => {
        return (parse(item.yyTime, 'yyyy-MM-dd HH:mm:ss', new Date()).getTime() - new Date().getTime() > 0);
      });
      if (obj) {
        this.showDateTime();
      } else {
        this.yyTimeZy = null;
        this.yyDateZy = new Date();
        console.log(this.isYyInspect);
      }
    }
  }
  //回显时间日期
  showDateTime() {
    //当前时间要大于生效时间
    let isYyInspect = this.filterLinkCheckLis.every((item) => {
      return (parse(item.yyTime, 'yyyy-MM-dd HH:mm:ss', new Date()).getTime() - new Date().getTime() > 0);
    });
    //如果勾选需要预约检查
    if (isYyInspect) {
      //筛选离当前时间最近的
      let timeList = this.filterLinkCheckLis
        .map((item) => parse(item.yyTime, 'yyyy-MM-dd HH:mm:ss', new Date()).getTime())
        .sort();
      this.yyTimeZy = new Date(timeList[0] - 0); //回显预约时间,需要减去生效时间
      this.yyDateZy = new Date(timeList[0] - 0); //回显预约日期,需要减去生效时间
      this.yyDateChange(this.yyTimeZy);
    } else {
      this.yyTimeZy = null;
      this.yyDateZy = null;
    }
  }
  // 患者送检检查项目-选择检查项目
  linkCheckLisTrue = false; //是否有已选择(患者)
  filterLinkCheckLis = []; //有预约时间并且选中的
  isInspects = false; //勾选检车的时候是否多个检查多个检查科室
  linkCheckLisChange(e) {
    let flag = false; //检查是否紧急
    let arr = []; //选中的索引
    // 是否检查生成工单允许多个科室，1是，0否
    if (this.currentTasktype.isMoreDept === 0) {
      let arr = e.map((item) => item.execDeptId);
      arr = Array.from(new Set(arr));
      this.isInspects = arr.length > 1;
    }
    this.linkCheckLis.forEach((item, index) => {
      if (e.length) {
        //有选中的检查
        e.forEach((v) => {
          //检查是否有紧急度
          if (v.priority == 1) {
            flag = true;
          }
          //选中的检查设置checked
          if (v.value == item.value) {
            arr.push(index);
          }
        });
      } else {
        item.checked = false;
      }
    });
    this.linkCheckLis.forEach((item, index) => {
      item.checked = arr.includes(index);
    });
    console.log(e, this.linkCheckLis);
    this.clickYYFlag = false;
    // 有预约时间并且选中的
    this.filterLinkCheckLis = this.linkCheckLis.filter(
      (item) => Boolean(item.yyTime) && item.checked
    );
    //有预约时间并且选中的检查数组不为空
    if (this.filterLinkCheckLis.length) {
      //当前时间要大于生效时间
      this.isYyInspect = this.filterLinkCheckLis.every((item) => {
        return (parse(item.yyTime, 'yyyy-MM-dd HH:mm:ss', new Date()).getTime() - new Date().getTime() > 0);
      });
      //不加急状态下，回显时间
      this.showDateTime();
    } else {
      //有预约时间并且选中的检查数组为空
      this.isYyInspect = false;
      this.yyTimeZy = null;
      this.yyDateZy = null;
    }
    this.linkCheckLisTrue = e.length > 0;
  }
  // 转运类型选中类型（单选）触发
  yyDateZy = null; //预约日期-患者其他服务
  yyDate = null; //预约日期-其他临床服务
  yyTimeZy = null; //预约时间-患者其他服务
  yyTime = null; //预约时间-其他临床服务
  inspectAndPatientTransportConfig:any = {timeMod: 30};
  isYyInspect = false; //需要预约检查
  clickYYZyFlag = false; //是否点击预约建单-患者其他服务
  clickYYFlag = false; //是否点击预约建单-其他临床服务
  currentTasktype = null; //当前选中的任务类型对象
  isTaskTypeInspect:boolean = false;//是否是患者陪检
  linkCheckLis:any[] = [];//检查列表
  tabIndex;
	isStartFixedType:boolean = false;
	isEndFixedType:boolean = false;
  radioChangeZy(value, index, type='') {
    this.radioValueZyPre = this.radioValueZy;
    this.radioValueZy = value;
    this.tabIndex = index;
    //任务类型id
    if (value === "" || value === null) {
      return;
    }
    this.linkCheckLisTrue = false;
    this.startDeptZy = null;
    this.endDeptZy = null;
    // 患者陪检-则参数增加patientCode
    console.log(this.workTypesArrange[index].value);
    let taskType = this.workTypesArrange[index].value.find(v => v.id == value);
    let patientCode;
		// this.taskType = taskType.associationTypeValue?taskType.associationTypeValue:null
    if(taskType.associationTypeValue === 'inspect'){
      patientCode = this.patientZy;
      this.requiredConfigChange('validateFormZy', 'startDept', false);
      this.requiredConfigChange('validateFormZy', 'endDepts', false);
      this.isTaskTypeInspect = true;
    }else{
      patientCode = undefined;
      this.requiredConfigChange('validateFormZy', 'startDept', true);
      this.requiredConfigChange('validateFormZy', 'endDepts', true);
      this.isTaskTypeInspect = false;
    }
    // 返回值的status是201 则是默认发起科室，把申请科室作为值
    // 返回值的status是202 则是固定科室范围，会返回科室列表
    // 返回值的status是203 则是固定科室，会返回单个科室
    // 返回值的status是204 则让前端自己调用科室搜索接口-自主填写
    // 返回值的status是205 则是固定科室类型，会返回科室列表
    // 返回值的status是206 则是默认患者所在科室，把患者所在科室作为值
    this.mainService.getdeptList(value, this.applyDept, patientCode, (taskType.associationTypeValue === 'inspect' ? format(startOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss') : undefined), (taskType.associationTypeValue === 'inspect' ? format(endOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss') : undefined)).subscribe((data:any) => {
			if(data.startDept){
				data.startDept.forEach(i=>{
					if(i.inputcode){
						i.inputcode = i.inputcode.toUpperCase()
						i.dept = i.dept + '('+i.inputcode+')'
					}
				})
			}
			if(data.endDept){
				data.endDept.forEach(i=>{
					if(i.inputcode){
						i.inputcode = i.inputcode.toUpperCase()
						i.dept = i.dept + '('+i.inputcode+')'
					}
				})
			}
			this.deptZyList = data;
			if(this.deptZyList.startMultipleHospital==1){
				this.deptZyList.startDept = []
			}
			if(this.deptZyList.endMultipleHospital==1){
				this.deptZyList.endDept = []
			}
			if(data.startStatus==202 || data.startStatus==204 || data.startStatus==205){
				this.isStartFixedType = true
			}else{
				this.isStartFixedType = false
			}
			if(data.endStatus==202 || data.endStatus==204 || data.endStatus==205){
				this.isEndFixedType = true
			}else{
				this.isEndFixedType = false
			}
			if((data.startStatus==204 || data.startStatus==205) && data.startMultipleHospital==1){
				if(this.validateFormZy.value.startHosId){
					this.validateFormZy.controls.startHosId.setValue(null)
				}
				this.validateFormZy.addControl(
				  "startHosId",
				  new FormControl(null, Validators.required)
				);
			}else{
				if(this.validateFormZy.value.startHosId){
					this.validateFormZy.controls.startHosId.setValue(null)
				}
				this.validateFormZy.removeControl("startHosId");
			}
			if((data.endStatus==204 || data.endStatus==205) && data.endMultipleHospital==1){
				if(this.validateFormZy.value.endHosId){
					this.validateFormZy.controls.endHosId.setValue(null)
				}
				this.validateFormZy.addControl(
				  "endHosId",
				  new FormControl(null, Validators.required)
				);
			}else{
				if(this.validateFormZy.value.endHosId){
					this.validateFormZy.controls.endHosId.setValue(null)
				}
				this.validateFormZy.removeControl("endHosId");
			}
      // 预约start
      this.currentTasktype = data.taskType;
      this.isYyInspect = false;
      this.clickYYZyFlag = false;
      this.yyDateZy = new Date();
      this.yyTimeZy = null;
      // 预约end
      console.log(this.deptZyList);
      // 如果是患者陪检，则没有起点科室，终点科室
      if(taskType.associationTypeValue === 'inspect'){
        this.linkCheckLis = [];
        if (data.data && Array.isArray(data.data.data) && data.data.data.length>0) {
          let arr = [];
          data.data.data.forEach((e) => {
						if(e.yyTime){
							e.newTime = format(new Date(e.yyTime), 'MM-dd HH:mm')
							if(e.endCheckTime){
								e.newTime2 = format(new Date(e.endCheckTime), 'HH:mm')
								e.yyEndTime = e.newTime + '--' + e.newTime2
							}else{
								e.yyEndTime = e.newTime
							}
						}else{
							e.yyEndTime = null
						}

            arr.push({
              execDeptId: e.execDept.id,
              yyTime: e.yyTime,
              priority: e.priority,
              label: (e.yyEndTime || "") + " " + e.execDept.dept + " 进行 " + (e.inspectName?e.inspectName:'' + '-' + e.inspectCode || "检查"),
              value: e["id"],
              checked: false,
              remark: e.remark,
            });
          });
          this.linkCheckLis = arr;
        }
        return;
      }
      // 起点科室
      if (data["startStatus"] == 201 || data["startStatus"] == 206) {
        if (this.applyDept && data.startMultipleHospital!=1) {
          //选择了申请科室,则起点科室就是申请科室
          this.deptZyList["startDept"] = this.applicationDepartmentList.filter(
            (item) => item.id == this.applyDept
          );
          this.startDeptZy = this.applyDept;
        }
      } else if (data["startStatus"] == 203) {
        this.startDeptZy = data["startDept"][0]["id"];
      } else if ((data["startStatus"] == 204 || data["startStatus"] == 205) && data.startMultipleHospital!=1) {
        this.getHosDepartment(this.checkedHos, "start", "");
      }
      // 终点科室
      if (data["endStatus"] == 201 || data["endStatus"] == 206) {
        if (this.applyDept && data.endMultipleHospital!=1) {
          //选择了申请科室,则终点科室就是申请科室
          this.deptZyList["endDept"] = this.applicationDepartmentList.filter(
            (item) => item.id == this.applyDept
          );
          this.endDeptZy = this.applyDept;
        }
      } else if (data["endStatus"] == 203) {
        this.endDeptZy = data["endDept"][0]["id"];
      } else if ((data["endStatus"] == 204 || data["endStatus"] == 205) && data.endMultipleHospital!=1) {
        this.getHosDepartment(this.checkedHos, "end", "");
      }
      if (this.currentTabIndex == "患者转运") {
        // 终点科室患者信息列表,id是送病人回病房的任务类型
        if (this.endDeptZy && this.radioValueZy == this.deathTasktypeId) {
          //获取患者信息
          this.patientZy = null;
					this.patientObj = null;
					this.taskTypeId = null;
          this.getPatientList(this.endDeptZy, "", "", type);
        } else if(this.applyDept && this.radioValueZyPre == this.deathTasktypeId) {
          //获取患者信息
          this.patientZy = null;
					this.patientObj = null;
					this.taskTypeId = null;
          this.getPatientList(this.applyDept, "", "", type);
        }
      }
    });
    setTimeout(() => {
      // 获取携带设备
      this.getAllGoods();
      this.getWorkOrderInspectScore();
    }, 0)
  }
  //获取携带设备
  goodsNow; //携带的物品列表
  getAllGoods() {
    this.mainService.getDictionary("list", "goods").subscribe((data) => {
      let goodsNow = data || [];
      this.goodsNow = [];
      goodsNow.forEach((e) => {
        this.goodsNow.push({
          label: e.name,
          value: e.id,
          checked: false,
        });
      });
    });
  }

  //获取陪检方式
  workOrderInspectScoreList:any[] = [];
  workOrderInspectScore:any;
  getWorkOrderInspectScore() {
    let postData = { idx: 0, sum: 9999, workOrderInspectScore: { hosId: this.checkedHos } };
    this.mainService
      .getFetchDataList("simple/data", "workOrderInspectScore", postData)
      .subscribe((result) => {
        if (result.status == 200) {
          this.workOrderInspectScoreList = result.list || [];
        } else {
          this.msg.error("请求数据失败");
        }
      });
  }

	psValue:any;
	taskType:any;
  radioChangeQt(value) {
    //任务类型id
    if (value === "" || value === null) {
      return;
    }
		let index = this.tabIndex;
		// let item = this.workTypesArrange[1].value.find(v => v.id == value);
		// console.log(788787,item)
		// this.taskType = item.associationTypeValue?item.associationTypeValue:null
		this.psValue = value
    this.startDeptQt = null;
    this.endDeptQt = null;
    // 返回值的status是201 则是默认发起科室，把申请科室作为值
    // 返回值的status是202 则是固定科室范围，会返回科室列表
    // 返回值的status是203 则是固定科室，会返回单个科室
    // 返回值的status是204 则让前端自己调用科室搜索接口
    // 返回值的status是205 则是固定科室类型，会返回科室列表
    this.mainService.getdeptList(value, this.applyDept).subscribe((data:any) => {
			if(data.startDept){
				data.startDept.forEach(i=>{
					if(i.inputcode){
					  i.inputcode = i.inputcode.toUpperCase()
					  i.dept = i.dept + '('+i.inputcode+')'
					}
				})
			}
			if(data.endDept){
				data.endDept.forEach(i=>{
					if(i.inputcode){
					  i.inputcode = i.inputcode.toUpperCase()
					  i.dept = i.dept + '('+i.inputcode+')'
					}
				})
			}
      this.deptQtList = data;
			if(this.deptQtList.startMultipleHospital==1){
				this.deptQtList.startDept = []
			}
			if(this.deptQtList.endMultipleHospital==1){
				this.deptQtList.endDept = []
			}

			if(data.startStatus==202 || data.startStatus==204 || data.startStatus==205){
				this.isStartFixedType = true
			}else{
				this.isStartFixedType = false
			}
			if(data.endStatus==202 || data.endStatus==204 || data.endStatus==205){
				this.isEndFixedType = true
			}else{
				this.isEndFixedType = false
			}
			if((data.startStatus==204 || data.startStatus==205) && data.startMultipleHospital==1){
				if(this.validateFormQt.value.startHosId){
					this.validateFormQt.controls.startHosId.setValue(null)
				}
				this.validateFormQt.addControl(
				  "startHosId",
				  new FormControl(null, Validators.required)
				);
			}else{
				if(this.validateFormQt.value.startHosId){
					this.validateFormQt.controls.startHosId.setValue(null)
				}
				this.validateFormQt.removeControl("startHosId");
			}
			if((data.endStatus==204 || data.endStatus==205) && data.endMultipleHospital==1){
				if(this.validateFormQt.value.endHosId){
					this.validateFormQt.controls.endHosId.setValue(null)
				}
				this.validateFormQt.addControl(
				  "endHosId",
				  new FormControl(null, Validators.required)
				);
			}else{
				if(this.validateFormQt.value.endHosId){
					this.validateFormQt.controls.endHosId.setValue(null)
				}
				this.validateFormQt.removeControl("endHosId");
			}
      // 预约start
      this.currentTasktype = data.taskType;
      this.isYyInspect = false;
      this.clickYYFlag = false;
      this.yyDate = new Date();
      this.yyTime = null;
      // 预约end
      this.deptQtList.taskType.customRemarks = this.deptQtList.taskType.customRemarks ? this.deptQtList.taskType.customRemarks.split("$") : [];
      // 起点科室
      if (data["startStatus"] == 201) {
        if (this.applyDept) {
          //选择了申请科室,则起点科室就是申请科室
          this.deptQtList["startDept"] = this.applicationDepartmentList.filter(
            (item) => item.id == this.applyDept
          );
          this.startDeptQt = this.applyDept;
        }
      } else if (data["startStatus"] == 203) {
        this.startDeptQt = data["startDept"][0]["id"];
      } else if ((data["startStatus"] == 204 || data["startStatus"] == 205) && data.startMultipleHospital!=1) {
        this.getHosDepartmentQt(this.checkedHos, "start", "");
      }
      // 终点科室
      if (data["endStatus"] == 201) {
        if (this.applyDept) {
          //选择了申请科室,则终点科室就是申请科室
          this.deptQtList["endDept"] = this.applicationDepartmentList.filter(
            (item) => item.id == this.applyDept
          );
          this.endDeptQt = this.applyDept;
        }
      } else if (data["endStatus"] == 203) {
        this.endDeptQt = data["endDept"][0]["id"];
      } else if ((data["endStatus"] == 204 || data["endStatus"] == 205) && data.endMultipleHospital!=1) {
        this.getHosDepartmentQt(this.checkedHos, "end", "");
      }
    });
  }

  //新建工单->确定提交
  isGoLoading = false;
	goType:any;
  newOrderOk(go?): void {
		this.goType = go
    let arr = this.workTypesArrange.find(v => v.key === this.currentTabIndex);
    let objQt = arr.value.find(v => v.id == this.radioValueQt);
    let objZy = arr.value.find(v => v.id == this.radioValueZy);
    if (this.isYyInspect && objQt && objQt.associationTypeValue === 'other') {
      this.clickYYFlag = true;
    } else {
      this.clickYYFlag = false;
    }
    if (this.isYyInspect && objZy && (objZy.associationTypeValue === 'patientTransport' || objZy.associationTypeValue === 'inspect')) {
      this.clickYYZyFlag = true;
    } else {
      this.clickYYZyFlag = false;
    }

    if (
      (!this.yyTime && objQt && objQt.associationTypeValue === 'other' && this.isYyInspect) ||
      (!this.yyTimeZy && objZy && (objZy.associationTypeValue === 'patientTransport' || objZy.associationTypeValue === 'inspect') && this.isYyInspect)
    ) {
      return;
    }

    if (go !== "&go&") {
      this.isOkLoading = true;
    } else {
      this.isGoLoading = true;
    }
		if(this.currentTabIndex!='患者转运'){
			this.patientCode = null;
		}
		if(this.crossHospital==1){
			if(!this.inHosId){
				this.msg.error('院区不能为空'!)
				this.isOkLoading = false;
				this.isGoLoading = false;
				return
			}
		}
    if (objZy && objZy.associationTypeValue === 'patientTransport') {
      //患者转运
      go === "&go&" ? this.submitFormZy(go) : this.submitFormZy();
    }if (objZy && objZy.associationTypeValue === 'inspect') {
      //患者陪检
      go === "&go&" ? this.submitFormInspect(go) : this.submitFormInspect();
    } else if (objQt && objQt.associationTypeValue === 'specimen') {
      //标本配送
      go === "&go&" ? this.submitFormBbps(go) : this.submitFormBbps();
    } else if (objQt && objQt.associationTypeValue === 'other') {
      //其他配送
      go === "&go&" ? this.submitFormQt(go) : this.submitFormQt();
    } else if (objQt && objQt.associationTypeValue === 'ordinary') {
      //万能交接
      go === "&go&" ? this.submitFormOrdinary(go) : this.submitFormOrdinary();
    }
  }

  nucleicAcidPrintingCancel():void {
    this.fixedTab = '';
  }

  // 取消
  newOrderCancel(): void {
    if(this.incomingService.getSign() === 'callCenter' && this.incomingService.getPhoneNumber()){
      this.jry_shixian();
    }
    this.newOrderShow = false;
    this.newOrderShowOpen = false;
		this.selectProvince = false;
		this.itsmZwOrders = [];
		this.patientCode = null;
		this.inHosId = null;
    this.currentTabIndex = "";
    this.fixedTab = "";
    this.fixedMenuShangla();
		this.goType = null;
    this.radioValueQt = null;
    this.startDeptQt = null;
    this.endDeptQt = null;
    this.radioValueZy = null;
    this.radioValueZyPre = null;
    this.startDeptZy = null;
    this.endDeptZy = null;
    this.patientZy = null;
    this.goodsNow = [];
    this.workOrderInspectScore = undefined;
    this.patientList = [];
		this.patientObj = null;
		this.taskTypeId = null;
		this.patientCode = null;
    this.workOrderRemark = "";
    this.workOrderRemarkZy = "";
    this.deptZyList["startDept"] = [];
    this.deptZyList["endDept"] = [];
    this.deptZyList["startStatus"] = 0;
    this.deptZyList["endStatus"] = 0;
    this.deptQtList["startDept"] = [];
    this.deptQtList["endDept"] = [];
    this.deptQtList["startStatus"] = 0;
    this.deptQtList["endStatus"] = 0;
  }

  // 撤回
  // 打开撤回模态框
  openRecallModal(id) {
    this.coopId = id;
    this.recallOrderShow = true;
  }
  // 确认撤回
  confirmRec() {
    let that = this;
    that.btnLoading = true;
    let postData: any = {};
    let flags = "";
    this.coopId = this.coopId + "";
    if (this.coopId.includes("-")) {
      //批量
      flags = "batchExcuteWorkOrder";
      let ids = this.coopId.split("-");
      postData.workOrders = [];
      ids.forEach((item) => {
        postData.workOrders.push({ id: item, type: "recall" });
      });
    } else {
      flags = "excuteWorkOrder/recall";
      postData = {
        workOrder: {
          id: this.coopId,
        },
      };
    }
    that.mainService.coopWorkerOrder(flags, postData).subscribe((data) => {
      that.btnLoading = false;
      that.closeRecallOrderModal();
      if (data.status == 200) {
        that.showPromptModal("撤回", true, "");
      } else {
        that.showPromptModal("撤回", false, data.msg);
      }
    });
  }
  // 撤回并删除
  recAndDel() {
    let that = this;
		this.openReasonModal()
    // that.recDelLoading = true;
    // that.mainService.delOrder(that.coopId).subscribe((data) => {
    //   that.recDelLoading = false;
    //   console.log(data);
    //   that.closeRecallOrderModal();
    //   if (data.status == 200) {
    //     that.showPromptModal("删除", true, "");
    //   } else {
    //     that.showPromptModal("删除", false, data.msg);
    //   }
    // });
  }
  // 关闭撤回模态框
  closeRecallOrderModal() {
    this.recallOrderShow = false;
    this.batchClickType1 = false;
  }

  // 删除
  // 打开模态框
  coopId; //当前操作id
  coopType;
  openDelModal(id, type) {
    this.coopId = id;
    this.coopType = type;
		if(type=='hsms'){
			this.openReasonModal();
		}else{
			this.delOrderShow = true;
		}
  }
  // 确认删除
  confirmDel() {
    let that = this;
    that.btnLoading = true;
    if(this.coopType === 'hsms'){
      that.mainService.delOrder(that.coopId).subscribe((data) => {
        that.btnLoading = false;
        console.log(data);
        that.closeDelOrderModal();
        if (data.status == 200) {
          that.showPromptModal("删除", true, "");
        } else {
          that.showPromptModal("删除", false, data.msg);
        }
      });
    }else if(this.coopType === 'itsm'){
      that.mainService.simplePost("rmvData", "incident", [this.coopId]).subscribe((data) => {
        that.btnLoading = false;
        console.log(data);
        that.closeDelOrderModal();
        if (data.status == 200) {
          that.showPromptModal("删除", true, "");
        } else {
          that.showPromptModal("删除", false, data.msg);
        }
      });
    }
  }

  // 关闭模态框
  closeDelOrderModal() {
    this.delOrderShow = false;
  }

	// 打开删除模态框
	delReason:any;
	isDelVisible:boolean = false;
	openReasonModal() {
		this.closeRecallOrderModal();
	  this.isDelVisible = true;
	}
	// 确认删除
	confirmDelOk() {
		if(!this.delReason){
			this.msg.error('删除原因不能为空')
			return
		}
	  let that = this;
	  that.btnLoading = true;
	  that.mainService.delWorkOrderWithReason(that.coopId, {
			delReason: this.delReason
		}).subscribe((data:any) => {
	    that.btnLoading = false;
	    that.delOrderModal();
	    if (data.status == 200) {
	      that.showPromptModal("删除", true, "");
	    } else {
	      that.showPromptModal("删除", false, data.msg);
	    }
	  });
	}

	// 关闭模态框
	delOrderModal() {
	  this.isDelVisible = false;
		this.delReason = null;
	}

  // 新建工单
  // 提交选择转入科室的模态框
  submitFormHand(id) {
    // 有转入科室
    this.createLoading = true;
    let postData = {
      workOrder: {
        sourceId: SourceId.fuwutai,
        taskType: {
          id: this.deathTasktypeIdPatient, //转科
        },
        startDept: {
          //起点科室
          id: this.createOrderObj.sqDept.id,
        },
        createDept: this.applyDept, //申请科室
        endDepts: [
          //终点科室
          {
            id: id,
          },
        ],
        patient: {
          patientCode: this.createOrderObj.patient.patientCode,
        },
      },
    };
    this.mainService.buildOrder(postData).subscribe((result:any) => {
      this.createLoading = false;
      this.deptFlag = false;
			this.dataStatus = result["status"];
      if (result["status"] == 200) {
        this.showPromptModal("建单", true, "");
      }
			else if(result["status"] == 1000033){
				if (this.goType === "&go&") {
					this.applyDept = result["createDept"].id;
					this.applyStartDept = result["createDept"];
					this.incidentModel.incomingPhone = this.callNumber = this.incidentModel.contactsInformation = result["phone"];
				}
				//重复建单那策略
				this.repeatMsg = result["msg"];
				this.showRepeatModal(postData, "ordinary", this.goType);
      }else if (result["status"] == 100043){
				this.showPromptModal("建单", true, result["msg"]);
			}
			else{
				this.showPromptModal("建单", false, result["msg"]);
			}
    });
  }

	limitTimeModal: boolean = false; //模态框
	limitTimeInfo:string = '';
	limitTimeItem: any = {};
	hideLimitTimeModal() {
	  this.limitTimeModal = false;
	}

	// 建单判断时间-护士端建单通用方法
	isShowConfirm:boolean = true;
	isShowConfirmInfo:string = '';
	newOrderTimeFun(order, fun1, fun2){
	  fun2.call(this)
	}

	repeatModal: boolean = false; //删除模态框
	repeatMsg = "";
	loadingRepeat = false;
	repeatPostData;
	sourceType;
	showRepeatModal(postData, sourceType, go) {
	  this.repeatModal = true;
	  this.repeatPostData = postData;
	  this.sourceType = sourceType;
		if(this.currentTabIndex!='患者转运'){
			this.patientCode = null;
		}
		if(this.currentTabIndex=='患者转运' && go!='&go&' ){
			this.patientCode = null;
		}
		// if(this.goType=='&go&'){
		// 	this.showRepetitionModal("建单", true, "", "closeGo");
		// }
	}
	hideRepeatModal() {
	  this.repeatModal = false;
	  this.btnLoading = false;
		this.confirmType = false;
		if(this.goType=='&go&'){
			this.showNewOrder(1,"&go&");
			// this.showRepetitionModal("建单", true, "", "closeGo");
		}
	}

	confirmType:boolean = false;
	confirmRepeat() {
		this.confirmType = true;
	  this.loadingRepeat = true;
	  this.repeatPostData.tipsCreateOder = 1;
		let url = null;
		if(this.isYyInspect){
			url = this.mainService.postCustom("api", "appointmentOrder", this.repeatPostData)
		}else{
			url = this.mainService.buildOrder(this.repeatPostData)
		}
	 url.subscribe((data) => {
	    this.loadingRepeat = false;
	    this.repeatModal = false;
			if(this.currentDept.typeValue == 'recovery'){
			  this.mainService.postCustom("api", "clearPatientRecoveryDept", {patientCode: this.repeatPostData.workOrder.patient.patientCode}).subscribe((resultData) => {
			    this.confirmRepeatFun(data);
			  });
			}else{
			  this.confirmRepeatFun(data);
			}

	  });
	}
	confirmRepeatFun(data){
		console.log(10087,this.sourceType)
	  if (this.sourceType === "specimen") {
	    // 标本建单
			if (data.status == 200){
				this.showRepetitionModal("创建", true, "");
			}else if(data.status == 100043){
				this.showRepetitionModal("创建", true, data.msg);
			}else{
				this.showRepetitionModal("创建", false, data.msg);
			}
	  //   if (data.status == 200 && (this.taskType == "other" || this.taskType == "ordinary")) {
	  //     this.showRepetitionModal("创建", true, "", this.taskType);
	  //   } else if (data.status == 200 && this.taskType == "bb") {
	  //     this.showRepetitionModal("创建", true, "", "bb");
	  //   } else if (this.taskType == "bb" && data.status == 100043) {
	  //     this.showRepetitionModal("创建", true, data.msg);
	  //   } else if (data.status == 100043){
	  //     this.showRepetitionModal("创建", true, data.msg);
	  //   } else {
			// 	this.showRepetitionModal("创建", false, data.msg);
			// }
	  } else if (this.sourceType === "other" || this.sourceType === "ordinary") {
			// 其他建单
			if (data.status == 200){
				this.showRepetitionModal("创建", true, "");
			}else if(data.status == 100043){
				this.showRepetitionModal("创建", true, data.msg);
			}else{
				this.showRepetitionModal("创建", false, data.msg);
			}
	    // if (data.status == 200 && (this.taskType == "other" || this.taskType == "ordinary")) {
	    //   this.showRepetitionModal("创建", true, "", this.taskType);
	    // } else if (data.status == 200 && this.taskType == "bb") {
	    //   this.showRepetitionModal("创建", true, "", "bb");
	    // } else if (this.taskType == "bb" && data.status == 100043) {
	    //   this.showRepetitionModal("创建", true, data.msg);
	    // } else if (data.status == 100043){
	    //   this.showRepetitionModal("创建", true, data.msg);
	    // } else {
	    //   this.showRepetitionModal("创建", false, data.msg);
	    // }
	  } else if (this.sourceType === "transport") {
	    // 转运
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else if (this.sourceType === "accompany1") {
	    // 陪检
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else if (this.sourceType === "accompany2") {
	    // 陪检
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else if (this.sourceType === "accompany3") {
	    // 陪检
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else if (this.sourceType === "accompany4") {
	    // 陪检
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else if (this.sourceType === "accompany5") {
	    // 陪检
	    if (data.status == 200) {
	      this.showRepetitionModal("创建", true, "");
	    } else if (data.status == 100042) {
	      this.showRepetitionModal("创建", false, data.msg);
	    } else {
	      this.showRepetitionModal("创建", false, data.msg);
	    }
	  } else {
			if (data.status == 200) {
			  this.showRepetitionModal("创建", true, "");
			} else if (data.status == 100042) {
			  this.showRepetitionModal("创建", false, data.msg);
			} else if (data.status == 100043) {
			  this.showRepetitionModal("创建", true, data.msg);
			} else {
			  this.showRepetitionModal("创建", false, data.msg);
			}
		}
	}

  // 隐藏选择转入科室的模态框
  deptFlagHand(e) {
    this.deptFlag = false;
  }
  // 打开模态框,服务台右侧转入院记录建单
  createOrderObj; //当前操作id
  createLoading = false;
  deptFlag = false;
  patientLogBuild(obj) {
    this.createOrderObj = obj;
    this.deptFlag = true;
  }

  // 初始化展示形式
  controlView:any = {}; //展示形式
	leftMenuLocation:any = 2;
	rightMenuLocation:any = 2;
	showSource:any = 0;
	leftStyle:any;
	rightStyle:any;
	searchDay:any = 1;
  initControlView() {
    let postData = {
      controlView: {},
      idx: 0,
      sum: 1,
    };
    this.mainService
      .coopTypeConfig("fetchDataList", "controlView", postData)
      .subscribe((data) => {
        this.controlView = data.list[0] ? data.list[0] : {
          hurseInfoHiding: 1,
          orderInfoTime: 60,
          workerInfoTime: 60,
          unsendOrderVoice: true,
          orderType: 'priority',
					searchDay: 1
        };

        this.patientCareCol = 7;
        this.hurseInfoHiding = this.controlView.hurseInfoHiding ? 1 : 0;
        this.txtLabelCol = 1;
        this.orderRefreshTime = this.orderInfoTime = this.controlView.orderInfoTime;
        this.workerRefreshTime = this.workerInfoTime = this.controlView.workerInfoTime;
        this.audioNotDispatched = this.controlView.unsendOrderVoice !== false;
        this.orderType = this.controlView.orderType || 'priority';
				this.leftMenuLocation = this.controlView.leftMenuLocation || 2
				this.rightMenuLocation = this.controlView.rightMenuLocation || 2
				this.showSource = this.controlView.showSource || 0
				this.searchDay = this.controlView.searchDay || 1
				if(this.leftMenuLocation==1){
					this.leftStyle = {
						'position': 'fixed',
						'top': '0',
						'left': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}else if(this.leftMenuLocation==2){
					this.leftStyle = {
						'position': 'fixed',
						'top': '40%',
						'left': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}else{
					this.leftStyle = {
						'position': 'fixed',
						'bottom': '0',
						'left': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}
				if(this.rightMenuLocation==1){
					this.rightStyle = {
						'position': 'fixed',
						'top': '0',
						'right': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}else if(this.rightMenuLocation==2){
					this.rightStyle = {
						'position': 'fixed',
						'top': '40%',
						'right': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}else{
					this.rightStyle = {
						'position': 'fixed',
						'bottom': '0',
						'right': '0',
						'z-index': '50',
						'border-radius': '5px 0 0 5px'
					}
				}
        this.checkTab(this.typeId);

        this.getOrderList(1);
        this.getOrderList(2);
        this.getOrderList(3);
      });
  }

  // 保存展现形式
  saveControlView() {
    let that = this;
    that.saveLoading = true;
    let wn;
    switch (that.patientCareCol) {
      case 6:
        wn = 1;
        break;
      case 7:
        wn = 2;
        break;
      case 4:
        wn = 3;
        break;
    }

    let postData = {
      controlView: {
        workerNum: wn,
        labelNum: that.txtLabelCol,
        workerInfoTime: that.workerInfoTime,
        orderInfoTime: that.orderInfoTime,
        unsendOrderVoice: that.audioNotDispatched,
        hurseInfoHiding: that.hurseInfoHiding === 1,
        orderType: this.orderType,
      },
    };
    if (that.controlView["id"]) {
      postData.controlView["id"] = that.controlView["id"];
    }

    console.log(postData);
    that.mainService
      .coopTypeConfig("addData", "controlView", postData)
      .subscribe((data) => {
        that.saveLoading = false;
        if (data.status == 200) {
          that.msg.success('排序成功');
          this.initControlView();
        } else {
          that.msg.error(data.msg || '排序失败');
        }
      });
  }

	// 确认
	jdFlagId;
	limitTimeLoading:boolean = false;
	confirmLimitTime() {
	  console.log(this.limitTimeItem);
	  this.limitTimeModal = false;
	  this.jdFlagId = this.msg.loading("正在加载中..", {
	    nzDuration: 0,
	  }).messageId;
	  this.limitTimeItem.fun2.call(this);
	}

  closeModel(e) {
		console.log(99999,e)
    if (e === "close") {
			this.goType = null;
			this.inHosId = null;
      this.newOrderShowOpen = false; //此时可出现新的弹窗
    } else if (e === "closeGo") {
			console.log(1111)
      this.showNewOrder(1, "&go&");
    }else if(this.dataStatus==1000033 && this.goType=='&go&'){
			console.log(2222)
			this.showNewOrder(1, "&go&");
		}
  }

	// 重复建单提示框
	showRepetitionModal(con, success, promptInfo?, back?){
		this.promptModalShow = false;
		this.promptContent = con;
		this.ifSuccess = success;
		this.promptInfo = promptInfo;
		this.back = back || "";
		setTimeout(() => {
			if(this.confirmType || this.goType=='&go&'){
				this.showPromptModalRefresh();
				this.promptModalShow = true;
			}
		}, 100);
	}

  // 展示信息提示框（con:提示信息，success:操作是否成功，promptInfo:操作结果提示信息）（con:提示信息，success:操作是否成功，promptInfo:操作结果提示信息）
  showPromptModal(con, success, promptInfo?, back?) {
    this.promptModalShow = false;
    this.promptContent = con;
    this.ifSuccess = success;
    this.promptInfo = promptInfo;
    this.back = back || "";
    setTimeout(() => {
      this.showPromptModalRefresh();
      this.promptModalShow = true;
    }, 100);
  }

  showPromptModalRefresh(){
		// this.goType = null;
		// this.confirmType = false;
    this.getUnassignedBuilding2();
    this.resetList();
    this.getOrderList(1);
    this.getOrderList(2);
    this.getOrderList(3);
    this.getVisitList();
    this.getMessageList();
    if (this.currentRTab === 0) {
      this.getWorkOrders(this.applyDept);
    } else if (this.currentRTab === 1) {
      this.getPatientLog(this.applyDept);
    } else if (this.currentRTab === 2) {
      this.getItsmOrders(this.incidentModel.department);
    } else if (this.currentRTab === 3) {
      this.getDictionaryList();
    }else if (this.currentRTab === 4) {
			this.getZwOrders();
		}
		// this.newOrderShow = false;
		// this.newOrderShowOpen = false;
    this.fixedTab = "";
    this.fixedMenuShangla();
  }

  // 格式化时分秒
  // （时间小于一分钟则显示秒，时间大于一分钟则显示分钟数，如超出一小时则显示小时和分钟。）time: 秒
  formatTime(time) {
    let timeStr = "";
    if (time >= 0 && time < 60) {
      // 秒
      timeStr = time + "秒";
    } else if (time >= 60 && time < 3600) {
      // 分钟
      timeStr = Math.floor(time / 60) + "分钟";
    } else if (time >= 3600) {
      // 时 + 分
      let h = "";
      let m = "";
      h = Math.floor(time / 3600) + "小时";
      m = time % 3600 >= 60 ? Math.floor((time % 3600) / 60) + "分钟" : "";
      timeStr = h + m;
    }
    return timeStr;
  }

  // 菜单拖拽-上下
  moveMenu(nodeId) {
    let fixedMenu = document.getElementById(nodeId);
    if (!fixedMenu) return;
    fixedMenu.onmousedown = function (e) {
      fixedMenu.classList.remove('maskFull');
      let y = e.clientY - fixedMenu.offsetTop;
      document.onmousemove = function (ev) {
        fixedMenu.classList.add('maskFull');
        var _y = ev.clientY - y > 0 ? ev.clientY - y : 0;
        var wh = window.innerHeight;
        if (_y > wh - fixedMenu.clientHeight) {
          _y = wh - fixedMenu.clientHeight;
        }
        fixedMenu.style.top = _y + "px";
      };
      document.onmouseup = function () {
        fixedMenu.classList.remove('maskFull');
        document.onmousemove = null;
        document.onmouseup = null;
      };
    };
  }

  // 处理人+协同人
  transferSynergetic(incidentData){
    let str = incidentData.groupORHandlerUser || "";
    if(incidentData.synergetic && incidentData.synergetic.length){
        str += '，' + incidentData.synergetic.map(v => v.name).join('，');
    }
    return str;
  }

  // 菜单拖拽-自由
  moveMenuAll(nodeId) {
		setTimeout(_=>{
			let fixedMenu = document.getElementById(nodeId);
			console.log(88888,fixedMenu)
			if (!fixedMenu) return;
			fixedMenu.onmousedown = function (e) {
			  fixedMenu.classList.remove('maskFull');
			  let x = e.clientX - fixedMenu.offsetLeft;
			  let y = e.clientY - fixedMenu.offsetTop;
			  document.onmousemove = function (ev) {
			    fixedMenu.classList.add('maskFull');
			    var _y = ev.clientY - y > 0 ? ev.clientY - y : 0;
			    var h = window.innerHeight;
			    if (_y > h - fixedMenu.clientHeight) {
			      _y = h - fixedMenu.clientHeight;
			    }
			    fixedMenu.style.top = _y + "px";

			    var _x = ev.clientX - x > 0 ? ev.clientX - x : 0;
			    var w = window.innerWidth;
			    if (_x > w - fixedMenu.clientWidth) {
			      _x = w - fixedMenu.clientWidth;
			    }
			    fixedMenu.style.right = w - _x - fixedMenu.clientWidth + "px";
			  };
			  document.onmouseup = function () {
			    fixedMenu.classList.remove('maskFull');
			    document.onmousemove = null;
			    document.onmouseup = null;
			  };
			};
		},500)
  }

  @ViewChild("msgTemplate", { static: false }) msgTemplate: TemplateRef<any>; //消息通知模板
  // 消息提醒
  createBasicNotification(msgs): void {
    this.notification.template(this.msgTemplate, {
      nzDuration: 0,
      nzData: msgs,
    });
  }
  // tab头部分组向左移动
  disXHead = 0;
  headToLeft() {
    let num = Math.floor(this.tabs.nativeElement.offsetWidth / 126);
    let maxStep = this.scopeGroups.length - (num - 1);
    this.disStep = Math.max(-maxStep, --this.disStep);
    this.disXHead = this.disStep * 126;
  }
  // tab头部分组向右移动
  headToRight() {
    this.disStep = Math.min(0, ++this.disStep);
    this.disXHead = this.disStep * 126;
  }
  //服务台建单任务类型搜索查询
  onSearchTaskBuild(e) {
    this.onSearchTaskBuildSubject.next(e);
  }
  //获取任务类型
  getTasktypeByPhone(e) {
    this.getSearchTaskList(e).subscribe((result) => {
      if (result.status == 200) {
        this.searchTaskLoading = false;
        this.searchTaskList = result.data;
        this.searchTaskList.forEach((item) => {
          item.sid = item.associationTypeId + "_" + item.id + "_" + item.associationTypeValue;
        });
      }
    });
  }
  //服务台建单任务类型回车,0_1,0是关联类型，1是任务类型
  changeTaskBuild(e) {
    let arr = e.split("_");
    if(arr[2] === 'other' || arr[2] === 'specimen' || arr[2] === 'ordinary'){
      this.currentTabIndex = '物品配送';
    }else if(arr[2] === 'patientTransport'){
      this.currentTabIndex = '患者转运';
    }
    if (this.currentTabIndex == "患者转运") {
      //患者其他服务业务
      this.radioValueZy = +arr[1];
    } else if (this.currentTabIndex == "物品配送") {
      //其他临床服务
      this.radioValueQt = +arr[1];
    }
  }

  // 服务台建单输入住院号,查到有且仅有一个患者，则自动选中【患者转运】，自动带出【申请科室】，自动带出【患者信息】
  changeResidenceNo(e){
    console.log(e);
    this.changeCommonInpSubject.next(['patient', e]);
  }

  // 运维、配送工单切换
  filterOrderList(type, state){
    if(!this.itsmData.mdv2Switch && this.hsmsData.hsmsSwitch){
      return;
    }
    if(this.itsmData.mdv2Switch && !this.hsmsData.hsmsSwitch){
      return;
    }
    this.flagList[`${type}Flag${state}`] = !this.flagList[`${type}Flag${state}`];
    this.getOrderList(state, state === 1);
  }

  // 排序
  orderType: string = 'priority'; //排序方式 priority:优先级，time:时间
  orderList(){
    this.orderType = this.orderType === 'priority' ? 'time' : 'priority';
    this.saveControlView();
  }

  // 优先级颜色
  priorityColor(priorityId) {
    // 极低|低
    if(priorityId == 1 || priorityId == 2){
      return '';
    } else if(priorityId == 3){
      return 'yellow';
    } else if(priorityId == 4 || priorityId == 5){
      return 'red';
    }
  }

  // 延期记录
  transferHandlerLog = function (currentLog) {
    if(!currentLog){
        return '';
    }
    currentLog = cloneDeep(currentLog);
    if(currentLog.extra1DTO && currentLog.extra2 && currentLog.startTime){
        if(currentLog.extra2==0.5){
          currentLog.extra2 = 4;
          return currentLog.extra1DTO.name+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"<br>"+ format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成");
        }else{
          return currentLog.extra1DTO.name+"<br>"+ format(addDays(currentLog.startTime, +currentLog.extra2), "MM月dd日前完成");
        }
    }else{
        return '';
    }
  }

  // 生成工单
  buildType;
  editOrder;
  generateOrder(data){
    this.editOrder = cloneDeep(data);
    let incidentModel = cloneDeep(data);
    let incidentMsg:any = {};
    // incidentModel.department && (this.applicationDeptList = [cloneDeep(incidentModel.department)]);
    incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
    incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);
    incidentModel.department && (incidentModel.department = incidentModel.department.id);
    incidentModel.requester && (this.applicationRequesterList = [cloneDeep(incidentModel.requester)]);
    incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
    incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
    incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
    if(incidentModel.repairIncidentType){
      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
      this.changeRepairIncidentType(incidentModel.repairIncidentType);
    }
    incidentModel.source && (incidentModel.source = incidentModel.source.id);
    incidentModel.area && (incidentModel.area = incidentModel.area.id);
    incidentModel.place && (incidentModel.place = incidentModel.place.id);
    incidentModel.category && (this.applicationCategoryList = [cloneDeep(incidentModel.category)]);
    incidentModel.category && (incidentModel.category = incidentModel.category.id);
    this.incidentModel = incidentModel;
    this.incidentMsg = incidentMsg;
		// this.incidentModel.department && this.changeApply(this.incidentModel.department.id);
    this.incidentModel.category && this.changeApplyCategory(this.incidentModel.category, true);
    console.log('this.applicationDeptList:', this.applicationDeptList)
    console.log('incidentModel:', incidentModel)
    this.showNewOrder(0, '', '', true, '报修转事件');
		console.log(2345,this.incidentModel.repairIncidentType)
		if(incidentModel.assetId){
			this.getAssetData()
			incidentModel.assetId = Number(incidentModel.assetId)
		}
    // 查询报修图片
    this.getRepairImgs(data.id);
  }

  // 继续建单
  storageSj(data){
    this.editOrder = cloneDeep(data);
    let incidentModel = cloneDeep(data);
    let incidentMsg:any = {};
    console.log('data:', data)
    // incidentModel.department && (this.applicationDeptList = [cloneDeep(incidentModel.department)]);
    incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
    incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);
    incidentModel.department && (incidentModel.department = incidentModel.department.id);
    incidentModel.requester && (this.applicationRequesterList = [cloneDeep(incidentModel.requester)]);
    incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
    incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
    incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
    if(incidentModel.repairIncidentType){
      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
      this.changeRepairIncidentType(incidentModel.repairIncidentType);
    }
    incidentModel.source && (incidentModel.source = incidentModel.source.id);
    incidentModel.area && (incidentModel.area = incidentModel.area.id);
    incidentModel.place && (incidentModel.place = incidentModel.place.id);
    incidentModel.category && (this.applicationCategoryList = [cloneDeep(incidentModel.category)]);
    incidentModel.category && (incidentModel.category = incidentModel.category.id);
    this.incidentModel = incidentModel;
    this.incidentMsg = incidentMsg;
    console.log('this.applicationDeptList:', this.applicationDeptList)
    console.log('incidentModel:', incidentModel)
    this.showNewOrder(1, '', '', true, '继续建单');

    // 查询报修图片
    this.getRepairImgs(data.id);
  }

  // 获取报修图片
  repairImgs:any[] = [];//报修图片
  getRepairImgs(incidentId) {
    this.mainService
      .getPreviewImage('wechatRequesterIncident', incidentId)
      .subscribe((res:any) => {
        res.data = res.data || [];
        res.data.forEach(v => {
          v.previewUrl = location.origin + "/file" + v.relativeFilePath;
          v.thumbFilePath = location.origin + "/file" + v.thumbFilePath;
        })
        this.repairImgs = res.data;
      });
  }

  // 预览图片
  imgs = [];
  isPreview = false;
  initialViewIndex:number = 0;
  previewImageHandler(data = [], index = 0) {
    this.initialViewIndex = index;
    console.log(index)
    this.isPreview = false;
    data = data || [];
    this.imgs = data.map((v) => location.origin + '/file' + v.relativeFilePath);
    setTimeout(() => {
      this.isPreview = true;
    }, 0)
  }

  // 不受理-弹窗
  rejectModalShow = false; //弹窗开关
  rejectFn(data) {
    this.coopData = data;
    this.rejectModalShow = true;
  }
  // 关闭弹窗
  closeRejectModelOrder(e) {
    this.rejectModalShow = JSON.parse(e).show;
  }
  // 弹窗确定
  confirmRejectModelOrder(rejectRemark){
    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;

    let postData = {
      incident: {
        ...this.coopData,
        rejectRemark,
      },
    }

    console.log(postData);
    // return;
    this.mainService
    .flowPost("incident/task/reject", postData)
    .subscribe((result) => {
      this.msg.remove(this.maskFlag);
      this.maskFlag = false;

      if (result.state == 200) {
        this.rejectModalShow = false;
        this.showPromptModal("不受理", true, "", "");
      } else {
        this.msg.error(result.msg || '不受理失败');
      }
    });
  }

  // 编辑-弹窗
  edit(data){
    this.editOrder = cloneDeep(data);
    let incidentModel = cloneDeep(data);
    let incidentMsg:any = {};
    console.log('data:', data)
    incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
    incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);
    incidentModel.department && (incidentModel.department = incidentModel.department.id);
    incidentModel.requester && (this.applicationRequesterList = [cloneDeep(incidentModel.requester)]);
    incidentModel.requester && (incidentMsg.requesterPhone = incidentModel.requester.phone);
    incidentModel.requester && (incidentMsg.requesterName = incidentModel.requester.name);
    incidentModel.requester && (incidentModel.requester = incidentModel.requester.id);
		if(incidentModel.repairIncidentType){
      incidentModel.repairIncidentType = incidentModel.repairIncidentType.value
      this.changeRepairIncidentType(incidentModel.repairIncidentType);
    }
    incidentModel.source && (incidentModel.source = incidentModel.source.id);
    incidentModel.area && (incidentModel.area = incidentModel.area.id);
    incidentModel.place && (incidentModel.place = incidentModel.place.id);
    incidentModel.category && (this.applicationCategoryList = [cloneDeep(incidentModel.category)]);
    incidentModel.category && (incidentModel.category = incidentModel.category.id);
    this.incidentModel = incidentModel;
    this.incidentMsg = incidentMsg;
    console.log('this.applicationRequesterList:', this.applicationRequesterList)
    console.log('this.applicationDeptList:', this.applicationDeptList)
    console.log('incidentModel:', incidentModel)
		this.searchApplicationRequester();
    this.showNewOrder(1, '', '', true, '编辑事件');

    // 查询报修图片
    this.getRepairImgs(data.id);
  }

  // 换人处理-弹窗
  substitutionModalShow = false; //弹窗开关
  substitution(data) {
    this.coopData = data;
    this.substitutionModalShow = true;
  }
  // 关闭弹窗
  closeSubstitutionModelOrder(e) {
    this.substitutionModalShow = JSON.parse(e).show;
  }
  // 弹窗确定
  confirmSubstitutionModelOrder(e){
    console.log(e);
    this.substitutionModalShow = false;
    this.showPromptModalRefresh();
  }

  // 是否显示接单按钮
  computedReceive(data){
    let inUser = data.currentLog && data.currentLog.workerId == this.tool.getCurrentUserId();
    let inGroup = false;
    let groupList = this.tool.getCurrentGroupList();
    groupList.forEach(item => {
        if(data.currentLog){
            if (item.id == data.currentLog.groupId) {
                inGroup = true;
            }
        }
    })
    return data.state.value === 'pending' && (inUser || inGroup) && this.coopBtns.receive && data.deleteFlag !== 1;
  }

  // 是否显示换人处理按钮
  computedSubstitution(data){
    return (data.state.value === 'pending' || data.state.value === 'handler' || (data.state.value === 'reassign' && this.coopBtns.assign)) && data.deleteFlag !== 1;
  }

  // 是否显示编辑按钮
  computedEdit(data){
    return (data.state.value === 'pending' || data.state.value === 'reassign' || data.state.value === 'handler' || data.state.value === 'close') && this.coopBtns.edit && data.deleteFlag !== 1;
  }

  // 是否显示处理按钮
  computedHandle(data){
    return this.coopBtns.handle && data.state.value === 'handler' && data.handlingPersonnelUser && data.handlingPersonnelUser.id == this.tool.getCurrentUserId() && data.deleteFlag !== 1;
  }

  delModal: boolean = false; //删除模态框
  tipsMsg1: string; //提示框信息
  tipsMsg2: string; //操作后信息
  confirmDelType: string; //确认的类型（启用/停用，删除）
  showDelModal(
    e,
    data,
    tipsMsg1: string,
    tipsMsg2: string,
    type: string,
  ) {
    e && e.stopPropagation();
    this.confirmDelType = type;
    this.delModal = true;
    this.coopData = data;
    this.tipsMsg1 = tipsMsg1;
    this.tipsMsg2 = tipsMsg2;
  }
  // 隐藏删除框
  hideDelModal() {
    this.delModal = false;
  }
  // 确认删除
  confirmDelFn() {
    this.btnLoading = true;
    if (this.confirmDelType === "del") {
      //删除
      this.mainService
        .simplePost("rmvData", "incident", [this.coopData.id])
        .subscribe((data) => {
          this.btnLoading = false;
          this.delModal = false;
          if (data.status == 200) {
            this.showPromptModal(this.tipsMsg2, true, "");
          } else {
            this.showPromptModal(this.tipsMsg2, false, data.msg);
          }
        });
    }else if (this.confirmDelType === "receive") {
      //接单
      this.mainService
        .flowPost("incident/task/receive", { incident: this.coopData })
        .subscribe((data) => {
          this.btnLoading = false;
          this.delModal = false;
          if (data.state == 200) {
            this.showPromptModal(this.tipsMsg2, true, "");
          } else {
            this.showPromptModal(this.tipsMsg2, false, data.msg);
          }
        });
    }else if (this.confirmDelType === "checkout") {
      //签出
      this.btnLoading = false;
      this.delModal = false;
      this.msg.success('签出成功');
      if(this.incomingService.getSign() === 'box'){
        this.incomingService.closeWs(true);
        this.incomingService.removeSign();
      }if(this.incomingService.getSign() === 'callCenter'){
        this.incomingService.closeWs(true);
        this.incomingService.removeSign();
        this.incomingService.removeSocketUrl();
      }
      this.incomingService.removePhoneNumber();
    }
  }

  // 处理-弹窗
  handleModalShow = false; //弹窗开关
  handle(data) {
    this.coopData = data;
    this.handleModalShow = true;
  }
  // 关闭弹窗
  closeHandleModelOrder(e) {
    this.handleModalShow = JSON.parse(e).show;
  }
  // 弹窗确定
  confirmHandleModelOrder(e){
    console.log(e);
    this.handleModalShow = false;
    this.showPromptModalRefresh();
  }

  // 回访列表
  visitShow = false; //弹窗开关
  visitOrder() {
    this.visitShow = true;
  }
  // 关闭弹窗
  closeVisit(e) {
    this.visitShow = JSON.parse(e).show;
  }

  // 留言列表
  messageShow = false; //弹窗开关
  messageOrder() {
    this.messageShow = true;
  }
  // 关闭弹窗
  closeMessage(e) {
    this.messageShow = e.show;
    if(e.data){
      // 留言创建工单
      let postData = {
        hosId: this.tool.getCurrentHospital().id,
        phone: e.data.ano,
      };
      this.maskFlag = this.msg.loading("正在加载中..", {
        nzDuration: 0,
      }).messageId;

      this.mainService
        .findPhoneDept(postData)
        .subscribe((result:any) => {
          this.msg.remove(this.maskFlag);
          this.maskFlag = false;
          if (result.state == 200) {
            this.mainService.getDictionary("list", "incident_source").subscribe((res) => {
              let sourceList = res || [];
              let incidentModel:any = {
                hjzxRecordId: e.data.id,
                incomingPhone: e.data.ano,
              };
              let incidentMsg:any = {};
              let source = sourceList.find(v => v.value === 'record');
              source && (incidentModel.source = source.id);
              if (result.data.length > 0) {
                //绑定了科室
                let deptDTO;
                if(result.type === 'qrCode'){
                  deptDTO = result.data[0].deptDTO;
                  deptDTO.address = result.data[0].name;
                }else if(result.type === 'dept'){
                  deptDTO = result.data[0];
                }
                incidentModel.department = deptDTO;
                incidentModel.department && incidentModel.department.hospital && (incidentModel.hosId = incidentModel.department.hospital.parent ? incidentModel.department.hospital.parent.id : incidentModel.department.hospital.id);
                incidentModel.department && incidentModel.department.building && (incidentModel.area = incidentModel.department.building.id);
                incidentModel.department && incidentModel.department.floor && (incidentModel.place = incidentModel.department.floor.id);
                incidentModel.department && incidentModel.department.address && (incidentModel.houseNumber = incidentModel.department.address);
                incidentModel.department && (incidentMsg.deptManyPhone = incidentModel.department.manyPhone);
                incidentModel.department && (incidentMsg.deptName = incidentModel.department.dept);

                incidentModel.department && (incidentModel.department = incidentModel.department.id);
                incidentModel.repairIncidentType = 'dept';
                this.changeRepairIncidentType(incidentModel.repairIncidentType);
                this.incidentModel = incidentModel;
                console.log('this.incidentModel:', this.incidentModel)
                this.incidentMsg = incidentMsg;
                this.showNewOrder(1, '', '', true, '留言转事件');
              } else {
                //没绑定科室
                this.incidentModel = incidentModel;
                this.incidentMsg = incidentMsg;
                this.showNewOrder(1, '', '', true, '留言转事件');
              }
            });
          }
        });
    }
  }

  // 通话记录列表
  callShow = false; //弹窗开关
  callOrder() {
    this.callShow = true;
  }
  // 关闭弹窗
  closeCall(e) {
    this.callShow = e.show;
  }

  // 详细地址获取焦点
  isShowAddressList:boolean = false;
  focusAddress(){
    this.isShowAddressList = true;
    this.getAddressList();
  }

  // 点击其他位置
  clickExtra(e){
    if(document.documentElement.contains(document.querySelector('.addressList')) && e.target !== document.querySelector('.addressFocus')){
      this.isShowAddressList = false;
    }
    if(document.documentElement.contains(document.querySelector('.noteList')) && e.target !== document.querySelector('.noteFocus')){
      this.isShowNoteList = false;
    }
  }

  // 选择地址
	addressDTO:any;
  selectAddress(name, idx){
		if(this.buildType !== '编辑事件'){
			let item = this.addressList.find(i=>i.id == idx)
			console.log('选中的地址11111',item);
			if(item && item.priority){
				this.addressDTO = item.priority
			}else{
				this.addressDTO = null
			}
			let orders = [];
			let id = [];
			if(this.addressDTO&&this.addressDTO.id){
				orders.push(this.addressDTO.orders)
				id.push(this.addressDTO.id)
			}
			if(this.deptPriorityDTO&&this.deptPriorityDTO.id){
				orders.push(this.deptPriorityDTO.orders)
				id.push(this.deptPriorityDTO.id)
			}
			if(this.userPriorityDTO&&this.userPriorityDTO.id){
				orders.push(this.userPriorityDTO.orders)
				id.push(this.userPriorityDTO.id)
			}
			if(this.malPriorityDTO&&this.malPriorityDTO.id){
				orders.push(this.malPriorityDTO.orders)
				id.push(this.malPriorityDTO.id)
			}
			if(orders.length>0){
				let minNumber = Math.min(...orders)
				let index = orders.indexOf(minNumber)
				console.log('最小值的orders', orders, minNumber)
				setTimeout(_=>{
					if(index!=-1){
						this.incidentModel.priorityId = minNumber != Infinity ? id[index] : null
					}else{
						this.incidentModel.priorityId = null
					}
				})
			}else{
				this.incidentModel.priorityId = null
			}
		}
    this.incidentModel.houseNumber = name;
    this.isShowAddressList = false;
  }

  // 获取科室地点列表
  addressList:any[] = [];
  addressLoading:boolean = false;
  getAddressList() {
    if(!this.incidentModel.department){
      this.addressList = [];
      return;
    }
    let postData = {
      idx: 0,
      sum: 99999,
      qrCode: {
        deptId: this.incidentModel.department,
      }
    };
    this.addressLoading = true;
    this.mainService.getFetchDataList("simple/data", "qrCode", postData).subscribe(result=>{
      this.addressLoading = false;
      if(result.status == 200){
        this.addressList = result.list || [];
      }else{
        this.addressList = [];
      }
    });
  }

  // 选择患者
  selectPatientZy(e){
    let patient = this.patientList.find(v => v.patientCode === e);
    if(patient){
      this.workOrderRemarkZy = patient.remark || '';
      this.workOrderInspectScore = patient.tripType;
    }else{
      this.workOrderRemarkZy = '';
      this.workOrderInspectScore = undefined;
    }

    if(this.tabIndex !== undefined && this.currentTasktype && this.currentTasktype.associationType.value === 'inspect'){
      let index = this.tabIndex;
      let value = this.currentTasktype.id;
      let taskType = this.workTypesArrange[index].value.find(v => v.id == value);
      let patientCode;
      if(taskType.associationTypeValue === 'inspect'){
        patientCode = this.patientZy;
      }else{
        patientCode = undefined;
      }

      this.mainService.getdeptList(value, this.applyDept, patientCode, (taskType.associationTypeValue === 'inspect' ? format(startOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss') : undefined), (taskType.associationTypeValue === 'inspect' ? format(endOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss') : undefined)).subscribe((data:any) => {
        this.linkCheckLis = [];
        if(data.data && Array.isArray(data.data.data) && data.data.data.length>0) {
          let arr = [];
          data.data.data.forEach((e) => {
						if(e.yyTime){
							e.newTime = format(new Date(e.yyTime), 'MM-dd HH:mm')
							if(e.endCheckTime){
								e.newTime2 = format(new Date(e.endCheckTime), 'HH:mm')
								e.yyEndTime = e.newTime + '--' + e.newTime2
							}else{
								e.yyEndTime = e.newTime
							}
						}else{
							e.yyEndTime = null
						}
		
            arr.push({
              execDeptId: e.execDept.id,
              yyTime: e.yyTime,
              priority: e.priority,
              label: (e.yyEndTime || "") + " " + e.execDept.dept + " 进行 " + (e.inspectName?e.inspectName:'' + '-' + e.inspectCode || "检查"),
              value: e["id"],
              checked: false,
            });
          });
          this.linkCheckLis = arr;
        }
      })
    }
  }

  // 注意事项获取焦点
  isShowNoteList:boolean = false;
  focusNote(){
    this.isShowNoteList = true;
    this.getNoteList();
  }

  // 选择注意事项
  selectNote(name){
    this.workOrderRemarkZy = name;
    this.isShowNoteList = false;
  }

  // 获取注意事项列表
  noteList:any[] = [];
  noteLoading:boolean = false;
  getNoteList() {
    this.noteLoading = true;
    this.mainService.getDictionary('list', 'inspect_notes',).subscribe(result=>{
      this.noteLoading = false;
      this.noteList = result || [];
    });
  }

  // 关联的检查-上一日，下一日，今天
  inspectToday:Date = new Date();
  // 上一日
  previousDayNew(){
    this.inspectToday = addDays(this.inspectToday, -1);
    this.inspectSubject.next();
  }

  // 今天
  todayNew(){
    this.inspectToday = new Date();
    this.inspectSubject.next();
  }

  // 下一日
  nextDayNew(){
    this.inspectToday = addDays(this.inspectToday, 1);
    this.inspectSubject.next();
  }

  refreshInspectList(){
    this.linkCheckLis = [];
    this.mainService.getdeptList(this.radioValueZy, this.applyDept, this.patientZy, format(startOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss'), format(endOfDay(this.inspectToday), 'yyyy-MM-dd HH:mm:ss')).subscribe((data:any) => {
      if (data.data && Array.isArray(data.data.data) && data.data.data.length>0) {
        let arr = [];
        data.data.data.forEach((e) => {
					if(e.yyTime){
						e.newTime = format(new Date(e.yyTime), 'MM-dd HH:mm')
						if(e.endCheckTime){
							e.newTime2 = format(new Date(e.endCheckTime), 'HH:mm')
							e.yyEndTime = e.newTime + '--' + e.newTime2
						}else{
							e.yyEndTime = e.newTime
						}
					}else{
						e.yyEndTime = null
					}

          arr.push({
            execDeptId: e.execDept.id,
            yyTime: e.yyTime,
            priority: e.priority,
            label: (e.yyEndTime || "") + " " + e.execDept.dept + " 进行 " + (e.inspectName?e.inspectName:'' + '-' + e.inspectCode || "检查"),
            value: e["id"],
            checked: false,
          });
        });
        this.linkCheckLis = arr;
      }
    });
  }

  // 修改备注
  isShowBuildQuickConfirm:boolean = false;
  buildQuickConfirmData:any = {};
  buildQuick(data){
    this.buildQuickConfirmData = data || {};
    this.isShowBuildQuickConfirm = true;
  }
  cancelBuildQuickConfirm(e){
    this.isShowBuildQuickConfirm = false;
  }
  loadingQuick:boolean = false;
  confirmBuildQuickConfirm(options){
    let { workOrderRemark} = options;
    this.maskFlag = this.msg.loading("正在加载中..", {
      nzDuration: 0,
    }).messageId;

    let postData:any = {
      orderId: this.buildQuickConfirmData.id,
      workOrderRemark,
    };

    this.mainService.coopWorkerOrder("editOrder", postData)
      .subscribe((result) => {
        this.msg.remove(this.maskFlag);
        this.maskFlag = false;

        if (result.state == 200) {
          this.isShowBuildQuickConfirm = false;
          this.showPromptModal("修改备注", true, "");
        } else {
          this.showPromptModal("修改备注", false, result.msg || '');
        }
      });
  }
}
