import { Component, OnInit, ViewChild } from '@angular/core'; import { SFComponent, SFSchema, SFUploadWidgetSchema } from '@delon/form'; import { Observable, Observer } from 'rxjs'; import { SystemService } from '../../services/system.service'; @Component({ selector: 'app-system-config', templateUrl: './system-config.component.html', styleUrls: ['./system-config.component.less'] }) export class SystemConfigComponent implements OnInit { @ViewChild('sf', { static: false }) sf!: SFComponent; formDate: any = { isAudit: false, isEveryDay: false, isEveryWeek: false }; tabs = [ { name: '货主端配置' }, { name: '司机端配置' } ]; selectedTab = 0; checkOptionsOne = [ { label: '周一', value: '周一', checked: true }, { label: '周二', value: '周二' }, { label: '周三', value: '周三' }, { label: '周四', value: '周四' }, { label: '周五', value: '周五' }, { label: '周六', value: '周六' }, { label: '周日', value: '周日' } ]; i: any; schema!: SFSchema; schema2!: SFSchema; imageConfig = { widget: 'upload', action: `/scm/cms/cms/upload/multipartFile/fileModel`, limit: 1, limitFileCount: 1, resReName: 'url', urlReName: 'url', data: { appId: this.service.envSrv.getEnvironment().appId }, multiple: false, listType: 'picture-card', showRequired: true }; constructor(private service: SystemService) {} ngOnInit() { this.initSF(); } changeType(type: number): void { this.selectedTab = type; } initSF() { this.schema = { properties: { sysMinLogo: { type: 'string', title: '系统LOGO(大)', // enum: [], ui: { ...this.imageConfig, descriptionI18n: '大尺寸logo,支持JPG、PNG格式,文件小于2M(建议尺寸300*170px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, 'sysMinLogo'); this.sf?.setValue('/sysMinLogo', avatar); this.i.sysMinLogo = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo: { type: 'string', title: '用户默认头像', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸60*60px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo', avatar); this.i.sysMaxLogo = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo1: { type: 'string', title: '用户默认头像', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于5M(建议尺寸375*773px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo1', avatar); this.i.sysMaxLogo1 = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, }, required: ['sysMinLogo', 'sysMaxLogo', 'sysMaxLogo1'] }; this.schema2 = { properties: { sysMinLogo: { type: 'string', title: '系统LOGO(小)', // enum: [], ui: { ...this.imageConfig, descriptionI18n: '小尺寸logo,支持JPG、PNG格式,文件小于2M(建议尺寸32*32px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, 'sysMinLogo'); this.sf?.setValue('/sysMinLogo', avatar); this.i.sysMinLogo = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo: { type: 'string', title: '系统LOGO(大)', ui: { ...this.imageConfig, descriptionI18n: '小尺寸logo,支持JPG、PNG格式,文件小于2M(建议尺寸32*32px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo', avatar); this.i.sysMaxLogo = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo1: { type: 'string', title: '用户默认头像', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸60*60px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo1', avatar); this.i.sysMaxLogo1 = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo2: { type: 'string', title: '企业默认头像', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于2M(建议尺寸60*60px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo2', avatar); this.i.sysMaxLogo2 = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo3: { type: 'string', title: '货主PC端登陆页海报', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于5M(建议尺寸1920*630px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo3', avatar); this.i.sysMaxLogo3 = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, sysMaxLogo4: { type: 'string', title: 'APP开屏海报', ui: { ...this.imageConfig, descriptionI18n: '支持JPG、PNG格式,文件小于5M(建议尺寸375*773px)。', change: args => { if (args.type === 'success') { const avatar = this.getImageModel(args, -1); this.sf?.setValue('/sysMaxLogo4', avatar); this.i.sysMaxLogo4 = avatar; } }, beforeUpload: this.uploadBefore } as SFUploadWidgetSchema }, }, required: ['sysMinLogo', 'sysMaxLogo', 'sysMaxLogo1', 'sysMaxLogo2', 'sysMaxLogo3', 'sysMaxLogo4'] }; } private uploadBefore = (file: any, fileList: any) => { return new Observable((observer: Observer) => { const isLt1M = file.size / 1024 / 1024 < 2; const fileType = 'image/png,image/jpeg'; if (fileType.indexOf(file.type) === -1) { this.service.msgSrv.warning('图片格式不正确!'); observer.complete(); return; } if (!isLt1M) { // this.service.msgSrv.warning('图片需小于1M'); this.service.msgSrv.warning('图片大小超过2M!'); observer.complete(); return; } observer.next(isLt1M); observer.complete(); }); }; private getImageModel(args: any, key: any) { return [ { uid: key, name: 'LOGO', status: 'done', url: args.fileList[0].response.url, response: { url: args.fileList[0].response.url } } ]; } }