/* * @Description : * @Version : 1.0 * @Author : Shiming * @Date : 2022-01-10 16:06:17 * @LastEditors : Shiming * @LastEditTime : 2022-04-20 10:00:02 * @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\dynamic-setting\\dynamic-setting-modal\\dynamic-setting-modal.component.ts * Copyright (C) 2022 huzhenhong. All rights reserved. */ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/compiler'; import { Component, Input, OnInit } from '@angular/core'; import { ModalHelper } from '@delon/theme'; import { NzModalRef } from 'ng-zorro-antd/modal'; import { Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; import { BaseService } from 'src/app/shared/services'; @Component({ selector: 'app-dynamic-setting-modal', templateUrl: './dynamic-setting-modal.component.html' }) export class DynamicSettingModalComponent implements OnInit { tabs: any[] = []; selectedTab: any = null; configFullKey = 'sys.config'; configList: any = []; // 配置类型数组重组函数 @Input() formatTypeList = (item: any[]) => { return [...item]; }; @Input() extendType!: string; @Input() spareBusinessId!: string; @Input() businessId!: string; @Input() configvalue!: string; @Input() labelWidth = 200; constructor(public service: BaseService, private modalHelp: NzModalRef) {} ngOnInit() { if (this.configvalue) { this.configFullKey = this.configvalue; } this.getTypeList(); } getTypeList() { this.service .request('/api/mdc/pbc/sysConfigItemExtend/getSysConfigExtend', { configFullKey: this.configFullKey, extendType: this.extendType, businessId: this.businessId, spareBusinessId: this.spareBusinessId, }) .pipe( map((res: Array) => { if (res?.length > 0) { const typeData = res.find(config => config.configFullKey === this.configFullKey); if (typeData) { return typeData.children || []; } } return []; }), map(this.formatTypeList) ) .subscribe((res: Array) => { this.tabs = res; if (res?.length > 0) { this.selectedTab = res[0]; this.configList = this.formatItems(this.selectedTab.items); const hiddenType = this.configList.find((item: any) => item.itemType === 7 || item.itemType === 999); this.labelWidth = hiddenType ? 0 : 200; } }); } changeType(type: any): void { this.selectedTab = type; this.configList = this.formatItems(type.items); const hiddenType = this.configList.find((item: any) => item.itemType === 7 || item.itemType === 999); this.labelWidth = hiddenType ? 0 : 200; } saveAction(params: Array) { const p = params.map(config => ({ businessId: this.businessId, configId: config.configId, extendType: this.extendType, id: config.extendId, configItemId: config.id, parentId: config.parentId, itemData: config.itemData, itemValue: config.itemValue, remark: config.remark })); this.service.request('/api/mdc/pbc/sysConfigItemExtend/saveBatch', p).subscribe(res => { if (res) { this.service.msgSrv.success('修改配置成功'); this.modalHelp.destroy(true); } }); } private formatItems(items: Array): Array { if (items?.length > 0) { return items .map(item => ({ ...item, itemData: item.extendItemData || item.itemData, itemValue: item.extendItemValue || item.itemValue })) .map(item => ({ ...item, remark: item?.remark ? JSON.parse(item?.remark) : null, extend: item?.extend ? JSON.parse(item?.extend) : [], // itemData: item.itemData ? JSON.parse(item.itemData) : item.itemData, itemValue: item?.itemValue ? (item?.itemType !== 8 ? JSON.parse(item?.itemValue) : item?.itemValue) : item?.itemValue })); } return []; } }