123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- import { Component, OnInit } from "@angular/core";
- import { MainService } from "../../../services/main.service";
- import { ToolService } from 'src/app/services/tool.service';
- import { NzMessageService } from 'ng-zorro-antd';
- import { Subject } from 'rxjs';
- import { debounceTime } from 'rxjs/operators';
- @Component({
- selector: "app-configuration-specimen",
- templateUrl: "./configuration-specimen.component.html",
- styleUrls: ["./configuration-specimen.component.less"],
- })
- export class ConfigurationSpecimenComponent implements OnInit {
- loading:boolean = false; //页面加载的loading
- btnLoading:boolean = false; //提交按钮的loading
- tabModalName:string = 'characteristics'; //当前选中的tab
- hosId = this.tool.getCurrentHospital().id; //当前院区
-
- // tab类型
- dictionaryKeyList:any[] = [
- {
- name:'检查标本',key:'examine'
- },
- {
- name:'病理标本',key:'pathology'
- }
- ];
-
- // 是否支持根据手术新建申请单
- autoCreate:any[] = [
- {label:'是否开启',value: 0}
- ];
-
- // 门诊支持离体并固定
- outpatientInVitroFixation:any[] = [
- {label:'是否开启',value: 0}
- ];
-
- // 扫描时指定科室不提醒勾选项
- deptNotAlert:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 收取时需扫描二维码
- arriveScanCode:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 必须扫描动态二维码
- arriveScanDynamicCode:any[] = [
- {label:'是否开启',value: 0}
- ];
-
- // 必须扫描动态二维码
- enterDynamicDigitalKey:any[] = [
- {label:'是否开启',value: 0}
- ];
-
- // 退回标本是否填写交接人
- returnSpecimenWhetherHandover:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 显示接单签到按钮
- bigScanShowSignBtn:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 支持待到达非本人
- bigScanArriveNotOwner:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 显示建单并签到按钮
- bigScanShowCreateBtn:any[] = [
- {label:'是否开启',value: 0}
- ];
- // 默认扫描标本进入标本扫描页
- defaultScanSpe:any[] = [
- {label:'是否开启',value: 0}
- ];
-
- //申请单条码设置
- pathologyBarCode:any;
-
- // 配置
- configs:any = {};
- // 任务类型
- tasktype:any = {};
- searchTimerSubject = new Subject();
- constructor(private mainService: MainService,private tool: ToolService,private msg: NzMessageService) {}
- ngOnInit():void {
- // todo
- this.searchTimerSubject.pipe(debounceTime(500)).subscribe((v) => {
- let fun = v[0];
- fun.call(this, v[1]);
- });
- this.getDeptList();
- this.getTaskType();
- }
-
- // 点击数据字典key
- activeDictionaryKey:any = 'examine';
- clickDictionaryKey(item){
- this.activeDictionaryKey = item.key;
- if(item.key=='examine'){
- this.getDeptList();
- this.getTaskType();
- }else{
- this.getTaskTypesId()
- }
- }
-
- // 扫描时指定科室不提醒勾选项
- changeDeptNotAlert(e){
- console.log(e);
- if(!e[0].checked){
- this.deptNotAlertIds = [];
- }
- }
- // 收取时需扫描二维码
- changeArriveScanCode(e){
- console.log(e);
- if(!e[0].checked){
- this.arriveScanDynamicCode[0].checked = false;
- this.enterDynamicDigitalKey[0].checked = false;
- }
- }
- // 用户输入搜索
- isLoading: boolean = false;
- deptNotAlertIds:any[] = [];
- deptList:any[] = [];
- changeDept(e) {
- this.searchTimer(this.getDeptList, e);
- }
- // 边输入边搜索节流阀
- searchTimer(fun, e) {
- this.isLoading = true;
- this.searchTimerSubject.next([fun, e]);
- }
- openDeptList(flag){
- if(flag){
- this.getDeptList();
- }
- }
- //获取科室列表
- getDeptList(e:string = '') {
- let postData:any = {
- idx: 0,
- sum: 20,
- department: {
- searchType: 1,// 简单查询
- hospital: { id: this.hosId },
- dept: e,
- }
- };
- this.isLoading = true;
- this.mainService.getFetchDataList("simple/data", "department", postData)
- .subscribe((result) => {
- this.isLoading = false;
- if (result.status == 200) {
- this.deptList = result.list || [];
- }
- });
- }
- // 切换tab
- tabModal(tabModalName:string){
- this.tabModalName = tabModalName;
- }
-
- //病理标本保存
- submitPathologyForm(){
- let postData:any = {
- id: this.configs.id,
- taskType: this.taskTypeData.id,
- hosId: this.hosId,
- autoCreate: this.autoCreate[0].checked ? 1 : 0,
- outpatientInVitroFixation: this.outpatientInVitroFixation[0].checked ? 1 : 0,
- pathologyBarCode : this.pathologyBarCode,
- };
- this.btnLoading = true;
- this.mainService
- .simplePost("addData", "taskTypeConfig", postData)
- .subscribe((result) => {
- this.btnLoading = false;
- if (result.status == 200) {
- this.getConfig();
- }
- });
- }
-
- // 检查标本保存
- submitForm() {
- if(!this.tasktype.id){
- this.msg.create("warning", "请先配置患者陪检任务类型!");
- return;
- }
- if(this.deptNotAlert[0].checked && !this.deptNotAlertIds.length){
- this.msg.create("warning", "请选择科室!");
- return;
- }
- let postData:any = {
- id: this.configs.id,
- taskType: this.tasktype.id,
- hosId: this.hosId,
- deptNotAlert: this.deptNotAlert[0].checked ? 1 : 0,
- arriveScanCode: this.arriveScanCode[0].checked ? 1 : 0,
- arriveScanDynamicCode: this.arriveScanDynamicCode[0].checked ? 1 : 0,
- enterDynamicDigitalKey: this.enterDynamicDigitalKey[0].checked ? 1 : 0,
- returnSpecimenWhetherHandover: this.returnSpecimenWhetherHandover[0].checked ? 1 : 0,
- bigScanShowSignBtn: this.bigScanShowSignBtn[0].checked ? 1 : 0,
- bigScanArriveNotOwner: this.bigScanArriveNotOwner[0].checked ? 1 : 0,
- bigScanShowCreateBtn: this.bigScanShowCreateBtn[0].checked ? 1 : 0,
- defaultScanSpe: this.defaultScanSpe[0].checked ? 1 : 0,
- deptNotAlertIds: this.deptNotAlertIds.length ? this.deptNotAlertIds.toString() : undefined,
- };
- this.btnLoading = true;
- this.mainService
- .simplePost("addData", "taskTypeConfig", postData)
- .subscribe((result) => {
- this.btnLoading = false;
- if (result.status == 200) {
- this.getConfig();
- }
- });
- }
-
- // 获取任务类型(病理标本)
- taskTypeData:any;
- getTaskTypesId() {
- this.mainService.getDictionary("list", "ordinary_field").subscribe((data) => {
- this.taskTypeData = data.find(i=>i.value=='pathology')
- this.getConfig();
- });
- }
-
- //获取任务类型
- getTaskType() {
- this.loading = true;
- let postData = {
- idx: 0,
- sum: 10,
- taskType: {
- simpleQuery: true,
- hosId: {
- id: this.hosId
- },
- associationType: {
- key:"association_types",
- value: 'specimen'
- }
- }
- };
- this.mainService
- .getFetchDataList("simple/data", "taskType", postData)
- .subscribe((result) => {
- this.loading = false;
- if (result.status == 200) {
- this.tasktype = result.list[0] || {};
- this.getConfig();
- }
- });
- }
- // 获取配置
- getConfig() {
- this.loading = true;
- let postData = null;
- if(this.activeDictionaryKey=='examine'){
- postData = {
- idx: 0,
- sum: 10,
- taskTypeConfig: {
- taskTypeDTO: {
- hosId: {
- id: this.hosId
- },
- associationType: this.tasktype.associationType
- }
- }
- };
- }else{
- postData = {
- idx: 0,
- sum: 10,
- taskTypeConfig: {
- hosId:this.hosId,
- taskType:this.taskTypeData.id
- }
- };
- }
-
- this.mainService
- .getFetchDataList("simple/data", "taskTypeConfig", postData)
- .subscribe((result) => {
- this.loading = false;
- if (result.status == 200) {
- this.configs = result.list[0] || {};
- // 病理标本
- this.autoCreate[0].checked = this.configs.autoCreate == 1;
- this.outpatientInVitroFixation[0].checked = this.configs.outpatientInVitroFixation == 1;
- this.pathologyBarCode = this.configs.pathologyBarCode;
- // 检查标本
- this.deptNotAlert[0].checked = this.configs.deptNotAlert == 1;
- this.arriveScanCode[0].checked = this.configs.arriveScanCode == 1;
- this.arriveScanDynamicCode[0].checked = this.configs.arriveScanDynamicCode == 1;
- this.enterDynamicDigitalKey[0].checked = this.configs.enterDynamicDigitalKey == 1;
- this.returnSpecimenWhetherHandover[0].checked = this.configs.returnSpecimenWhetherHandover == 1;
- this.bigScanShowSignBtn[0].checked = this.configs.bigScanShowSignBtn == 1;
- this.bigScanArriveNotOwner[0].checked = this.configs.bigScanArriveNotOwner == 1;
- this.bigScanShowCreateBtn[0].checked = this.configs.bigScanShowCreateBtn == 1;
- this.defaultScanSpe[0].checked = this.configs.defaultScanSpe == 1;
- this.deptNotAlertIds = this.configs.deptNotAlertIds ? this.configs.deptNotAlertIds.split(',').map(v => +v) : [];
- this.deptList = this.configs.deptNotAlertList || [];
- }
- });
- }
- }
|