123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 |
- import { Component, OnInit, ViewChild, OnDestroy } from "@angular/core";
- import { ActivatedRoute, Router } from "@angular/router";
- import {
- FormBuilder,
- Validators,
- FormGroup,
- FormControl,
- } from "@angular/forms";
- import { MainService } from "../../services/main.service";
- import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
- import { ToolService } from "../../services/tool.service";
- import { format, startOfDay, endOfDay, subDays} from "date-fns";
- import { NzMessageService } from "ng-zorro-antd";
- import { Subject } from "rxjs";
- import { debounceTime, filter } from "rxjs/operators";
- import host from "../../../assets/js/http";
- import { HttpRequest, HttpResponse, HttpClient } from '@angular/common/http';
- @Component({
- selector: "app-dispensing-batch",
- templateUrl: "./dispensing-batch.component.html",
- styleUrls: ["./dispensing-batch.component.less"],
- })
- export class DispensingBatchComponent implements OnInit, OnDestroy {
- @ViewChild("osComponentRef1", {
- read: OverlayScrollbarsComponent,
- static: false,
- })
- osComponentRef1: OverlayScrollbarsComponent;
- constructor(
- private message: NzMessageService,
- private fb: FormBuilder,
- private route: ActivatedRoute,
- private router: Router,
- private mainService: MainService,
- private tool: ToolService,
- private http: HttpClient,
- ) {}
-
- ngOnDestroy() {
- clearInterval(this.logTimer)
- }
-
- ngOnInit() {
- this.searchParentDeptSubject.pipe(debounceTime(500)).subscribe((e) => {
- this.getAddDeparts(e);
- });
- this.hosId = this.tool.getCurrentHospital().id;
- this.coopBtns = this.tool.initCoopBtns(this.route);
- this.initForm();
- this.getTaskTypesId();
- this.getAllHospital();
- this.getDeptHandoverType();
- this.autoUpdate(true)
- }
- listOfData: any[] = []; //表格数据
- promptContent: string; //操作提示框提示信息
- ifSuccess: boolean; //操作成功/失败
- promptInfo: string; //操作结果提示信息
- promptModalShow: boolean; //操作提示框是否展示
- modal: boolean = false; //新增/编辑模态框
- add: boolean; //true:新增;false:编辑
- validateForm: FormGroup; //新增/编辑表单
- coopId: number; //表格中执行操作的id
- department: number; //所属科室
- infoDepartment: number; //所属科室
- hosId: number;
- dateRange;//时间
- loadAllConsumeDept: boolean = true;//是否加载所有消耗科室
- batchNumber; //批次号
- num; //编码
- deptalias; //别名
- type; //类型
- deptHandoverType; //类型
- pageIndex: number = 1; //页码
- listLength: number = 10; //总条数
- pageSize: number = 10; //每页条数
- btnLoading: boolean = false; //确认按钮loading状态
- printLoading: boolean = false; //批量打印按钮loading状态
- deptPhones: any = []; //新添加的科室电话列表
- isAddDeptsPhone = true; //添加新的科室电话是否禁用
- deptsPhoneId = 1; //科室电话自增id
- allParentdepart: any = []; //所有的父级科室列表
- hospitals1: any = []; //科室列表(搜索)
- addHospitals: any = [];
- rowData: any = null; //打印选择列表
- editModal:boolean = false; //编辑时弹框
- searchParentDeptSubject = new Subject();
- // 初始化增删改按钮
- coopBtns: any = {};
- saveLoading:boolean = false;
- taskTypeData:{id:''};
-
- // 导入---end
- //搜索父级科室
- isDeptLoading = false;
- changeInp(e) {
- this.isDeptLoading = true;
- this.searchParentDeptSubject.next(e);
- }
- // 配送建单
- coopData:any = {};
- addDateModal(data) {
- this.coopData = data;
- this.showDelModal1();
- }
- showDelModal1() {
- this.editModal = true;
- }
- hideDelModal1() {
- this.editModal = false;
- }
-
- // 30s倒计时
- logTimer = null; //定时器
- logTime = 0; //自动刷新秒数
- logTimeConst = 30; //自动刷新秒数
- autoUpdate(flag = true) {
- if (flag) {
- this.logTime = this.logTimeConst;
- }
- clearInterval(this.logTimer);
- this.logTimer = setInterval(() => {
- this.logTime--;
- if (this.logTime === 0) {
- this.logTime = this.logTimeConst;
- this.getList()
- }
- }, 1000);
- }
-
- // 编辑保存
- confirmDel1() {
- var that = this;
- for (const i in that.validateForm.controls) {
- that.validateForm.controls[i].markAsDirty();
- that.validateForm.controls[i].updateValueAndValidity();
- }
- if (that.validateForm.invalid) return;
- let data: any = {
- startTime:this.formStartDate?this.formStartDate:this.loadStartTime,//发起时间开始
- endTime:this.formEndDate?this.formEndDate:this.loadEndTime,//发起时间结束
- hosId:this.hosId,
- pharmacy:this.validateForm.value.addDepartment,
- id:that.coopId,
- loadAllConsumeDept:this.validateForm.value.loadAllConsumeDept?1:0
- };
- that.saveLoading = true;
- that.mainService
- .simplePost("addData", "drugsBatch", data)
- .subscribe((data) => {
- that.saveLoading = false;
- that.hideModal();
- that.initForm();
- if (data.status == 200) {
- this.editModal = false;
- that.showPromptModal("编辑", true, "");
- } else {
- that.showPromptModal("编辑", false, data.msg);
- }
- });
- }
- // 搜索
- search() {
- this.pageIndex = 1;
- this.getList();
- }
- // 重置
- reset() {
- this.pageIndex = 1;
- this.batchNumber = null;
- this.startDate = null;
- this.endDate = null;
- this.dateRange = [];
- this.getList();
- }
- // 表格数据
- loading1 = false;
- getList() {
- var that = this;
- let data = {
- idx: that.pageIndex - 1,
- sum: that.pageSize,
- drugsBatch: {
- batchNo:that.batchNumber,
- startTime: this.startDate,
- endTime: this.endDate,
- hosId: this.hosId
- },
- };
- if(that.batchNumber){
- data.drugsBatch.batchNo = that.batchNumber
- }else{
- delete data.drugsBatch.batchNo
- }
- this.loading1 = true;
- that.mainService
- .getFetchDataList("data", "drugsBatch", data)
- .subscribe((data) => {
- this.loading1 = false;
- that.listOfData = data.list;
- that.listLength = data.totalNum;
- });
- }
-
- // 日期选择
- startDate: string; //发起时间开始
- endDate: string; //发起时间结束
- changeDate(result?): void {
- if (!result) {
- this.startDate = this.endDate = "";
- return;
- }
- this.startDate = format(startOfDay(result[0]), 'yyyy-MM-dd HH:mm:ss');
- this.endDate = format(endOfDay(result[1]), 'yyyy-MM-dd HH:mm:ss');
- }
-
- // 新增、编辑日期选择
- formStartDate: string; //发起时间开始
- formEndDate: string; //发起时间结束
- formChangeDate(result?): void {
- if (!result) {
- this.formStartDate = this.formEndDate = "";
- return;
- }
- this.formStartDate = format(result[0], 'yyyy-MM-dd HH:mm:ss');
- this.formEndDate = format(result[1], 'yyyy-MM-dd HH:mm:ss');
- }
-
- // 获取所有科室
- getDeparts() {
- let data = {
- batchId:this.rowData.id
- };
- this.mainService
- .getConsumeDept(data)
- .subscribe((res) => {
- this.isDeptLoading = false;
- this.hospitals1 = res.data
- });
- }
-
- // 获取药房科室
- getAddDeparts(dept) {
- var that = this;
- let data:any = {
- department: {
- dept,
- hosIds: this.hosId,
- type:{
- id:''
- }
- },
- idx: 0,
- sum: 20,
- };
- if(this.isParentData==1){
- if(this.tool.getCurrentUserInfo().currentHospital &&
- this.tool.getCurrentUserInfo().currentHospital.parent){
- data.department.hosIds = this.hosId +','+this.tool.getCurrentUserInfo().currentHospital.parent.id
- }else{
- data.department.hosIds = this.hosId
- }
- }
- that.mainService.getDictionary("list", "dept_type").subscribe((res) => {
- let typeData = res.find(i=>i.value=='pharmacyRoom');
- if(typeData){
- data.department.type.id = typeData.id
- }
- that.mainService
- .getFetchDataList("data", "department", data)
- .subscribe((data) => {
- this.addHospitals = data.list
- that.isDeptLoading = false;
- });
- });
- }
-
- // 获取所有院区
- getAllHospital() {
- this.getList();
- }
- // 获取科室汇总交接类型
- deptHandoverTypes: Array<any> = [];
- getDeptHandoverType() {
- var that = this;
- that.mainService.getDictionary("list", "dept_handover_type").subscribe((data) => {
- console.log(data);
- that.deptHandoverTypes = data;
- });
- }
-
- // 获取任务id
- getTaskTypesId() {
- this.mainService.getDictionary("list", "ordinary_field").subscribe((data) => {
- this.taskTypeData = data.find(i=>i.value=='infusionSolutions')
- });
- }
-
- // 获取配置
- isParentData:any;
- getConfig(type) {
- let postData = {
- idx: 0,
- sum: 10,
- taskTypeConfig: {
- hosId:this.hosId,
- taskType:this.taskTypeData.id
- }
- };
- this.mainService
- .getFetchDataList("simple/data", "taskTypeConfig", postData)
- .subscribe((result) => {
- if (result.status == 200) {
- let data = result.list[0] || {};
- this.isParentData = data.quoteParentData;
- if(type=='add'){
- this.add = true;
- this.isAddDeptsPhone = true;
- this.validateForm.controls.addDepartment.setValue(data.pharmacyDept || '');
- }
- this.getAddDeparts('')
- this.modal = true;
- }
- });
- }
-
- // 新增弹框
- showModal() {
- this.initForm();
- this.getConfig('add');
- }
- hideModal() {
- this.coopItem = null;
- this.modal = false;
- this.initForm();
- }
- // 初始化新增form表单
- loadStartTime = '';
- loadEndTime = '';
- initForm() {
- this.validateForm = this.fb.group({
- dispensingTime: [null, [Validators.required]],
- addDepartment: [null, [Validators.required]],
- loadAllConsumeDept: [true,[]]
- });
- let date = new Date();
- this.loadStartTime = format(subDays(date, 1), "yyyy-MM-dd") +' '+'08:00:00'
- this.loadEndTime = format(date, "yyyy-MM-dd") +' '+'08:00:00'
- this.validateForm.controls.dispensingTime.setValue([this.loadStartTime, this.loadEndTime]);
- }
- // 表单提交
- submitForm(): void {
- var that = this;
- for (const i in that.validateForm.controls) {
- that.validateForm.controls[i].markAsDirty();
- that.validateForm.controls[i].updateValueAndValidity();
- }
- if (that.validateForm.invalid) return;
- let data: any = {
- startTime:this.formStartDate?this.formStartDate:this.loadStartTime,//发起时间开始
- endTime:this.formEndDate?this.formEndDate:this.loadEndTime,//发起时间结束
- hosId:this.hosId,
- pharmacy:this.validateForm.value.addDepartment,
- loadAllConsumeDept:this.validateForm.value.loadAllConsumeDept?1:0
- };
-
- if (!that.add) {
- this.editModal = true
- }else{
- that.btnLoading = true;
- that.mainService
- .simplePost("addData", "drugsBatch", data)
- .subscribe((data) => {
- that.btnLoading = false;
- that.hideModal();
- that.initForm();
- if (data.status == 200) {
- that.showPromptModal(that.add ? "新增" : "编辑", true, "");
- } else {
- that.showPromptModal(that.add ? "新增" : "编辑", false, data.msg);
- }
- });
- }
- }
- // 编辑
- coopItem: any = null;
- edit(e, data) {
- e.stopPropagation();
- this.getConfig('edit');
- this.add = false;
- this.coopId = data.id;
- this.coopItem = data;
- this.validateForm.controls.addDepartment.setValue(data.pharmacy);
- this.validateForm.controls.dispensingTime.setValue([data.startTime,data.endTime]);
- if(data.loadAllConsumeDept==1){
- this.validateForm.controls.loadAllConsumeDept.setValue(true);
- }else{
- this.validateForm.controls.loadAllConsumeDept.setValue(false);
- }
- this.loadStartTime = data.startTime
- this.loadEndTime = data.endTime
- this.modal = true
- }
- // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
- showPromptModal(con, success, promptInfo?) {
- this.promptModalShow = false;
- this.promptContent = con;
- this.ifSuccess = success;
- this.promptInfo = promptInfo;
- setTimeout(() => {
- this.promptModalShow = true;
- }, 100);
- this.getList();
- }
- delModal: boolean = false; //删除模态框
- coopIds: any;
- coopFlag: any = false;
- /**
- *
- * @param e 事件对象
- * @param id
- */
- showDelModal(e, id) {
- e.stopPropagation();
- this.delModal = true;
- this.coopId = id;
- }
- hideDelModal() {
- this.delModal = false;
- }
- // 确认删除
- confirmDel() {
- var that = this;
- that.btnLoading = true;
- that.mainService
- .coopTypeConfig(
- "rmvData",
- "drugsBatch",
- [that.coopId]
- )
- .subscribe((data) => {
- that.btnLoading = false;
- that.delModal = false;
- if (data.status==200) {
- that.showPromptModal("删除", true, "");
- } else {
- that.showPromptModal("删除", false, data.data[0].msg);
- }
- });
- }
-
- // 发药总量
- grossModal:boolean = false;
- grossLoading:boolean = false;
- viewData:any = [];
- dispensingGross(e,data){
- this.grossModal = true
- this.grossLoading = true
- this.mainService
- .drugsGross(data.id)
- .subscribe((res:any) => {
- this.grossLoading = false;
- this.viewData = res.data
- });
- }
-
- // 关闭发药总量
- hideGrossModal(){
- this.grossModal = false
- }
-
- // 发药信息
- infoModal:boolean = false;
- infoLoading:boolean = false;
- infoData:any = [];
- dispensingInfo(e,data){
- this.rowData = data
- this.getDeparts()
- this.infoModal = true
- this.infoLoading = true
- this.mainService
- .drugsInfo({
- batchId:data.id,
- dataType:'batchDispensingMedicine'
- }).subscribe((res:any) => {
- this.infoLoading = false;
- this.infoData = res.list
- });
- }
-
- // 关闭发药信息
- hideInfoModal(){
- this.infoModal = false
- }
- // 发药信息搜索
- searchInfo(){
- this.getInfo()
- }
-
- getInfo(){
- this.infoLoading = true
- this.mainService
- .drugsInfo({
- deptId:this.infoDepartment,
- batchId:this.rowData.id,
- dataType:'batchDispensingMedicine'
- }).subscribe((res:any) => {
- this.infoLoading = false;
- this.infoData = res.list
- });
- }
-
- // 发药信息重置
- resetInfo(){
- this.infoDepartment = null
- this.getInfo()
- }
-
- // 导出
- maskFlag:any = null;
- exportPc(e,data){
- this.maskFlag = this.message.loading("正在导出..", {
- nzDuration: 0,
- }).messageId;
- this.mainService.exportReport("drugsBatch", {
- batchId:data.id
- }).subscribe(
- (res:any) => {
- this.message.remove(this.maskFlag);
- this.maskFlag = false;
- this.message.success('导出成功');
- var file = new Blob([res], {
- type: "application/vnd.ms-excel",
- });
- var fileURL = URL.createObjectURL(file);
- var a = document.createElement("a");
- a.href = fileURL;
- a.target = "_blank";
- a.download = `发药批次数据-${data.batchNo}.xls`;
- document.body.appendChild(a);
- a.click();
- },
- (err) => {
- this.message.remove(this.maskFlag);
- this.maskFlag = false;
- this.message.error('导出失败');
- }
- );
- }
-
- // 查看
- detail(e, data) {
- e.stopPropagation();
- this.router.navigateByUrl(`/dispensingDetail/${data.id}`);
- }
- // 发药并打印
- printData = [];
- summaryDataList = [];
- batchNo:any = null;
- print(e, data, id){
- this.rowData = data
- e.stopPropagation();
- let that = this;
- that.printLoading = true;
- that.mainService
- .transfusionPrint("drugsBatch", id)
- .subscribe((res) => {
- this.batchNo = res.data.batchNo
- let arr = res.data.drugsListDTOS;
- this.summaryDataList = res.data.summaryDataList;
- for(let i of arr){
- for(let t of i.drugsConfigureDTOS){
- t.deptName = i.pharmacyDTO?i.pharmacyDTO.dept:'-'
- }
- i.drugsConfigureDTOS.push({
- drugsInfoDTO:{
- drugName:'合计',
- specs:'',
- },
- expendCount:i.totalExpendCount,
- addSub:i.totalAddSub,
- deptName:'',
- cartonActual:i.cartonActual
- })
- }
- that.printData = arr;
- that.printLoading = false;
- that.btnLoading = false;
- that.printModal = false;
- setTimeout(() => {
- const printContent = document.getElementById("report");
- const WindowPrt = window.open("", "", "width=1000,height=1200");
- WindowPrt.document.write(printContent.innerHTML);
- WindowPrt.document.close();
- WindowPrt.focus();
- WindowPrt.print();
- WindowPrt.close();
- setTimeout(()=>{
- this.getList();
- },200)
- }, 500);
- });
- }
-
- printModal = false;
- printE = '';
- printItemData = '';
- printItemId = '';
- dispensingPrint(e, data, id){
- this.printModal = true
- this.printE = e
- this.printItemData = data
- this.printItemId = id
- }
-
- confirmPrintDel(){
- this.btnLoading = true;
- this.print(this.printE, this.printItemData, this.printItemId)
- }
-
- hidePrintModal(){
- this.printModal = false
- }
- }
|