Browse Source

update 管理员端

warrior 7 months ago
parent
commit
8783d165e3

+ 2 - 0
projects/textbook/src/app/textbook/textbook.component.ts

@@ -417,6 +417,7 @@ export class TextbookComponent implements OnInit {
             this.getTextbook();
           } catch (err) {}
         }
+        this.onAllChecked(false)
       },
       nzCancelText: '取消',
       nzOnCancel: () => console.log('Cancel'),
@@ -585,6 +586,7 @@ export class TextbookComponent implements OnInit {
       (data) => {
         console.log(data);
         let url = data.zipUrl;
+        url = url.replaceAll("http://","https://");
         const a = document.createElement('a'); // 创建一个<a>元素
         a.href = url; // 设置链接的href属性为要下载的文件的URL
         a.download = '报送流程'; // 设置下载文件的名称

+ 1 - 1
projects/textbook/src/modules/nav-province-contact/submitted/export-file/export-file.component.html

@@ -2,7 +2,7 @@
   <div class="left">
     <div class="row">
       <div class="lable">推荐教材</div>
-      <div class="val">{{allCount - otherCount}}</div>
+      <div class="val">{{allCount}}</div>
     </div>
     <div class="row">
       <div class="lable">申报限额外推荐教材</div>

+ 2 - 3
projects/textbook/src/modules/nav-province-contact/submitted/export-file/export-file.component.ts

@@ -34,9 +34,8 @@ export class ExportFileComponent implements OnInit {
       query.equalTo('eduProcess', id);
       this.allCount = await query.count();
       query.containedIn('approval', [
-        '101计划”核心教材',
-        '“四新”重点建设教材',
-        '战略性新兴领域教材',
+        '首届全国教材建设奖优秀教材(高等教育类)教材',
+        '否',
       ]);
       this.otherCount = await query.count();
     });

+ 45 - 24
projects/textbook/src/modules/nav-province-contact/submitted/export-list/export-list.component.ts

@@ -1,8 +1,17 @@
-import { Component, EventEmitter, OnInit, Output, ViewChild,ElementRef, Input } from '@angular/core';
+import {
+  Component,
+  EventEmitter,
+  OnInit,
+  Output,
+  ViewChild,
+  ElementRef,
+  Input,
+} from '@angular/core';
 import { Router, ActivatedRoute } from '@angular/router';
 import { TextbookComponent } from '../../../../app/textbook/textbook.component';
 import { CommonCompModule } from '../../../../services/common.modules';
 import Parse from 'parse';
+import { NzMessageService } from 'ng-zorro-antd/message';
 
 @Component({
   selector: 'app-export-list',
@@ -12,19 +21,22 @@ import Parse from 'parse';
   standalone: true,
 })
 export class ExportListComponent implements OnInit {
-  
-  @ViewChild('textbook') textbook: ElementRef|any;
-  
+  @ViewChild('textbook') textbook: ElementRef | any;
+
   @Output() change: EventEmitter<any> = new EventEmitter<any>();
   textBookList: Parse.Object | any;
-  @Input('eduProcess')eduProcess?:Parse.Object
+  @Input('eduProcess') eduProcess?: Parse.Object;
 
   filterObj: any = {
     isCheck: false,
-    status:['200'],
-    btns:{}
+    status: ['200'],
+    btns: {},
   };
-  constructor(private router: Router, private activeRoute: ActivatedRoute) {}
+  constructor(
+    private message: NzMessageService,
+    private router: Router,
+    private activeRoute: ActivatedRoute
+  ) {}
 
   ngOnInit() {
     this.activeRoute.paramMap.subscribe(async (params) => {
@@ -37,30 +49,39 @@ export class ExportListComponent implements OnInit {
   }
   async onChange(type: string) {
     if (type == 'next') {
-      await this.submitted()
+      if(!await this.submitted()) return
       this.change.emit('next');
     } else {
       this.change.emit('pre');
     }
   }
   //报送
-  async submitted(){
-    this.eduProcess?.set('status','300')
-    this.eduProcess?.set('releaseDate',new Date())
-    await this.eduProcess?.save()
-    let query = new Parse.Query('EduTextbook')
-    query.equalTo('eduProcess',this.eduProcess?.id)
-    query.notEqualTo('isDeleted',true)
-    query.notEqualTo('discard',true)
-    query.equalTo('render',true)
-    query.equalTo('recommend',true)
-    query.equalTo('status','200')
-    let list = await query.find()
+  async submitted():Promise<boolean|undefined> {
+    this.eduProcess?.set('status', '300');
+    this.eduProcess?.set('releaseDate', new Date());
+    let query = new Parse.Query('EduTextbook');
+    query.equalTo('eduProcess', this.eduProcess?.id);
+    query.notEqualTo('isDeleted', true);
+    query.notEqualTo('discard', true);
+    query.equalTo('render', true);
+    query.equalTo('recommend', true);
+    query.equalTo('status', '200');
+    let list = await query.find();
+    query.containedIn('approval', [
+      '首届全国教材建设奖优秀教材(高等教育类)教材',
+      '否',
+    ]);
+    let count = await query.count();
+    if (count > this.eduProcess?.get('num')) {
+      this.message.warning('当前推荐教材数量已超额')
+      return;
+    }
+    await this.eduProcess?.save();
     for (let index = 0; index < list.length; index++) {
       const item = list[index];
-      item.set('status','201')
-      await item.save()
+      item.set('status', '201');
+      await item.save();
     }
-
+    return true
   }
 }

+ 2 - 2
projects/textbook/src/services/auth.service.ts

@@ -154,11 +154,11 @@ export class AuthServr {
       switch (user?.get('accountState')) {
         case '已认证':
           if (r.get('identity')) {
-            this.router.navigate([this.roterPath[r.get('identity')]]);
             let profile = r.toJSON();
-            console.log(profile);
             localStorage.setItem('profile', JSON.stringify(profile));
             this.textbook.profile = profile;
+            this.router.navigate([this.roterPath[r.get('identity')]]);
+            // this.message.success('登录成功');
             return;
           }
           this.message.warning('已认证暂无身份');

+ 18 - 0
server/cloud/authing/func-authing-session-sync.js

@@ -17,6 +17,24 @@ export function defineAuthingLogin(){
             }
         }
     });
+
+    Parse.Cloud.define("userFind", async (request) => {
+        let mobile = request.params.mobile;
+        if(mobile) {
+            let user = {
+                mobile:mobile
+            }
+            let result = await getParseUserByAuthingUser(user);
+            return result;
+        }
+        return null;
+    },{
+        fields : {
+            mobile:{
+                required:true
+            }
+        }
+    });
 }