Przeglądaj źródła

Merge branch 'master' of http://git.fmode.cn:3000/bin/edu-textbook

cehn 7 miesięcy temu
rodzic
commit
38725f8a96

+ 26 - 18
projects/textbook/src/modules/nav-author/components/basic-in/basic-in.component.html

@@ -77,7 +77,7 @@
           /> -->
 
           <nz-radio-group style="display: flex; flex-direction: column" formControlName="type">
-            <label nz-radio nzValue="单册">单册</label>
+            <label (click)="checkSingle()" nz-radio nzValue="单册">单册</label>
             <div class="basic-row">
               <label (click)="checkAll()" nz-radio nzValue="全册">全册</label>
               @if (validateForm.value.type =='全册') {
@@ -108,29 +108,37 @@
 
 
 
-    <mat-accordion class="example-headers-align" multi>
 
+@if(!loading){
 
+  @if(validateForm.value.type=='全册'){
+    <mat-accordion class="example-headers-align" multi>
 
-      @if(validateForm.value.type=='全册'){
-        @for (item of eduTextbookVolumeList; track $index) {
-        <mat-expansion-panel>
-          <mat-expansion-panel-header>
-            <mat-panel-title>
-              <b>分册{{$index+1}}</b>
-              <span style="margin-left: 20px;" nz-icon nzType="delete"></span>
-            </mat-panel-title>
-          </mat-expansion-panel-header>
-          <app-one #children [eduTextbookId]="eduTextbook?.id" [eduTextbookVolumeId]="item?.objectId"></app-one>
-        </mat-expansion-panel>
-        }
-      }
-      @else {
-        
-        <app-one #children [eduTextbookId]="eduTextbook?.id" [eduTextbookVolumeId]="eduTextbookVolumeList[0]?.objectId"></app-one>
+      @for (item of eduTextbookVolumeList; track $index) {
+      <mat-expansion-panel>
+        <mat-expansion-panel-header>
+          <mat-panel-title>
+            <b>分册{{$index+1}}</b>
+        <span (click)="deleteVolume($index)" style="margin-left: 20px;" nz-icon nzType="delete"></span>
+
+          </mat-panel-title>
+        </mat-expansion-panel-header>
 
+        <app-one #children [eduTextbookId]="eduTextbookId" [eduTextbookVolumeId]="item?.id"></app-one>
+      </mat-expansion-panel>
       }
     </mat-accordion>
+    }
+    @else {
+    @if (singleId) {
+    <app-one #children [eduTextbookId]="eduTextbookId" [eduTextbookVolumeId]="singleId"></app-one>
+    }
+    @if(!singleId){
+    <app-one #children [eduTextbookId]="eduTextbookId" eduTextbookVolumeId=""></app-one>
+    }
+    }
+}
+
 
 
 

+ 66 - 21
projects/textbook/src/modules/nav-author/components/basic-in/basic-in.component.ts

@@ -36,6 +36,7 @@ import { MatIconModule } from '@angular/material/icon';
 import { MatButtonModule } from '@angular/material/button';
 import { provideNativeDateAdapter } from '@angular/material/core';
 import { ViewChildren, QueryList } from '@angular/core';
+import { CreatedService } from '../../../../services/created.service'
 
 @Component({
   selector: 'app-basic',
@@ -77,14 +78,36 @@ export class BasicInComponent implements OnInit {
 
   @ViewChildren(BasicComponent) children: QueryList<BasicComponent> | any;
 
+  /**删除分册 */
+  async deleteVolume(index: any) {
+    console.log('hhhhhh', index)
+    if (this.eduTextbookVolumeList.length <= 2) {
+      this.msg.create('warning', '全册最少两册')
+      return
+    }
+    console.log(this.eduTextbookVolumeList)
+    console.log(this.eduTextbookVolumeList[index])
+    if (this.eduTextbookVolumeList[index]?.id) {
+      this.eduTextbookVolumeList[index]?.set('isDeleted', true)
+      await this.eduTextbookVolumeList[index]?.save()
+      delete this.eduTextbookVolumeList[index]
+      this.typeNumber = this.typeNumber - 1
+    } else {
+      delete this.eduTextbookVolumeList[index]
+      this.typeNumber = this.typeNumber - 1
+    }
+    // this.eduTextbookVolumeList.splice(index, 1)
+
+  }
 
   /**上传分册数据 */
-  async saveEduTextbookVolume() {
+  async saveEduTextbookVolume(eduTextbookId?: any) {
+    console.log(eduTextbookId)
     let arr = [] //存储返回的数组id
     let isVrifly = true //默认都通过,若一项填写未完成,则不通过
     return Promise.all(this.children.map(async (comp: any) => {
       console.log(comp);
-      let req = await comp.saveEduTextbook()
+      let req = await comp.saveEduTextbook(eduTextbookId)
       console.log(req)
       // arr.push(comp.saveEduTextbook())
       //加上子组件返回是否填写完成的方法
@@ -141,18 +164,20 @@ export class BasicInComponent implements OnInit {
     // this.eduTextbook?.set('CIPImgUrl', params.CIPImgUrl);
     this.eduTextbook?.set('approvedImgUrl', params.approvedImgUrl)
     this.eduTextbook?.set('unitType', params.unitType)
-    if(!this.eduTextbook?.get('code')){
+    if (!this.eduTextbook?.get('code')) {
       let t =
-      this.tbookSer.formatTime('YYYYmmdd', new Date()) +
-      Math.random().toString().slice(-4);
+        this.tbookSer.formatTime('YYYYmmdd', new Date()) +
+        Math.random().toString().slice(-4);
       this.eduTextbook.set('code', t);
     }
-    await this.eduTextbook?.save();
-    this.saveEduTextbookVolume()
+    let res = await this.eduTextbook?.save();
+    this.eduTextbookId = await res?.id
+    console.log(res?.id)
+    await this.saveEduTextbookVolume(this.eduTextbookId)
     return
   }
 
-
+  eduTextbookId: string = ''
 
 
 
@@ -162,6 +187,7 @@ export class BasicInComponent implements OnInit {
 
 
   ngAfterViewInit() {
+    this.eduTextbookId = this.eduTextbook?.id
     this.accordion?.openAll()
     this.cdr.detectChanges()
     this.getEduTextbookVolumeList()
@@ -171,10 +197,13 @@ export class BasicInComponent implements OnInit {
   eduTextbookVolumeList: Array<any> = []
   /**获取扩展表记录 */
   async getEduTextbookVolumeList() {
-    console.log(this.validateForm?.value?.type)
-    // if(this.validateForm?.value?.type=='全册'){
+    if (this.typeNumber && this.typeNumber > 12) {
+      this.typeNumber = 12
+    }
+    console.log(this.validateForm?.value?.type, this.typeNumber)
     let query = new Parse.Query('EduTextbookVolume')
     query.equalTo('eduTextbook', this.eduTextbook?.id)
+    // query.equalTo()
     query.select('objectId')
     query.ascending('createdAt')//小到大
     query.notEqualTo('isDeleted', true)
@@ -185,20 +214,36 @@ export class BasicInComponent implements OnInit {
     }
     let list = await query.find()
     console.log(list)
-    this.eduTextbookVolumeList = new Array(this.typeNumber).fill({ objectId: '' })
-    for (let i in list) {
-      this.eduTextbookVolumeList[i] = { objectId: list[i]?.id }
+    if (this.validateForm?.value?.type == '全册') {
+      this.eduTextbookVolumeList = new Array(this.typeNumber).fill({ objectId: '' })
+      for (let i in list) {
+        this.eduTextbookVolumeList[i] = list[i]
+      }
+    } else {
+      this.eduTextbookVolumeList[0] = list[0]
+      console.log(this.eduTextbookVolumeList)
+      this.singleId = list[0]?.id
     }
-    // }
+
+  }
+  singleId: string = ''
+  loading = false
+  async checkSingle() {
+    this.loading = true
+    this.validateForm.get("type")?.setValue('单册')
+    await this.getEduTextbookVolumeList()
+    this.loading = false
+
   }
   /**申报类型选择全册 */
-  checkAll() {
+  async checkAll() {
     this.validateForm.get("type")?.setValue('全册')
 
     this.accordion?.openAll()
     this.getEduTextbookVolumeList()
   }
   ngOnInit() {
+
     if (this.eduTextbook?.get('editionUnit')) {
       this.isShowChooseEU = false
     }
@@ -213,7 +258,7 @@ export class BasicInComponent implements OnInit {
 
     this.approvedImgList[0].url = this.eduTextbook?.get('approvedImgUrl')
     this.typeNumber = this.eduTextbook?.get('typeNumber') || 2
-
+    if (this.typeNumber > 12) this.typeNumber = 12
     // console.log(this.approvedImgList)
     console.log(this.eduTextbook);
     this.validateForm = this.fb.group({
@@ -221,7 +266,7 @@ export class BasicInComponent implements OnInit {
       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]],
+      type: [this.eduTextbook?.get('type') || '册', [Validators.required]],
       // typeNumber: [this.eduTextbook?.get('typeNumber') || 2],
 
       majorPoniter: [this.eduTextbook?.get('majorPoniter')?.code || '', [Validators.required]],
@@ -473,7 +518,8 @@ export class BasicInComponent implements OnInit {
     private fb: NonNullableFormBuilder,
     private modal: NzModalService,
     private msg: NzMessageService,
-    private cdr: ChangeDetectorRef
+    private cdr: ChangeDetectorRef,
+    private creatSev:CreatedService
   ) {
   }
 
@@ -502,6 +548,7 @@ export class BasicInComponent implements OnInit {
       if (event == 'save') {
         let params = this.validateForm.value
         await this.saveEduTextbook(params, this.validateForm.valid)
+        await this.getEduTextbookVolumeList()
         this.modal.success({
           nzTitle: '保存成功',
           nzContent: '<p>已保存并且至空间</p>',
@@ -518,6 +565,7 @@ export class BasicInComponent implements OnInit {
     if (event == 'save') {
       let params = this.validateForm.value
       await this.saveEduTextbook(params, this.validateForm.valid)
+      await this.getEduTextbookVolumeList()
       this.modal.success({
         nzTitle: '保存成功',
         nzContent: '<p>已保存并且至空间</p>',
@@ -527,9 +575,6 @@ export class BasicInComponent implements OnInit {
   }
 
 
-
-
-
   selectedValue = null;
   listOfOption: Array<{ value: string; text: string }> = [];
   nzFilterOption = (): boolean => true;

+ 5 - 4
projects/textbook/src/modules/nav-author/components/create/basic/basic.component.ts

@@ -59,6 +59,7 @@ export class BasicComponent implements OnInit {
   ngOnInit() { }
   /**获取扩展分册记录 */
   async getEduTextbookVolume() {
+    console.log('传递的分册id'+this.eduTextbookVolumeId)
     if (this.eduTextbookVolumeId) {
       let query = new Parse.Query('EduTextbookVolume')
       this.eduTextbookVolume = await query.get(this.eduTextbookVolumeId)
@@ -99,9 +100,9 @@ export class BasicComponent implements OnInit {
       unitType: [this.eduTextbookVolume?.get('unitType') || '', [Validators.required]],
     });
   }
-  async saveEduTextbook() {
-    console.log('执行了分册组件的save方法')
-    if(!this.eduTextbookId){
+  async saveEduTextbook(eduTextbookId?:any) {
+    console.log('执行了分册组件的save方法',eduTextbookId)
+    if((!this.eduTextbookId)&&(!eduTextbookId)){
       this.msg.create('error','出错了,教材id未获取')
       return
     }
@@ -115,7 +116,7 @@ export class BasicComponent implements OnInit {
     this.eduTextbookVolume?.set('eduTextbook',{
       __type: 'Pointer',
       className: 'EduTextbook',
-      objectId: this.eduTextbookId,
+      objectId: this.eduTextbookId||eduTextbookId,
     })
     this.eduTextbookVolume?.set('user', Parse.User.current()?.toPointer());
     this.eduTextbookVolume?.set('ISBN', (params.ISBN || 0).toString());

+ 58 - 1
projects/textbook/src/modules/nav-author/components/textbook-content/textbook-content.component.ts

@@ -16,6 +16,9 @@ import {
   Validators,
 } from '@angular/forms';
 import { textbookServer } from '../../../../services/textbook';
+import { CreatedService } from '../../../../services/created.service'
+
+
 interface course {
   date: Date|any,
   wordage: number|any,
@@ -65,11 +68,65 @@ export class TextbookContentComponent  implements OnInit {
     public tbookSer: textbookServer,
     private fb: NonNullableFormBuilder,
     private modal: NzModalService,
-    private msg: NzMessageService
+    private msg: NzMessageService,
+    private creatSev:CreatedService
   ) { }
 
+
+ /**扩展表记录 */
+ eduTextbookVolumeList: Array<any> = []
+ /**获取扩展表记录 */
+ async getEduTextbookVolumeList() {
+   if (this.typeNumber && this.typeNumber > 12) {
+     this.typeNumber = 12
+   }
+   console.log(this.type, this.typeNumber)
+   let query = new Parse.Query('EduTextbookVolume')
+   query.equalTo('eduTextbook', this.eduTextbook?.id)
+   query.select('objectId')
+   query.ascending('createdAt')//小到大
+   query.notEqualTo('isDeleted', true)
+   if (this.type == '全册') {
+     query.limit(this.typeNumber)
+   } else {
+     query.limit(1)
+   }
+   let list = await query.find()
+   console.log(list)
+   if (this.type == '全册') {
+     this.eduTextbookVolumeList = new Array(this.typeNumber).fill({ objectId: '' })
+     for (let i in list) {
+       this.eduTextbookVolumeList[i] = list[i]
+     }
+   } else {
+     this.eduTextbookVolumeList[0] = list[0]
+     console.log(this.eduTextbookVolumeList)
+   }
+
+ }
+ /** 册数*/
+ typeNumber:any
+ /** 申报类型*/
+ type:any
+
+
+
+  ngAfterViewInit(): void {
+    this.typeNumber = this.eduTextbook?.get('typeNumber')
+    this.type = this.eduTextbook?.get('type')
+    this.getEduTextbookVolumeList()
+    this.creatSev.getEduTextbookVolumeList(this.eduTextbook.id)
+  }
+
+  
   ngOnInit() {
     if (this.eduTextbook.id) {
+
+      this.creatSev.type=this.eduTextbook.get('type')
+      this.creatSev.typeNumber=this.eduTextbook.get('typeNumber')
+
+
+
       this.validateForm = this.fb.group({
         innovateExplain: [this.eduTextbook.get('innovateExplain'), [Validators.required]],
         influence: [this.eduTextbook.get('influence'), [Validators.required]],

+ 16 - 0
projects/textbook/src/services/created.service.spec.ts

@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+
+import { CreatedService } from './created.service';
+
+describe('CreatedService', () => {
+  let service: CreatedService;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({});
+    service = TestBed.inject(CreatedService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+});

+ 48 - 0
projects/textbook/src/services/created.service.ts

@@ -0,0 +1,48 @@
+import { Injectable } from '@angular/core';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class CreatedService {
+
+  constructor() { }
+
+
+ /** 册数*/
+ typeNumber:any
+ /** 申报类型*/
+ type:any
+
+  
+ /**扩展表记录 */
+ eduTextbookVolumeList: Array<any> = []
+ /**获取扩展表记录 */
+ async getEduTextbookVolumeList(eduTextbook:any) {
+  console.log('服务获取扩展记录表')
+   if (this.typeNumber && this.typeNumber > 12) {
+     this.typeNumber = 12
+   }
+   console.log(this.type, this.typeNumber)
+   let query = new Parse.Query('EduTextbookVolume')
+   query.equalTo('eduTextbook', eduTextbook)
+   query.select('objectId')
+   query.ascending('createdAt')//小到大
+   query.notEqualTo('isDeleted', true)
+   if (this.type == '全册') {
+     query.limit(this.typeNumber)
+   } else {
+     query.limit(1)
+   }
+   let list = await query.find()
+   console.log(list)
+   if (this.type == '全册') {
+     this.eduTextbookVolumeList = new Array(this.typeNumber).fill({ objectId: '' })
+     for (let i in list) {
+       this.eduTextbookVolumeList[i] = list[i]
+     }
+   } else {
+     this.eduTextbookVolumeList[0] = list[0]
+     console.log(this.eduTextbookVolumeList)
+   }
+ }
+}