Selaa lähdekoodia

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

cehn 8 kuukautta sitten
vanhempi
commit
e3210be810

+ 19 - 0
docs/Devops.md

@@ -0,0 +1,19 @@
+# 数据库自动备份
+## 定时任务
+编辑定时任务
+``` bash
+crontab -e
+```
+添加任务内容:每日
+``` sh
+0 0 * * * /root/backup/backup-psql.sh
+```
+## 备份脚本
+``` bash
+#!/bin/bash
+# crontab -e
+# 0 0 * * * /root/backup/backup-psql.sh
+NOWSTR=`date "+%Y%m%d%H%M"`
+SQLDBNAME="postgresql://textbook:Edu2024textbask@pgm-2zehqf5x28989whc.pg.rds.aliyuncs.com:5432/textbook"
+pg_dump --dbname=$SQLDBNAME > textbook/textbook.$NOWSTR.sql
+```

+ 138 - 109
projects/textbook/src/modules/common/textbook-details/textbook-details.component.html

@@ -14,7 +14,8 @@
 <div class="content" #scroll>
   <div nz-row>
     <div nz-col nzSpan="18">
-      <div class="templ1" #templ1 id="anchor1" style="width: 500px; height: 700px">
+      <div id="anchor1" class="occupy" style="height: 100px;"></div>
+      <div class="templ1" #templ1 style="width: 500px; height: 700px">
         <div class="title">教材基本信息</div>
         <div class="base-content">
           <div class="row">
@@ -58,7 +59,14 @@
           </div>
           <div class="row">
             <div class="label">是否为重点立项教材</div>
-            <div class="value">{{ textBook?.approval }}</div>
+            <div class="value">{{ textBook?.approval }} 
+              @if (textBook?.approval&&textBook?.approval!='否') {
+                <a (click)="openFile(textBook?.approvedImgUrl)">
+                  <span nz-icon nzType="file" nzTheme="outline"></span>
+                  教材获批截图
+                </a>
+              }
+            </div>
           </div>
           <div class="row">
             <div class="label">出版单位</div>
@@ -85,7 +93,7 @@
           <div class="row">
             <div class="label">最新印次时间及印次</div>
             <div class="value">
-              {{ textBook?.printDate?.iso | date : "yyyy-MM" }}/{{
+              {{ textBook?.printDate?.iso | date : "yyyy-MM-dd" }}/{{
                 textBook?.printNumber
               }}
             </div>
@@ -96,7 +104,11 @@
           </div>
           <div class="row">
             <div class="label">初版以来是否曾列为重点项目</div>
-            <div class="value">{{ textBook?.importantProject }}</div>
+            <div class="value">
+              @for (item of textBook?.importantProject; track $index) {
+                <p>{{item}} {{item=='其他省部级及以上项目'?'-'+textBook?.importantProjectOther:''}}</p>
+              }
+            </div>
           </div>
           <!-- <div class="row">
             <div class="label">版权页截图</div>
@@ -112,7 +124,8 @@
           </div> -->
         </div>
       </div>
-      <div class="templ" id="anchor2">
+      <div id="anchor2" class="occupy" style="height: 60px;"></div>
+      <div class="templ" >
         <div class="title">教材适用情况</div>
         <div class="base-content">
           <div class="row">
@@ -140,8 +153,10 @@
           </div>
         </div>
       </div>
-      <div class="templ" id="anchor3">
-        <div class="title" id="anchor3_1">作者信息</div>
+      <div id="anchor3" class="occupy" style="height: 60px;"></div>
+      <div class="templ" >
+      <div id="anchor3_1" class="occupy" style="height: 60px;"></div>
+      <div class="title" >作者信息</div>
         <div class="text mar10">
           作者(含主编,不超过 6 人,教材中明确出现姓名)
         </div>
@@ -166,8 +181,8 @@
                 <th nzEllipsis nzWidth="120px">手机号码</th>
                 <th nzEllipsis nzWidth="120px">电子邮箱</th>
                 <th nzEllipsis nzWidth="120px">分工</th>
-                <th nzEllipsis nzWidth="120px">签名</th>
-                <th nzEllipsis nzWidth="120px">政治审查表</th>
+                <!-- <th nzEllipsis nzWidth="120px">签名</th> -->
+                <!-- <th nzEllipsis nzWidth="120px">政治审查表</th> -->
               </tr>
             </thead>
             <tbody>
@@ -201,25 +216,26 @@
                 <td nzEllipsis>
                   {{ data.work }}
                 </td>
-                <td nzEllipsis>
+                <!-- <td nzEllipsis>
                   <a (click)="openFile(data?.signature)">签名文件</a>
-                </td>
-                <td nzEllipsis>
+                </td> -->
+                <!-- <td nzEllipsis>
                   <a (click)="openFile(data?.examine)">政治审查表</a>
-                </td>
+                </td> -->
               </tr>
               }
             </tbody>
           </nz-table>
         </div>
 
-        <div class="text mar10"  id="anchor3_2">第一主编(作者)情况</div>
+      <div id="anchor3_2" class="occupy" style="height: 60px;"></div>
+      <div class="text mar10" >第一主编(作者)情况</div>
         <div class="base-content">
-          <div class="text-tips">相关教学经历</div>
+          <div class="text-tips">1.相关教学经历</div>
           <div class="note">
             {{ textBook?.authorDetails }}
           </div>
-          <div class="text-tips">相关科学研究项目、成果或论文专著(限5项)</div>
+          <div class="text-tips">2.相关科学研究项目、成果或论文专著(限5项)</div>
           <nz-table
             #basicTable
             [nzShowPagination]="false"
@@ -258,7 +274,8 @@
           </nz-table>
         </div>
       </div>
-      <div class="templ" id="anchor4">
+      <div id="anchor4" class="occupy" style="height: 60px;"></div>
+      <div class="templ">
         <div class="title">申报教材建设历程</div>
         <div class="base-content">
           <nz-table
@@ -305,7 +322,8 @@
           </nz-table>
         </div>
       </div>
-      <div class="templ" id="anchor5">
+      <div id="anchor4" id="anchor5" class="occupy" style="height: 60px;"></div>
+      <div class="templ">
         <div class="title">申报教材特色及创新</div>
         <div class="base-content">
           <div class="note">
@@ -313,7 +331,8 @@
           </div>
         </div>
       </div>
-      <div class="templ" id="anchor6">
+      <div id="anchor4" id="anchor6" class="occupy" style="height: 60px;"></div>
+      <div class="templ" >
         <div class="title">申报教材应用情况及社会影响力</div>
         <div class="base-content">
           <div class="note">
@@ -321,44 +340,29 @@
           </div>
         </div>
       </div>
-      <div class="templ" id="anchor7">
-        <div class="title">附件材料</div>
+      <div id="anchor4" id="anchor9" class="occupy" style="height: 60px;"></div>
+      <div class="templ">
+        <div class="title">申报单位承诺意见</div>
         <div class="base-content">
-          <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 class="row">
-            <div class="label">教材电子版</div>
-            <div class="value">
-              @for (item of textBook?.textbookFiles; track item.name) {
-              <a style="margin-right: 10px" (click)="openFile(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 class="text-tips">1.教材作者诚信承诺</div>
+          <div class="note">
+            {{textBook?.accept}}
           </div>
-          <!-- <div class="text-tips">所有作者政治审查意见</div>
+          <!-- <div class="text-tips">2.申报单位承诺意见</div>
+          <div class="note">
+            {{textBook?.unitMaterial?.text}}
+          </div> -->
+        </div>
+      </div>
+      <div id="anchor4" id="anchor7" class="occupy" style="height: 60px;"></div>
+      <div class="templ" >
+        <div class="title">附件材料</div>
+        <div class="base-content" >
           <nz-table
+          style="margin-bottom: 20px;"
             #basicTable
             [nzShowPagination]="false"
-            [nzData]="textBook?.opinions"
+            [nzData]="textBook?.authorList"
             [nzScroll]="{
               x: (templ1.style.width || '1000') + 'px',
               y: '240px'
@@ -366,40 +370,61 @@
           >
             <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>
+                <th nzEllipsis nzWidth="120px" nzLeft>姓名</th>
+                <th nzEllipsis nzWidth="120px" nzLeft>政治审查表</th>
+                <th nzEllipsis nzWidth="120px">单位</th>
+                <th nzEllipsis nzWidth="120px">出生年月</th>
+                <th nzEllipsis nzWidth="120px">国籍</th>
+                <th nzEllipsis nzWidth="120px">职务</th>
+                <th nzEllipsis nzWidth="120px">职称</th>
+                <th nzEllipsis nzWidth="120px">手机号码</th>
+                <th nzEllipsis nzWidth="120px">电子邮箱</th>
+                <th nzEllipsis nzWidth="120px">分工</th>
+                <!-- <th nzEllipsis nzWidth="120px">签名</th> -->
               </tr>
             </thead>
             <tbody>
-              @for (data of textBook?.opinions; track data.name;let index =
+              @for (data of textBook?.authorList; track data.mobile;let index =
               $index) {
               <tr>
-                <td nzEllipsis nzLeft nzAlign="right">{{ index + 1 }}</td>
-                <td nzEllipsis>
+                <td nzEllipsis nzLeft>
                   {{ data.name }}
+                </td>
+                 <td nzEllipsis nzLeft>
+                  <a (click)="openFile(data?.examine)">政治审查表</a>
                 </td>
                 <td nzEllipsis>
                   {{ data.unit }}
                 </td>
                 <td nzEllipsis>
-                  {{ data.birth | date : "yyyy-MM" }}
+                  {{ data.birth?.iso | date : "yyyy-MM" }}
                 </td>
                 <td nzEllipsis>
                   {{ data.nationality }}
                 </td>
-                <td nzEllipsis nzRight>
-                  <a (click)="openFile(data.reviewFile?.url)">{{
-                    data.reviewFile?.name
-                  }}</a>
+                <td nzEllipsis>
+                  {{ data.job }}
                 </td>
+                <td nzEllipsis>
+                  {{ data.title }}
+                </td>
+                <td nzEllipsis>
+                  {{ data.mobile }}
+                </td>
+                <td nzEllipsis>
+                  {{ data.email }}
+                </td>
+                <td nzEllipsis>
+                  {{ data.work }}
+                </td>
+                <!-- <td nzEllipsis>
+                  <a (click)="openFile(data?.signature)">签名文件</a>
+                </td> -->
+               
               </tr>
               }
             </tbody>
-          </nz-table> -->
+          </nz-table>
           <div class="row" style="margin-top: 10px">
             <div class="label">图书编校质量自查结果记录表</div>
             <div class="value">
@@ -409,7 +434,7 @@
             </div>
           </div>
           <div class="row">
-            <div class="label">专家审意见表</div>
+            <div class="label">专家审意见表</div>
             <div class="value">
               <a (click)="openFile(textBook?.expertOpinion?.url)">{{
                 textBook?.expertOpinion?.name
@@ -424,6 +449,31 @@
               }}</a>
             </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 class="row">
+            <div class="label"> CIP 相关证明截图</div>
+            <div class="value">
+              @for (item of textBook?.cipProveFile; track item.name) {
+                <a (click)="openFile(item.url)" style="margin-right: 10px">{{
+                  item.name
+                }}</a>
+                <br>
+                }
+            </div>
+          </div>
+         
+          
           <div class="row">
             <div class="label">其他材料</div>
             <div class="value">
@@ -431,6 +481,7 @@
               <a (click)="openFile(item.url)" style="margin-right: 10px">{{
                 item.name
               }}</a>
+              <br>
               }
             </div>
           </div>
@@ -486,21 +537,7 @@
           </nz-table>
         </div>
       </div> -->
-      <div class="templ" id="anchor9">
-        <div class="title">申报单位承诺意见</div>
-        <div class="base-content">
-          <div class="row">
-            <div class="label">申报单位承诺意见材料</div>
-            <div class="value">
-              <a
-                (click)="openFile(textBook?.unitMaterial?.url)"
-                style="margin-right: 10px"
-                >{{ textBook?.unitMaterial?.name }}</a
-              >
-            </div>
-          </div>
-        </div>
-      </div>
+ 
       <!-- <div class="templ">
         <div class="title">初评推荐意见</div>
         <div class="base-content">
@@ -521,32 +558,24 @@
     </div>
 
     <div nz-col nzSpan="6">
-      <nz-anchor
-        style="position: fixed"
-        (nzClick)="handleClick($event)"
-        [nzShowInkInFixed]="true"
-        [nzContainer]="scroll"
-      >
-        <nz-link nzHref="#anchor1" nzTitle="教材基本信息"></nz-link>
-        <nz-link
-          nzHref="#anchor2"
-          nzTitle="教材适用情况"
-        ></nz-link>
-        <nz-link nzHref="#anchor3" nzTitle="作者信息">
-          <nz-link nzHref="#anchor3_1" nzTitle="作者"></nz-link>
-          <nz-link nzHref="#anchor3_2" nzTitle="第一主编(作者)情况"></nz-link>
-        </nz-link>
-        <nz-link nzHref="#anchor4" nzTitle="申报教材建设历程"></nz-link>
-        <nz-link nzHref="#anchor5" nzTitle="申报教材特色及创新"></nz-link>
-        <nz-link
-          nzHref="#anchor6"
-          nzTitle="申报教材应用情况及社会影响力"
-        ></nz-link>
-        <nz-link nzHref="#anchor7" nzTitle="附件材料清单"></nz-link>
-        <!-- <nz-link nzHref="#anchor8" nzTitle="教材作者诚信承诺"></nz-link> -->
-        <nz-link nzHref="#anchor9" nzTitle="申报单位承诺意见"></nz-link>
-        <!-- <nz-link nzHref="#base" nzTitle="初评推荐意见"></nz-link> -->
-      </nz-anchor>
+
+      <div style="position: fixed">
+        <ul class="herf">
+          <li class="lv1" (click)="herfLink('anchor1')">教材基本信息</li>
+          <li class="lv1" (click)="herfLink('anchor2')">教材适用情况</li>
+          <li class="lv1" (click)="herfLink('anchor3')">
+            作者信息
+          </li>
+          <li class="lv2" (click)="herfLink('anchor3_1')">作者</li>
+          <li class="lv2" (click)="herfLink('anchor3_2')">第一主编(作者)情况</li>
+          <li class="lv1" (click)="herfLink('anchor4')">申报教材建设历程</li>
+          <li class="lv1" (click)="herfLink('anchor5')">申报教材特色及创新</li>
+          <li class="lv1" (click)="herfLink('anchor6')">申报教材应用情况及社会影响力</li>
+          <li class="lv1" (click)="herfLink('anchor9')">申报单位承诺意见</li>
+          <li class="lv1" (click)="herfLink('anchor7')">附件材料清单</li>
+        </ul>
+      </div>
+
     </div>
   </div>
 </div>

+ 16 - 1
projects/textbook/src/modules/common/textbook-details/textbook-details.component.scss

@@ -42,7 +42,7 @@
   .base-content {
     .row {
       display: flex;
-      margin-bottom: 14px;
+      margin-bottom: 18px;
       .label {
         width: 220px;
         font-family: PingFang SC;
@@ -92,4 +92,19 @@
   // width: 200px;
   justify-content: end;
   padding-right: 100px;
+}
+
+.herf{
+  font-size: 14px;
+  color: rgb(77, 76, 76);
+  .lv2{
+    margin-left: 20px;
+  }
+  li{
+    list-style: none;
+    margin: 8px 0;
+  }
+  li:hover{
+    color: #1890ff;
+  }
 }

+ 8 - 0
projects/textbook/src/modules/common/textbook-details/textbook-details.component.ts

@@ -55,4 +55,12 @@ export class TextbookDetailsComponent implements OnInit {
     console.log(url);
     window.open(url)
   }
+  /**锚点 */
+  herfLink(domId:string){
+    console.log(domId)
+    let topEle = document.getElementById(domId)
+    if(topEle){
+      topEle.scrollIntoView({ behavior: 'smooth' });
+    }
+  }
 }

+ 1 - 0
projects/textbook/src/modules/nav-admin/page-user/page-user.component.ts

@@ -187,6 +187,7 @@ export class PageUserComponent implements OnInit {
     this.updateUrlPageIndex(e);
     this.getProfile();
   }
+  /** 更新页码queryParams */
   updateUrlPageIndex(page:number){
     let search = window.location.search;
     if(!search){

+ 19 - 8
projects/textbook/src/modules/nav-author/components/attachment/attachment.component.html

@@ -7,10 +7,12 @@
     <div class="title">1.所有作者政治审查意见(必须上传 )</div>
     <div class="text">
       <span style="color: red;">*</span>
-      从本申报平台
+      从本申报平台 <a (click)="downloadFile('教材编写人员政治审查表.docx')">下载格式要求</a> 后,对应作者姓名上传“作者政治审查表” PDF 格式,大小不超过 2M。作者单位党委对作者进行审查,对政治思想表现情况进行评价,确保作者的正确政治方向、价值取向,无违法违纪等记录。
+      教材编写成员涉及多个不同单位时需要各单位分别出具意见,并由所在单位党委盖章。
+      <!-- 从本申报平台
       <a (click)="downloadFile('教材编写人员政治审查表.docx')">下载格式要求</a>
       后,对应作者姓名上传“作者政治审查表”,支持 PDF、JPG、JPEG、PNG 格式,大小不超过 2M。作者单位党委对作者进行审查,对政治思想表现情况进行评价,确保作者的正确政治方向、价值取向,无违法违纪等记录。
-      教材编写成员涉及多个不同单位时需要各单位分别出具意见,并由所在单位党委盖章。
+      教材编写成员涉及多个不同单位时需要各单位分别出具意见,并由所在单位党委盖章。 -->
     </div>
     <nz-table #basicTable [nzData]="authorList" [nzScroll]="{ x: (maxWidth || '1200') + 'px' }">
       <thead>
@@ -77,7 +79,7 @@
             @if (data.examine) {
             <a style="color: #3e49b3;" (click)="openFile(data.examine)">政治审查表 </a>
             }
-            <app-comp-upload (change)="upload($event,'examine',index)"></app-comp-upload>
+            <app-comp-upload [type]="'pdf'" (change)="upload($event,'examine',index)"></app-comp-upload>
           </td>
           <td nzRight>
             <!-- <a (click)="onPush('authorList', index)"><span nz-icon style="font-size: 20px; margin-right: 10px"
@@ -117,9 +119,16 @@
   <div class="author-content">
     <div class="title">3.专家审查意见表(必须上传)</div>
     <div class="text">
-      由第一主编所在单位和出版机构邀请校内外相关学科专业领域专家,对教材进行思想性、学术性审核。专家不少于
+      从本申报平台 <a (click)="downloadFile('专家审查意见表.docx')">下载格式要求</a> 后,由第一主编所在单位和出版机构邀请校内外相关学科专业领域专家,
+      对教材进行思想性、学术性审查。专家不少于 3 名,其中半数以上为校外专家,
+      专家分别实名评价并签字,并注明所在单位及专业身份。评价人不得是本教材的作者。
+      <!-- 从本申报平台 <a (click)="downloadFile('专家审查意见表.docx')">下载格式要求</a> 后,对应作者姓名上传“作者政治审查表” PDF 格式,大小不超过 2M。作者单位党委对作者进行审查,对政治思想表现情况进行评价,
+      确保作者的正确政治方向、价值取向,无违法违纪等记录。教材编写成员涉及多个不同单位时需要各单位分别出具意见,
+      并由所在单位党委盖章。 -->
+      <!-- 由第一主编所在单位和出版机构邀请校内外相关学科专业领域专家,对教材进行思想性、学术性审核。专家不少于
       3
-      名,其中半数以上为校外专家,专家分别实名评价并签字,并注明所在单位及专业身份。评价人不得是本教材的作者。<a (click)="downloadFile('专家审查意见表.docx')">下载模板</a>
+      名,其中半数以上为校外专家,专家分别实名评价并签字,并注明所在单位及专业身份。评价人不得是本教材的作者。
+      <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>
@@ -209,13 +218,15 @@
       <p>
         <a style="color: #3e49b3;font-size: 14px;" (click)="openFile(url?.url)">
           <span nz-icon nzType="file" nzTheme="outline"></span>
-          CIP 相关截图 {{$index+1}}
+          CIP 相关截图 
         </a>
       </p>
       }
       }
-      <app-comp-upload [type]="'pdf'" [width]="320" [maxlenght]="99" (change)="upload($event, 'cipProveFile')"
-        title="上传文件"></app-comp-upload>
+      <app-comp-upload [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> -->
 
       <div class="text upText" style="margin: 10px 0">
         支持上传PDF,大小不超过 2M

+ 7 - 2
projects/textbook/src/modules/nav-author/components/attachment/attachment.component.ts

@@ -208,7 +208,10 @@ export class AttachmentComponent implements OnInit {
       this.msg.create('warning', '请返回选择适用课程性质')
       return true
     }
-
+    if(this.eduTextbook?.get('accept')!='本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。'){
+      this.msg.create('warning', '请返回输入诚信承诺')
+      return true
+    }
     let eduColumn = eduTextBook.EduTextbook.fields
     let ignoreFiled = [
       'typeNumber', 'code', 'editionNumber', 'importantProjectOther',
@@ -336,10 +339,12 @@ export class AttachmentComponent implements OnInit {
       type == 'evidence' || type == 'unitMaterial') { 
       this[type].url = file?.url
       this[type].name = file?.name
-    } else if (type == 'moreMaterial'  || type == 'cipProveFile') {
+    } else if (type == 'moreMaterial'  ) {
       this[type] = [...(this[type] || []), { name: file.name, url: file.url }]
     }else if (type == 'signature' || type == 'examine') {
       this.authorList[index][type] = file?.url
+    }else if(type == 'cipProveFile'){
+      this[type] = [ { name: file.name, url: file.url }]
     }
     console.log(this.authorList)
   }

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

@@ -196,15 +196,15 @@
       </nz-form-control>
     </nz-form-item>
     <nz-form-item style="margin-bottom: 16px">
-      <nz-form-label [nzSm]="8" [nzNoColon]="true" [nzXs]="8" nzRequired>出版时间及版次</nz-form-label>
+      <nz-form-label [nzSm]="8" [nzNoColon]="true" [nzXs]="8" nzRequired>本版出版时间及版次</nz-form-label>
       <nz-form-control nzErrorTip="请输入出版时间" [nzSm]="12" [nzXs]="12">
         <nz-input-group>
           <div class="basic-row">
-            <nz-date-picker nzMode="month" style="flex: 1" formControlName="editionDate" [nzDisabledDate]="disabledEditionDate"></nz-date-picker>
+            <nz-date-picker nzMode="month" style="flex: 1" formControlName="editionDate"></nz-date-picker>
             <nz-input-group style="width: 100px; margin-left: 20px" [nzSuffix]="suffixTemplateInfo">
               <input type="number" formControlName="editionNumber" nz-input placeholder="输入版次" />
             </nz-input-group>
-            <ng-template #suffixTemplateInfo>  </ng-template>
+            <ng-template #suffixTemplateInfo>  </ng-template>
           </div>
         </nz-input-group>
       </nz-form-control>
@@ -214,11 +214,11 @@
       <nz-form-control nzErrorTip="请输入完整内容" [nzSm]="12" [nzXs]="12">
         <nz-input-group>
           <div class="basic-row">
-            <nz-date-picker style="flex: 1" formControlName="printDate"></nz-date-picker>
-            <nz-input-group style="width: 100px; margin-left: 20px" [nzSuffix]="suffixTemplateInfo">
+            <nz-date-picker nzMode="month" style="flex: 1" formControlName="printDate"  [nzDisabledDate]="disabledEditionDate"></nz-date-picker>
+            <nz-input-group style="width: 100px; margin-left: 20px" [nzSuffix]="suffixTemplateInfo02">
               <input type="number" formControlName="printNumber" nz-input placeholder="输入印次" />
             </nz-input-group>
-            <ng-template #suffixTemplateInfo> 次 </ng-template>
+            <ng-template #suffixTemplateInfo02> 次 </ng-template>
           </div>
         </nz-input-group>
       </nz-form-control>

+ 20 - 4
projects/textbook/src/modules/nav-author/components/faith/faith.component.html

@@ -25,7 +25,18 @@
         </nz-form-control>
       </nz-form-item>
     </div> -->
-  <form nz-form [formGroup]="validateForm" nzLayout="vertical">
+
+
+    <div class="author-content">
+      <div class="nav"><b>教材作者诚信承诺</b></div>
+      <p>输入诚信承诺:本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。</p>
+      <input [(ngModel)]="value" (ngModelChange)="changeAccept()" nz-input placeholder="请输入承诺内容" />
+
+    </div>
+
+
+
+  <!-- <form nz-form [formGroup]="validateForm" nzLayout="vertical">
     <div class="author-content">
       <div class="nav"><b>教材作者诚信承诺</b></div>
       <p>输入诚信承诺:本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。</p>
@@ -41,18 +52,23 @@
         高校主管领导输入以下承诺:已对教材有关信息及填报的内容进行核实,保证真实性。经对该教材评审评价,同意该教材申报。并在导出函报文件后签字加盖高校公章;
         <br> 出版单位主管领导输入以下承诺:已核实该教材未通过其他渠道申报,
         对教材有关信息及填报的内容进行了核实,保证真实性。经对该教材评审评价,同意该教材申报。并在导出函报文件后签字加盖出版单位公章。
-        <!-- <a (click)="downloadFile('申报单位承诺意见.docx')">下载模板</a> -->
       </div>
       <nz-form-item>
         <nz-form-control>
           <nz-textarea-count [nzMaxCharacterCount]="200">
-            <textarea maxlength="200" rows="4" formControlName="unitMaterial" nz-input></textarea>
+            <textarea placeholder="请输入申报单位诚信承诺内容" maxlength="200" rows="4" formControlName="unitMaterial" nz-input></textarea>
           </nz-textarea-count>
         </nz-form-control>
       </nz-form-item>
     </div>
-  </form>
+  </form> -->
 </div>
+
+
+
+
+
+
 <div class="footer">
   <button nz-button nzType="default" style="margin-right: 20px" (click)="submitForm('save')">
     保存本页

+ 70 - 55
projects/textbook/src/modules/nav-author/components/faith/faith.component.ts

@@ -72,19 +72,27 @@ export class FaithComponent  implements OnInit {
   ) { }
   ngOnInit() {
     if (this.eduTextbook.id) {
-      this.validateForm = this.fb.group({
-        unitMaterial: [this.eduTextbook.get('unitMaterial')?.text||'' , [Validators.maxLength(200)]],
-        accept: [this.eduTextbook.get('accept') || '', [Validators.required]],
-      });
+
+      this.value = this.eduTextbook.get('accept') || ''
+
+
+      // this.validateForm = this.fb.group({
+      //   // unitMaterial: [this.eduTextbook.get('unitMaterial')?.text||'' , [Validators.maxLength(200)]],
+      //   accept: [this.eduTextbook.get('accept') || '', [Validators.required]],
+      // });
     }
   }
   value:string=''
 
 
   async submitForm(event?: string): Promise<void> {
-
-    let params: any = this.validateForm.value;
-    console.log(params)
+    if(this.value!='本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。'){
+      this.msg.error('诚信承诺输入错误,请正确输入');
+      // return
+    }
+    // let params: any = this.validateForm.value;
+    // console.log(params)
+    let params = {accept:this.value}
     await this.saveEduTextbook(params);
 
     if (event == 'pre') {//上一步
@@ -107,6 +115,7 @@ export class FaithComponent  implements OnInit {
   }
 
   async saveEduTextbook(params: any) {
+    
     if (!this.eduTextbook) {
       this.msg.error('请先创建教材');
       return;
@@ -117,59 +126,65 @@ export class FaithComponent  implements OnInit {
       className: 'Company',
       objectId: this.tbookSer.company,
     });
-    params.unitMaterial &&
-      this.eduTextbook?.set('unitMaterial',{text:params.unitMaterial} );
+    // params.unitMaterial &&
+    //   this.eduTextbook?.set('unitMaterial',{text:params.unitMaterial} );
       params.accept &&
       this.eduTextbook?.set('accept', params.accept);
     await this.eduTextbook?.save();
     return;
   }
-  upload(e: any, type: string, index?: any) {
-    let file = e[(e?.length - 1) || 0];
-    if(type=='unitMaterial'){
-      this[type].url = file?.url
-      this[type].name = file?.name
+  // upload(e: any, type: string, index?: any) {
+  //   let file = e[(e?.length - 1) || 0];
+  //   if(type=='unitMaterial'){
+  //     this[type].url = file?.url
+  //     this[type].name = file?.name
+  //   }
+  // }
+
+
+
+  // /**获取文件名 */
+  // getFileName(url: string) {
+  //   if (!url) return ''
+  //   let str = url?.split('/')[5]
+  //   let index = str?.indexOf('-')
+  //   let result = decodeURIComponent(str?.substring(index + 1))
+  //   return result || '未知文件名'
+  // }
+
+  // downloadFile(fileName: string) {
+  //   // let fileName = '十四五”普通高等教育本科国家级规划教材第一次遴选推荐申报表.docx'
+  //   const fileUrl = `../../../../../public/file/${fileName}`;
+  //   this.http.get(fileUrl, { responseType: 'blob' }).subscribe((blob) => {
+  //     const url = window.URL.createObjectURL(blob);
+  //     const a = document.createElement('a');
+  //     a.href = url;
+  //     a.download = fileName;
+  //     document.body.appendChild(a);
+  //     a.click();
+  //     document.body.removeChild(a);
+  //     window.URL.revokeObjectURL(url);
+  //   })
+  // }
+  // openFile(url: string) {
+  //   console.log(url);
+  //   window.open(url)
+  // }
+
+
+  // validateForm: FormGroup<{
+  //   // unitMaterial: FormControl<string | null>;
+  //   accept: FormControl<string | null>;
+  // }> = this.formBuilder.group({
+  //   // unitMaterial: ['', [Validators.maxLength(200)]],
+  //   accept: ['', [Validators.maxLength(100)]]
+
+  // });
+  changeAccept(){
+    console.log(this.value)
+    let str = '本人自愿参加此次申报,已认真填写并检查以上材料,保证内容真实。'
+    if(str.indexOf(this.value)==-1){
+      this.msg.create('warning','请正确输入内容')
     }
   }
-
-
-
-  /**获取文件名 */
-  getFileName(url: string) {
-    if (!url) return ''
-    let str = url?.split('/')[5]
-    let index = str?.indexOf('-')
-    let result = decodeURIComponent(str?.substring(index + 1))
-    return result || '未知文件名'
-  }
-
-  downloadFile(fileName: string) {
-    // let fileName = '十四五”普通高等教育本科国家级规划教材第一次遴选推荐申报表.docx'
-    const fileUrl = `../../../../../public/file/${fileName}`;
-    this.http.get(fileUrl, { responseType: 'blob' }).subscribe((blob) => {
-      const url = window.URL.createObjectURL(blob);
-      const a = document.createElement('a');
-      a.href = url;
-      a.download = fileName;
-      document.body.appendChild(a);
-      a.click();
-      document.body.removeChild(a);
-      window.URL.revokeObjectURL(url);
-    })
-  }
-  openFile(url: string) {
-    console.log(url);
-    window.open(url)
-  }
-
-
-  validateForm: FormGroup<{
-    unitMaterial: FormControl<string | null>;
-    accept: FormControl<string | null>;
-  }> = this.formBuilder.group({
-    unitMaterial: ['', [Validators.maxLength(200)]],
-    accept: ['', [Validators.maxLength(100)]]
-
-  });
-
 }

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

@@ -42,19 +42,19 @@
             
             
             <nz-form-control class="val" nzErrorTip="请选择适用课程性质" style="width: 100%">
-              <nz-checkbox-wrapper style="width: 100%;">
+              <nz-checkbox-wrapper class="check">
                 <div nz-row>
                   @for (checkItem of checkOptionsOne; track $index) {
                     <label [ngModelOptions]="{standalone: true}" nz-checkbox [nzValue]="checkItem.value" [(ngModel)]="checkItem.checked">{{checkItem.value}}</label>
                   }
                 </div>
               </nz-checkbox-wrapper>
-              <nz-radio-group style="margin: 10px 0;" [ngModelOptions]="{standalone: true}" [(ngModel)]="checkTwo" (ngModelChange)="changeRadio()">
+              <nz-radio-group class="check" [ngModelOptions]="{standalone: true}" [(ngModel)]="checkTwo" (ngModelChange)="changeRadio()">
                 @for (checkItem of checkOptionsTwo; track $index) {
                   <label nz-radio [nzValue]="checkItem.value">{{checkItem.label}}</label>
                 }
               </nz-radio-group>
-              <nz-checkbox-wrapper style="width: 100%;">
+              <nz-checkbox-wrapper class="check">
                 <div nz-row>
                   @for (checkItem of checkOptionsThree; track $index) {
                     <label [ngModelOptions]="{standalone: true}"  nz-checkbox [nzValue]="checkItem.value" [(ngModel)]="checkItem.checked">{{checkItem.value}}</label>

+ 5 - 0
projects/textbook/src/modules/nav-author/components/textbook-pertain/textbook-pertain.component.scss

@@ -11,6 +11,11 @@
     // }
     .val{
       min-height: auto;
+      .check{
+        padding: 10px 0;
+        width: 100%;
+        border-bottom:1px solid #e2e2e2 ;
+      }
     }
   }
   .author-content{

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

@@ -132,7 +132,7 @@ export class TextbookPertainComponent implements OnInit {
     {
       name: '',
       unit: '',
-      birth: '',
+      birth: new Date('December 1, 1975 00:00:00'),
       nationality: '',
       job: '',
       title: '',
@@ -314,7 +314,7 @@ export class TextbookPertainComponent implements OnInit {
         this.authorList.splice(idx + 1, 0, {
           name: '',
           unit: '',
-          birth: '',
+          birth: new Date('December 1, 1975 00:00:00'),
           nationality: '',
           job: '',
           title: '',
@@ -347,7 +347,7 @@ export class TextbookPertainComponent implements OnInit {
             {
               name: '',
               unit: '',
-              birth: '',
+              birth: new Date('December 1, 1975 00:00:00'),
               nationality: '',
               job: '',
               title: '',

+ 1 - 0
projects/textbook/src/services/languages.map.ts

@@ -4,6 +4,7 @@ export const languages = {
     { lang: 'en', name: '英文' },
     { lang: 'or', name: '其他外国语' },
     { lang: 'min', name: '中国少数民族语言' },
+    { lang: 'man', name: '盲文' },
     // { lang: 'es', name: '西班牙语' },
     // { lang: 'fr', name: '法语' },
     // { lang: 'de', name: '德语' },