Explorar o código

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

ryanemax hai 3 semanas
pai
achega
9dd7ceb13d

+ 223 - 148
projects/textbook/src/modules/nav-author/components/attachment/attachment.component.html

@@ -1,13 +1,14 @@
 <div class="entry">
   <!-- <form nz-form [formGroup]="validateForm" class="login-form" (ngSubmit)="submitForm()"> -->
 
-
-
   <div class="author-content">
     <div class="title">1.所有作者政治审查意见(必须提供 )</div>
     <div class="text">
-      <span style="color: red;">*</span>
-      从本申报平台 <a (click)="downloadFile('教材编写人员政治审查表.docx')">下载格式要求</a> 后,对应作者姓名上传“作者政治审查表” PDF 格式,大小不超过 2M。所有作者均需由所在单位党委提供政治审查意见,并由单位党委(如学校党委)盖章。民主党派或无党派作者也由单位党委出具。退休、去世的作者由原单位出具。外籍作者、无单位的作者由国内的聘用单位或邀请其编写教材的单位(如第一主编单位)出具。如教材有编委会,出现在申报版次教材封面(含内外封)、版权页、扉页的编委会成员(包括主审等),均需提供其所在单位一级党委出具政审意见;对于教材辅文(序、前言、后记等)中出现的编委会等其他人员,由出版社提供审查说明,内容包括有关人员在本版教材中的作用,是否存在违法违纪记录或师德师风问题等。编委会等其他人员的政治审查表合并后上传至各册“其他编者”项。
+      <span style="color: red">*</span>
+      从本申报平台
+      <a (click)="downloadFile('教材编写人员政治审查表.docx')">下载格式要求</a>
+      后,对应作者姓名上传“作者政治审查表” PDF 格式,大小不超过
+      2M。所有作者均需由所在单位党委提供政治审查意见,并由单位党委(如学校党委)盖章。民主党派或无党派作者也由单位党委出具。退休、去世的作者由原单位出具。外籍作者、无单位的作者由国内的聘用单位或邀请其编写教材的单位(如第一主编单位)出具。如教材有编委会,出现在申报版次教材封面(含内外封)、版权页、扉页的编委会成员(包括主审等),均需提供其所在单位一级党委出具政审意见;对于教材辅文(序、前言、后记等)中出现的编委会等其他人员,由出版社提供审查说明,内容包括有关人员在本版教材中的作用,是否存在违法违纪记录或师德师风问题等。编委会等其他人员的政治审查表合并后上传至各册“其他编者”项。
       <!-- 从本申报平台
       <a (click)="downloadFile('教材编写人员政治审查表.docx')">下载格式要求</a>
       后,对应作者姓名上传“作者政治审查表”,支持 PDF、JPG、JPEG、PNG 格式,大小不超过 2M。作者单位党委对作者进行审查,对政治思想表现情况进行评价,确保作者的正确政治方向、价值取向,无违法违纪等记录。
@@ -79,67 +80,79 @@
       </tbody>
     </nz-table> -->
     @if (eduTextbook?.get('type')=='全册') {
-      <nz-collapse [nzBordered]="false">
-        @for (panel of eduTextbook?.get('childrens'); track panel) {
-        <nz-collapse-panel
-          #p
-          [nzHeader]="title"
-          [nzActive]="false"
-          nzExpandedIcon="caret-right"
-          style="
-            background: #f7f7f7;
-            border-radius: 4px;
-            margin-bottom: 24px;
-            border: 0px;
-          "
-        >
-          <ng-template #title>
-            <span class="panel-title">{{ "分册" + ($index + 1) }}</span>
-          </ng-template>
-          <div class="">
-            <app-author-file
-              #children
-              [eduTextbook]="eduTextbook?.id"
-              [eduTextbookVolume]="panel"
-            ></app-author-file>
-          </div>
-          <ng-template #expandedIcon let-active>
-            {{ active }}
-            <span
-              nz-icon
-              nzType="caret-right"
-              class="ant-collapse-arrow"
-              [nzRotate]="p.nzActive ? 90 : -90"
-            ></span>
-          </ng-template>
-        </nz-collapse-panel>
-        }
-      </nz-collapse>
-      } @else {
-      <app-author-file
-        #children
-        [eduTextbookVolume]="eduTextbook?.get('childrens')[0]"
-      ></app-author-file>
+    <nz-collapse [nzBordered]="false">
+      @for (panel of eduTextbook?.get('childrens'); track panel) {
+      <nz-collapse-panel
+        #p
+        [nzHeader]="title"
+        [nzActive]="false"
+        nzExpandedIcon="caret-right"
+        style="
+          background: #f7f7f7;
+          border-radius: 4px;
+          margin-bottom: 24px;
+          border: 0px;
+        "
+      >
+        <ng-template #title>
+          <span class="panel-title">{{ "分册" + ($index + 1) }}</span>
+        </ng-template>
+        <div class="">
+          <app-author-file
+            #children
+            [eduTextbook]="eduTextbook?.id"
+            [eduTextbookVolume]="panel"
+          ></app-author-file>
+        </div>
+        <ng-template #expandedIcon let-active>
+          {{ active }}
+          <span
+            nz-icon
+            nzType="caret-right"
+            class="ant-collapse-arrow"
+            [nzRotate]="p.nzActive ? 90 : -90"
+          ></span>
+        </ng-template>
+      </nz-collapse-panel>
       }
+    </nz-collapse>
+    } @else {
+    <app-author-file
+      #children
+      [eduTextbookVolume]="eduTextbook?.get('childrens')[0]"
+    ></app-author-file>
+    }
   </div>
- 
+
   <div class="author-content">
     <div class="title">2.图书编校质量自查结果记录表(必须提供)</div>
     <div class="text">
       教材出版单位对申报教材的编校质量自查后,按要求提供图书编校质量自查结果记录表,并加盖出版社公章。全册教材的不同分册以不同文件分别上传。<a
-        (click)="downloadFile('图书编校质量自查结果记录表.docx')">下载格式要求</a>
+        (click)="downloadFile('图书编校质量自查结果记录表.docx')"
+        >下载格式要求</a
+      >
     </div>
     <nz-form-item class="row" style="margin-bottom: 16px">
-      <nz-form-label class="label" [nzNoColon]="true" [nzSm]="10" [nzXs]="10" nzRequired>上传图书编校质量自查结果记录表</nz-form-label>
-      <nz-form-control class="val" nzErrorTip="请上图书编校质量自查结果记录表" style="width: 100%">
-        @if (selfResults?.url) {
-        <a style="color: #3e49b3;" (click)="openFile(selfResults?.url)">
-          <span nz-icon nzType="file" nzTheme="outline"></span>
-          自查结果记录表
-        </a>
-        }
-        <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'selfResults')"
-          title="上传文件"></app-comp-upload>
+      <nz-form-label
+        class="label"
+        [nzNoColon]="true"
+        [nzSm]="10"
+        [nzXs]="10"
+        nzRequired
+        >上传图书编校质量自查结果记录表</nz-form-label
+      >
+      <nz-form-control
+        class="val"
+        nzErrorTip="请上图书编校质量自查结果记录表"
+        style="width: 100%"
+      >
+        <app-comp-upload
+          [files]="selfResults?.url ? [selfResults] : []"
+          [type]="'pdf'"
+          [width]="320"
+          (change)="upload($event, 'selfResults')"
+          title="上传文件"
+        ></app-comp-upload>
         <div class="text upText" style="margin: 10px 0">
           支持上传PDF,大小不超过 2M
         </div>
@@ -147,14 +160,17 @@
     </nz-form-item>
   </div>
   <div class="author-content">
-    <div class="title">3.专家审查意见表(必须提供)
-      <span nz-popover 
+    <div class="title">
+      3.专家审查意见表(必须提供)
+      <span
+        nz-popover
         [nzPopoverContent]="expertOpinionTemplate"
-        nzPopoverPlacement="top" 
-        class="exclamation-circle" 
-        nz-icon 
-        nzType="exclamation-circle" 
-        nzTheme="outline">
+        nzPopoverPlacement="top"
+        class="exclamation-circle"
+        nz-icon
+        nzType="exclamation-circle"
+        nzTheme="outline"
+      >
       </span>
     </div>
     <ng-template #expertOpinionTemplate>
@@ -163,7 +179,9 @@
       </div>
     </ng-template>
     <div class="text">
-      从本申报平台 <a (click)="downloadFile('专家审查意见表.docx')">下载格式要求</a> 后,由第一主编所在单位或出版机构邀请校内外相关学科专业领域专家,
+      从本申报平台
+      <a (click)="downloadFile('专家审查意见表.docx')">下载格式要求</a>
+      后,由第一主编所在单位或出版机构邀请校内外相关学科专业领域专家,
       对教材进行思想性、学术性审查。专家不少于 3 名,其中半数以上为校外专家,
       专家分别实名评价并签字,并注明所在单位及专业身份。评价人不得是本教材的作者。
       <!-- 从本申报平台 <a (click)="downloadFile('专家审查意见表.docx')">下载格式要求</a> 后,对应作者姓名上传“作者政治审查表” PDF 格式,大小不超过 2M。作者单位党委对作者进行审查,对政治思想表现情况进行评价,
@@ -175,16 +193,26 @@
       <a (click)="downloadFile('专家审查意见表.docx')">下载模板</a> -->
     </div>
     <nz-form-item class="row" style="margin-bottom: 16px">
-      <nz-form-label class="label" [nzNoColon]="true" [nzSm]="10" [nzXs]="10" nzRequired>上传专家审查意见表</nz-form-label>
-      <nz-form-control class="val" nzErrorTip="请上传专家审查意见表" style="width: 100%">
-        @if (expertOpinion?.url) {
-        <a style="color: #3e49b3;" (click)="openFile(expertOpinion?.url)">
-          <span nz-icon nzType="file" nzTheme="outline"></span>
-          专家审查意见表
-        </a>
-        }
-        <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'expertOpinion')"
-          title="上传文件"></app-comp-upload>
+      <nz-form-label
+        class="label"
+        [nzNoColon]="true"
+        [nzSm]="10"
+        [nzXs]="10"
+        nzRequired
+        >上传专家审查意见表</nz-form-label
+      >
+      <nz-form-control
+        class="val"
+        nzErrorTip="请上传专家审查意见表"
+        style="width: 100%"
+      >
+        <app-comp-upload
+          [files]="expertOpinion?.url ? [expertOpinion] : []"
+          [type]="'pdf'"
+          [width]="320"
+          (change)="upload($event, 'expertOpinion')"
+          title="上传文件"
+        ></app-comp-upload>
         <div class="text upText" style="margin: 10px 0">
           支持上传PDF,大小不超过 2M
         </div>
@@ -198,16 +226,26 @@
       <!-- <a (click)="downloadFile('专家审查意见表.docx')">下载模板</a> -->
     </div>
     <nz-form-item class="row" style="margin-bottom: 16px">
-      <nz-form-label class="label" [nzNoColon]="true" [nzSm]="10" [nzXs]="10" nzRequired>教材使用情况证明材料</nz-form-label>
-      <nz-form-control class="val" nzErrorTip="请上教材使用情况证明材料" style="width: 100%">
-        @if (evidence?.url) {
-        <a style="color: #3e49b3;" (click)="openFile(evidence?.url)">
-          <span nz-icon nzType="file" nzTheme="outline"></span>
-          证明材料
-        </a>
-        }
-        <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'evidence')"
-          title="上传文件"></app-comp-upload>
+      <nz-form-label
+        class="label"
+        [nzNoColon]="true"
+        [nzSm]="10"
+        [nzXs]="10"
+        nzRequired
+        >教材使用情况证明材料</nz-form-label
+      >
+      <nz-form-control
+        class="val"
+        nzErrorTip="请上教材使用情况证明材料"
+        style="width: 100%"
+      >
+        <app-comp-upload
+          [files]="evidence?.url ? [evidence] : []"
+          [type]="'pdf'"
+          [width]="320"
+          (change)="upload($event, 'evidence')"
+          title="上传文件"
+        ></app-comp-upload>
         <div class="text upText" style="margin: 10px 0">
           支持上传PDF,大小不超过 2M
         </div>
@@ -216,18 +254,35 @@
   </div>
   <div class="author-content">
     <div class="title">5.版权信息及CIP数据(必须提供)</div>
-    <div class="text">全册中有不同版权信息及CIP数据的各分册,其附件请合并到一个PDF文件上传</div>
+    <div class="text">
+      全册中有不同版权信息及CIP数据的各分册,其附件请合并到一个PDF文件上传
+    </div>
     <nz-form-item class="row" style="margin-bottom: 16px">
-      <nz-form-label class="label" [nzNoColon]="true" [nzSm]="10" [nzXs]="10" nzRequired>版权页截图</nz-form-label>
-      <nz-form-control class="val" nzErrorTip="请上传版权页截图" style="width: 100%">
-        @if (copyrightImgUrl) {
-        <a style="color: #3e49b3;" (click)="openFile(copyrightImgUrl)">
-          <span nz-icon nzType="file" nzTheme="outline"></span>
-          版权页截图
-        </a>
-        }
-        <app-comp-upload [type]="'pdf'" [width]="320" [type]="'pdf'" (change)="upload($event, 'copyrightImgUrl')"
-          title="上传文件"></app-comp-upload>
+      <nz-form-label
+        class="label"
+        [nzNoColon]="true"
+        [nzSm]="10"
+        [nzXs]="10"
+        nzRequired
+        >版权页截图</nz-form-label
+      >
+      <nz-form-control
+        class="val"
+        nzErrorTip="请上传版权页截图"
+        style="width: 100%"
+      >
+        <app-comp-upload
+          [files]="
+            copyrightImgUrl
+              ? [{ url: copyrightImgUrl, name: '版权页截图' }]
+              : []
+          "
+          [type]="'pdf'"
+          [width]="320"
+          [type]="'pdf'"
+          (change)="upload($event, 'copyrightImgUrl')"
+          title="上传文件"
+        ></app-comp-upload>
 
         <div class="text upText" style="margin: 10px 0">
           支持上传PDF,大小不超过 2M
@@ -236,17 +291,32 @@
     </nz-form-item>
 
     <nz-form-item class="row" style="margin-bottom: 16px">
-      <nz-form-label class="label" [nzNoColon]="true" [nzSm]="10" [nzXs]="10" nzRequired>中国版本图书馆 CIP
-        查询截图</nz-form-label>
-      <nz-form-control class="val" nzErrorTip="请上传中国版本图书馆 CIP 查询截图" style="width: 100%">
-        @if (CIPImgUrl) {
-        <a style="color: #3e49b3;" (click)="openFile(CIPImgUrl)">
+      <nz-form-label
+        class="label"
+        [nzNoColon]="true"
+        [nzSm]="10"
+        [nzXs]="10"
+        nzRequired
+        >中国版本图书馆 CIP 查询截图</nz-form-label
+      >
+      <nz-form-control
+        class="val"
+        nzErrorTip="请上传中国版本图书馆 CIP 查询截图"
+        style="width: 100%"
+      >
+        <!-- @if (CIPImgUrl) {
+        <a style="color: #3e49b3" (click)="openFile(CIPImgUrl)">
           <span nz-icon nzType="file" nzTheme="outline"></span>
           CIP 查询截图
         </a>
-        }
-        <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'CIPImgUrl')"
-          title="上传文件"></app-comp-upload>
+        } -->
+        <app-comp-upload
+          [files]="CIPImgUrl ? [{ url: CIPImgUrl, name: '查询截图' }] : []"
+          [type]="'pdf'"
+          [width]="320"
+          (change)="upload($event, 'CIPImgUrl')"
+          title="上传文件"
+        ></app-comp-upload>
 
         <div class="text upText" style="margin: 10px 0">
           支持批量上传 PDF 格式,单个文件大小不超过 2M。
@@ -254,22 +324,26 @@
       </nz-form-control>
     </nz-form-item>
 
-
-
-    <div >
-      <div class="text">如 CIP 数据中无“教材”字样的,须再上传内容提要或前言或后记中可以证明本书为教材的相关内容截图</div>
-      @if (cipProveFile.length>0) {
-      @for (url of cipProveFile; track $index) {
+    <div>
+      <div class="text">
+        如 CIP
+        数据中无“教材”字样的,须再上传内容提要或前言或后记中可以证明本书为教材的相关内容截图
+      </div>
+      <!-- @if (cipProveFile.length>0) { @for (url of cipProveFile; track $index) {
       <p>
-        <a style="color: #3e49b3;font-size: 14px;" (click)="openFile(url?.url)">
+        <a style="color: #3e49b3; font-size: 14px" (click)="openFile(url?.url)">
           <span nz-icon nzType="file" nzTheme="outline"></span>
-          CIP 相关截图 
+          CIP 相关截图
         </a>
       </p>
-      }
-      }
-      <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'cipProveFile')"
-          title="上传文件"></app-comp-upload>
+      } } -->
+      <app-comp-upload
+        [files]="cipProveFile ? cipProveFile : []"
+        [type]="'pdf'"
+        [width]="320"
+        (change)="upload($event, 'cipProveFile')"
+        title="上传文件"
+      ></app-comp-upload>
       <!-- <app-comp-upload [type]="'pdf'" [width]="320" [maxlenght]="99" (change)="upload($event, 'cipProveFile')"
         title="上传文件"></app-comp-upload> -->
 
@@ -281,28 +355,28 @@
   <div class="author-content">
     <div class="title">6.其他材料(可选提供)</div>
     <div class="text">其他佐证材料。</div>
-    @if (moreMaterial.length>0) {
-    @for (url of moreMaterial; track $index) {
+    <!-- @if (moreMaterial.length>0) { @for (url of moreMaterial; track $index) {
     <p>
-      <a style="color: #3e49b3;font-size: 14px;" (click)="openFile(url?.url)">
+      <a style="color: #3e49b3; font-size: 14px" (click)="openFile(url?.url)">
         <span nz-icon nzType="file" nzTheme="outline"></span>
-        佐证材料 {{$index+1}}
+        佐证材料 {{ $index + 1 }}
       </a>
     </p>
-    }
-    }
-    <app-comp-upload [files]="moreMaterial" [type]="'pdf'" [width]="320" [maxlenght]="99" (change)="upload($event, 'moreMaterial')"
-      title="上传文件"></app-comp-upload>
+    } } -->
+    <app-comp-upload
+      [files]="moreMaterial"
+      [type]="'pdf'"
+      [width]="320"
+      [maxlenght]="99"
+      (change)="upload($event, 'moreMaterial')"
+      title="上传文件"
+    ></app-comp-upload>
 
     <div class="text upText" style="margin: 10px 0">
       支持批量上传PDF,大小不超过 2M
     </div>
   </div>
 
-
-
-
-
   <!-- <div class="author-content">
     <div class="title">作者政治审核表</div>
     <div class="text">
@@ -327,17 +401,6 @@
     </div>
   </div> -->
 
-
-
-
-
-
-
-
-
-
-
-
   <!-- <div class="author-content">
       <div class="nav"><b>申报单位承诺意见</b></div>
       <div class="text">
@@ -362,22 +425,34 @@
       </nz-form-item>
     </div> -->
   <!-- </form> -->
-
-
-
-
 </div>
 <div class="footer">
-  <button nz-button nzType="default" style="margin-right: 20px" (click)="submitForm('save')">
+  <button
+    nz-button
+    nzType="default"
+    style="margin-right: 20px"
+    (click)="submitForm('save')"
+  >
     保存本页
   </button>
-  <button nz-button nzType="default" style="margin-right: 20px" (click)="submitForm('pre')">
+  <button
+    nz-button
+    nzType="default"
+    style="margin-right: 20px"
+    (click)="submitForm('pre')"
+  >
     上一步
   </button>
-  <button nz-button nzType="primary" style="background: #3e49b3; border: 1px #3e49b3"
-    (click)="submitForm('complete')">完成</button>
+  <button
+    nz-button
+    nzType="primary"
+    style="background: #3e49b3; border: 1px #3e49b3"
+    (click)="submitForm('complete')"
+  >
+    完成
+  </button>
 </div>
 
 <div class="loading" [hidden]="!saveLoading">
   <nz-spin nzSimple [nzSize]="'large'"></nz-spin>
-</div>
+</div>

+ 5 - 6
projects/textbook/src/modules/nav-author/components/attachment/attachment.component.ts

@@ -363,23 +363,22 @@ export class AttachmentComponent implements OnInit {
   }
   upload(e: any, type: string, index?: any) {
     console.log('上传材料发生改变')
-    let file = e[(e?.length - 1) || 0];
     console.log(e)
-    console.log(this.moreMaterial)
+    let file = e[0];
     if (type == 'copyrightImgUrl' || type == 'CIPImgUrl') {
       this[type] = file?.url
     } else if (type == 'selfResults' || type == 'expertOpinion' ||
       type == 'evidence' || type == 'unitMaterial') { 
       this[type].url = file?.url
       this[type].name = file?.name
-    } else if (type == 'moreMaterial'  ) {
-      // this[type] = [...(this[type] || []), { name: file?.name, url: file?.url }]
+    } else if (type == 'moreMaterial' || type == 'cipProveFile') {
       this[type] = e
     }else if (type == 'signature' || type == 'examine') {
       this.authorList[index][type] = file?.url
-    }else if(type == 'cipProveFile'){
-      this[type] = [ { name: file.name, url: file.url }]
     }
+    // else if(type == 'cipProveFile'){
+    //   this[type] = [ { name: file.name, url: file.url }]
+    // }
     // console.log(this.authorList)
   }
 

+ 12 - 11
projects/textbook/src/modules/nav-author/components/create/author-file/author-file.component.html

@@ -108,15 +108,16 @@
 </nz-table>
 <div class="val" style="width: 100%">
   <div class="text">其他编者</div>
-  @if (otherEditor) {
-  <a style="color: #3e49b3;" (click)="openFile(otherEditor)">
-    <span nz-icon nzType="file" nzTheme="outline"></span>
-    其他编者政治审查意见
-  </a>
+  @if (showUpload) {
+  <app-comp-upload
+    [files]="
+      otherEditor ? [{ url: otherEditor, name: '其他编者政治审查意见' }] : []
+    "
+    [type]="'pdf'"
+    [width]="320"
+    (change)="upload($event, 'otherEditor')"
+    title="上传文件"
+  ></app-comp-upload>
   }
-  <app-comp-upload [type]="'pdf'" [width]="320" (change)="upload($event, 'otherEditor')"
-    title="上传文件"></app-comp-upload>
-  <div class="text upText">
-    支持上传PDF,大小不超过 2M
-  </div>
-</div>
+  <div class="text upText">支持上传PDF,大小不超过 2M</div>
+</div>

+ 6 - 2
projects/textbook/src/modules/nav-author/components/create/author-file/author-file.component.ts

@@ -83,6 +83,7 @@ export class AuthorFileComponent implements OnInit {
       this.getEduTextbookVolume(id);
     }
   }
+  showUpload:boolean = false
   async getEduTextbookVolume(id: string) {
     let query = new Parse.Query('EduTextbookVolume');
     query.equalTo('objectId', id);
@@ -91,15 +92,18 @@ export class AuthorFileComponent implements OnInit {
     this.authorList =
       this.eduTextbookVolume.get('authorList') || this.authorList;
     this.otherEditor = this.eduTextbookVolume.get('otherEditor')
+    console.log(this.otherEditor);
+    this.showUpload = true
   }
   upload(e: any, type: string, index?: any) {
-    let file = e[e?.length - 1 || 0];
+    let file = e[0];
     if (type == 'signature' || type == 'examine') {
       this.authorList[index][type] = file?.url;
     }else if(type == 'otherEditor'){
       this.otherEditor = file?.url;
     }
-    console.log(this.authorList);
+    // console.log(this.authorList);
+    console.log(this.otherEditor);
   }
   async submitForm(): Promise<boolean> {
     let coursesVrifly = !this.authorList.some((item:any) =>

+ 8 - 7
projects/textbook/src/modules/nav-author/components/textbook-pertain/textbook-pertain.component.html

@@ -28,8 +28,6 @@
                 nzAllowClear
                 nzPlaceHolder="填写 6 位专业代码选择"
                 formControlName="major"
-                (ngModelChange)="changeCode()"
-                (nzOnSearch)="getCode($event)"
               >
                 @for(major of selectList; track major?.code;let index = $index){
                 <nz-option
@@ -64,12 +62,15 @@
                 style="width: 80%"
                 [nzSuffix]="suffixTemplateInfo"
               >
-                <input
-                  type="number"
-                  formControlName="period"
-                  nz-input
+                <nz-input-number
+                  style="width: 100%"
                   placeholder="填写学时数"
-                />
+                  nzBorderless
+                  [nzPrecision]="0"
+                  formControlName="period"
+                  [nzMin]="1"
+                  [nzStep]="1"
+                ></nz-input-number>
               </nz-input-group>
               <ng-template #suffixTemplateInfo> 学时 </ng-template>
             </nz-form-control>

+ 23 - 32
projects/textbook/src/modules/nav-author/components/textbook-pertain/textbook-pertain.component.ts

@@ -32,6 +32,8 @@ import { HttpClient } from '@angular/common/http';
 import { MatAccordion, MatExpansionModule } from '@angular/material/expansion';
 import { AuthorComponent } from '../create/author/author.component';
 import { NzCollapseModule } from 'ng-zorro-antd/collapse';
+import { NzInputNumberModule } from 'ng-zorro-antd/input-number';
+
 interface author {
   name: string;
   unit: string;
@@ -64,6 +66,7 @@ interface achievementType {
     MatExpansionModule,
     AuthorComponent,
     NzCollapseModule,
+    NzInputNumberModule
   ],
   standalone: true,
   templateUrl: './textbook-pertain.component.html',
@@ -91,16 +94,18 @@ export class TextbookPertainComponent implements OnInit {
 
   validateForm: FormGroup<{
     major: FormControl<string>; //适用专业代码及名称
+    // majors: FormControl<Array<any>|any>; //适用专业代码及名称
     period: FormControl<number | any>; //课程学时
     lessons: FormControl<string>; //适用课程
-    characteristic: FormControl<Array<any> | any>; //适用课程性质
+    // characteristic: FormControl<Array<any> | any>; //适用课程性质
     // authorDetails: FormControl<string>; //第一主编(作者)相关教学经历
     // accept: FormControl<string>; //填写诚信承诺
   }> = this.fb.group({
     major: ['', [Validators.required]],
+    // majors: [null, [Validators.required]],
     period: ['', [Validators.required]],
     lessons: ['', [Validators.required]],
-    characteristic: ['', [Validators.required]],
+    // characteristic: ['', [Validators.required]],
     // authorDetails: ['', [Validators.required]],
     // accept: ['', [Validators.required, this.confirmationValidator]],
   });
@@ -199,29 +204,15 @@ export class TextbookPertainComponent implements OnInit {
 
       // this.checkOptionsOne =
       //   this.eduTextbook.get('characteristic') || this.checkOptionsOne;
-      let major = this.selectList.find(
-        (item:any) => item.code == this.eduTextbook.get('major')?.code
-      );
+      
+      // let majors = this.eduTextbook.get('majors')?.map((item:any) => item.code);
+      // this.validateForm.get("majors")?.setValue(majors || [])
+
+      this.validateForm.get("major")?.setValue(this.eduTextbook.get('major')?.code || '')
+      this.validateForm.get("period")?.setValue(this.eduTextbook.get('period'))
+
       let lessons = this.eduTextbook.get('lessons')?.join(';');
-      this.validateForm = this.fb.group({
-        major: [major?.code || '', [Validators.required]],
-        period: [this.eduTextbook.get('period') || '', [Validators.required]],
-        lessons: [lessons || '', [Validators.required]],
-        characteristic: [
-          this.eduTextbook.get('characteristic') || '',
-          [Validators.required],
-        ],
-        // authorDetails: [
-        //   this.eduTextbook.get('authorDetails') || '',
-        //   [Validators.required,Validators.maxLength(500)],
-        // ],
-        // accept: [
-        //   this.eduTextbook.get('accept') || '',
-        //   [Validators.required, this.confirmationValidator]
-        // ],
-      });
-      // this.authorList = this.eduTextbook.get('authorList') || this.authorList
-      // this.achievementOptions = this.eduTextbook.get('achievementOptions') || this.achievementOptions
+      this.validateForm.get("lessons")?.setValue(lessons || '')
     }
   }
   async submitForm(event?: string): Promise<void> {
@@ -306,8 +297,7 @@ export class TextbookPertainComponent implements OnInit {
     //   });
     // }
   }
-  changeCode() {}
-  getCode(e: any) {}
+
   // upload(e: any, type: string, index: number) {
   //   console.log(e);
   //   let file = e[0];
@@ -416,13 +406,14 @@ export class TextbookPertainComponent implements OnInit {
       if(isComplete){
         this.eduTextbook.set('complete', true)
       }
-      this.eduTextbook?.set('user', Parse.User.current()?.toPointer());
-      this.eduTextbook?.set('company', {
-        __type: 'Pointer',
-        className: 'Company',
-        objectId: this.tbookSer.company,
-      });
+      // this.eduTextbook?.set('user', Parse.User.current()?.toPointer());
+      // this.eduTextbook?.set('company', {
+      //   __type: 'Pointer',
+      //   className: 'Company',
+      //   objectId: this.tbookSer.company,
+      // });
       let major = this.selectList.find((item:any) => item.code == params.major);
+      // let majors = this.selectList.filter((item:any) => params.majors.some((code:string)=> code == item.code));
       let lessons = params.lessons.split(';');
       this.eduTextbook?.set('major', major);
       params.period && this.eduTextbook?.set('period', params.period);

+ 0 - 514
projects/textbook/src/modules/nav-author/textbook-details/textbook-details.component.html

@@ -1,514 +0,0 @@
-<div class="site-page-header">
-  <nz-page-header
-    nzTitle="教材详情 - {{textBook?.title}}"
-    nzSubtitle=""
-    style="padding: 0"
-  >
-    <nz-breadcrumb nz-page-header-breadcrumb>
-      <div class="back" (click)="back()">
-        <span nz-icon nzType="left" nzTheme="outline"></span>返回
-      </div>
-    </nz-breadcrumb>
-  </nz-page-header>
-</div>
-<div class="content">
-  <div nz-row>
-    <div nz-col nzSpan="18" #scroll>
-      <div class="templ1" #templ1 style="width: 500px; height: 700px">
-        <div class="title">教材基本信息</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">申报教材名称</div>
-            <div class="value">{{textBook?.title}}</div>
-          </div>
-          <div class="row">
-            <div class="label">第一主编(作者)</div>
-            <div class="value">{{textBook?.author}}</div>
-          </div>
-          <div class="row">
-            <div class="label">第一主编(作者)单位</div>
-            <div class="value">{{textBook?.unit}}</div>
-          </div>
-          <div class="row">
-            <div class="label">申报类型</div>
-            <div class="value">{{textBook?.type}} {{textBook?.type == '全册' ? textBook?.typeNumber + '册': ''}}</div>
-          </div>
-          <div class="row">
-            <div class="label">教材应用对象及所属学科专业类</div>
-            <div class="value">{{textBook?.majorPoniter}}</div>
-          </div>
-          <div class="row">
-            <div class="label">教材主要语种类型</div>
-            <div class="value">{{textBook?.lang}}</div>
-          </div>
-          <div class="row">
-            <div class="label">国际标准书号</div>
-            <div class="value">{{textBook?.ISBN}}</div>
-          </div>
-          <div class="row">
-            <div class="label">其他主编姓名</div>
-            <div class="value">{{textBook?.authors}}</div>
-          </div>
-          <div class="row">
-            <div class="label">其他编者姓名</div>
-            <div class="value">{{textBook?.editor}}</div>
-          </div>
-          <div class="row">
-            <div class="label">是否为重点立项教材</div>
-            <div class="value">{{textBook?.approval}}</div>
-          </div>
-          <div class="row">
-            <div class="label">出版单位</div>
-            <div class="value">{{textBook?.editionUnit}}</div>
-          </div>
-          <div class="row">
-            <div class="label">初版时间</div>
-            <div class="value">{{textBook?.editionFirst?.iso | date :'yyyy-MM'}}</div>
-          </div>
-          <div class="row">
-            <div class="label">载体形式</div>
-            <div class="value">{{textBook?.carrierShape}}</div>
-          </div>
-          <div class="row">
-            <div class="label">本版出版时间及版次</div>
-            <div class="value">{{textBook?.editionDate?.iso | date :'yyyy-MM'}}/{{textBook?.editionNumber}}</div>
-          </div>
-          <div class="row">
-            <div class="label">最新印次时间及印次</div>
-            <div class="value">{{textBook?.printDate?.iso | date :'yyyy-MM'}}/{{textBook?.printNumber}}</div>
-          </div>
-          <div class="row">
-            <div class="label">初版以来合计印数</div>
-            <div class="value">{{textBook?.printSum}}</div>
-          </div>
-          <div class="row">
-            <div class="label">初版以来是否曾列为重点项目</div>
-            <div class="value">{{textBook?.importantProject}}</div>
-          </div>
-          <div class="row">
-            <div class="label">版权页截图</div>
-            <div class="value"><a (click)="openFile(textBook?.copyrightImgUrl)">截图文件</a></div>
-          </div>
-          <div class="row">
-            <div class="label">中国版本图书馆 CIP 查询截图</div>
-            <div class="value"><a (click)="openFile(textBook?.CIPImgUrl)">查询截图</a></div>
-          </div>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">教材适用情况</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">适用专业代码(六位)及名称</div>
-            <div class="value">{{textBook?.major?.code}}/{{textBook?.major?.name}}</div>
-          </div>
-          <div class="row">
-            <div class="label">适用课程</div>
-            <div class="value">{{textBook?.lessons}}</div>
-          </div>
-          <div class="row">
-            <div class="label">课程学时</div>
-            <div class="value">{{textBook?.period}}</div>
-          </div>
-          <div class="row">
-            <div class="label">适用课程性质</div>
-            <div class="value">
-              @for (tag of textBook?.characteristic; track tag) {
-                @if (tag.checked){
-                  <nz-tag>{{tag.label}}</nz-tag>
-                }
-              }</div>
-          </div>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">教材适用情况</div>
-        <div class="text mar10">
-          作者(含主编,不超过 6 人,教材中明确出现姓名)
-        </div>
-        <div class="base-content">
-          <nz-table
-            #basicTable
-            [nzShowPagination]="false"
-            [nzData]="textBook?.authorList"
-            [nzScroll]="{
-              x: (templ1.style.width || '1000') + 'px',
-              y: '240px'
-            }"
-          >
-            <thead>
-              <tr>
-                <th nzWidth="160px" nzLeft>姓名</th>
-                <th nzWidth="160px">单位</th>
-                <th nzWidth="160px">出生年月</th>
-                <th nzWidth="160px">国籍</th>
-                <th nzWidth="160px">职务</th>
-                <th nzWidth="160px">职称</th>
-                <th nzWidth="160px">手机号码</th>
-                <th nzWidth="160px">电子邮箱</th>
-                <th nzRight>分工</th>
-              </tr>
-            </thead>
-            <tbody>
-              @for (data of textBook?.authorList; track data.mobile;let index =
-              $index) {
-              <tr>
-                <td nzLeft>
-                  {{ data.name }}
-                </td>
-                <td>
-                  {{ data.unit }}
-                </td>
-                <td>
-                  {{ data.birth?.iso | date : "yyyy-MM" }}
-                </td>
-                <td>
-                  {{ data.nationality }}
-                </td>
-                <td>
-                  {{ data.job }}
-                </td>
-                <td>
-                  {{ data.title }}
-                </td>
-                <td>
-                  {{ data.mobile }}
-                </td>
-                <td>
-                  {{ data.email }}
-                </td>
-                <td nzRight>
-                  {{ data.work }}
-                </td>
-              </tr>
-              }
-            </tbody>
-          </nz-table>
-        </div>
-
-        <div class="text mar10">第一主编(作者)情况</div>
-        <div class="base-content">
-          <div class="text-tips">相关教学经历</div>
-          <div class="note">
-            {{ textBook?.authorDetails }}
-          </div>
-          <div class="text-tips">相关科学研究项目、成果或论文专著(限5项)</div>
-          <nz-table
-            #basicTable
-            [nzShowPagination]="false"
-            [nzData]="textBook?.achievementOptions"
-            [nzScroll]="{
-              x: (templ1.style.width || '1000') + 'px',
-              y: '240px'
-            }"
-          >
-            <thead>
-              <tr>
-                <th nzWidth="80px" nzLeft nzAlign="right">序号</th>
-                <th nzWidth="160px" nzLeft>名称</th>
-                <th nzWidth="160px">来源/出版单位</th>
-                <th nzWidth="80px">时间</th>
-              </tr>
-            </thead>
-            <tbody>
-              @for (data of textBook?.achievementOptions; track data.name;let
-              index = $index) {
-              <tr>
-                <td nzLeft nzAlign="right">{{ index + 1 }}</td>
-                <td nzLeft>
-                  {{ data.name }}
-                </td>
-                <td>
-                  {{ data.unit }}
-                </td>
-                <td>
-                  {{ data.date?.iso | date : "yyyy-MM" }}
-                </td>
-              </tr>
-              }
-            </tbody>
-          </nz-table>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">申报教材建设历程</div>
-        <div class="base-content">
-          <nz-table
-            #basicTable
-            [nzShowPagination]="false"
-            [nzData]="textBook?.courses"
-            [nzScroll]="{
-              x: (templ1.style.width || '1000') + 'px',
-              y: '240px'
-            }"
-          >
-            <thead>
-              <tr>
-                <th nzWidth="80px" nzLeft nzAlign="right">版次</th>
-                <th nzWidth="120px">出版时间</th>
-                <th nzWidth="100px">字数</th>
-                <th nzWidth="100px">重印次数</th>
-                <th nzWidth="100px">本版总印数</th>
-                <th nzWidth="200px">获奖励情况</th>
-              </tr>
-            </thead>
-            <tbody>
-              @for (data of textBook?.courses; track data;let index = $index) {
-              <tr>
-                <td nzLeft nzAlign="right">{{ index + 1 }}</td>
-                <td>
-                  {{ data.date?.iso | date : "yyyy-MM" }}
-                </td>
-                <td>
-                  {{ data.wordage }}
-                </td>
-                <td>
-                  {{ data.num }}
-                </td>
-                <td>
-                  {{ data.sumNum }}
-                </td>
-                <td>
-                  {{ data.accolade }}
-                </td>
-              </tr>
-              }
-            </tbody>
-          </nz-table>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">申报教材特色及创新</div>
-        <div class="base-content">
-          <div class="note">
-            {{ textBook?.innovateExplain }}
-          </div>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">申报教材应用情况及社会影响力</div>
-        <div class="base-content">
-          <div class="note">
-            {{ textBook?.influence }}
-          </div>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">附件材料</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">教材电子版</div>
-            <div class="value">
-              @for (item of textBook?.textbookFiles; track item.name) {
-              <a style="margin-right: 10px" [href]="item.url">{{
-                item.name
-              }}</a>
-              }
-            </div>
-          </div>
-          <div class="row">
-            <div class="label">教材数字内容链接地址、账号</div>
-            <div class="value">
-              @for (item of textBook?.links; track item) {
-              <li>{{ item }}</li>
-              }
-            </div>
-          </div>
-          <div class="text-tips">所有作者政治审查意见</div>
-          <nz-table
-            #basicTable
-            [nzShowPagination]="false"
-            [nzData]="textBook?.opinions"
-            [nzScroll]="{
-              x: (templ1.style.width || '1000') + 'px',
-              y: '240px'
-            }"
-          >
-            <thead>
-              <tr>
-                <th nzWidth="80px" nzLeft nzAlign="right">序号</th>
-                <th nzWidth="100px">作者</th>
-                <th nzWidth="100px">单位</th>
-                <th nzWidth="100px">出生年月</th>
-                <th nzWidth="100px">国籍</th>
-                <th nzWidth="100px" nzRight>作者政治审查表</th>
-              </tr>
-            </thead>
-            <tbody>
-              @for (data of textBook?.opinions; track data.name;let index =
-              $index) {
-              <tr>
-                <td nzLeft nzAlign="right">{{ index + 1 }}</td>
-                <td>
-                  {{ data.name }}
-                </td>
-                <td>
-                  {{ data.unit }}
-                </td>
-                <td>
-                  {{ data.birth | date : "yyyy-MM" }}
-                </td>
-                <td>
-                  {{ data.nationality }}
-                </td>
-                <td nzRight>
-                  <a [href]="data.reviewFile.url">{{ data.reviewFile.name }}</a>
-                </td>
-              </tr>
-              }
-            </tbody>
-          </nz-table>
-          <div class="row" style="margin-top: 10px">
-            <div class="label">图书编校质量自查结果记录表</div>
-            <div class="value">
-              <a [href]="textBook?.selfResults?.url">{{
-                textBook?.selfResults?.name
-              }}</a>
-            </div>
-          </div>
-          <div class="row">
-            <div class="label">专家审核意见表</div>
-            <div class="value">
-              <a [href]="textBook?.expertOpinion?.url">{{
-                textBook?.expertOpinion?.name
-              }}</a>
-            </div>
-          </div>
-          <div class="row">
-            <div class="label">教材使用情况证明材料</div>
-            <div class="value">
-              <a [href]="textBook?.evidence?.url">{{ textBook?.evidence?.name }}</a>
-            </div>
-          </div>
-          <div class="row">
-            <div class="label">其他材料</div>
-            <div class="value">
-              @for (item of textBook?.moreMaterial; track item.name) {
-              <a style="margin-right: 10px" [href]="item.url">{{
-                item.name
-              }}</a>
-              }
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">教材作者诚信承诺</div>
-        <div class="base-content">
-          <nz-table
-            #basicTable
-            [nzShowPagination]="false"
-            [nzData]="textBook?.authorSign"
-            [nzScroll]="{
-              x: (templ1.style.width || '1000') + 'px',
-              y: '240px'
-            }"
-          >
-            <thead>
-              <tr>
-                <th nzWidth="80px" nzLeft nzAlign="right">序号</th>
-                <th nzWidth="100px">作者</th>
-                <th nzWidth="100px">单位</th>
-                <th nzWidth="100px">出生年月</th>
-                <th nzWidth="100px">国籍</th>
-                <th nzWidth="100px" nzRight>作者签名</th>
-              </tr>
-            </thead>
-            <tbody>
-              @for (data of textBook?.authorSign; track data.name;let index =
-              $index) {
-              <tr>
-                <td nzLeft nzAlign="right">{{ index + 1 }}</td>
-                <td>
-                  {{ data.name }}
-                </td>
-                <td>
-                  {{ data.unit }}
-                </td>
-                <td>
-                  {{ data.birth?.iso | date : "yyyy-MM" }}
-                </td>
-                <td>
-                  {{ data.nationality }}
-                </td>
-                <td nzRight>
-                  <a [href]="data.reviewFile?.url">{{ data.reviewFile?.name }}</a>
-                </td>
-              </tr>
-              }
-            </tbody>
-          </nz-table>
-        </div>
-      </div>
-      <div class="templ">
-        <div class="title">申报单位承诺意见</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">申报单位承诺意见材料</div>
-            <div class="value">
-              <a style="margin-right: 10px" [href]="textBook?.unitMaterial?.url">{{textBook?.unitMaterial?.name}}</a>
-            </div>
-          </div>
-        </div>
-      </div>
-      <!-- <div class="templ">
-        <div class="title">初评推荐意见</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">省级教育行政部门初评专家组意见</div>
-            <div class="value">
-              <span style="color:#231C1F99">暂未填写</span>
-            </div>
-          </div>
-          <div class="row">
-            <div class="label">省级教育行政部门意见</div>
-            <div class="value">
-              <span style="color:#231C1F99">暂无</span>
-            </div>
-          </div>
-        </div>
-      </div> -->
-    </div>
-
-    <div nz-col nzSpan="6">
-      <nz-anchor
-        style="position: fixed"
-        (nzClick)="handleClick($event)"
-        [nzShowInkInFixed]="true"
-        [nzShowInkInFixed]="true"
-      >
-        <nz-link nzHref="#templ1" nzTitle="教材基本信息"></nz-link>
-        <nz-link
-          nzHref="#components-anchor-demo-static"
-          nzTitle="教材适用情况"
-        ></nz-link>
-        <nz-link nzHref="#api" nzTitle="作者信息">
-          <nz-link nzHref="#nz-anchor" nzTitle="作者"></nz-link>
-          <nz-link nzHref="#nz-link" nzTitle="第一主编(作者)情况"></nz-link>
-        </nz-link>
-        <nz-link nzHref="#base" nzTitle="申报教材建设历程"></nz-link>
-        <nz-link nzHref="#base" nzTitle="申报教材特色及创新"></nz-link>
-        <nz-link
-          nzHref="#base"
-          nzTitle="申报教材应用情况及社会影响力"
-        ></nz-link>
-        <nz-link nzHref="#base" nzTitle="附件材料清单"></nz-link>
-        <nz-link nzHref="#base" nzTitle="教材作者诚信承诺"></nz-link>
-        <nz-link nzHref="#base" nzTitle="申报单位承诺意见"></nz-link>
-        <!-- <nz-link nzHref="#base" nzTitle="初评推荐意见"></nz-link> -->
-      </nz-anchor>
-    </div>
-  </div>
-</div>
-@if (!textBook?.discard && !textBook?.render) {
-  <div class="footer">
-    <button
-      nz-button
-      nzType="primary"
-      style="background: #3e49b3; border: 1px #3e49b3"
-      (click)="edit()"
-    >
-    编辑教材
-    </button>
-  </div>
-}

+ 0 - 95
projects/textbook/src/modules/nav-author/textbook-details/textbook-details.component.scss

@@ -1,95 +0,0 @@
-.site-page-header {
-  position: sticky;
-  top: 0;
-  z-index: 9;
-  padding: 24px 24px 10px;
-  background-color: white;
-  font-family: PingFang SC;
-  .steps {
-    max-width: 1000px;
-    margin: 10px 0;
-  }
-  .back {
-    font-family: PingFang SC;
-    font-size: 14px;
-    font-weight: 400;
-    line-height: 22px;
-    text-align: left;
-    cursor: pointer;
-  }
-}
-.content {
-  font-family: PingFang SC;
-  padding: 10px 24px;
-  .title {
-    font-family: PingFang SC;
-    font-size: 20px;
-    font-weight: 500;
-    line-height: 28px;
-    text-align: left;
-    margin-bottom: 20px;
-  }
-  .templ {
-    margin-top: 40px;
-    .text {
-      font-family: PingFang SC;
-      font-size: 16px;
-      font-weight: 500;
-      line-height: 22px;
-      text-align: left;
-    }
-  }
-  .base-content {
-    .row {
-      display: flex;
-      margin-bottom: 14px;
-      .label {
-        width: 220px;
-        font-family: PingFang SC;
-        font-size: 14px;
-        font-weight: 400;
-        line-height: 20px;
-        text-align: left;
-        color: #231c1f99;
-      }
-      .value {
-        margin-left: 20px;
-        flex: 1;
-        font-family: PingFang SC;
-        font-size: 14px;
-        font-weight: 400;
-        line-height: 20px;
-        text-align: left;
-      }
-    }
-    .text-tips {
-      font-family: PingFang SC;
-      font-size: 14px;
-      font-weight: 400;
-      line-height: 20px;
-      text-align: left;
-      color: #231c1f99;
-      margin: 10px 0;
-    }
-    .note{
-      font-family: PingFang SC;
-      font-size: 14px;
-      font-weight: 400;
-      line-height: 20px;
-      text-align: left;
-      color: #231C1F;
-    }
-  }
-}
-.mar10{
-  margin: 20px 0;
-}
-.footer{
-  display: flex;
-  margin: 10px auto;
-  align-items: center;
-  justify-content: space-evenly;
-  // width: 200px;
-  justify-content: end;
-  padding-right: 100px;
-}

+ 0 - 24
projects/textbook/src/modules/nav-author/textbook-details/textbook-details.component.spec.ts

@@ -1,24 +0,0 @@
-import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
-import { IonicModule } from '@ionic/angular';
-
-import { TextbookDetailsComponent } from './textbook-details.component';
-
-describe('TextbookDetailsComponent', () => {
-  let component: TextbookDetailsComponent;
-  let fixture: ComponentFixture<TextbookDetailsComponent>;
-
-  beforeEach(waitForAsync(() => {
-    TestBed.configureTestingModule({
-      declarations: [ TextbookDetailsComponent ],
-      imports: [IonicModule.forRoot()]
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(TextbookDetailsComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  }));
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});

+ 0 - 235
projects/textbook/src/modules/nav-author/textbook-details/textbook-details.component.ts

@@ -1,235 +0,0 @@
-import {
-  Component,
-  OnInit,
-  Input,
-  Output,
-  EventEmitter,
-  ViewChild,
-  ElementRef,
-} from '@angular/core';
-import { CommonCompModule } from '../../../services/common.modules';
-import { Router, ActivatedRoute } from '@angular/router';
-import { ReactiveFormsModule } from '@angular/forms';
-import { BasicInComponent } from '../components/basic-in/basic-in.component';
-import { TextbookPertainComponent } from '../components/textbook-pertain/textbook-pertain.component';
-import { TextbookContentComponent } from '../components/textbook-content/textbook-content.component';
-import { AttachmentComponent } from '../components/attachment/attachment.component';
-import { NzAnchorModule } from 'ng-zorro-antd/anchor';
-import { DatePipe } from '@angular/common';
-import Parse from 'parse';
-
-interface author {
-  name: string;
-  unit: string;
-  birth: Date | any;
-  nationality: string;
-  job: string;
-  title: string;
-  mobile: string;
-  email: string;
-  work: string;
-}
-@Component({
-  selector: 'app-textbook-details',
-  imports: [
-    CommonCompModule,
-    ReactiveFormsModule,
-    BasicInComponent,
-    TextbookPertainComponent,
-    TextbookContentComponent,
-    AttachmentComponent,
-    NzAnchorModule,
-    DatePipe,
-  ],
-  standalone: true,
-  templateUrl: './textbook-details.component.html',
-  styleUrls: ['./textbook-details.component.scss'],
-  providers: [DatePipe],
-})
-export class TextbookDetailsComponent implements OnInit {
-  @ViewChild('templ1') templ1: any;
-  textBook: object | any = {}
-  // {
-  //   title: '', //申报教材名称
-  //   ISBN: '', //国际标准书号
-  //   author: '', //第一主编(作者)
-  //   unit: '', //第一主编(作者)单位
-  //   type: '', //申报类型
-  //   typeNumber: '', //全册次数
-
-  //   majorPoniter: '', //教材应用对象及所诉学科专业类
-  //   lang: '', //教材主要语种类型
-  //   authors: '', //其他主编姓名
-  //   editor: '', //其他编者姓名
-
-  //   approval: '', //是否为重点立项教材
-  //   editionUnit: '', //出版单位
-  //   editionFirst: '', //初版时间
-  //   carrierShape: '', //载体形式
-
-  //   editionDate: '', //出版时间
-  //   editionNumber: '', //出版版次
-  //   printDate: '', //最新印次时间
-  //   printNumber: '', //最新印次
-
-  //   printSum: '', //初版以来合计印次
-
-  //   importantProject: '', //初版以来是否列为重点项目
-  //   importantProjectOther: '', //其他省部级及以上项目
-
-  //   copyrightImgUrl: '', //版权页截图
-  //   CIPImgUrl: '', //中国版本图书馆CIP查询截图
-  //   major:{ //适用专业代码(六位)及名称
-  //     code:'000416',
-  //     name:'通信工程'
-  //   },
-  //   lessons:[],
-  //   characteristic:[],
-  //   period:1,
-
-  //   authorDetails:
-  //     '从事英语教学和外事管理二十年,教学经验丰富,系“双师型”教师,主持和参与多项省部级科研课题,连续多年担任全国导游资格面试中英文考官,2015 年和 2016 年担任全国职业院校技能大赛英文导游裁判长;2020 年入选“中国东盟双百职校强强合作旗舰计划”专家和来华留学生高等教育质量认证(高职院校类)技术专家库;2021 年湖北省教育厅推荐入选教育部鲁班工坊建设联盟专家库首批专家。组织申报学校荣获世界职教院校联盟卓越奖(2016 年铜奖、2018 年银奖、2020 年金奖)。',
-  //   authorList: [
-  //     {
-  //       name: '曹春海',
-  //       unit: '外语教育出版社',
-  //       birth: new Date('2000-1-1'),
-  //       nationality: '中国',
-  //       job: '博士生导师',
-  //       title: '教授',
-  //       mobile: '1881881888',
-  //       email: '123@123.com',
-  //       work: '主编',
-  //     },
-  //   ],
-  //   achievementOptions: [
-  //     //相关科学研究项目、成果或论文专著(限5项)
-  //     {
-  //       name: '双语教育对人脑杏仁核发育影响研究',
-  //       unit: '二十一世纪出版社',
-  //       date: new Date('2000-1-1'),
-  //     },
-  //   ],
-  //   courses: [
-  //     //申报教材建设历程
-  //     {
-  //       date: new Date('2000-1-1'), //出版时间
-  //       wordage: 569, //字数
-  //       num: 2, //重印次数
-  //       sumNum: 3, //本版总印数
-  //       accolade: '国家高等教材特等奖', //获奖励情况
-  //     },
-  //   ],
-  //   //申报教材特色及创新
-  //   innovateExplain:
-  //     '本教材最大的特色是教材内容编写延用情景启发模式,表现形式上融情景、体验、拓展、互动于一体,打造生动、立体课堂,提高学生学习兴趣及主动性。',
-  //   //申报教材应用情况及社会影响力
-  //   influence:
-  //     '指导教学更有章法、更可复制。本教材系“十四五”职业教育江苏省规划教材、“十三五”江苏省高等学校重点教材、高等院校人文素质教育重点教材、精品工程项目教材,内容丰富、取材合适、系统性强,在促进学生成长成才、科学指导就业创业等方面有着成熟而广泛的应用前景,目前已推广到南通中等专业学校、聊城苏通技工学校等省内外多所职业院校,均得到师生的一致好评',
-  //   textbookFiles: [
-  //     //附件教材
-  //     {
-  //       name: '汉语版.pdf',
-  //       url: '',
-  //     },
-  //     {
-  //       name: '维语版.pdf',
-  //       url: '',
-  //     },
-  //   ],
-  //   links: [
-  //     //数字内容链接地址、账号
-  //     'https://www.hep.com.cn/book/show/0519241c-ed3a-4bdf-9c79-2eedc51fbe21 账号:xxxxxx 密码:xxxxxx',
-  //     'https://www.hepmall.com/index.php/gallery-index-.html?scontent=%E7%B3%BB%E7%BB%9F%E5%88%86%E6%9E%90%E4%B8%8E%E8%AE%BE%E8%AE%A',
-  //   ],
-  //   opinions: [
-  //     //所有作者政治审查意见
-  //     {
-  //       name: '曹春海', //作者
-  //       unit: '外语教育出版社', //单位
-  //       birth: new Date(), //出生年月
-  //       nationality: '中华人民共和国', //国籍
-  //       reviewFile: {
-  //         //作者政治审查表
-  //         name: '维语版.pdf',
-  //         url: '',
-  //       },
-  //     },
-  //   ],
-  //   selfResults: {
-  //     //图书编校质量自查结果记录表
-  //     name: '自查表.pdf',
-  //     url: '',
-  //   },
-  //   //专家审核意见表
-  //   expertOpinion:{
-  //     name: '意见表.pdf',
-  //     url: '',
-  //   },
-  //   //教材使用情况证明材料
-  //   evidence:{
-  //     name: '材料.pdf',
-  //     url: '',
-  //   },
-  //   //其他材料
-  //   moreMaterial:[
-  //     {
-  //       name: '材料1.pdf',
-  //       url: '',
-  //     },
-  //     {
-  //       name: '材料2.pdf',
-  //       url: '',
-  //     },
-  //   ],
-  //   //所有作者签名&教材作者诚信承诺
-  //   authorSign:[
-  //     {
-  //       name: '曹春海', //作者
-  //       unit: '外语教育出版社', //单位
-  //       birth: new Date(), //出生年月
-  //       nationality: '中华人民共和国', //国籍
-  //       reviewFile: {
-  //         //作者政治审查表/作者签名
-  //         name: '曹春海签名.pdf',
-  //         url: '',
-  //       },
-  //     },
-  //   ],
-  //   //申报单位承诺意见材料
-  //   unitMaterial:{
-  //     name: '承诺意见表.pdf',
-  //     url: '',
-  //   },
-  // };
-  constructor(private router: Router, private activeRoute: ActivatedRoute) {}
-
-  ngOnInit() {
-    this.activeRoute.paramMap.subscribe(async (params) => {
-      let id = params.get('id');
-      if (id) {
-        let query = new Parse.Query('EduTextbook');
-        query.equalTo('objectId', id);
-        let r = await query.first();
-        this.textBook = r?.toJSON()
-        console.log(this.textBook);
-      }
-    });
-  }
-
-  handleClick(e: string): void {
-    console.log(e);
-    // let dom:any = [e]
-    // dom.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
-  }
-  back() {
-    history.back();
-  }
-  edit(){
-    this.router?.navigate(['/nav-author/manage/apply',{id:this.textBook.objectId}],{ replaceUrl: true })
-  }
-  openFile(url:string){
-    console.log(url);
-    window.open(url)
-  }
-}

+ 23 - 0
projects/textbook/src/services/textbook.ts

@@ -374,4 +374,27 @@ export class textbookServer {
     //   // }
     // }
   }
+
+  /* 获取所有未上传签名页附件教材 */
+  async get_authorSignPDF_def(){
+    let query = new Parse.Query('EduTextbook')
+    // let query = Parse.Query.fromJSON('EduTextbook', {
+    //   where: {
+    //     status:{$in: ['102','103','200','201','300']},
+    //     authorSignPDF
+    //   },
+    // });
+    let list:any = []
+    query.notEqualTo('isDeleted',true)
+    query.containedIn('status',['102','103','200','201','300'])
+    query.doesNotExist('authorSignPDF.url')
+    query.exists('code')
+    query.select('code')
+    query.limit(1000)
+    query.greaterThanOrEqualTo('createdAt', new Date('2024/8/5 00:00'))
+    let r = await query.find()
+    // console.log(r);
+    r.forEach(item=> list.push(item.get('code')))
+    console.log(list);
+  }
 }

+ 7 - 3
server/db/schemas/EduTextbook.js

@@ -144,9 +144,13 @@ export const EduTextbook = {
             "type": "Array",
             "required": false
         },
-        "major": {
-            "type": "Object",
-            "required": false
+        // "major": {
+        //     "type": "Object",
+        //     "required": false
+        // },
+        'majors':{//适用专业代码(六位)及名称
+            "type":'Number',
+            "required": false  
         },
         "period": {
             "type": "Number",