import { Component, OnInit, TemplateRef, ViewChild, OnDestroy } from "@angular/core"; import { NavigationEnd, Router } from "@angular/router"; import { MainService } from "../../services/main.service"; import { NzMessageService } from "ng-zorro-antd/message"; import { WebsocketMainService } from "../../services/websocket-main.service"; import http from "../../../assets/js/http"; import { Subject, forkJoin } from "rxjs"; import { debounceTime, filter, map } from "rxjs/operators"; import { SourceId } from "src/app/type/types"; import { addDays, differenceInCalendarDays, getHours, getMinutes, setMinutes, parse, format, addHours, startOfDay, endOfDay } from 'date-fns'; import { UploadFile } from 'ng-zorro-antd'; import { NzNotificationService } from "ng-zorro-antd/notification"; import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx"; import { ToolService } from "../../services/tool.service"; import cloneDeep from 'lodash-es/cloneDeep' import { HttpRequest, HttpClient, HttpResponse } from '@angular/common/http'; 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-main", templateUrl: "./main.component.html", styleUrls: ["./main.component.less"], }) export class MainComponent implements OnInit, OnDestroy { userInfo: any = JSON.parse(localStorage.getItem("user")); user: any = JSON.parse(localStorage.getItem("user")); menus: any = JSON.parse(localStorage.getItem("menu")); currentHospital; //当前院区 routerEventsListener; //监听路由 homeRole: boolean = false; //首页权限 speediness: boolean = false; //新增报修权限 deskRole: boolean = false; //调度台权限 nurseRole: boolean = false; //护士端权限 pharmacyRole: boolean = false; //药房端权限 largeScreenRole: boolean = false; //综合大屏权限 largeScreenRole2: boolean = false; //运送陪检大屏权限 largeScreenRole3: boolean = false; //运维大屏权限 specimenViewRole: boolean = false; //业务视图权限 specimenViewRole2: boolean = false; //标本视图权限 specimenRoomView: boolean = false; //标本间权限 pathology: boolean = false; //病理科权限 sampling: boolean = false; //门诊病理采样端权限 communicationBook: boolean = false; //病理交接本权限 disinfectionSupplyRole: boolean = false; //全局业务查看权限 realtimeBroadcastRole: boolean = false; //故障实时播报 inspectClosedLoopViewRole: boolean = false; //陪检闭环视图 webRepairs: boolean = false; //web报修端权限 incidentConfigRole: boolean = false; //事件配置权限 otherConfigRole: boolean = false; //三方配置权限 pageConfigRole: boolean = false; //业务页面控制权限 nurseConfigRole: boolean = false; //护士端配置控制权限 PCCommutesToWork: boolean = false; //PC上下班权限 newStatisticsRole: boolean = false; //新版统计权限 @ViewChild("osComponentRef1", { read: OverlayScrollbarsComponent, static: false, }) osComponentRef1: OverlayScrollbarsComponent; constructor( public router: Router, private mainService: MainService, private msg: NzMessageService, private notification: NzNotificationService, private webs: WebsocketMainService, public tool: ToolService, public incomingService: WebsocketIncomingService, private http: HttpClient, // private eventSubscription: Subscription ) {} eventData:any ngOnInit() { this.getEvent(); this.initHospitalAndDuty(this.tool.getCurrentHospital()); this.highlightMenuByUrl(); this.routerEventsListener = this.router.events .pipe(filter((event) => event instanceof NavigationEnd)) .subscribe((event) => { this.highlightMenuByUrl(); }); this.currentHospital = this.tool.getCurrentHospital(); this.initLogin(); this.initMenu(); this.getWebsocket(); } getEvent(){ // 全局监听 let that = this; that.tool.getEventObservable().subscribe(res => { that.eventData = res; console.log('全局的监听触发111111', that.eventData); if(that.eventData.message == '建单'){ that.speedinessAdd() } }); } // 离开管理端 ngOnDestroy() { //取消路由监听 this.routerEventsListener.unsubscribe(); // 断掉连接 this.webs.closeWs(true); // if (this.eventSubscription) { // this.eventSubscription.unsubscribe(); // } } // 菜单图标名称是否包含transport- isTransportIcon(icon:any) { if(icon){ return icon.indexOf("transport-") > -1; }else{ return false; } } //上下班 loading3 = false; workModal: boolean = false; //模态框 showWorkModal() { this.workModal = true; } hideWorkModal() { this.workModal = false; } confirmWork() { this.loading3 = true; if (this.userInfo.user.online) { // 判断当前启用的工作方案是自主还是综合排班 this.getUserWorkDept().then((ress:any) => { if (ress.status == 200) { let workType = ress.settings ? ress.settings.workType : -1; //1是综合,2是自主 // 自主下班,并且是科室绑定人员,科室绑定分组,绑定分组 if (workType == 2) { this.loading3 = false; this.msg.info('不支持此上班模式!'); } else { this.mainService.onOrOffLine({ type: "off", }).subscribe((res:any) => { if (res.status == 200) { this.getCurrentUserNow(); } else { this.loading3 = false; this.msg.error('操作失败'); } }); } } else if (ress.status == 500) { //500的时候自选下班 this.customOff(); } else { this.loading3 = false; this.msg.error('操作失败'); } }); } else { this.getWorkScheme(); } } // 获取启动中的工作分配方案 workSchemeType:any = ""; //启动中工作分配方案类型 getWorkScheme() { let postData = { idx: 0, workScheme: { status: 1, hosId: this.currentHospital.id }, sum: 1, }; this.mainService.getFetchDataList("simple/data", "workScheme", postData).subscribe((res) => { if (res.status == 200) { if(Array.isArray(res.list) && res.list.length){ this.workSchemeType = res.list[0].workType; if (this.workSchemeType == 2) { this.loading3 = false; this.msg.info('不支持此上班模式!'); } else if (this.workSchemeType == 1) { this.mainService.onOrOffLine({ type: "on", }).subscribe((res:any) => { if (res.status == 200) { this.getCurrentUserNow(); } else { this.loading3 = false; this.msg.error('操作失败'); } }); } } } else { this.loading3 = false; this.msg.error('操作失败'); } }); } // 下班 customOff() { this.mainService.onOrOffLine({ type: "off", customWorking: "off", }).subscribe((res:any) => { if (res.status == 200) { this.getCurrentUserNow(); } else { this.loading3 = false; this.msg.error('操作失败'); } }); } // 获取执行中列表 getWorkingNum() { return this.mainService.coopWorkerOrder("executingOrders", { idx: 0, sum: 1, }).toPromise(); } // 获取启动中的工作分配方案 getUserWorkDept() { return this.mainService.getUserWorkDept({}).toPromise(); } // 获取当前用户信息 getCurrentUserNow() { this.mainService.getCurrentUser1().subscribe((data:any) => { this.loading3 = false; if (data.status == 200) { let user = JSON.parse(localStorage.getItem("user")); user.user = data.data; this.userInfo.user = data.data; localStorage.setItem("user", JSON.stringify(user)); this.hideWorkModal(); this.msg.success('操作成功!'); } }); } // 上下班 types = ""; async GoWork() { let workingNum = 0; if (this.userInfo.user.online) { this.maskFlag = this.msg.loading("正在加载中..", { nzDuration: 0, }).messageId; let workingNumResult = await this.getWorkingNum(); this.msg.remove(this.maskFlag); this.maskFlag = false; if (workingNumResult.status == 200) { workingNum = workingNumResult.data.data.length; } if (workingNum) { this.types = "您还有未完成的工单,确定下班后,未完成工单将不计算积分。"; } else { this.types = "确定是否下班 ?"; } } else { this.types = "确定是否上班 ?"; } this.showWorkModal(); } // 根据url高亮菜单baba highlightMenuByUrl() { console.log(this.router.url); let navOne, navTwo; let link = this.router.url.split("/").slice(-1)[0]; let menus = JSON.parse(localStorage.getItem("menu")); if (link == "home") { this.toMenu("首页"); } else { menus.forEach((oneNav) => { if (oneNav.childrens) { let findTwoNav = oneNav.childrens.find( (twoNav) => twoNav.link == link ); if (findTwoNav) { navTwo = findTwoNav; navOne = oneNav; this.toMenu(navTwo.title, navTwo, navOne); } } }); } } // 一级导航点击 clickMenuOne(data) { let menus = JSON.parse(localStorage.getItem("menu")); data.flag = !data.flag; menus.find((item) => item.id == data.id).flag = data.flag; localStorage.setItem("menu", JSON.stringify(menus)); } initMenu() { let menus = JSON.parse(localStorage.getItem("menu")); let arr = []; menus.forEach((e) => { if (e.link == "home") { this.homeRole = true; console.log("首页权限"); } if (e.link == "nurse") { this.nurseRole = true; console.log("护士端权限"); } if (e.link == "dispatchingDesk") { this.deskRole = true; console.log("调度台权限"); } if (e.link == "pharmacy") { this.pharmacyRole = true; console.log("药房端权限"); } if (e.link == "largeScreen") { this.largeScreenRole = true; console.log("综合大屏权限"); } if (e.link == "largeScreen2") { this.largeScreenRole2 = true; console.log("运送陪检大屏权限"); } if (e.link == "largeScreen3") { this.largeScreenRole3 = true; console.log("运维大屏权限"); } if (e.link == "specimenView") { this.specimenViewRole = true; console.log("业务视图权限"); } if (e.link == "specimenView2") { this.specimenViewRole2 = true; console.log("标本视图权限"); } if (e.link == "specimenRoomView") { this.specimenRoomView = true; console.log("标本间权限"); } if (e.link == "pathology") { this.pathology = true; console.log("病理科权限"); } if (e.link == "pathologySample") { this.sampling = true; console.log("门诊病理采样端权限"); } if (e.link == "pathologyCommunicationBook") { this.communicationBook = true; console.log("病理交接本权限"); } if (e.link == "disinfectionSupply") { this.disinfectionSupplyRole = true; console.log("全局业务查看权限"); } if (e.link == "realtimeBroadcast") { this.realtimeBroadcastRole = true; console.log("故障实时播报权限"); } if (e.link == "inspectClosedLoopView") { this.inspectClosedLoopViewRole = true; console.log("陪检闭环视图权限"); } if (e.link == "incidentConfig") { this.incidentConfigRole = true; console.log("事件配置权限"); } if (e.link == "otherConfig") { this.otherConfigRole = true; console.log("三方配置权限"); } if (e.link == "pageConfig") { this.pageConfigRole = true; console.log("业务页面控制权限"); } if (e.link == "nurseConfig") { this.nurseConfigRole = true; console.log("护士端配置控制权限"); } if (e.link == "PCCommutesToWork") { this.PCCommutesToWork = true; console.log("PC上下班"); } if (e.type == "newStatistics") { this.newStatisticsRole = true; console.log("新版统计"); } if (e.link == "webRepairs") { this.webRepairs = true; console.log("PC上下班"); } if (e.title == "故障管理") { let item = e.childrens.find(i=>i.link=="incidentManagement") if(item){ let item2 = item.childrens.find(i=>i.link=="add") if(item2){ this.speediness = true console.log("新增故障工单权限"); } } } if (!e.link) { arr.push(e); } }); this.menus = arr.filter(v => v.type === 'default'); } // 判断登录是否已失效 initLogin() { if (!this.userInfo) { this.msg.error("您的登录已失效,请重新登录!", { nzDuration: 3000, }); setTimeout(() => { this.router.navigateByUrl("login"); }, 2000); return; } } // 新密码失去焦点 enoughRegFlag = true; //弱 mediumRegFlag = false; //中 strongRegFlag = false; //强 blurNewPwd(){ let enoughReg = /^.{0,6}$/;//密码强度-弱 let strongReg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\!\@\#\$\%\^\&\*]).{9,}$/;//密码强度-强 this.enoughRegFlag = enoughReg.test(this.upModalData.newPwd); this.strongRegFlag = strongReg.test(this.upModalData.newPwd); this.mediumRegFlag = !this.enoughRegFlag && !this.strongRegFlag; console.log(this.enoughRegFlag,this.mediumRegFlag,this.strongRegFlag); } // 跳转页面 menuLabel: string; //当前菜单名称 indexFlag = localStorage.getItem("index") === "true" ? true : false; //首页高亮 toMenu(title, item?, data?) { sessionStorage.setItem("title", title); this.menuLabel = sessionStorage.getItem("title"); if (item && data) { // 首页取消高亮 this.indexFlag = false; localStorage.setItem("index", "false"); // 操作本地存储 let menus = JSON.parse(localStorage.getItem("menu")); menus.forEach((item1) => { item1.flagBg = false; if (item1.childrens) { item1.childrens.forEach((value) => { value.flag = false; }); } }); let obj = menus.find((value) => value.id == data.id); obj.flagBg = true; obj.flag = true; obj.childrens.find((value) => value.id == item.id).flag = true; localStorage.setItem("menu", JSON.stringify(menus)); // 操作菜单一级 二级 this.menus = menus.filter((item) => !item.link); } else { // 首页高亮 this.indexFlag = true; localStorage.setItem("index", "true"); // 操作本地存储 let menus = JSON.parse(localStorage.getItem("menu")); menus.forEach((item1) => { item1.flagBg = false; // item1.flag = false; if (item1.childrens) { item1.childrens.forEach((value) => { value.flag = false; }); } }); localStorage.setItem("menu", JSON.stringify(menus)); // 操作菜单一级 二级 this.menus = menus.filter((item) => !item.link); } } // 子路由跳转事件 activeRoute() { this.menuLabel = sessionStorage.getItem("title"); } /* 新增报修 start*/ // 打开新建工单 currentTabIndex:any = '故障报修' noWorkerPhone = false; //请求是否携带来电号码 patientList; //患者信息列表 isLoading: Boolean = false; //下拉框loading disX = 0; //移动的距离 disStep = 0; //移动的步长 applicationDepartmentList = []; //新建工单->申请科室列表(搜索) callNumber = ""; //来电号码 workTypes = []; //任务类型 workTypesArrange = []; //整理后的任务类型 workTypesFlag = false; //任务类型是否显示操作项 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 = {}; 工单范围设置回显 checkedHos;// 配送-院区选择 checkedHosDTO;// 配送-院区选择 scopeGroups = []; //配送-当前所属人员分组 orderScopeRadio;// 配送-工单范围 itsmCheckedHos;// 运维-院区选择 itsmScopeGroups = []; //运维-当前所属人员分组 itsmOrderScopeRadio;// 运维-工单范围 coopData:any; hsmsData: any = { checkedHos: undefined, scopeGroups: [], orderScopeRadio: '0', }; //转运工单范围相关信息 itsmData: any = { checkedHos: [], scopeGroups: [], orderScopeRadio: '0', }; //运维工单范围相关信息 flagList:any = { itsmFlag1: false, hsmsFlag1: false, itsmFlag2: false, hsmsFlag2: false, itsmFlag3: false, hsmsFlag3: false, } tabs:any; showInitModal:boolean = false; // 定时刷新数据 refreshTimerId; //定时刷新定时器 refresh() { clearTimeout(this.refreshTimerId); this.refreshTimerId = setTimeout(() => { this.refresh() this.orderRefreshTime--; if (this.orderRefreshTime == 0) { 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(); } this.orderRefreshTime = this.orderInfoTime; } }, 1000); } showOrderScope() { this.showInitModal = true; this.refresh() } initOrderScope() { // let scopeInfo = this.user.user.scope; // let hsoObj = this.user.user.currentHospital; // this.currentHospital.id = hsoObj.hospitalId ? hsoObj.hospitalId.id : undefined; // this.checkedHosDTO = scopeInfo.hospitalId || undefined; // this.orderScopeRadio = scopeInfo.range + ""; // let groupIds = scopeInfo.groupIds || []; // let dutyGroupList = scopeInfo.dutyGroupList || []; // this.scopeGroups = dutyGroupList.concat(groupIds); // if(this.scopeGroups.length){ // this.typeId = this.scopeGroups[0].id; // } // this.hsmsData = { // checkedHos: this.currentHospital.id, // checkedHosDTO: this.checkedHosDTO, // scopeGroups: this.scopeGroups, // orderScopeRadio: this.orderScopeRadio || '0', // hsmsSwitch: scopeInfo.hsmsSwitch === 1, // } // 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.dutyGroupList || []; // this.itsmData = { // checkedHos: this.itsmCheckedHos, // scopeGroups: this.itsmScopeGroups, // orderScopeRadio: this.itsmOrderScopeRadio || '0', // mdv2Switch: scopeInfo.mdv2Switch === 1, // allDuty: scopeInfo.allDuty === undefined ? 1 : scopeInfo.allDuty, // showReassign: scopeInfo.showReassign == null || scopeInfo.showReassign == 0 ? 0 : 1, // } // this.flagList.itsmFlag1 = this.itsmData.mdv2Switch; // this.flagList.itsmFlag2 = this.itsmData.mdv2Switch; // this.flagList.itsmFlag3 = this.itsmData.mdv2Switch; this.showNewOrder(); this.getHospitalConfigList('allowNucleicAcidPrinting'); this.getConfigTasktype(); this.patientLogTasktype(); } // 获取院区配置配置,是否核酸打印 getHospitalConfigList(key) { // if(!this.hsmsData.hsmsSwitch){ // return; // } let postData = { idx: 0, sum: 1, hospitalConfig: { hosId: this.currentHospital.id, 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; } }); } // 获取配置文件写死的任务类型ID(送病人回病房9),选择此任务类型的话,患者信息从终点科室获取 getConfigTasktypeLoading: boolean = false; getConfigTasktype() { // if(!this.hsmsData.hsmsSwitch){ // return; // } let postData = { idx: 0, sum: 1, hospitalConfig: { hosId: this.currentHospital.id, 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; patientLogTasktype() { // if(!this.hsmsData.hsmsSwitch){ // return; // } let postData = { idx: 0, sum: 1, systemConfiguration: { keyconfig: "transDeptTypeId", }, }; this.patientLogTasktypeLoading = true; this.mainService.getFetchDataList("simple/data", "systemConfiguration", postData).subscribe(res => { this.patientLogTasktypeLoading = false; if (res.status == 200) { this.deathTasktypeIdPatient = res.list.length ? res.list[0].valueconfig : undefined; } else { this.msg.error('请求数据失败'); } }); } // 重置新建工单数据 solutionId:any; resetOrderData(){ this.applicationRequesterList = []; this.fileList = []; this.repairImgs = []; this.isRelatedDepartment = true; this.solutionId = undefined; delete this.incidentMsg.requesterPhone; } // 重置新建工单数据-继续建单-编辑-报修转事件 resetOrderData2(){ this.fileList = []; this.repairImgs = []; if(this.incidentModel.repairIncidentType === 'public'){ this.isRelatedDepartment = false; }else{ this.isRelatedDepartment = true; } } // 获取院区配置配置,是否核酸打印 currentRTab:any; rightTitle_tab:any = []; inspectToday:any; isShowNucleicAcidPrinting = false; deathTasktypeId; //获取这个写死的任务类型的id,送病人回病房 deathTasktypeIdPatient; //获取这个写死的任务类型的id,转出院记录 showNewOrder(des = '', phone = '', isInit = false, buildType = '') { this.buildType = buildType; console.log(123,buildType) // if(this.itsmData.mdv2Switch){ console.log(456, this.itsmData) if(this.buildType !== '继续建单' && this.buildType !== '编辑事件' && this.buildType !== '报修转事件'){ this.resetOrderData(); }else{ this.resetOrderData2(); } this.searchApplicationHospital(); 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); this.newOrderShowOpen = true } // } // 预约相关重置 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; console.log(des); 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 { //正常初始化 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.currentHospital.id, }); } rightTitleHandler(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(); } } patientLogList:any; loading5:boolean = false getPatientLog(id) { // if(!this.hsmsData.hsmsSwitch){ // return; // } if (id == -1 || id === null || id === undefined) { this.patientLogList = []; return; } let postData = { patientLog: { sqDept: { id }, hosId: this.currentHospital.id, }, 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; } }); } // 服务台新建工单—根据申请科室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: null, // serGdState: 4, range: "0", platform: 3, searchDays: 100, 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; } }); } //获取知识库状态/类型 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 || '请求数据失败!'); } }); } // 引入知识库 importKnowage(item){ console.log(item) this.incidentModel = {...this.incidentModel, description: `引用知识库解决,知识库编号:${item.solutionNumber}`}; this.solutionId = item.id; } // 知识库查看-知道了 isShowKnowledge:boolean = false; showKnowledgeModal(data) { this.coopData = data || {}; this.isShowKnowledge = true; } cancelKnowledgeModal(flag) { this.isShowKnowledge = false; } // 获取患者信息 searchPatientList(id, searchWords) { this.searchPatientListSubject.next([id, searchWords]); } // 获取患者信息 isLoadingPatient: boolean = false; getPatientList(id, searchWords, patient?) { 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"]; // if (this.patientList.length) { // this.patientList = this.patientList.filter((item) => !!item.bednum); // } } }); } // 根据住院号获取患者信息 getPatientByResidenceNo(residenceNo) { let postData = { residenceNo, hosId: this.currentHospital.id, 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.patientList = [patient]); patient.department && (this.patientZy = patient.patientCode); console.log(this.patientList) }else{ this.msg.warning('未查询到患者'); } } }); } // tab任务类型向左移动 elementView:any; 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() { this.applicationHospitalList = this.tool.getHospitalList().filter(i=> !i.parent && !i.type); this.incidentModel.hosId = this.currentHospital.id; // 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; // this.incidentModel.hosId = this.currentHospital.id; // } // }); } // 选择院区 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 = true; 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, // simpleQuery: true, }, }; this.isLoading = true; this.mainService .getFetchDataList("simple/data", "user", postData) .subscribe((data) => { this.isLoading = false; if (data.status == 200) { this.applicationRequesterList = data.list; } }); } // 修改申请人 changeApplyRequester(e){ console.log(e) let userObj = this.applicationRequesterList.find(v => v.id == e); // 选择申请人回显申请人电话 if(userObj){ this.incidentMsg.requesterPhone = userObj.phone; } if(this.incidentModel.repairIncidentType === 'public'){ this.getItsmOrders('') if(this.cmdbRepair){ this.incidentModel.assetId = null; this.getAssetData() } } } // 故障现象列表 applicationCategoryList:any[] = []; searchApplicationCategory(keyWord?) { let list = this.tool.getUserInfoPermission().dutyList let dutyIds = list.map(i => { return i.id }) // 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: { // hosId: this.currentHospital.id, category: keyWord, selectType: 'mutlQuery', hierarchy: 3,//只差有三级的故障现象列表 dutyIds: dutyIds.toString(), }, }; 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 = {};//当前匹配的故障现象规则 changeApplyCategory(e, isCoverage = false){ console.log(e) // 知识库 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, }, }; 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 = []; } } // 直接解决-弹窗 directOrderModalShow = false; //弹窗开关 showDirectOrder() { console.log(669696) this.directOrderModalShow = true; } // 关闭弹窗 closeDirectOrderModelOrder(e) { this.directOrderModalShow = JSON.parse(e).show; } // 弹窗确定 confirmDirectOrderModelOrder(incidentModel){ console.log(incidentModel); 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, alarmId:null, "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); } } let url = null if(this.eventData){ postData.alarmId = this.eventData.data.id url = this.mainService.addAlarmIncident(postData) }else{ delete postData.alarmId url = this.mainService .flowPost("incident/task/accept", postData) } url.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 { 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[] = []; applyStartDept:any; searchApplicationDepartment(type, e?, phone?, deptId?, isInit?) { // if(!this.hsmsData.hsmsSwitch && !this.itsmData.mdv2Switch){ // return; // } let keyWord = ""; if (e && e !== "&ks&" && e !== "&go&") { keyWord = e; } let cascadeHosId; if(type == 'itsm'){ cascadeHosId = this.incidentModel.hosId || undefined; }else{ cascadeHosId = this.currentHospital.id; } 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'){ if(this.eventData){ this.applicationRequesterList.push({ name: this.userInfo.user.name, id: this.userInfo.user.id, account: this.userInfo.user.account }) this.incidentModel.requester = this.userInfo.user.id; let id = this.eventData.data.alarmId?this.eventData.data.alarmId:'' let ly = this.eventData.data.alarmSource?this.eventData.data.alarmSource:'' let dd = this.eventData.data.alarmLocation?this.eventData.data.alarmLocation:'' let jjd = this.eventData.data.alarmUrgency?this.eventData.data.alarmUrgency.name:'' let time = this.eventData.data.alarmActiveTime?format(new Date(this.eventData.data.alarmActiveTime), 'yyyy-MM-dd HH:mm:ss'):'' let ip = this.eventData.data.alarmIp?this.eventData.data.alarmIp:'' let ms = this.eventData.data.alarmDescription?this.eventData.data.alarmDescription:'' let content = this.eventData.data.alarmContent?this.eventData.data.alarmContent:'' this.incidentModel.description = '告警id:' + id + ';' + '告警来源:' + ly + ';' + '\n' + '告警地点:' + dd + ';' + '\n' + '紧急度:' + jjd + ';' + '告警时间:' + time + ';' + '\n' + '告警ip:' + ip + ';' + '\n' + '告警描述:' + ms + ';' + '\n' + '告警内容:' + content } 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})) console.log(this.applicationDeptList); console.log(this.incidentModel); console.log(this.incidentMsg); 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() } // 配送-选择科室 changeApply(e) { console.log(e, this.applicationDepartmentList); if(this.cmdbRepair){ this.incidentModel.assetId = null; this.getAssetData() } this.changeApplicationDepartment("&same&"); 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); this.refresh(); 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 (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 (phone === "&same&") { 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(); } } } // 引入电话号码 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.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(){ if(this.publicRepair && this.applicantMustFillIn==1 && !this.incidentModel.requester){ 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, alarmId:null, "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('哈哈哈哈哈哈=====', this.eventData); // return; let url = null if(this.eventData){ postData.alarmId = this.eventData.data.id url = this.mainService.addAlarmIncident(postData) }else{ delete postData.alarmId url = this.mainService .flowPost("incident/task/accept", postData) } url.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, } }; 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.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{ this.goType = 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.hsmsData.hsmsSwitch){ // console.log('workTypesArrange', this.workTypesArrange); // // 是否显示操作项 // this.workTypesFlag = this.workTypesArrange.length >= 5; // } // } } // 查类型 getTaskTypeCountRemarkList(){ this.mainService.getTaskTypeCountRemarkList({ hosId: this.currentHospital.id, 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; } if (type === "start" && this.deptZyList["startStatus"] == 202) { //固定科室范围,禁止搜索 this.mainService.getdeptList(this.radioValueZy).subscribe((data:any) => { 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).subscribe((data:any) => { 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 postData = { idx: 0, sum: 10, department: { dept: value, cascadeHosId: 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 (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; } if (type === "start" && this.deptQtList["startStatus"] == 202) { //固定科室范围,禁止搜索 this.mainService.getdeptList(this.psValue).subscribe((data:any) => { 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).subscribe((data:any) => { 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 postData = { idx: 0, sum: 10, department: { dept: value, cascadeHosId: 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 (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; //获取携带设备 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.currentHospital.id } }; 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).subscribe((data:any) => { this.deptQtList = data; 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 } // 预约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) { this.getHosDepartmentQt(this.currentHospital.id, "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) { this.getHosDepartmentQt(this.currentHospital.id, "end", ""); } }); } //新建工单->确定提交 isGoLoading = false; goType:any; nucleicAcidPrintingCancel():void { this.fixedTab = ''; } // 取消 newOrderCancel(): void { this.newOrderShow = false; this.newOrderShowOpen = false; // 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.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; this.eventData = null this.tool.triggerEndEvent({ message:'关单', }) } // 撤回 // 打开撤回模态框 openRecallModal(id) { this.coopId = id; this.recallOrderShow = true; } // 确认撤回 btnLoading:any; 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); } }); } // 撤回并删除 recDelLoading:boolean = false; recAndDel() { let that = this; 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); } }); } // 关闭撤回模态框 batchClickType1:boolean = false; recallOrderShow:boolean = false; closeRecallOrderModal() { this.recallOrderShow = false; this.batchClickType1 = false; } // 删除 // 打开模态框 coopId; //当前操作id coopType; delOrderShow:boolean = false openDelModal(id, type) { this.coopId = id; this.coopType = type; this.delOrderShow = true; } // 关闭模态框 closeDelOrderModal() { this.delOrderShow = false; } // 新建工单 // 提交选择转入科室的模态框 dataStatus:any; 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.goType=='&go&'){ // this.showRepetitionModal("建单", true, "", "closeGo"); // } } hideRepeatModal() { this.repeatModal = false; this.btnLoading = false; this.confirmType = false; if(this.goType=='&go&'){ console.log('fou222222') this.showNewOrder("&go&"); // this.showRepetitionModal("建单", true, "", "closeGo"); } } confirmType:boolean = false; currentDept:any; 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 = {}; //展示形式 hurseInfoHiding:any; audioNotDispatched:any; orderInfoTime:any; workerInfoTime:any; txtLabelCol:any; patientCareCol:any; typeId:any; checkTab:any; workerRefreshTime:any; orderRefreshTime:any; 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', }; 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.getOrderList(1); // this.getOrderList(2); // this.getOrderList(3); }); } // 保存展现形式 saveLoading:boolean = false 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.newOrderShowOpen = false; //此时可出现新的弹窗 } else if (e === "closeGo") { console.log(1111) this.showNewOrder("&go&"); }else if(this.dataStatus==1000033 && this.goType=='&go&'){ console.log(2222) this.showNewOrder("&go&"); } } // 重复建单提示框 promptModalShow:boolean = false; back:any; promptInfo:any; ifSuccess:any; promptContent:any; 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(); // } // this.newOrderShow = false; // this.newOrderShowOpen = false; this.eventData = null this.tool.triggerEndEvent({ message:'关单', }) this.fixedTab = ""; this.fixedMenuShangla(); } // 右侧菜单 showLastItems: boolean = false; fixedTabLany:any; fixedTab:any; // 下拉 fixedMenuXiala() { this.showLastItems = true; } // 上拉 fixedMenuShangla() { this.showLastItems = false; this.fixedTab = ""; } // 格式化时分秒 // (时间小于一分钟则显示秒,时间大于一分钟则显示分钟数,如超出一小时则显示小时和分钟。)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) { let fixedMenu = document.getElementById(nodeId); 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; }; }; } // 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+"
"+ format(addHours(currentLog.startTime, +currentLog.extra2), "MM月dd日")+"
"+ format(addHours(currentLog.startTime, +currentLog.extra2), "HH时mm分前完成"); }else{ return currentLog.extra1DTO.name+"
"+ 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 = {}; 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; this.incidentModel.category && this.changeApplyCategory(this.incidentModel.category, true); console.log('this.applicationDeptList:', this.applicationDeptList) console.log('incidentModel:', incidentModel) this.showNewOrder('', '', true, '报修转事件'); // 查询报修图片 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('', '', 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 || '不受理失败'); } }); } /* 新增报修 end */ addOrder(){ this.currentDept = this.tool.getCurrentUserDept(); //防抖 this.changeInpSubject.pipe(debounceTime(500)).subscribe((v) => { this.searchApplicationDepartment(v[0], v[1]); }); 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.changeAssetInpSubject.pipe(debounceTime(500)).subscribe((v) => { this.getAssetData(v); }); 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.initLogin(); this.getSysConfig(); this.initOrderScope(); this.initControlView(); this.moveMenu("fixedMenu"); this.moveMenu("fixedMenuLeft"); this.moveMenuAll("fixedMenuAll"); } // 获取系统配置 initConfig:any; config:any; hospitalModel:any; //院区模式 1:单院区 -1:多院区 applicantMustFillIn:any; //申请人是否必填 1是,0否 deptRepair:boolean = false; //科内报修 publicRepair:boolean = false; ; //公共报修 cmdbRepair:boolean = false; ; //是否支持资产报修 getSysConfig() { 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] break; case "applicantMustFillIn": this.applicantMustFillIn = c[1] break; case "cmdbRepair": if(c[1]=='1'){ this.cmdbRepair = true }else{ this.cmdbRepair = false } break; } }); if(this.eventData){ this.incidentModel.repairIncidentType = 'public' }else{ 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){ if(this.tool.getCurrentHospital().parent){ this.incidentModel.hosId = this.tool.getCurrentHospital().parent.id }else{ this.incidentModel.hosId = this.tool.getCurrentHospital().id } this.searchApplicationBuilding() } if(this.cmdbRepair && this.hospitalModel==1){ this.getAssetData() } } } }); } changeAsset(e){ this.changeAssetInpSubject.next(e); } // 获取资产列表 assetData:any = []; getAssetData(name?){ // if(!this.incidentModel.hosId){ // return // } 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; } }); } // 新增报修 speedinessAdd(): void { this.addOrder(); if(this.currentTabIndex === '故障报修'){ this.incidentModel.department = null; this.rightTitle_tab = [ { id: 2, name: '近期维修' }, { id: 3, name: '知识库' }, ] this.rightTitleHandler(this.rightTitle_tab[0].id); } } // 调度台 toFuwutai(): void { this.router.navigateByUrl("dispatchingDesk"); } // 护士建单 toHuShi(): void { this.router.navigateByUrl("nurse"); } // 药房端 toPharmacy(): void { this.router.navigateByUrl("pharmacy"); } // 药房端2 toPharmacy2(): void { this.router.navigateByUrl("pharmacy2"); } // 标本视图 toSpecimenView2(): void { this.router.navigateByUrl("specimenView2"); } // 标本间 toSpecimenRoomView(): void { this.router.navigateByUrl("specimenRoomView"); } // 病理科 toPathology(): void { this.router.navigateByUrl("pathology"); } // 门诊病理采样端 toSampling(): void { this.router.navigateByUrl("pathologySample"); } // 病理交接本 toCommunicationBook(): void { this.router.navigateByUrl("pathologyCommunicationBook"); } // 全局业务查看 toDisinfectionSupply(): void { this.router.navigateByUrl("disinfectionSupply"); } // 故障实时播报 toRealtimeBroadcast(): void { this.router.navigateByUrl("realtimeBroadcast"); } // 陪检闭环视图 toInspectClosedLoopView(): void { this.router.navigateByUrl("inspectClosedLoopView"); } // 配置中心 toConfigurationCenter(): void { this.iShowMenuModal = true; // this.router.navigateByUrl("configurationCenter"); } // web报修-个人报修 toWebRepairs(): void { this.router.navigateByUrl("webRepairs"); } // 统计 toNewStatistics(): void { let menus = JSON.parse(localStorage.getItem("menu")); let firstMenu = menus.find((item) => item.type == "newStatistics"); this.router.navigateByUrl(`newStatistics/${firstMenu.link}/${firstMenu.childrens[0].link}`); } // 大屏端或视图端 screenType; hosFlag = false; toBigScreen(type): void { this.screenType = type; this.submitFormHand(this.currentHospital.id); } submitFormHand(id) { if (this.screenType === "largeScreen") { window.open(`${http.bigScreenHost}/#/${this.queryType}?hosId=${this.hospital ? this.hospital.id : ''}&dutyId=${this.duty ? this.duty.id : ''}`); } else if (this.screenType === "largeScreen2") { window.open(http.bigScreenHost2 + "/#/" + id); } else if (this.screenType === "largeScreen3") { window.open(`${http.bigScreenHost3}/#/${this.queryType}?hosId=${this.hospital ? this.hospital.id : ''}&dutyId=${this.duty ? this.duty.id : ''}`); } else if (this.screenType === "specimenView") { window.open(http.specimenViewHost + "/#/" + id); } } //获取系统设置中的科室类型 getTypeByDept(id) { let postData = { idx: 0, sum: 1, systemConfiguration: { keyconfig: "busiViewDeptId" }, }; this.maskFlag = this.msg.loading("正在加载中..", { nzDuration: 0, }).messageId; this.mainService .getFetchDataList("simple/data", "systemConfiguration", postData) .subscribe((result) => { this.msg.remove(this.maskFlag); this.maskFlag = false; if (result.status == 200) { let remember = JSON.parse(localStorage.getItem("remember")); window.open( http.specimenViewHost + "/#/" + id + "/" + encodeURIComponent(remember.username) + "/" + encodeURIComponent(remember.password) + "/" + result.list[0].valueconfig ); } }); } hosFlagHand(flag) { if (!flag) { this.hosFlag = false; } } // 选择菜单-知道了 iShowMenuModal:boolean = false; cancelMenuModal(flag) { this.iShowMenuModal = false; } // 下拉 showDropdown:boolean = false; showDropdown1:boolean = false; showFastDropdown:boolean = false; // 选择院区 selectHospital(){ this.hosFlag1 = true } // 退出 logOut(): void { // 假退出 let hospital = this.tool.getCurrentHospital(); if(hospital){ this.router.navigate(["login", hospital.id]); }else{ this.router.navigateByUrl("login"); } localStorage.removeItem("user"); localStorage.removeItem("menu"); localStorage.removeItem("index"); // 假退出 this.mainService.logOut().subscribe((data) => { if (data.status == 200) { if(hospital){ this.router.navigate(["login", hospital.id]); }else{ this.router.navigateByUrl("login"); } localStorage.removeItem("user"); localStorage.removeItem("menu"); localStorage.removeItem("index"); } }); } // 连接websocket getWebsocket() { this.webs .connectWs(http.mainWs, { userCount: this.userInfo.user.account }) .subscribe((data) => { console.log(data); if (data && data.content) { this.createBasicNotification(data); } }); } @ViewChild("msgTemplate1", { static: false }) msgTemplate1: TemplateRef; //消息通知模板 // 消息提醒 createBasicNotification(msgs): void { this.notification.template(this.msgTemplate1, { nzDuration: 0, nzData: msgs, }); } //打开修改密码弹窗 pwdAfterOpen(){ this.passwordVisible = false; this.pwdIsOkLoading = false; this.enoughRegFlag = true; //弱 this.mediumRegFlag = false; //中 this.strongRegFlag = false; //强 this.upModalData = { userid: "", pwdOld: "", newPwd: "", newPwd2: "", }; } // 修改密码 passwordVisible = false; password?: string; isPwdVisible = false; pwdIsOkLoading = false; upModalData = { userid: "", pwdOld: "", newPwd: "", newPwd2: "", }; upPwd(): void { if(this.upModalData.pwdOld.trim() === ''){ this.msg.error('请填写原始密码!', { nzDuration: 5000, }); return; } if(!this.strongRegFlag){ this.msg.error('新密码不符合要求!', { nzDuration: 5000, }); return; } if(this.upModalData.newPwd !== this.upModalData.newPwd2){ this.msg.error('新密码与确认新密码不一致!', { nzDuration: 5000, }); return; } this.pwdIsOkLoading = true; let userid = JSON.parse(localStorage.getItem("user")).user.id; this.upModalData.userid = userid; this.mainService.upPwd(this.upModalData).subscribe((data) => { if (data.status == 200) { this.isPwdVisible = false; this.pwdIsOkLoading = false; this.msg.success("修改成功!", { nzDuration: 5000, }); } else { this.pwdIsOkLoading = false; this.msg.error(data.error, { nzDuration: 5000, }); } }); } showUpPwd(): void { this.isPwdVisible = true; } pwdHandleOk(): void { this.upPwd(); } pwdHandleCancel(): void { this.isPwdVisible = false; } delModal = false; tipsMsg1 = "是否确定离开该界面,如果未点击生效,数据可能会遗失?"; navInfo = {}; // 隐藏模态框 hideDelModal() { this.delModal = false; } // 模态框确认 confirmDel() { this.delModal = false; if (this.navInfo["title"] == "首页") { this.router.navigateByUrl("/main/home"); this.toMenu("首页"); } else { this.router.navigateByUrl("/main/" + this.navInfo["item"].link); this.toMenu( this.navInfo["title"], this.navInfo["item"], this.navInfo["data"] ); } } //前往菜单连接(拦截版) totoMenu(title, item?, data?) { let url = location.href.split("#")[1]; if (url.includes("/main/quickCombination")) { //拦截 this.delModal = true; this.navInfo = { title, item, data, }; } else { //正常情况 if (title == "首页") { this.router.navigateByUrl("/main/home"); this.toMenu("首页"); } else { this.router.navigateByUrl("/main/" + item.link); this.toMenu(title, item, data); } } } // 切换院区 hosFlag1 = false; submitFormHand1(id) { if(this.currentHospital.id == id){ return; } this.maskFlag = this.msg.loading("正在加载中..", { nzDuration: 0, }).messageId; this.mainService .changeHospital({ currentHosId: +id, loginType: "PC" }) .subscribe((result) => { this.msg.remove(this.maskFlag); this.maskFlag = false; if (result.status == 200) { localStorage.setItem("user", JSON.stringify(result.user)); location.reload(true); } else { this.msg.create("error", "切换院区失败"); } }); } hosFlagHand1(flag) { if (!flag) { this.hosFlag1 = false; } } // 查询范围 queryRangeFlag = false; queryRangeClick(type){ this.screenType = type; this.queryRangeFlag = true; } submitQueryRange({queryType, hospital, duty, parent}) { console.log('queryType:', queryType) console.log('hospital:', hospital) console.log('duty:', duty) console.log('parent:', parent) this.queryType = queryType; this.hospital = hospital; this.duty = duty; this.parent = parent; this.queryRangeFlag = false; this.toBigScreen(this.screenType); } cancelQueryRange() { this.queryRangeFlag = false; } // 全院查询-1|院区查询-2|责任部门查询-3|部门垂直查询-4 hospital; duty; queryType;//查询范围 parent:any = 0; // 初始化院区、部门显示 initHospitalAndDuty(hospitalOrDuty){ let type = 'hospital';//默认是院区 if(hospitalOrDuty.type){ // 当前是责任部门 type = 'duty'; } if(type === 'duty'){ // 当前的所属责任部门 this.hospital = hospitalOrDuty.parent; this.duty = hospitalOrDuty; }else{ // 当前的所属院区 this.hospital = hospitalOrDuty; this.duty = undefined; } // 查询范围单选框 if(this.hospital){ if(this.duty){ if(this.duty.parentDeptId){ this.queryType = 3; }else{ this.queryType = 4; } }else{ this.queryType = 2; } }else{ this.queryType = 1; } console.log('this.hospital:', this.hospital) console.log('this.duty:', this.duty) console.log('this.queryType:', this.queryType) console.log('this.parent:', this.parent) } }