123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- import { Component, OnInit, ViewChild } from "@angular/core";
- import { FormBuilder, FormGroup, Validators } from "@angular/forms";
- import { ActivatedRoute } from "@angular/router";
- import { MainService } from "../../services/main.service";
- import { ToolService } from "src/app/services/tool.service";
- import { OverlayScrollbarsComponent } from 'overlayscrollbars-ngx';
- import { Observable, Observer } from 'rxjs';
- import { NzMessageService, UploadFile, UploadXHRArgs } from 'ng-zorro-antd';
- import { HttpRequest, HttpEventType, HttpEvent, HttpResponse, HttpClient } from '@angular/common/http';
- @Component({
- selector: "app-sys-config",
- templateUrl: "./sys-config.component.html",
- styleUrls: ["./sys-config.component.less"],
- })
- export class SysConfigComponent implements OnInit {
- validateForm: FormGroup;
- loading1 = false; //查询信息的loading
- loading2 = false; //保存信息的loading
- loading3 = false; //刷新字典缓存信息的loading
- loading4 = false; //护士默认角色
- initConfig = []; //接口配置列表
- config = []; //配置列表[key,value,id]
- promptContent: string; //操作提示框提示信息
- ifSuccess: boolean; //操作成功/失败
- promptInfo: string; //操作结果提示信息
- promptModalShow: boolean; //操作提示框是否展示
- coopBtns = {};
- checkOptionsOne = [
- { label: '科内报修', value: 'deptRepair', checked:false},
- { label: '公共报修', value: 'publicRepair', checked:false },
- ];
- formatterSecond = (value: number) => `${value} 秒`;
- parserSecond = (value: string) => value.replace(' 秒', '');
- menu = JSON.parse(localStorage.getItem("menu")) || []; //菜单
- sysLogoUrl:string = this.mainService.returnUploadUrl('sysLogo', 777);
- faviconLogoUrl:string = this.mainService.returnUploadUrl('faviconLogo', 777);
- constructor(
- private mainService: MainService,
- private fb: FormBuilder,
- private route: ActivatedRoute,
- private tool: ToolService,
- private msg: NzMessageService,
- private http: HttpClient
- ) {}
- @ViewChild("osComponentRef1", {
- read: OverlayScrollbarsComponent,
- static: false,
- })
- osComponentRef1: OverlayScrollbarsComponent;
- ngOnInit() {
- this.validateForm = this.fb.group({
- defaultPwd: [null, [Validators.required]],
- itsmIP: [null, [Validators.required]],
- effectiveDuration: [null, [Validators.required]],
- specimenButton: [null, [Validators.required]],
- deptDisplay: [null, [Validators.required]],
- orderClearUserSwitch: [null, [Validators.required]],
- itsmIncident: [null, [Validators.required]],
- workOrderSettings: [5, [Validators.required]],
- nurseDeptSwitchTip: [0, [Validators.required]],
- refreshNurseWorkOrderTime: [60, [Validators.required]],
- updateTipsForNurses: [""],
- systemName: [""],
- largeScreenName: [""],
- logo: [""],
- favicon: [""],
- defaultRoleOfNurse: [null, [Validators.required]],
- formUrl: [{ value: null, disabled: true }, [Validators.required]],
- serviceUrl: [{ value: null, disabled: true }, [Validators.required]],
- cachePath: [{ value: null, disabled: true }, [Validators.required]],
- cachePort: [{ value: null, disabled: true }, [Validators.required]],
- busiViewDeptId: [null, [Validators.required]],
- repairs: [null, [Validators.required]],
- cmdbRepair: [null, [Validators.required]],
- supportAppVersion: [null, [Validators.required]],
- });
- this.getDeptType();
- this.coopBtns = this.tool.initCoopBtns(this.route);
- this.getRoleList();
- this.getLogoOrFavicon();
- this.avatarUrl = this.tool.logoUrl;
- this.avatarUrl1 = this.tool.logoUrl;
- }
- getLogoOrFavicon(){
- this.tool.getSysNameAndLogoAsync().subscribe(result => {
- this.avatarUrl = location.origin + '/file' + result.logo || '';
- this.avatarUrl1 = location.origin + '/file' + result.favicon || '';
- })
- }
- // 角色列表
- roleList = [];
- getRoleList() {
- let postData = {
- idx: 0,
- sum: 10,
- };
- this.loading4 = true;
- this.mainService
- .getFetchDataList("user/data", "role", postData)
- .subscribe((result) => {
- this.loading4 = false;
- this.roleList = result.list;
- });
- }
- // 刷新字典缓存
- refresh() {
- this.loading3 = true;
- this.mainService.refreshDic().subscribe(
- (result) => {
- this.loading3 = false;
- if (result.status == 200) {
- this.mainService.clearDictionary();
- this.showPromptModal("刷新", true, "");
- } else {
- this.showPromptModal("刷新", false, "");
- }
- },
- (error) => {
- this.loading3 = false;
- this.showPromptModal("刷新", false, "");
- }
- );
- }
- // 保存
- submitForm(): void {
- for (const i in this.validateForm.controls) {
- this.validateForm.controls[i].markAsDirty();
- this.validateForm.controls[i].updateValueAndValidity();
- }
- if (this.validateForm.invalid) {
- return;
- }
- let filterData = this.initConfig.filter(
- (item) =>
- item.keyconfig === "pwd" ||
- item.keyconfig === "itsmIP" ||
- item.keyconfig === "conversationSeconds" ||
- item.keyconfig === "specimenButton" ||
- item.keyconfig === "deptDisplay" ||
- item.keyconfig === "orderClearUserSwitch" ||
- item.keyconfig === "itsmIncident" ||
- item.keyconfig === "workOrderSettings" ||
- item.keyconfig === "nurseDeptSwitchTip" ||
- item.keyconfig === "refreshNurseWorkOrderTime" ||
- item.keyconfig === "updateTipsForNurses" ||
- item.keyconfig === "systemName" ||
- item.keyconfig === "largeScreenName" ||
- item.keyconfig === "defaultRoleOfNurse" ||
- item.keyconfig === "busiViewDeptId" ||
- item.keyconfig === "deptRepair" ||
- item.keyconfig === "publicRepair" ||
- item.keyconfig === "cmdbRepair" ||
- item.keyconfig === "supportAppVersion"
- );
- console.log(7777,this.validateForm.controls.repairs.value)
- filterData.forEach((item) => {
- if (item.keyconfig === "pwd") {
- item.valueconfig = this.validateForm.controls.defaultPwd.value;
- }else if (item.keyconfig === "itsmIP") {
- item.valueconfig = this.validateForm.controls.itsmIP.value;
- } else if (item.keyconfig === "conversationSeconds") {
- item.valueconfig = this.validateForm.controls.effectiveDuration.value;
- } else if (item.keyconfig === "specimenButton") {
- item.valueconfig = this.validateForm.controls.specimenButton.value;
- } else if (item.keyconfig === "deptDisplay") {
- item.valueconfig = this.validateForm.controls.deptDisplay.value;
- } else if (item.keyconfig === "orderClearUserSwitch") {
- item.valueconfig =
- this.validateForm.controls.orderClearUserSwitch.value;
- } else if (item.keyconfig === "itsmIncident") {
- item.valueconfig =
- this.validateForm.controls.itsmIncident.value;
- } else if (item.keyconfig === "workOrderSettings") {
- item.valueconfig = this.validateForm.controls.workOrderSettings.value;
- } else if (item.keyconfig === "nurseDeptSwitchTip") {
- item.valueconfig = this.validateForm.controls.nurseDeptSwitchTip.value;
- } else if (item.keyconfig === "refreshNurseWorkOrderTime") {
- item.valueconfig = this.validateForm.controls.refreshNurseWorkOrderTime.value;
- } else if (item.keyconfig === "updateTipsForNurses") {
- item.valueconfig = this.validateForm.controls.updateTipsForNurses.value;
- } else if (item.keyconfig === "systemName") {
- item.valueconfig = this.validateForm.controls.systemName.value;
- } else if (item.keyconfig === "largeScreenName") {
- item.valueconfig = this.validateForm.controls.largeScreenName.value;
- } else if (item.keyconfig === "defaultRoleOfNurse") {
- item.valueconfig = this.validateForm.controls.defaultRoleOfNurse.value;
- } else if (item.keyconfig === "busiViewDeptId") {
- item.valueconfig = this.validateForm.controls.busiViewDeptId.value;
- } else if (item.keyconfig === "deptRepair") {
- let value = null
- if(this.validateForm.controls.repairs.value[0].checked){
- value = '1'
- }else{
- value = '0'
- }
- item.valueconfig = value;
- } else if (item.keyconfig === "publicRepair") {
- let value = null
- if(this.validateForm.controls.repairs.value[1].checked){
- value = '1'
- }else{
- value = '0'
- }
- item.valueconfig = value;
- }else if (item.keyconfig === "cmdbRepair") {
- item.valueconfig = this.validateForm.controls.cmdbRepair.value;
- }else if (item.keyconfig === "supportAppVersion") {
- item.valueconfig = this.validateForm.controls.supportAppVersion.value;
- }
- });
- const postData = filterData;
- this.loading2 = true;
- this.mainService.changeSysConfig(postData).subscribe(
- (result) => {
- this.loading2 = false;
- if (result["status"] == 200) {
- this.showPromptModal("保存", true, "");
- } else {
- this.showPromptModal("保存", false, "");
- }
- },
- (error) => {
- this.loading2 = false;
- this.showPromptModal("保存", false, "");
- }
- );
- }
- // 获取科室类型
- deptTypes: any = [];
- getDeptType() {
- this.loading1 = true;
- this.mainService.getDictionary("list", "dept_type").subscribe((result) => {
- this.deptTypes = result;
- this.getSysConfig();
- });
- }
- // 格式化自动关闭工单设置的数字选择框
- formatterPercent = (value: number) => `${value}小时`;
- parserPercent = (value: string) => value.replace("小时", "");
- // 获取系统配置
- getSysConfig() {
- const postData = { idx: 0, sum: 99 };
- this.mainService
- .getFetchDataList("simple/data", "systemConfiguration", postData)
- .subscribe((result) => {
- this.loading1 = false;
- 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 "pwd":
- this.validateForm.controls.defaultPwd.setValue(c[1]);
- break;
- case "itsmIP":
- this.validateForm.controls.itsmIP.setValue(c[1]);
- break;
- case "conversationSeconds":
- this.validateForm.controls.effectiveDuration.setValue(c[1]);
- break;
- case "specimenButton":
- this.validateForm.controls.specimenButton.setValue(c[1]);
- break;
- case "deptDisplay":
- this.validateForm.controls.deptDisplay.setValue(c[1]);
- break;
- case "orderClearUserSwitch":
- this.validateForm.controls.orderClearUserSwitch.setValue(
- c[1]
- );
- break;
- case "itsmIncident":
- this.validateForm.controls.itsmIncident.setValue(
- c[1]
- );
- break;
- case "workOrderSettings":
- this.validateForm.controls.workOrderSettings.setValue(c[1]);
- break;
- case "nurseDeptSwitchTip":
- this.validateForm.controls.nurseDeptSwitchTip.setValue(c[1]);
- break;
- case "refreshNurseWorkOrderTime":
- this.validateForm.controls.refreshNurseWorkOrderTime.setValue(c[1]);
- break;
- case "updateTipsForNurses":
- this.validateForm.controls.updateTipsForNurses.setValue(c[1]);
- break;
- case "systemName":
- this.validateForm.controls.systemName.setValue(c[1]);
- break;
- case "largeScreenName":
- this.validateForm.controls.largeScreenName.setValue(c[1]);
- break;
- case "defaultRoleOfNurse":
- this.validateForm.controls.defaultRoleOfNurse.setValue(
- c[1] - 0
- );
- break;
- case "formUri":
- this.validateForm.controls.formUrl.setValue(c[1]);
- break;
- case "serviceUrl":
- this.validateForm.controls.serviceUrl.setValue(c[1]);
- break;
- case "userRedisIp":
- this.validateForm.controls.cachePath.setValue(c[1]);
- break;
- case "userRedisPort":
- this.validateForm.controls.cachePort.setValue(c[1]);
- break;
- case "busiViewDeptId":
- this.validateForm.controls.busiViewDeptId.setValue(c[1] + "");
- break;
- case "deptRepair":
- if(c[1]=='1'){
- this.checkOptionsOne[0].checked = true
- }else{
- this.checkOptionsOne[0].checked = false
- }
- this.validateForm.controls.repairs.setValue(this.checkOptionsOne + "");
- break;
- case "publicRepair":
- if(c[1]=='1'){
- this.checkOptionsOne[1].checked = true
- }else{
- this.checkOptionsOne[1].checked = false
- }
- this.validateForm.controls.repairs.setValue(this.checkOptionsOne + "");
- break;
- case "cmdbRepair":
- this.validateForm.controls.cmdbRepair.setValue(c[1] + "");
- break;
- case "supportAppVersion":
- this.validateForm.controls.supportAppVersion.setValue(c[1]);
- break;
- }
- });
- } else {
- this.initConfig = [];
- this.config = [];
- }
- }
- });
- }
- // 展示信息提示框(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.getDeptType();
- }
- avatarLoading = false;
- avatarUrl: string;
- avatarUrl1: string;
- beforeUpload = (file: File) => {
- return new Observable((observer: Observer<boolean>) => {
- const isPic = (file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg');
- if (!isPic) {
- this.msg.error('只能上传jpg|jpeg|png图片!');
- observer.complete();
- return;
- }
- const isLt4M = file.size / 1024 / 1024 < 4;
- if (!isLt4M) {
- this.msg.error('图片大小不能大于4MB!');
- observer.complete();
- return;
- }
- observer.next(isPic && isLt4M);
- observer.complete();
- });
- };
- private getBase64(img: File, callback: (img: string) => void): void {
- const reader = new FileReader();
- reader.addEventListener('load', () => callback(reader.result!.toString()));
- reader.readAsDataURL(img);
- }
- handleChange(info: { file: UploadFile }, avatarUrl): void {
- switch (info.file.status) {
- case 'uploading':
- this.avatarLoading = true;
- break;
- case 'done':
- // Get this url from response in real world.
- this.getBase64(info.file!.originFileObj!, (img: string) => {
- this.avatarLoading = false;
- this[avatarUrl] = img;
- });
- break;
- case 'error':
- this.msg.error('Network error');
- this.avatarLoading = false;
- break;
- }
- }
- customReq = (item: UploadXHRArgs) => {
- console.log(item);
- // Create a FormData here to store files and other parameters.
- const formData = new FormData();
- // tslint:disable-next-line:no-any
- formData.append('file', item.file as any);
- formData.append('filename', item.file.name);
- const req = new HttpRequest('POST', item.action!, formData, {
- reportProgress: true,
- withCredentials: true
- });
- // Always returns a `Subscription` object. nz-upload would automatically unsubscribe it at correct time.
- return this.http.request(req).subscribe(
- // tslint:disable-next-line no-any
- (event: HttpEvent<any>) => {
- if (event.type === HttpEventType.UploadProgress) {
- if (event.total! > 0) {
- // tslint:disable-next-line:no-any
- (event as any).percent = (event.loaded / event.total!) * 100;
- }
- item.onProgress!(event, item.file!);
- } else if (event instanceof HttpResponse) {
- item.onSuccess!(event.body, item.file!, event);
- }
- },
- err => {
- item.onError!(err, item.file!);
- }
- );
- };
- }
|