import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { languages } from '../../../../services/languages.map'; import { CommonCompModule } from '../../../../services/common.modules'; import { NzSelectModule } from 'ng-zorro-antd/select'; import { ReactiveFormsModule } from '@angular/forms'; import { NzRadioModule } from 'ng-zorro-antd/radio'; import { NzUploadModule } from 'ng-zorro-antd/upload'; import { NzTagModule } from 'ng-zorro-antd/tag'; import { NzMessageService } from 'ng-zorro-antd/message'; import { NzModalService } from 'ng-zorro-antd/modal'; import { textbookServer } from '../../../../services/textbook' import Parse from 'parse'; import { FormControl, FormGroup, NonNullableFormBuilder, Validators, } from '@angular/forms'; import { CompUploadComponent } from '../../../../app/comp-upload/comp-upload.component'; import { NzInputModule } from 'ng-zorro-antd/input'; import * as major from '../../../../services/majors4.map' import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; import { BasicComponent } from '../create/basic/basic.component'; import { ChangeDetectorRef } from '@angular/core'; import { ViewChild } from '@angular/core'; import { MatAccordion, MatExpansionModule } from '@angular/material/expansion'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatInputModule } from '@angular/material/input'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatIconModule } from '@angular/material/icon'; import { MatButtonModule } from '@angular/material/button'; import { provideNativeDateAdapter } from '@angular/material/core'; @Component({ selector: 'app-basic', imports: [ CommonCompModule, ReactiveFormsModule, NzSelectModule, NzRadioModule, NzUploadModule, NzInputModule, NzTagModule, CompUploadComponent, NzCheckboxModule, BasicComponent, MatButtonModule, MatExpansionModule, MatIconModule, MatFormFieldModule, MatInputModule, MatDatepickerModule, ], standalone: true, templateUrl: './basic-in.component.html', styleUrls: ['./basic-in.component.scss'], providers: [provideNativeDateAdapter()], }) export class BasicInComponent implements OnInit { @Input('eduTextbook') eduTextbook: Parse.Object | any; @Input('editFrom') editFrom: any; @Output() state: EventEmitter = new EventEmitter(); @Output() save: EventEmitter = new EventEmitter(); @ViewChild(MatAccordion) accordion: MatAccordion | any; ngAfterViewInit() { this.accordion?.openAll() this.cdr.detectChanges() } changeCode() { } getCode(e: any) { } /***教材获批截图 */ approvedImgList: Array = [{ name: '获批截图', status: 'done', url: '' }] /** * 书号自动补全函数 * @param isbn 书号 */ async autoCompleteByISBN() { let isbn = this.validateForm.value?.ISBN; let result = await Parse.Cloud.run("tbookISBN", { isbn: isbn }) if (!result?.isbn) { this.msg.warning('未找到该书号的图书信息,请手动填写') } // 其他字段,需补充接口与数据库对应关系 this.validateForm.get("title")?.setValue(result?.book_name) this.validateForm.get("author")?.setValue(result?.author_name) this.validateForm.get("authors")?.setValue(result?.author) this.validateForm.get("majorPoniter")?.setValue(result?.major) this.validateForm.get("lang")?.setValue(languages.options?.[result?.languages]?.name) this.validateForm.get("editionUnit")?.setValue(result?.publisher) this.validateForm.get("editionDate")?.setValue(new Date(result?.publish_time)) this.validateForm.get("carrierShape")?.setValue(result?.publication_class) console.log(result) } /**出版时间及版次不可选择时间 */ disabledEditionDate = (current: Date): boolean => { return current < new Date(2022, 11, 1) } /**扩展表记录 */ eduTextbookVolumeValidList: Array = [] /** 全册次数*/ typeNumber: number = 2 typeNumberChange() { if (this.typeNumber < 2) { this.msg.create('warning', '不得小于两册') this.typeNumber = 2 } else { } this.eduTextbookVolumeValidList = [] // for (let i = 1; i++; i <= this.typeNumber) { // this.eduTextbookVolumeValidList.push(false) // } this.eduTextbookVolumeValidList=new Array(this.typeNumber-1).fill(false) console.log(this.eduTextbookVolumeValidList) } validateForm: FormGroup<{ title: FormControl; //申报教材名称 ISBN: FormControl; //国际标准书号 author: FormControl; //第一主编(作者) unit: FormControl; //第一主编(作者)单位 unitType: FormControl//第一主编(作者)单位类型 type: FormControl; //申报类型 // typeNumber: FormControl; //全册次数 majorPoniter: FormControl; //教材应用对象及所诉学科专业类 lang: FormControl; //教材主要语种类型 authors: FormControl; //其他主编姓名 editor: FormControl; //其他编者姓名 approval: FormControl; //是否为重点立项教材 editionUnit: FormControl; //出版单位 editionFirst: FormControl; //初版时间 carrierShape: FormControl; //载体形式 editionDate: FormControl; //出版时间 editionNumber: FormControl; //出版版次 printDate: FormControl; //最新印次时间 printNumber: FormControl; //最新印次 printSum: FormControl; //初版以来合计印数 // importantProject: FormControl; //初版以来是否列为重点项目 importantProjectOther: FormControl; //其他省部级及以上项目 approvedImgUrl: FormControl//重点立项教材获批截图 // remember: FormControl; }> = this.fb.group({ title: ['', [Validators.required]], ISBN: [null, [Validators.required]], author: ['', [Validators.required]], unit: ['', [Validators.required]], type: ['', [Validators.required]], // typeNumber: [2], majorPoniter: ['', [Validators.required]], lang: ['', [Validators.required]], authors: [''], editor: [''], approval: ['', [Validators.required]], editionUnit: ['', [Validators.required]], editionFirst: [new Date(), [Validators.required]], carrierShape: ['', [Validators.required]], editionDate: [new Date(), [Validators.required]], editionNumber: [0, [Validators.required]], printDate: [new Date(), [Validators.required]], printNumber: [0, [Validators.required]], printSum: [0, [Validators.required]], // importantProject: ['', [Validators.required]], importantProjectOther: [''], approvedImgUrl: [''], // copyrightImgUrl: [''], // CIPImgUrl: [''], // remember: [true], unitType: ['', [Validators.required]], }); /** 所属学科专业类显示数量*/ nzOptionOverflowSize = 5 //教材应用对象及所诉学科专业类 selectList = major.majors.options //语言选择 selectLang: Array = languages.options; //可选单位类型 unitSelects: Array = [ { name: '部属高校', code: '部属高校', }, { name: '部省合建高校', code: '部省合建高校', }, { name: '省部共建高校', code: '省部共建高校', }, { name: '其他', code: '其他', }, ]; //载体形式 carrierOptions: Array = [ { name: '纸质教材', code: 'Z001', }, { name: '电子教材', code: 'Z002', }, { name: '纸质教材附带电子资源', code: 'Z003', }, ]; /**可选的重点项目 */ importantProjectList: Array = [ { label: '首届全国教材建设奖全国优秀教材(高等教育类)', value: '首届全国教材建设奖全国优秀教材(高等教育类)', checked: false }, { label: '“十二五”普通高等教育本科国家级规划教材', value: '“十二五”普通高等教育本科国家级规划教材', checked: false }, { label: '“十二五”以来省级优秀教材', value: '“十二五”以来省级优秀教材', checked: false }, { label: '“十二五”以来省级规划教材', value: '“十二五”以来省级规划教材', checked: false }, { label: '其他省部级及以上项目', value: '其他省部级及以上项目', checked: false }, ]; /**选中的重点项目 */ importantProject: Array = [] /**多选框改变 */ changeImportantProject() { let checkedList = this.importantProjectList.filter(item => item.checked) || [] this.importantProject = checkedList.map(item => item.value) console.log(this.importantProject) } /* 是否重点立项教材可选列表 */ options: Array = [ { name: '经中央有关部门审定的教材', code: '经中央有关部门审定的教材', }, { name: '首届全国教材建设奖优秀教材(高等教育类)教材', code: '首届全国教材建设奖优秀教材(高等教育类)教材', }, { name: '“101计划”核心教材', code: '“101计划”核心教材', }, { name: '“四新”重点建设教材(含战略性新兴领域教材)', code: '“四新”重点建设教材(含战略性新兴领域教材)', }, { name: '否', code: '否', } ]; constructor( public tbookSer: textbookServer, private fb: NonNullableFormBuilder, private modal: NzModalService, private msg: NzMessageService, private cdr: ChangeDetectorRef ) { } isShowChooseEU: boolean = true ngOnInit() { if (this.eduTextbook?.get('editionUnit')) { this.isShowChooseEU = false } this.importantProject = this.eduTextbook?.get('importantProject') || [] if (this.importantProject?.length > 0) { for (let i in this.importantProjectList) { if (this.importantProject.indexOf(this.importantProjectList[i].value) != -1) { this.importantProjectList[i].checked = true } } } this.approvedImgList[0].url = this.eduTextbook?.get('approvedImgUrl') this.typeNumber = this.eduTextbook?.get('typeNumber') || 2 this.eduTextbookVolumeValidList=new Array(this.typeNumber-1).fill(false) console.log(this.eduTextbookVolumeValidList) // console.log(this.approvedImgList) console.log(this.eduTextbook); this.validateForm = this.fb.group({ title: [this.eduTextbook?.get('title') || '', [Validators.required]], ISBN: [parseInt(this.eduTextbook?.get('ISBN') || '') || null, [Validators.required]], author: [this.eduTextbook?.get('author') || '', [Validators.required]], unit: [this.eduTextbook?.get('unit') || '', [Validators.required]], type: [this.eduTextbook?.get('type') || '全册', [Validators.required]], // typeNumber: [this.eduTextbook?.get('typeNumber') || 2], majorPoniter: [this.eduTextbook?.get('majorPoniter')?.code || '', [Validators.required]], lang: [this.eduTextbook?.get('lang') || '', [Validators.required]], authors: [this.eduTextbook?.get('authors') || ''], editor: [this.eduTextbook?.get('editor') || '',], approval: [this.eduTextbook?.get('approval') || '', [Validators.required]], editionUnit: [this.eduTextbook?.get('editionUnit') || '', [Validators.required]], editionFirst: [this.eduTextbook?.get('editionFirst') || new Date(), [Validators.required]], carrierShape: [this.eduTextbook?.get('carrierShape') || '', [Validators.required]], editionDate: [this.eduTextbook?.get('editionDate') || new Date(), [Validators.required]], editionNumber: [this.eduTextbook?.get('editionNumber') || 0, [Validators.required]], printDate: [this.eduTextbook?.get('printDate') || new Date(), [Validators.required]], printNumber: [this.eduTextbook?.get('printNumber') || 0, [Validators.required]], printSum: [this.eduTextbook?.get('printSum') || 0, [Validators.required]], // importantProject: [this.eduTextbook?.get('importantProject') || '', [Validators.required]], importantProjectOther: [this.eduTextbook?.get('importantProjectOther') || ''], approvedImgUrl: [this.eduTextbook?.get('approvedImgUrl') || ''], unitType: [this.eduTextbook?.get('unitType') || '', [Validators.required]], // copyrightImgUrl: [this.eduTextbook?.get('copyrightImgUrl') || '', [Validators.required]], // CIPImgUrl: [this.eduTextbook?.get('CIPImgUrl') || '', [Validators.required]], }); } upload(e: any, type: string) { console.log(e); let file = e[0]; // if(type == 'copyrightImgUrl' || type == 'CIPImgUrl' ||type=='approvedImgUrl'){ if (type == 'approvedImgUrl') { this.validateForm.value[type] = file?.url } console.log(this.validateForm.value) } async submitForm(event?: string): Promise { console.log(this.validateForm.value); console.log(this.validateForm.valid); if (this.validateForm.valid) { let params = this.validateForm.value if (event == 'next') { await this.saveEduTextbook(params, this.validateForm.valid) this.state.emit({ type: 'next', textBook: this.eduTextbook }); } } else { if (event == 'save') { let params = this.validateForm.value await this.saveEduTextbook(params, this.validateForm.valid) this.modal.success({ nzTitle: '保存成功', nzContent: '

已保存并且至空间

', nzOnOk: () => console.log('Info OK') }); return } if (event == 'next') { let params = this.validateForm.value await this.saveEduTextbook(params, this.validateForm.valid) this.state.emit({ type: 'next', textBook: this.eduTextbook }); } } if (event == 'save') { let params = this.validateForm.value await this.saveEduTextbook(params, this.validateForm.valid) this.modal.success({ nzTitle: '保存成功', nzContent: '

已保存并且至空间

', nzOnOk: () => console.log('Info OK') }); } } async saveEduTextbook(params: any, isComplete: boolean) { this.changeImportantProject() console.log(params); if (!this.eduTextbook) { let obj = Parse.Object.extend('EduTextbook'); this.eduTextbook = new obj(); } //如果填写未完整,仅保存,状态修改待完善101 if (this.eduTextbook.get('status') == '102' && !isComplete) { this.eduTextbook?.set('status', '101'); this.eduTextbook.set('complete', false) } else if (!this.eduTextbook.get('status')) { this.eduTextbook?.set('status', '101'); } this.eduTextbook?.set('user', Parse.User.current()?.toPointer()); this.eduTextbook?.set('company', { __type: 'Pointer', className: 'Company', objectId: this.tbookSer.company, }); this.eduTextbook?.set('title', params.title); this.eduTextbook?.set('ISBN', (params.ISBN || 0).toString()); this.eduTextbook?.set('author', params.author); this.eduTextbook?.set('unit', params.unit); this.eduTextbook?.set('type', params.type); // this.eduTextbook?.set('typeNumber', params.typeNumber); this.eduTextbook?.set('typeNumber', this.typeNumber); let majorPoniter = this.selectList.find((item) => item.code == params.majorPoniter); this.eduTextbook?.set('majorPoniter', majorPoniter); this.eduTextbook?.set('lang', params.lang); this.eduTextbook?.set('authors', params.authors); this.eduTextbook?.set('editor', params.editor); this.eduTextbook?.set('approval', params.approval); this.eduTextbook?.set('editionUnit', params.editionUnit); this.eduTextbook?.set('editionFirst', params.editionFirst); this.eduTextbook?.set('carrierShape', params.carrierShape); this.eduTextbook?.set('editionDate', params.editionDate); this.eduTextbook?.set('editionNumber', params.editionNumber); this.eduTextbook?.set('printDate', params.printDate); this.eduTextbook?.set('printNumber', params.printNumber); this.eduTextbook?.set('printSum', params.printSum); // this.eduTextbook?.set('importantProject', params.importantProject); this.eduTextbook?.set('importantProject', this.importantProject); this.eduTextbook?.set('importantProjectOther', params.importantProjectOther); // this.eduTextbook?.set('copyrightImgUrl', params.copyrightImgUrl); // this.eduTextbook?.set('CIPImgUrl', params.CIPImgUrl); this.eduTextbook?.set('approvedImgUrl', params.approvedImgUrl) this.eduTextbook?.set('unitType', params.unitType) await this.eduTextbook?.save(); return } selectedValue = null; listOfOption: Array<{ value: string; text: string }> = []; nzFilterOption = (): boolean => true; eduTimeout: any /**出版单位列表 */ eduList: Array = [] /**搜索出版单位 */ async search(value: string) { clearTimeout(this.eduTimeout) this.eduTimeout = setTimeout(async () => { let query = new Parse.Query('Department') query.notEqualTo('isDeleted', true) query.equalTo('parent', '66865d66ad23a23355b12aa7') query.contains('name', value) query.limit(10) this.eduList = await query.find() }, 500); } openFile(url: any) { window.open(url) } }