import { Component, Input, OnInit } from '@angular/core'; import { ModalHelper } from '@delon/theme'; import { NzModalRef } from 'ng-zorro-antd/modal'; import { BaseService } from 'src/app/shared/services'; @Component({ selector: 'app-dynamic-setting-modal', templateUrl: './dynamic-setting-modal.component.html', styleUrls: ['./dynamic-setting-modal.component.less'] }) export class DynamicSettingModalComponent implements OnInit { tabs: any[] = []; selectedTab: any = null; configList: any = []; @Input() extendType!: string; @Input() businessId!: string; constructor(public service: BaseService, private modalHelp: NzModalRef) {} ngOnInit() { this.getTypeList(); } getTypeList() { this.service .request('/api/mdc/pbc/sysConfigItemExtend/getSysConfigExtend', { configFullKey: 'sys.config', extendType: this.extendType, businessId: this.businessId }) .subscribe((res: Array) => { if (res?.length > 0) { const typeData = res.find(config => config.configFullKey === 'sys.config'); if (typeData) { this.tabs = typeData.children; this.selectedTab = typeData.children[0]; this.configList = this.formatItems(this.selectedTab.items); } } }); } changeType(type: any): void { this.selectedTab = type; this.configList = this.formatItems(type.items); } 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(); } }); } 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 ? JSON.parse(item.itemValue) : item.itemValue })); } return []; } }