123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- import Docxtemplater from 'docxtemplater'
- import PizZip from 'pizzip'
- // import HTMLModule from 'docx'
- function MakerSpaceWord(data,fund){
- //获取模板文件
- let _url = "./file/2023年二级学院特色创客空间建设项目申报书模板.docx";
- const x = new XMLHttpRequest();
- x.open("GET", _url, true);
- x.responseType = "blob";
- x.onload = function (e) {
- const blob = x.response;
- //转成binary
- const reader = new FileReader();
- reader.readAsArrayBuffer(blob);
- reader.onload=function(a){
- const buffer = reader.result;
- const binary = new Uint8Array(buffer)
- //创建一个PizZip实例
- const zip = new PizZip(binary);
- // 将模板内容加载到 Docxtemplater 中
- const doc = new Docxtemplater().loadZip(zip);
- //处理项目数据
- data['chapters'] = JSON.parse(data['chapters']);
- data['course_teacher'] = JSON.parse(data['course_teacher']);
- data['course_student'] = JSON.parse(data['course_student']);
- //处理资金使用情况
- let fundDataArray = [];
- fund.forEach(item=>{
- let fundData = {
- total:"",
- device:"",deviceRemarks:"",
- Material:"",MaterialRemarks:"",
- processing:"",processingRemarks:"",
- Collaboration:"",CollaborationRemarks:"",
- APPRAISAL:"",APPRAISALRemarks:"",
- entery:"",enteryRemarks:"",
- activities:"",activitiesRemarks:"",
- Transaction:"",TransactionRemarks:""
- }
- //直接经费
- let direct = JSON.parse(item['directFund']);
- //间接经费
- let indirect = JSON.parse(item['indirectFund']);
-
- direct.forEach(item2=>{
- if (item2['directFundData']==1) {
- fundData['device'] = direct.filter(item=>item['directFundData']==1)[0]['budget'];
- // console.log(fundData['device']);
- fundData['deviceRemarks'] = direct.filter(item=>item['directFundData']==1)[0]['reason'];
- }
-
- if (item2['directFundData']==2) {
- fundData['Material'] = direct.filter(item=>item['directFundData']==2)[0]['budget']
- fundData['MaterialRemarks'] = direct.filter(item=>item['directFundData']==2)[0]['reason'];
- }
-
- if (item2['directFundData']==3) {
- fundData['processing'] = direct.filter(item=>item['directFundData']==3)[0]['budget']
- fundData['processingRemarks'] = direct.filter(item=>item['directFundData']==3)[0]['reason'];
- }
-
-
- if (item2['directFundData']==4) {
- fundData['Collaboration'] = direct.filter(item=>item['directFundData']==4)[0]['budget']
- fundData['CollaborationRemarks'] = direct.filter(item=>item['directFundData']==4)[0]['reason'];
- }
-
- })
-
- indirect.forEach(item3=>{
- if (item3['indirectFundData']==1) {
- fundData['APPRAISAL'] = indirect.filter(item=>item['indirectFundData']==1)[0]['budget']
- fundData['APPRAISALRemarks'] = indirect.filter(item=>item['indirectFundData']==1)[0]['reason'];
- }
-
- if (item3['indirectFundData']==2) {
- fundData['entery'] = indirect.filter(item=>item['indirectFundData']==2)[0]['budget']
- fundData['enteryRemarks'] = indirect.filter(item=>item['indirectFundData']==2)[0]['reason'];
- }
-
- if (item3['indirectFundData']==3) {
- fundData['activities'] = indirect.filter(item=>item['indirectFundData']==3)[0]['budget']
- fundData['activitiesRemarks'] = indirect.filter(item=>item['indirectFundData']==3)[0]['reason'];
- }
-
- if (item3['indirectFundData']==4) {
- fundData['Transaction'] = indirect.filter(item=>item['indirectFundData']==4)[0]['budget']
- fundData['TransactionRemarks'] = indirect.filter(item=>item['indirectFundData']==4)[0]['reason'];
-
- }
- })
-
- fundData['total'] = Number(fundData['device'])+Number(fundData['Material'])+Number(fundData['processing'])+Number(fundData['Collaboration'])+Number(fundData['APPRAISAL'])+Number(fundData['entery'])+Number(fundData['activities'])+Number(fundData['Transaction']);
-
- fundDataArray.push(fundData);
- })
-
- //去除标签
- for(let i in data['chapters']){
- data['chapters'][i]=data['chapters'][i].replace(/<[^>]+>/g,"");
- }
- //模板数据
- let wordData = {
- ing:data['typeName']==0?"√":"□", //已建设
- ed:data['typeName']==0?"□":"√", //待建设
- projectName:data['title'],//项目名称
- college:data['name'],//
- begin_at:data['begin_at'],//项目开始时间
- plannedEnd_at:data['plannedEnd_at'],//计划完成时间
- pro_leader:data['pro_leader'],//项目负责人
- lead_leader:data['lead_leader'],//学院牵头领导
- people:(data['course_teacher'].length+data['course_student'].length),//项目组人数
- teacherNum:data['course_teacher'].length,//参与教师人数
- studentNum:data['course_student'].length,//参与学生人数
- teacher:data['course_teacher'], //教师组//name:姓名 speciality:专业 title:职称 education:学历 section:所在教研室 work:项目组角色分工
- student:data['course_student'], //学生组//name:姓名 class:班级 age:年龄 work:项目组任务分工
- brief:data['brief'],//项目简介
- Construction:data['chapters']['Construction'],//建设内容
- ProjectBasis:data['chapters']['ProjectBasis'],//立项依据
- development:data['chapters']['development'],//创客空间物理环境、制度建设及软件设施建设情况
- studio:data['chapters']['studio'],//学生创客工作室建设情况
- studentTeam:data['chapters']['studentTeam'],//学生创客团队(人才)培养预期成果、数量
- studentActivities:data['chapters']['studentActivities'],//学生创客活动组织实施情况
- Transforming:data['chapters']['Transforming'],//学生创客团队孵化、转化创业项目情况
- condition:data['chapters']['condition'],//立 项基 础及条 件
- fund:fundDataArray,//预算经费
- //total:总经费
- //小型仪器设备费:device deviceRemarks
- //材料费:Material MaterialRemarks
- //测试化验加工费:processing processingRemarks
- //项目协作费:Collaboration CollaborationRemarks
- //项目成果鉴定费:APPRAISAL APPRAISALRemarks
- //参展参赛费:entery enteryRemarks
- //创客交流活动费:activities activitiesRemarks
- //知识产权事务费:Transaction TransactionRemarks
- }
- //渲染模板
- doc.setData(wordData);
- doc.render();
- //获取渲染后的文本
- const output = doc.getZip().generate({
- type: "blob",
- mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
- compression: "DEFLATE",
- });
- let link = document.createElement("a");
- link.download = '附件3:2023年二级学院特色创客空间建设项目申报书模板(2).docx';
- link.style.display = "none";
- let blob = new Blob([output]);
- link.href = URL.createObjectURL(blob);
- document.body.appendChild(link);
- link.click();
- document.body.removeChild(link);
- }
- return
-
- }
- x.send()
- }
- // 学生创业项目申请表下载模板
- function MakerStudentWord(data,fund){
- console.log(data);
- // console.log(fund);
- //获取模板文件
- // ssti-CollegeManage\public\file\2023年学生创客项目申报书模板 .docx
- let _url = "./file/2023年学生创客项目申报书模板.docx";
- // return console.log(_url);
- const x = new XMLHttpRequest();
- x.open("GET",_url, true);
- x.responseType = "blob";
- x.onload = function (e) {
- const blob = x.response;
- //转成binary
- const reader = new FileReader();
- reader.readAsArrayBuffer(blob);
- reader.onload=function(a){
- const buffer = reader.result;
- const binary = new Uint8Array(buffer)
- //创建一个PizZip实例
- const zip = new PizZip(binary);
- // 将模板内容加载到 Docxtemplater 中
- const doc = new Docxtemplater().loadZip(zip);
- //处理项目数据
- // console.log(111);
- data['chapters'] = JSON.parse(data['chapters']);
- data['course_teacher'] = JSON.parse(data['course_teacher']);
- data['course_student'] = JSON.parse(data['course_student']);
- // return console.log(data['chapters'],data['course_teacher'],data['course_student']);
- //处理资金使用情况
- let fundDataArray = [];
- fund.forEach(item=>{
- let fundData = {
- total:"",
- device:"",deviceRemarks:"",
- Material:"",MaterialRemarks:"",
- processing:"",processingRemarks:"",
- Collaboration:"",CollaborationRemarks:"",
- APPRAISAL:"",APPRAISALRemarks:"",
- entery:"",enteryRemarks:"",
- activities:"",activitiesRemarks:"",
- Transaction:"",TransactionRemarks:""
- }
- //直接经费
- let direct = JSON.parse(item['directFund']);
- //间接经费
- let indirect = JSON.parse(item['indirectFund']);
-
- direct.forEach(item2=>{
- if (item2['directFundData']==1) {
- fundData['device'] = direct.filter(item=>item['directFundData']==1)[0]['budget'];
- // console.log(fundData['device']);
- fundData['deviceRemarks'] = direct.filter(item=>item['directFundData']==1)[0]['reason'];
- }
-
- if (item2['directFundData']==2) {
- fundData['Material'] = direct.filter(item=>item['directFundData']==2)[0]['budget']
- fundData['MaterialRemarks'] = direct.filter(item=>item['directFundData']==2)[0]['reason'];
- }
-
- if (item2['directFundData']==3) {
- fundData['processing'] = direct.filter(item=>item['directFundData']==3)[0]['budget']
- fundData['processingRemarks'] = direct.filter(item=>item['directFundData']==3)[0]['reason'];
- }
-
-
- if (item2['directFundData']==4) {
- fundData['Collaboration'] = direct.filter(item=>item['directFundData']==4)[0]['budget']
- fundData['CollaborationRemarks'] = direct.filter(item=>item['directFundData']==4)[0]['reason'];
- }
-
- })
-
- indirect.forEach(item3=>{
- if (item3['indirectFundData']==1) {
- fundData['APPRAISAL'] = indirect.filter(item=>item['indirectFundData']==1)[0]['budget']
- fundData['APPRAISALRemarks'] = indirect.filter(item=>item['indirectFundData']==1)[0]['reason'];
- }
-
- if (item3['indirectFundData']==2) {
- fundData['entery'] = indirect.filter(item=>item['indirectFundData']==2)[0]['budget']
- fundData['enteryRemarks'] = indirect.filter(item=>item['indirectFundData']==2)[0]['reason'];
- }
-
- if (item3['indirectFundData']==3) {
- fundData['activities'] = indirect.filter(item=>item['indirectFundData']==3)[0]['budget']
- fundData['activitiesRemarks'] = indirect.filter(item=>item['indirectFundData']==3)[0]['reason'];
- }
-
- if (item3['indirectFundData']==4) {
- fundData['Transaction'] = indirect.filter(item=>item['indirectFundData']==4)[0]['budget']
- fundData['TransactionRemarks'] = indirect.filter(item=>item['indirectFundData']==4)[0]['reason'];
-
- }
- })
-
-
-
-
-
-
-
- fundData['total'] = Number(fundData['device'])+Number(fundData['Material'])+Number(fundData['processing'])+Number(fundData['Collaboration'])+Number(fundData['APPRAISAL'])+Number(fundData['entery'])+Number(fundData['activities'])+Number(fundData['Transaction']);
-
- fundDataArray.push(fundData);
- })
- //去除标签
- for(let i in data['chapters']){
- data['chapters'][i]=data['chapters'][i].replace(/<[^>]+>/g,"");
- }
- //模板数据
- let wordData = {
- begin_date:data['begin_at'],//项目开始时间
- projectName:data['title'],//项目名称
- ing:data['typeName']==0?"√":"□", //创意组
- ed:data['typeName']==0?"□":"√", //初创组
- // college:data['name'],//
- mone:data['multiSelectProject'][0]==1?"√":"□", //优先支持项目
- mtwo:data['multiSelectProject'][1]==2?"√":"□",
- mthree:data['multiSelectProject'][2]==3?"√":"□",
- mfour:data['multiSelectProject'][3]==4?"√":"□",
- sone:data['schoolRemould']==1?"√":"□", //美丽校园改造项目
- stwo:data['schoolRemould']==2?"√":"□",
- sthree:data['schoolRemould']==3?"√":"□",
- sfour:data['schoolRemould']==4?"√":"□",
- stu:data['projectApplyperson']==1?"√":"□", //项目申请人
- leg:data['projectApplyperson']==1?"□":"√",
- appPeason:data['pro_leader'], //申请人姓名
- school:data['name'], //所在学院
- tel:data['phone'], //联系电话
- begin_at:data['begin_at'],
- plannedEnd_at:data['plannedEnd_at'],
- allnum:(data['course_teacher'].length+data['course_student'].length),//项目组人数
- snum:data['course_teacher'].length,//参与教师人数
- tnum:data['course_student'].length,//参与学生人数
- brief:data['brief'],//项目简介
- back:data['chapters']['back'],
- innovate:data['chapters']['innovate'],
- path:data['chapters']['path'],
- scene:data['chapters']['scene'],
- worth:data['chapters']['worth'],
- team:data['chapters']['team'],
- cost:data['chapters']['cost'],
- expectResults:data['chapters']['expectResults'],
- expectResultsTeacher:data['chapters']['expectResultsTeacher'],
- expectConversion:data['chapters']['expectConversion'],
- plan:data['chapters']['plan'],
-
- // plannedEnd_at:data['plannedEnd_at'],//计划完成时间
- // pro_leader:data['pro_leader'],//项目负责人
- // lead_leader:data['lead_leader'],//学院牵头领导
- // people:(data['course_teacher'].length+data['course_student'].length),//项目组人数
- // teacherNum:data['course_teacher'].length,//参与教师人数
- // studentNum:data['course_student'].length,//参与学生人数
- teacher:data['course_teacher'], //教师组//name:姓名 speciality:专业 title:职称 education:学历 section:所在教研室 work:项目组角色分工
- student:data['course_student'], //学生组//name:姓名 class:班级 age:年龄 work:项目组任务分工
- // Construction:data['chapters']['Construction'],//建设内容
- // ProjectBasis:data['chapters']['ProjectBasis'],//立项依据
- // development:data['chapters']['development'],//创客空间物理环境、制度建设及软件设施建设情况
- // studio:data['chapters']['studio'],//学生创客工作室建设情况
- // studentTeam:data['chapters']['studentTeam'],//学生创客团队(人才)培养预期成果、数量
- // studentActivities:data['chapters']['studentActivities'],//学生创客活动组织实施情况
- // Transforming:data['chapters']['Transforming'],//学生创客团队孵化、转化创业项目情况
- // condition:data['chapters']['condition'],//立 项基 础及条 件
- fund:fundDataArray,//预算经费
- //total:总经费
- //小型仪器设备费:device deviceRemarks
- //材料费:Material MaterialRemarks
- //测试化验加工费:processing processingRemarks
- //项目协作费:Collaboration CollaborationRemarks
- //项目成果鉴定费:APPRAISAL APPRAISALRemarks
- //参展参赛费:entery enteryRemarks
- //创客交流活动费:activities activitiesRemarks
- //知识产权事务费:Transaction TransactionRemarks
- }
- //渲染模板
- doc.setData(wordData);
- doc.render();
- //获取渲染后的文本
- const output = doc.getZip().generate({
- type: "blob",
- mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
- compression: "DEFLATE",
- });
- let link = document.createElement("a");
- link.download = '2023年学生创客项目申报书.docx';
- link.style.display = "none";
- let blob = new Blob([output]);
- link.href = URL.createObjectURL(blob);
- document.body.appendChild(link);
- link.click();
- document.body.removeChild(link);
- }
- return
- }
- x.send()
- }
- export{
- MakerSpaceWord,
- MakerStudentWord
- }
|