|
@@ -33,6 +33,8 @@ const squareCheck = [`□`,String.fromCharCode(0xFE)];
|
|
|
curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "bookList": ["9V575dapEM","2YBKitpCJL","xLdiEaHGrX"] }' http://8.140.98.43/parse/functions/tbookExportReport
|
|
|
*/
|
|
|
export function defineTbookExportReport(app){
|
|
|
+
|
|
|
+ // 全新导出,每次都重新导出
|
|
|
app.post("/parse/api/tbook/export",async (request,res)=>{
|
|
|
let processId = request.body.processId;
|
|
|
let bookList = request.body.bookList;
|
|
@@ -51,23 +53,90 @@ const squareCheck = [`□`,String.fromCharCode(0xFE)];
|
|
|
code:400,
|
|
|
err:"合集内无申报教材"
|
|
|
})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // return result
|
|
|
+ res.json({
|
|
|
+ code:200,
|
|
|
+ result:result
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }catch(err){
|
|
|
+ console.error(err)
|
|
|
+ res.json({
|
|
|
+ code:400,
|
|
|
+ err:err
|
|
|
+ })
|
|
|
+ return
|
|
|
+ // throw new Parse.Error(404,"导出申报合集失败")
|
|
|
+ }
|
|
|
+ // throw new Parse.Error(404,"未找到该流程合集")
|
|
|
+ })
|
|
|
+
|
|
|
+ // 预览导出:已导出直接返回
|
|
|
+ // curl -X POST -H "Content-Type: application/json" -H 'X-Parse-Application-Id: edu-textbook' -d '{ "bookid": "j4pt2MMTXM" }' https://145.tbook.com.cn/parse/api/tbook/preview
|
|
|
+ app.post("/parse/api/tbook/preview",async (request,res)=>{
|
|
|
+ let bookid = request.body.bookid;
|
|
|
+ let isNew = request.body.isNew || false;
|
|
|
+ try{
|
|
|
+ let result
|
|
|
+ if(bookid){
|
|
|
+ let book
|
|
|
+ if(!isNew){
|
|
|
+ let query = new Parse.Query("EduTextbook")
|
|
|
+ query.include("childrens","department")
|
|
|
+ book = await query.get(bookid);
|
|
|
+ }
|
|
|
+ if(book?.get("export")){
|
|
|
+ res.json({
|
|
|
+ code:200,
|
|
|
+ data:{
|
|
|
+ urlPdf:book?.get("export")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ result = await exportProcessReportDocs(null,[bookid])
|
|
|
+ let urlPdf = result?.docsList?.[0]?.urlPdf;
|
|
|
+ if(urlPdf){
|
|
|
+ book.set('export',urlPdf);
|
|
|
+ book.save();
|
|
|
+ res.json({
|
|
|
+ code:200,
|
|
|
+ data:{
|
|
|
+ urlPdf:urlPdf
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(result)
|
|
|
+ if(result?.docsList?.length==0){
|
|
|
+ // throw new Parse.Error(404,"合集内无申报教材")
|
|
|
+ res.json({
|
|
|
+ code:400,
|
|
|
+ err:"无该教材"
|
|
|
+ })
|
|
|
+ return
|
|
|
}
|
|
|
// return result
|
|
|
res.json({
|
|
|
code:200,
|
|
|
result:result
|
|
|
})
|
|
|
+ return
|
|
|
}catch(err){
|
|
|
console.error(err)
|
|
|
res.json({
|
|
|
code:400,
|
|
|
err:err
|
|
|
})
|
|
|
+ return
|
|
|
// throw new Parse.Error(404,"导出申报合集失败")
|
|
|
}
|
|
|
// throw new Parse.Error(404,"未找到该流程合集")
|
|
|
-
|
|
|
})
|
|
|
+
|
|
|
Parse.Cloud.define("tbookExportReport", async (request) => {
|
|
|
let processId = request.params.processId;
|
|
|
let bookList = request.params.bookList;
|
|
@@ -147,7 +216,7 @@ export async function exportProcessReportDocs(processId,bookList) {
|
|
|
if(zipPath){
|
|
|
zipUrl = (await uploadFileToOSS(zipPath))?.url || null
|
|
|
}
|
|
|
- docsList = docsList.map(item=>{return {code:item.code,title:item.title,url:item?.url}})
|
|
|
+ docsList = docsList.map(item=>{return {code:item.code,title:item.title,url:item?.url,urlPdf:item?.urlPdf}})
|
|
|
}
|
|
|
|
|
|
let result = {
|
|
@@ -215,6 +284,7 @@ function fixVolumeData(json,volumeData,index){
|
|
|
json.uGJ = circleCheck[(volumeData?.unitType?.indexOf("共建")>-1)?1:0];
|
|
|
json.uQT = circleCheck[(volumeData?.unitType?.indexOf("其他")>-1)?1:0];
|
|
|
json.mc4 = majorCode4;
|
|
|
+ json.majorCodePad = majorCode4;
|
|
|
json.mn4 = majorName4;
|
|
|
json.mc6 = majorCode6;
|
|
|
json.mn6 = majorName6;
|
|
@@ -234,11 +304,12 @@ function fixVolumeData(json,volumeData,index){
|
|
|
json.currentY = currentYear;
|
|
|
json.currentM = currentMonth;
|
|
|
|
|
|
+ console.log(importantProject)
|
|
|
json.isGJS = circleCheck[(importantProject?.indexOf("建设")>-1)?1:0];
|
|
|
json.isBGJ = circleCheck[(importantProject?.indexOf("本科国家")>-1)?1:0];
|
|
|
json.isBSYX = circleCheck[(importantProject?.indexOf("省级优秀")>-1)?1:0];
|
|
|
json.isBSGH = circleCheck[(importantProject?.indexOf("省级规划")>-1)?1:0];
|
|
|
- json.isBSQT = circleCheck[isBSQT?1:0];
|
|
|
+ json.isBSQT = circleCheck[isBSQT&&bsqtName?1:0];
|
|
|
json.isFirstNot = circleCheck[volumeData?.importantProject?0:1];
|
|
|
// 作者列表
|
|
|
for (let index = 0; index < 6; index++) { // 补充空值
|
|
@@ -296,8 +367,6 @@ function renderReportDocsByTextbook(textbook){
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 联系电话:默认为作者首个存在的电话;
|
|
|
let mobile = json?.authorList?.find(item => item.mobile)?.mobile || ""
|
|
|
// 填报时间:默认为创建时间
|
|
@@ -316,7 +385,6 @@ function renderReportDocsByTextbook(textbook){
|
|
|
volumeList.push(volumeData)
|
|
|
}
|
|
|
}
|
|
|
- json.volumeList = volumeList
|
|
|
|
|
|
// 作者列表 限6人
|
|
|
let alist = []
|
|
@@ -368,7 +436,7 @@ function renderReportDocsByTextbook(textbook){
|
|
|
// let codeBarImg =
|
|
|
// console.log(codeBarImg)
|
|
|
// (其他佐证材料,限两份以内。)
|
|
|
- console.log(codePngPath)
|
|
|
+ console.log(json?.approval)
|
|
|
let isNotImpt = (json?.approval?.indexOf("101计划")==-1) && (json?.approval?.indexOf("中央")==-1) && (json?.approval?.indexOf("四新")==-1) && (json?.approval?.indexOf("建设")==-1);
|
|
|
|
|
|
|
|
@@ -440,7 +508,7 @@ function renderReportDocsByTextbook(textbook){
|
|
|
})
|
|
|
// console.log(bookData)
|
|
|
// console.log(json)
|
|
|
- let tempFileName = path.join(`${bookid}${json.title}.docx`)
|
|
|
+ let tempFileName = path.join(`${bookid}_${json.title}_申报书及附件.docx`)
|
|
|
|
|
|
// 开始文件合并导出
|
|
|
let filePath,pdfPath,urlDocx,urlPdf
|
|
@@ -495,12 +563,18 @@ function renderReportDocsByTextbook(textbook){
|
|
|
|
|
|
function toYearMonth(date){
|
|
|
// console.log("toYearMonth",date)
|
|
|
- if(typeof date == "string" && date?.indexOf("年")>-1) return date
|
|
|
+ if(typeof date == "string" && (date?.indexOf("年")>-1 || date?.indexOf("-")>-1)) return date
|
|
|
if(!date) return ""
|
|
|
let datestr = date?.iso||date
|
|
|
if(!datestr) return ""
|
|
|
date = new Date(datestr);
|
|
|
- return `${date.getFullYear()}年${date.getMonth()+1}月`
|
|
|
+ // return `${date.getFullYear()}年${date.getMonth()+1}月`
|
|
|
+ return `${date.getFullYear()}-${get2bitint(date.getMonth()+1)}`
|
|
|
+}
|
|
|
+function get2bitint(value){
|
|
|
+ if(value>=10) return value;
|
|
|
+ if(value>=0&&value<10) return "0" + value;
|
|
|
+ return value
|
|
|
}
|
|
|
|
|
|
function padString(str,width) {
|