|
@@ -10,7 +10,6 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
import { NzRadioModule } from 'ng-zorro-antd/radio';
|
|
|
import { DatePipe } from '@angular/common';
|
|
|
import { NzEmptyModule } from 'ng-zorro-antd/empty';
|
|
|
-
|
|
|
@Component({
|
|
|
selector: 'app-textbook',
|
|
|
templateUrl: './textbook.component.html',
|
|
@@ -28,19 +27,39 @@ import { NzEmptyModule } from 'ng-zorro-antd/empty';
|
|
|
})
|
|
|
export class TextbookComponent implements OnInit {
|
|
|
textbookList: Array<Parse.Object> = [];
|
|
|
+ count: number = 0;
|
|
|
+ limit: number = 10;
|
|
|
+ pageSize: number = 1;
|
|
|
+
|
|
|
@Input('maxWidth') maxWidth: any; //最大宽度
|
|
|
@Input('depart') depart: any; //指定申报单位
|
|
|
@Input('recommend') recommend: any; //是否推荐
|
|
|
@Input('uid') uid: string = ''; //个人空间
|
|
|
@Input('path') path: string = '/nav-admin/manage/textbook/details';
|
|
|
- @Input('power') power: Boolean = false; //权限
|
|
|
@Input('discard') discard: Boolean = false; //是否删除
|
|
|
+ //相关权限配置
|
|
|
+ @Input('filterObj') filterObj: any = {
|
|
|
+ isCheck: true,
|
|
|
+ noStared: false, //非推荐
|
|
|
+ status: [],
|
|
|
+ btns: {
|
|
|
+ edit: false, //编辑
|
|
|
+ isDelete: false, //删除权限
|
|
|
+ review: false, //预览
|
|
|
+ reject: false, //退回教材
|
|
|
+ star: false, //加入推荐
|
|
|
+ remove: false, //移除推荐
|
|
|
+ submit: false, //提交
|
|
|
+ verify: false, //提交推荐权限
|
|
|
+ },
|
|
|
+ };
|
|
|
|
|
|
loading: boolean = false;
|
|
|
checkedAll: boolean = false; //全选
|
|
|
setOfCheckedId = new Set<string>();
|
|
|
searchValue: string = '';
|
|
|
-
|
|
|
+ manage: boolean = false;
|
|
|
+ eduProcessId:any = '' //流程id,verify存在时需要
|
|
|
constructor(
|
|
|
public tbookSer: textbookServer,
|
|
|
private route: Router,
|
|
@@ -50,7 +69,13 @@ export class TextbookComponent implements OnInit {
|
|
|
) {}
|
|
|
|
|
|
ngOnInit() {
|
|
|
- this.getTextbook();
|
|
|
+ this.activeRoute.paramMap.subscribe(async (params) => {
|
|
|
+ this.eduProcessId = params.get('id');
|
|
|
+ this.getTextbook();
|
|
|
+ if (Object.values(this.filterObj.btns).some((item) => item)) {
|
|
|
+ this.manage = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
async getTextbook(val?: string) {
|
|
|
this.loading = true;
|
|
@@ -84,15 +109,25 @@ export class TextbookComponent implements OnInit {
|
|
|
}
|
|
|
this.depart && query.equalTo('department', this.depart);
|
|
|
this.recommend && query.equalTo('recommend', true);
|
|
|
+ this.filterObj?.noStared && query.notEqualTo('recommend', true);
|
|
|
this.uid && query.equalTo('user', this.uid);
|
|
|
query.notEqualTo('isDeleted', true);
|
|
|
- if(!this.uid){
|
|
|
- query.equalTo('render',true)
|
|
|
- query.containedIn('status',['200','400'])
|
|
|
+ if (!this.uid) {
|
|
|
+ query.equalTo('render', true);
|
|
|
+ // query.containedIn('status', ['200', '400']);
|
|
|
}
|
|
|
- if(this.discard){
|
|
|
- query.equalTo('discard',true)
|
|
|
+ if (this.filterObj?.status?.length > 0) {
|
|
|
+ query.containedIn('status', this.filterObj?.status);
|
|
|
}
|
|
|
+ if (this.discard) {
|
|
|
+ query.equalTo('discard', true);
|
|
|
+ } else {
|
|
|
+ query.notEqualTo('discard', true);
|
|
|
+ }
|
|
|
+ // query.include('department');
|
|
|
+ this.count = await query.count();
|
|
|
+ query.limit(this.limit);
|
|
|
+ query.skip(this.limit * (this.pageSize - 1));
|
|
|
this.textbookList = await query.find();
|
|
|
console.log(this.textbookList);
|
|
|
this.loading = false;
|
|
@@ -111,6 +146,9 @@ export class TextbookComponent implements OnInit {
|
|
|
this.setOfCheckedId.delete(item.id);
|
|
|
}
|
|
|
});
|
|
|
+ if (!checked) {
|
|
|
+ this.setOfCheckedId = new Set<string>();
|
|
|
+ }
|
|
|
this.checkedAll = checked;
|
|
|
}
|
|
|
//单选
|
|
@@ -124,7 +162,7 @@ export class TextbookComponent implements OnInit {
|
|
|
this.setOfCheckedId.has(item.id)
|
|
|
);
|
|
|
}
|
|
|
- rejectSelected() {
|
|
|
+ reject(data?: Parse.Object) {
|
|
|
this.modal.confirm({
|
|
|
nzTitle: '批量退回',
|
|
|
nzContent: `确定退回吗?`,
|
|
@@ -132,41 +170,137 @@ export class TextbookComponent implements OnInit {
|
|
|
nzOkType: 'primary',
|
|
|
nzOkDanger: true,
|
|
|
nzOnOk: async () => {
|
|
|
- let selectedList = this.textbookList.filter((item: any) =>
|
|
|
- this.setOfCheckedId.has(item?.id)
|
|
|
- );
|
|
|
- let deletePromiseList = selectedList.map((item: any) => {
|
|
|
- return new Promise((resolve) => {
|
|
|
- item.set('status', '300');
|
|
|
- item.save().then(() => resolve(true));
|
|
|
+ if (data?.id) {
|
|
|
+ data.set('status', '300');
|
|
|
+ await data.save();
|
|
|
+ } else {
|
|
|
+ let selectedList = this.textbookList.filter((item: any) =>
|
|
|
+ this.setOfCheckedId.has(item?.id)
|
|
|
+ );
|
|
|
+ let deletePromiseList = selectedList.map((item: any) => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ item.set('status', '300');
|
|
|
+ item.save().then(() => resolve(true));
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
- try {
|
|
|
- await Promise.all(deletePromiseList);
|
|
|
- this.getTextbook();
|
|
|
- } catch (err) {}
|
|
|
+ try {
|
|
|
+ await Promise.all(deletePromiseList);
|
|
|
+ } catch (err) {}
|
|
|
+ }
|
|
|
+ this.getTextbook();
|
|
|
},
|
|
|
nzCancelText: '取消',
|
|
|
nzOnCancel: () => console.log('Cancel'),
|
|
|
});
|
|
|
}
|
|
|
- reject(data: Parse.Object) {
|
|
|
+ //删除
|
|
|
+ del(data?: Parse.Object) {
|
|
|
+ console.log(data);
|
|
|
this.modal.confirm({
|
|
|
- nzTitle: '退回',
|
|
|
- nzContent: `确定退回吗?`,
|
|
|
+ nzTitle: '删除教材',
|
|
|
+ nzContent: `删除后数据不可恢复,请谨慎操作`,
|
|
|
nzOkText: '确认',
|
|
|
nzOkType: 'primary',
|
|
|
nzOkDanger: true,
|
|
|
nzOnOk: async () => {
|
|
|
- data.set('status', '300');
|
|
|
- await data.save();
|
|
|
+ if (data?.id) {
|
|
|
+ data.set('isdeleted', true);
|
|
|
+ await data.save();
|
|
|
+ } else {
|
|
|
+ let selectedList = this.textbookList.filter((item: any) =>
|
|
|
+ this.setOfCheckedId.has(item?.id)
|
|
|
+ );
|
|
|
+ let deletePromiseList = selectedList.map((item: any) => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ item.set('isdeleted', true);
|
|
|
+ item.save().then(() => resolve(true));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ try {
|
|
|
+ await Promise.all(deletePromiseList);
|
|
|
+ } catch (err) {}
|
|
|
+ }
|
|
|
this.getTextbook();
|
|
|
},
|
|
|
nzCancelText: '取消',
|
|
|
nzOnCancel: () => console.log('Cancel'),
|
|
|
});
|
|
|
}
|
|
|
- toUrl(url: string) {
|
|
|
+ //加入/移除推荐
|
|
|
+ updateStatus(data?: Parse.Object, recommend?: boolean) {
|
|
|
+ this.modal.confirm({
|
|
|
+ nzTitle: `${recommend ? '加入' : '移除'}推荐`,
|
|
|
+ nzContent: `确定${recommend ? '加入' : '移除'}推荐吗?`,
|
|
|
+ nzOkText: '确认',
|
|
|
+ nzOkType: 'primary',
|
|
|
+ nzOkDanger: !recommend,
|
|
|
+ nzOnOk: async () => {
|
|
|
+ if (data?.id) {
|
|
|
+ data.set('recommend', recommend);
|
|
|
+ await data.save();
|
|
|
+ this.getTextbook();
|
|
|
+ } else {
|
|
|
+ let selectedList = this.textbookList.filter((item: any) =>
|
|
|
+ this.setOfCheckedId.has(item?.id)
|
|
|
+ );
|
|
|
+ let deletePromiseList = selectedList.map((item: any) => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ item.set('recommend', recommend);
|
|
|
+ item.save().then(() => resolve(true));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ try {
|
|
|
+ await Promise.all(deletePromiseList);
|
|
|
+ this.getTextbook();
|
|
|
+ history.go();
|
|
|
+ } catch (err) {}
|
|
|
+ }
|
|
|
+ },
|
|
|
+ nzCancelText: '取消',
|
|
|
+ nzOnCancel: () => console.log('Cancel'),
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //提交教材
|
|
|
+ submit(data?: Parse.Object) {
|
|
|
+ console.log(data);
|
|
|
+ this.modal.confirm({
|
|
|
+ nzTitle: '提交教材',
|
|
|
+ nzContent: `提交后在已提交评审教材中查看`,
|
|
|
+ nzOkText: '确认',
|
|
|
+ nzOkType: 'primary',
|
|
|
+ nzOkDanger: false,
|
|
|
+ nzOnOk: async () => {
|
|
|
+ if (data?.id) {
|
|
|
+ data.set('render', true);
|
|
|
+ data.set('status', '200');
|
|
|
+ await data.save();
|
|
|
+ } else {
|
|
|
+ let selectedList = this.textbookList.filter((item: any) =>
|
|
|
+ this.setOfCheckedId.has(item?.id)
|
|
|
+ );
|
|
|
+ let deletePromiseList = selectedList.map((item: any) => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ item.set('render', true);
|
|
|
+ item.set('status', '200');
|
|
|
+ item.save().then(() => resolve(true));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ try {
|
|
|
+ await Promise.all(deletePromiseList);
|
|
|
+ } catch (err) {}
|
|
|
+ }
|
|
|
+ this.getTextbook();
|
|
|
+ },
|
|
|
+ nzCancelText: '取消',
|
|
|
+ nzOnCancel: () => console.log('Cancel'),
|
|
|
+ });
|
|
|
+ }
|
|
|
+ toUrl(url: string, param?: Object) {
|
|
|
+ console.log(url);
|
|
|
+ if (param) {
|
|
|
+ this.route.navigate([url, param]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
this.route.navigate([url]);
|
|
|
}
|
|
|
}
|