Explorar el Código

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

xll hace 6 meses
padre
commit
d1c14e3de3

+ 10 - 3
projects/textbook/src/modules/nav-admin/components/collect-textbook/collect-textbook.component.html

@@ -40,8 +40,11 @@
         <th nzEllipsis nzWidth="120px">ISBN</th>
         <th nzEllipsis nzWidth="120px">出版单位</th>
         <th nzEllipsis nzWidth="120px">出版单位联系人</th>
+        @if (!eduProcess?.id) {
+          <th nzEllipsis nzWidth="120px">申报部门</th>
+        }
         <th nzEllipsis nzWidth="80px" nzAlign="center">文件状态</th>
-        <th nzEllipsis nzWidth="80px" nzAlign="center" nzRight>操作</th>
+        <th nzEllipsis nzWidth="100px" nzAlign="center" nzRight>操作</th>
       </tr>
     </thead>
     @if (textbookList.length > 0) {
@@ -109,14 +112,18 @@
             </div>
           </ng-template>
         </td>
+        @if (!eduProcess?.id) {
+          <td nzEllipsis>{{data?.get('department')?.get('name')}}</td>
+        }
         <td nzEllipsis nzAlign="center">
           <span [style.color]="statusMap[data.id].color">{{
             statusMap[data.id].status
           }}</span>
         </td>
-        <td nzEllipsis nzRight nzAlign="center">
+        <td nzEllipsis nzRight nzAlign="left">
           @if (statusMap[data.id].btn == '查看') {
-          <a nz-button nzType="link" (click)="onReview(data)"> 查看</a>
+          <a nz-button nzType="link" (click)="onReview(data)">查看</a>
+          <a nz-button nzType="link" style="color:#c6233f;" (click)="onReject(data)">退回</a>
           }@else {
           <a nz-button nzType="link" (click)="onEmitMsg(data)">提醒</a>
           }

+ 32 - 2
projects/textbook/src/modules/nav-admin/components/collect-textbook/collect-textbook.component.ts

@@ -139,13 +139,13 @@ export class CollectTextbookComponent implements OnInit {
         },
       };
       let query = Parse.Query.fromJSON('EduTextbook', queryParams);
-      query.equalTo('eduProcess', this.eduProcess?.id);
+      this.eduProcess?.id && query.equalTo('eduProcess', this.eduProcess?.id);
       query.descending('updatedAt');
       query.notEqualTo('isDeleted', true);
       query.equalTo('status', '400');
       query.equalTo('recommend', true);
       query.notEqualTo('discard', true);
-      query.include('childrens');
+      query.include('childrens','department.name');
       this.count = await query.count();
       query.limit(this.limit);
       query.skip(this.limit * (this.pageIndex - 1));
@@ -307,4 +307,34 @@ export class CollectTextbookComponent implements OnInit {
     this.msg.success('设置成功');
     this.showModal = false;
   }
+
+  /* 退回 */
+  onReject(data:Parse.Object){
+    console.log(data);
+    this.modal.confirm({
+      nzTitle: '是否退回文件?',
+      nzContent: '退回后,工作联系人将需要重新提交文件。',
+      nzOkText: '确定',
+      nzOkType: 'primary',
+      nzOkDanger: true,
+      nzOnOk:async () => {
+        console.log('OK')
+        let rejectPromiseList = data.get('childrens').map((volume: any) => {
+          return new Promise((resolve) => {
+            volume?.set('collectStatus','100')
+            volume?.save().then(()=>  resolve(true))
+          })
+        })
+        await Promise.all(rejectPromiseList);
+        this.statusMap[data.id] = {
+          status: '待上传',
+          color: '#1890ff',
+          btn: '提醒',
+        };
+        this.msg.success('已退回')
+      },
+      nzCancelText: '取消',
+      nzOnCancel: () => console.log('Cancel')
+    });
+  }
 }

+ 3 - 3
projects/textbook/src/modules/nav-admin/page-process/page-process.component.html

@@ -14,7 +14,7 @@
       在流程中邀请作者、高校联系人、评审员登录系统,创建并提交教材,由工作联系人评审、提交推荐教材完成流程工作
     </div>
   </nz-page-header-title>
-  @if (active == 2) {
+  @if (eduProcess?.get('status') == '400') {
   <nz-page-header-extra>
     <nz-space>
       <button
@@ -47,12 +47,12 @@
     </nz-tab>
 
     <nz-tab nzTitle="教材文件">
-      @if (active == 2) {
+      <!-- @if (active == 2) { -->
       <app-collect-textbook
         #collect
         [eduProcess]="eduProcess"
       ></app-collect-textbook>
-      }
+      <!-- } -->
     </nz-tab>
   </nz-tabset>
 </div>

+ 10 - 4
projects/textbook/src/modules/nav-admin/page-textbook/page-textbook.component.html

@@ -3,11 +3,17 @@
   <nz-page-header-title
     >全部教材
     <br />
-    <div class="subtitle">
-      查看全部申报流程所提交的教材推荐表
-    </div>
+    <div class="subtitle">查看全部申报流程所提交的教材推荐表</div>
   </nz-page-header-title>
 </nz-page-header>
 <div class="conetent">
-  <app-textbook [filterObj]="filterObj"></app-textbook>
+  <nz-tabset [(nzSelectedIndex)]="active">
+    <nz-tab nzTitle="教材列表">
+      <app-textbook [filterObj]="filterObj"></app-textbook>
+    </nz-tab>
+    <nz-tab nzTitle="教材文件">
+      <app-collect-textbook
+    ></app-collect-textbook>
+    </nz-tab>
+  </nz-tabset>
 </div>

+ 17 - 0
projects/textbook/src/modules/nav-admin/page-textbook/page-textbook.component.scss

@@ -11,4 +11,21 @@
 .conetent{
   margin: 0 0 20px;
   padding: 0 24px;
+  height: calc(100vh - 250px);
+}
+
+::ng-deep .ant-page-header-heading-title{
+  white-space: normal;
+}
+::ng-deep .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{
+  color: #c6233f;
+}
+::ng-deep .ant-tabs-ink-bar{
+  background: #c6233f;
+}
+::ng-deep .ant-tabs-tab:hover{
+  color: #e97488;
+}
+::ng-deep .ant-tabs-tab-btn:active{
+  color: #e97488;
 }

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

@@ -7,6 +7,10 @@ import { NzBreadCrumbModule } from 'ng-zorro-antd/breadcrumb';
 import * as Parse from 'parse';
 import { CommonModule } from '@angular/common';
 import { TextbookComponent } from '../../../app/textbook/textbook.component';
+import { NzTabsModule } from 'ng-zorro-antd/tabs';
+import { CollectTextbookComponent } from '../components/collect-textbook/collect-textbook.component';
+
+
 @Component({
   selector: 'app-page-textbook',
   templateUrl: './page-textbook.component.html',
@@ -18,6 +22,8 @@ import { TextbookComponent } from '../../../app/textbook/textbook.component';
     NzPageHeaderModule,
     NzBreadCrumbModule,
     TextbookComponent,
+    CollectTextbookComponent,
+    NzTabsModule
   ],
   standalone: true,
 })
@@ -37,6 +43,8 @@ export class PageTextbookComponent implements OnInit {
     status: ['400'],
     btns: {review:true},
   };
+  active: number = 0;
+
   constructor(
     private router: Router,
     private activeRoute: ActivatedRoute // private translate:TranslateService,

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

@@ -354,7 +354,7 @@
   </div>
   <div class="author-content">
     <div class="title">6.其他材料(可选提供)</div>
-    <div class="text">其他佐证材料。</div>
+    <div class="text">其他佐证材料,限两份以内。</div>
     <!-- @if (moreMaterial.length>0) { @for (url of moreMaterial; track $index) {
     <p>
       <a style="color: #3e49b3; font-size: 14px" (click)="openFile(url?.url)">

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

@@ -118,7 +118,7 @@ export class ContentComponent implements OnInit {
 
   async submitForm(): Promise<boolean> {
     let coursesVrifly = !this.courses.some((item) =>
-      Object.values(item).some((val) => val == '' || val == undefined)
+      Object.values(item).some((val) => val != 0 && (val == '' || val == undefined))
     );
     this.eduTextbookVolume?.set('courses', this.courses);
     await this.eduTextbookVolume?.save();

+ 5 - 5
projects/textbook/src/services/textbook.ts

@@ -60,14 +60,14 @@ export class textbookServer {
   async formatNode(id: string): Promise<Array<any>> {
     if (!id) return [];
     let query = new Parse.Query('Department');
-    query.select('name', 'parent', 'hasChildren', 'type', 'branch');
+    query.select('name', 'parent.name', 'branch');
     let r = await query.get(id);
     let arr = [
       {
         title: r.get('name'),
         key: r.id,
-        hasChildren: r.get('hasChildren'), //是否是最下级
-        type: r.get('type'),
+        // hasChildren: r.get('hasChildren'), //是否是最下级
+        // type: r.get('type'),
         branch: r?.get('branch'),
         parent: r?.get('parent')?.id, //上级
       },
@@ -354,8 +354,8 @@ export class textbookServer {
         'department.branch'
       );
       query.limit(3000);
-      // query.containedIn('status', ['103', '200', '201', '400']);
-      query.containedIn('status',['400'])
+      query.containedIn('status', ['103', '200', '201', '400']);
+      // query.containedIn('status',['400'])
       let data = await query.find();
       let table = `<table border="1px" cellspacing="0" cellpadding="0">
           <thead>

+ 2 - 2
server/cloud/tbook/func-tbook-export.js

@@ -304,9 +304,9 @@ function fixVolumeData(json,volumeData,index,totalJson){
     json.uQT = circleCheck[(volumeData?.unitType?.indexOf("其他")>-1)?1:0];
     json.dc4 = disciplineCode4;
     json.dn4 = disciplineName4;
-    json.mc4 = majorCode4;
+    json.mc4 = disciplineCode4;
     json.mn4 = majorName4;
-    json.majorCodePad = majorCode4;
+    json.majorCodePad = disciplineCode4;
     json.mc6 = majorCode6;
     json.mn6 = majorName6;
     json.lCN = circleCheck[(volumeData?.lang=="中文")?1:0];