SanHQin 1 rok temu
rodzic
commit
ec9698b9e5
43 zmienionych plików z 237 dodań i 148 usunięć
  1. 1 0
      dist/css/311.3b6202b4.css
  2. 0 1
      dist/css/315.063158c8.css
  3. 0 0
      dist/css/588.41754e19.css
  4. 0 0
      dist/css/774.9bc01a22.css
  5. BIN
      dist/file/2024年校级学生创新创业训练计划项目申报书模版2 - 图片.docx
  6. BIN
      dist/file/2024年校级学生创新创业训练计划项目申报书模版2.docx
  7. 1 1
      dist/index.html
  8. 0 0
      dist/js/178.dc9ba923.js
  9. 0 0
      dist/js/178.dc9ba923.js.map
  10. 0 0
      dist/js/210.6689b254.js
  11. 0 0
      dist/js/210.6689b254.js.map
  12. 0 0
      dist/js/311.5d2c131b.js
  13. 0 0
      dist/js/311.5d2c131b.js.map
  14. 0 0
      dist/js/315.53d16456.js.map
  15. 0 0
      dist/js/319.e6415eef.js
  16. 0 0
      dist/js/319.e6415eef.js.map
  17. 0 0
      dist/js/321.d17f1e3c.js
  18. 0 0
      dist/js/321.d17f1e3c.js.map
  19. 0 0
      dist/js/528.653ba730.js
  20. 0 0
      dist/js/528.653ba730.js.map
  21. 0 0
      dist/js/588.149dc897.js
  22. 0 0
      dist/js/588.149dc897.js.map
  23. 0 0
      dist/js/678.f4908ec1.js
  24. 0 0
      dist/js/678.f4908ec1.js.map
  25. 0 0
      dist/js/69.03ba00ba.js
  26. 0 0
      dist/js/69.03ba00ba.js.map
  27. 0 0
      dist/js/774.3547d9ff.js
  28. 0 0
      dist/js/774.3547d9ff.js.map
  29. 0 0
      dist/js/911.56480822.js
  30. 0 0
      dist/js/911.56480822.js.map
  31. 0 0
      dist/js/932.650b6f94.js
  32. 0 0
      dist/js/932.650b6f94.js.map
  33. 0 0
      dist/js/932.e5cd685d.js
  34. 0 0
      dist/js/932.e5cd685d.js.map
  35. 0 0
      dist/js/app.47c95ffe.js
  36. 0 0
      dist/js/app.47c95ffe.js.map
  37. BIN
      public/file/2024年校级学生创新创业训练计划项目申报书模版2 - 图片.docx
  38. BIN
      public/file/2024年校级学生创新创业训练计划项目申报书模版2.docx
  39. 131 119
      src/components/tool/getWord2.js
  40. 21 4
      src/views/projectApply/components/studentProjectWord.vue
  41. 36 7
      src/views/projectApply/components/studentProjectWordDetail.vue
  42. 23 15
      src/views/projectApply/components/studentProjectWordShow.vue
  43. 24 1
      src/views/projectApply/projectApplication.vue

+ 1 - 0
dist/css/311.3b6202b4.css

@@ -0,0 +1 @@
+.projectApplication .btnClass[data-v-d2fc3ecc]{width:70px!important;max-width:70px;min-width:70px}.projectApplication[data-v-d2fc3ecc] .el-table__row .el-table__cell{cursor:pointer}.projectApplication[data-v-d2fc3ecc] .el-table__row .el-table__cell:last-child{cursor:default}

+ 0 - 1
dist/css/315.063158c8.css

@@ -1 +0,0 @@
-.projectApplication .btnClass[data-v-5a8a0505]{width:70px!important;max-width:70px;min-width:70px}.projectApplication[data-v-5a8a0505] .el-table__row .el-table__cell{cursor:pointer}.projectApplication[data-v-5a8a0505] .el-table__row .el-table__cell:last-child{cursor:default}

Plik diff jest za duży
+ 0 - 0
dist/css/588.41754e19.css


Plik diff jest za duży
+ 0 - 0
dist/css/774.9bc01a22.css


BIN
dist/file/2024年校级学生创新创业训练计划项目申报书模版2 - 图片.docx


BIN
dist/file/2024年校级学生创新创业训练计划项目申报书模版2.docx


+ 1 - 1
dist/index.html

@@ -1 +1 @@
-<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>双创学院管理系统</title><script defer="defer" src="/js/chunk-vendors.45150633.js"></script><script defer="defer" src="/js/app.1365a4cc.js"></script><link href="/css/chunk-vendors.0225060a.css" rel="stylesheet"><link href="/css/app.431d2a6a.css" rel="stylesheet"></head><body><div id="app"></div></body></html>
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>双创学院管理系统</title><script defer="defer" src="/js/chunk-vendors.45150633.js"></script><script defer="defer" src="/js/app.47c95ffe.js"></script><link href="/css/chunk-vendors.0225060a.css" rel="stylesheet"><link href="/css/app.431d2a6a.css" rel="stylesheet"></head><body><div id="app"></div></body></html>

Plik diff jest za duży
+ 0 - 0
dist/js/178.dc9ba923.js


Plik diff jest za duży
+ 0 - 0
dist/js/178.dc9ba923.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/210.6689b254.js


Plik diff jest za duży
+ 0 - 0
dist/js/210.6689b254.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/311.5d2c131b.js


Plik diff jest za duży
+ 0 - 0
dist/js/311.5d2c131b.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/315.53d16456.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/319.e6415eef.js


Plik diff jest za duży
+ 0 - 0
dist/js/319.e6415eef.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/321.d17f1e3c.js


Plik diff jest za duży
+ 0 - 0
dist/js/321.d17f1e3c.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/528.653ba730.js


Plik diff jest za duży
+ 0 - 0
dist/js/528.653ba730.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/588.149dc897.js


Plik diff jest za duży
+ 0 - 0
dist/js/588.149dc897.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/678.f4908ec1.js


Plik diff jest za duży
+ 0 - 0
dist/js/678.f4908ec1.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/69.03ba00ba.js


Plik diff jest za duży
+ 0 - 0
dist/js/69.03ba00ba.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/774.3547d9ff.js


Plik diff jest za duży
+ 0 - 0
dist/js/774.3547d9ff.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/911.56480822.js


Plik diff jest za duży
+ 0 - 0
dist/js/911.56480822.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/932.650b6f94.js


Plik diff jest za duży
+ 0 - 0
dist/js/932.650b6f94.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/932.e5cd685d.js


Plik diff jest za duży
+ 0 - 0
dist/js/932.e5cd685d.js.map


Plik diff jest za duży
+ 0 - 0
dist/js/app.47c95ffe.js


Plik diff jest za duży
+ 0 - 0
dist/js/app.47c95ffe.js.map


BIN
public/file/2024年校级学生创新创业训练计划项目申报书模版2 - 图片.docx


BIN
public/file/2024年校级学生创新创业训练计划项目申报书模版2.docx


+ 131 - 119
src/components/tool/getWord2.js

@@ -9,132 +9,144 @@ import ImageModule from 'docxtemplater-image-module-free'
 
 // 新学生创业项目申请表下载模板word版
 function getWord2(val){
-    JSZipUtils.getBinaryContent('./file/2023年学生创客项目申报书模板 - 副本.docx',async (err,content)=>{
-        if (err) {
-            return console.log(err);
-        }
-
-				let ImageList = await getImage(val.elementList);
-
-				// console.log(ImageList.find(i=>i.tagName=='back').url)
-				// return console.log(ImageList)
-
-        let zip=new PizZip(content);
-
-				// 图片处理
-				const opts = {
-					centered:false,
-					fileType:"docx",
-					getImage:(value,value2,value3)=>{
-						return base64DataURLToArrayBuffer(value)
-					},
-					getSize:(arrayValue,value,tagName)=>{
-						let imgObj = ImageList.find(i=>i.tagName==tagName) 
-						let newWidth = 550;
-						let newHeight = (newWidth*imgObj.height)/imgObj.width;
-						return [newWidth,newHeight]
-					}
+	return new Promise((resolve,reject)=>{
+		JSZipUtils.getBinaryContent('./file/2024年校级学生创新创业训练计划项目申报书模版2 - 图片.docx',async (err,content)=>{
+			if (err) {
+					return console.log(err);
+			}
+
+			let ImageList = await getImage(val.elementList);
+
+			let zip=new PizZip(content);
+
+			// 图片处理
+			const opts = {
+				centered:false,
+				fileType:"docx",
+				getImage:(value,value2,value3)=>{
+					return base64DataURLToArrayBuffer(value)
+				},
+				getSize:(arrayValue,value,tagName)=>{
+					let imgObj = ImageList.find(i=>i.tagName==tagName) 
+					let newWidth = 550;
+					let newHeight = (newWidth*imgObj.height)/imgObj.width;
+					return [newWidth,newHeight]
 				}
-				let doc=new Docxtemplater()
-				doc.loadZip(zip);
-
-				doc.attachModule(new ImageModule(opts));
-        // return console.log(val);
-
-        // let FundAll=
-        // return console.log(val);
-
-        //填写数据
-        doc.setData({
-            nowTime:getNowDate(1),//申请日期
-            projectName:val.projectName,
-            ing:val.radio=='ed917c55-f51d-11ed-a3f6-509a4c5b67cf'?'√':'□',
-            ed:val.radio=='f3068e26-f51d-11ed-a3f6-509a4c5b67cf'?'√':'□',
-            mone:val.checkList.includes('1')?'√':'□',
-            mtwo:val.checkList.includes('2')?'√':'□',
-            mthree:val.checkList.includes('3')?'√':'□',
-            mfour:val.checkList.includes('4')?'√':'□',
-            sone:val.schoolRadio.includes('1')?'√':'□',
-            stwo:val.schoolRadio.includes('2')?'√':'□',
-            sthree:val.schoolRadio.includes('3')?'√':'□',
-            sfour:val.schoolRadio.includes('4')?'√':'□',
-            stu:val.applyParsonRadio.includes('1')?'√':'□',
-            leg:val.applyParsonRadio.includes('2')?'√':'□',
-            appPeason:val.applyParsonName,
-            school:val.dp,
-            tel:val.tel,
-            begin_at:val.btime,
-            plannedEnd_at:val.etime,
-            allnum:val.studentS.length+val.teacherS.length,
-            snum:val.studentS.length,
-            tnum:val.teacherS.length,
-            student:val.studentS,
-            teacher:val.teacherS,
-            brief:val.brief,
-            back:ImageList.find(i=>i.tagName=='back').url,
-            innovate:ImageList.find(i=>i.tagName=='innovate').url,
-            path:ImageList.find(i=>i.tagName=='path').url,
-            scene:ImageList.find(i=>i.tagName=='scene').url,
-            worth:ImageList.find(i=>i.tagName=='worth').url,
-            team:ImageList.find(i=>i.tagName=='team').url,
-            cost:ImageList.find(i=>i.tagName=='cost').url,
-            expectResults:ImageList.find(i=>i.tagName=='expectResults').url,
-            expectResultsTeacher:ImageList.find(i=>i.tagName=='expectResultsTeacher').url,
-            expectConversion:ImageList.find(i=>i.tagName=='expectConversion').url,
-            plan:ImageList.find(i=>i.tagName=='plan').url,
-						total:0,
-            facility:0,
-            materials:0,
-            process:0,
-            assist:0,
-            authenticate:0,
-            match:0,
-            activity:0,
-            affair:0,
-						total:val.fund.device*1 + val.fund.Material*1+val.fund.processing*1+ val.fund.Collaboration*1+val.fund.APPRAISAL*1+ val.fund.entery*1+val.fund.activities*1+val.fund.Transaction*1,
-            facility:val.fund.device,
-            materials:val.fund.Material,
-            process:val.fund.processing,
-            assist:val.fund.Collaboration,
-            authenticate:val.fund.APPRAISAL,
-            match:val.fund.entery,
-            activity:val.fund.activities,
-            affair:val.fund.Transaction,
-        })
-
-        // 进行填充
-        doc.render()
-
-        let out=doc.getZip().generate({
-            type:'blob',
-            mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-        })
-
-        // fs.writeFileSync(path.resolve(__dirname, "output.docx"), buf);
-        saveAs(out,'2023年学生创客项目申报书.docx')
-
-    })
+			}
+			let doc=new Docxtemplater()
+			doc.loadZip(zip);
+
+			doc.attachModule(new ImageModule(opts));
+
+			//填写数据
+			doc.setData({
+					nowTime:getNowDate(1),//申请日期
+					projectName:val.projectName,
+					itp:val.radio=='4a4e2cfe-e1a1-11ee-81d4-00ff5c7a43f5'?'☑':'□',
+					etp:val.radio=='56f0ad8d-e1a1-11ee-81d4-00ff5c7a43f5'?'☑':'□',
+					ing:val.radio=='ed917c55-f51d-11ed-a3f6-509a4c5b67cf'?'☑':'□',
+					mone:val.checkList.includes('1')?'☑':'□',
+					mtwo:val.checkList.includes('2')?'☑':'□',
+					mthree:val.checkList.includes('3')?'☑':'□',
+					mfour:val.checkList.includes('4')?'☑':'□',
+					mfive:val.checkList.includes('5')?'☑':'□',
+					msix:val.checkList.includes('6')?'☑':'□',
+					mseven:val.checkList.includes('7')?'☑':'□',
+					sone:val.schoolRadio.includes('1')?'☑':'□',
+					stwo:val.schoolRadio.includes('2')?'☑':'□',
+					sthree:val.schoolRadio.includes('3')?'☑':'□',
+					sfour:val.schoolRadio.includes('4')?'☑':'□',
+					appPeason:val.applyParsonName,
+					school:val.dp,
+					tel:val.tel,
+					begin_at:val.btime.split(' ')[0],
+					plannedEnd_at:val.etime.split(' ')[0],
+					allnum:val.studentS.filter(i=>i.name!='').length+val.teacherS.filter(i=>i.name!='').length,
+					snum:val.studentS.filter(i=>i.name!='').length,
+					tnum:val.teacherS.filter(i=>i.name!='').length,
+					student:val.studentS,
+					teacher:val.teacherS,
+					brief:val.brief,
+					back:ImageList.find(i=>i.tagName=='back').url,
+					innovate:ImageList.find(i=>i.tagName=='innovate').url,
+					path:ImageList.find(i=>i.tagName=='path').url,
+					scene:ImageList.find(i=>i.tagName=='scene').url,
+					worth:ImageList.find(i=>i.tagName=='worth').url,
+					team:ImageList.find(i=>i.tagName=='team').url,
+					cost:ImageList.find(i=>i.tagName=='cost').url,
+					expectResults:ImageList.find(i=>i.tagName=='expectResults').url,
+					expectResultsTeacher:ImageList.find(i=>i.tagName=='expectResultsTeacher').url,
+					expectConversion:ImageList.find(i=>i.tagName=='expectConversion').url,
+					plan:ImageList.find(i=>i.tagName=='plan').url,
+					total:0,
+					facility:0,
+					materials:0,
+					process:0,
+					assist:0,
+					authenticate:0,
+					match:0,
+					activity:0,
+					affair:0,
+					total:val.fund.device*1 + val.fund.Material*1+val.fund.processing*1+ val.fund.Collaboration*1+val.fund.APPRAISAL*1+ val.fund.entery*1+val.fund.activities*1+val.fund.Transaction*1,
+					facility:val.fund.device,
+					materials:val.fund.Material,
+					process:val.fund.processing,
+					assist:val.fund.Collaboration,
+					authenticate:val.fund.APPRAISAL,
+					match:val.fund.entery,
+					activity:val.fund.activities,
+					affair:val.fund.Transaction,
+					signOne:val.signData.filter(i=>i.type==4)[0]?val.signData.filter(i=>i.type==4)[0].text:'',
+					signOnePerson:val.signData.filter(i=>i.type==4)[0]?val.signData.filter(i=>i.type==4)[0].username:'',
+					signOneTime:val.signData.filter(i=>i.type==4)[0]?val.signData.filter(i=>i.type==4)[0].time:'',
+
+					signTwo:val.signData.filter(i=>i.type==0)[0]?val.signData.filter(i=>i.type==0)[0].text:'',
+					signTwoPerson:val.signData.filter(i=>i.type==0)[0]?val.signData.filter(i=>i.type==0)[0].username:'',
+					signTwoTime:val.signData.filter(i=>i.type==0)[0]?val.signData.filter(i=>i.type==0)[0].time:'',
+
+					signThree:val.signData.filter(i=>i.type==3)[0]?val.signData.filter(i=>i.type==3)[0].text:'',
+					signThreePerson:val.signData.filter(i=>i.type==3)[0]?val.signData.filter(i=>i.type==3)[0].username:'',
+					signThreeTime:val.signData.filter(i=>i.type==3)[0]?val.signData.filter(i=>i.type==3)[0].time:'',
+			})
+
+			// 进行填充
+			doc.render()
+
+			let out=doc.getZip().generate({
+					type:'blob',
+					mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+			})
+
+			// fs.writeFileSync(path.resolve(__dirname, "output.docx"), buf);
+			saveAs(out,'2024年校级学生创新创业训练计划项目申报书.docx')
+   		resolve()
+		})
+	})
 }
 
 function getImage(elList){
 	return new Promise(async (resolve)=>{
 		let imgList=[]
-		elList.forEach(async el=>{
-		  let imgObj = {tagName:"",url:"",width:0,height:0}
-		  imgObj.tagName=el.getAttribute("tag");
-		  let canvas = await html2canvas(el,{
-				allowTaint:true,
-				useCORS:true,
-				scale:2
-			})
-			imgObj.url = canvas.toDataURL('image/png');
-			imgObj.width = canvas.width;
-			imgObj.height = canvas.height;
-			imgList.push(imgObj)
-			if(imgList.length==elList.length){
-				resolve(imgList)
-			}
+		let promiseList = [];
+
+		elList.forEach(i=>{
+			promiseList.push(new Promise(async (resolve)=>{
+				let imgObj = {tagName:"",url:"",width:0,height:0}
+				imgObj.tagName=i.getAttribute("tag");
+				let canvas = await html2canvas(i,{
+					allowTaint:true,
+					useCORS:true,
+					scale:1
+				})
+				imgObj.url = canvas.toDataURL('image/png');
+				imgObj.width = canvas.width;
+				imgObj.height = canvas.height;
+				imgList.push(imgObj)
+				resolve();
+			}))
 		})
+
+		await Promise.all(promiseList).then(_=>resolve(imgList));
 	})
 }
 

+ 21 - 4
src/views/projectApply/components/studentProjectWord.vue

@@ -234,7 +234,9 @@
             >学生成员</span
           ><br /> -->
           <span class="bold">项目学生成员</span><br />
-          (至少2个学院以上学生构成,其中:1.创新项目、创业训练项目人数为5+3组成,其中不超过5名学生为项目主要成员,由初起二、三、四年级(高起一、二年级)学生组成,3名学生作为后备成员由一年级学生组成。2.创业实践项目人数为6+3组成,其中不超过6名学生为初起三、四、五年级(高起二、三年级)学生,3名学生作为后备成员由一年级学生组成。
+          (至少2个学院以上学生构成,其中:
+1.创新项目、创业训练项目人数为5+3组成,其中不超过5名学生为项目主要成员,由初起二、三、四年级(高起一、二年级)学生组成,3名学生作为后备成员由一、二年级学生组成。
+2.创业实践项目人数为6+3组成,其中不超过6名学生为初起三、四、五年级(高起二、三年级)学生,3名学生作为后备成员由一、二年级学生组成。
           <!-- (至少2个学院以上学生构成,团队5人以上) -->
         </td>
         <td><span style="color: red">*</span>姓名</td>
@@ -304,8 +306,7 @@
         >
           <!-- <span class="bold">项目组</span><br /><span class="bold">指导教师</span><br/> -->
           <span class="bold">项目组指导教师</span><br />
-          (2个学院以上,
-          2-3名指导教师,指导教师须有中级以上职称或研究生以上学历,创业实践项目除配备2名以上校内指导教师外,还须配备1名企业指导教师。)
+          (2个学院以上, 2-4名指导教师,指导教师须有中级以上职称或研究生以上学历,创业实践项目除配备2名以上校内指导教师外,还须配备1名企业指导教师。)
           <!-- (2个学院以上,团队2-3人) -->
         </td>
         <td><span style="color: red">*</span>姓名</td>
@@ -397,6 +398,7 @@
           <p>项目研发背景</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.back"
           ></editor-bar>
           <!-- <el-input
@@ -414,6 +416,7 @@
           <p>项目创新点</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.innovate"
           ></editor-bar>
         </td>
@@ -423,6 +426,7 @@
           <p>技术研发路线</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.path"
           ></editor-bar>
         </td>
@@ -432,6 +436,7 @@
           <p>项目应用场景</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.scene"
           ></editor-bar>
         </td>
@@ -442,6 +447,7 @@
           <p>项目商业模式/社会价值</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.worth"
           ></editor-bar>
         </td>
@@ -452,6 +458,7 @@
           <p>团队构成及优势</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.team"
           ></editor-bar>
         </td>
@@ -462,6 +469,7 @@
           <p>研发成本来源及构成</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.cost"
           ></editor-bar>
         </td>
@@ -474,6 +482,7 @@
           </p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.expectResults"
           ></editor-bar>
         </td>
@@ -483,6 +492,7 @@
           <p>学生创客人才培养预期成果、数量(教师填写)</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.expectResultsTeacher"
           ></editor-bar>
         </td>
@@ -492,6 +502,7 @@
           <p>项目预期孵化、转化创业项目情况</p>
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.expectConversion"
           ></editor-bar>
         </td>
@@ -501,6 +512,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <editor-bar
             style="margin: 0; padding: 0"
+						:class="download?'downloadClass':''"
             v-model="wordData.introduce.plan"
           ></editor-bar>
         </td>
@@ -878,7 +890,7 @@ import EditorBar from "@/components/tool/wangEnduit";
 import beUpload from "@/components/tool/beUpload";
 export default {
   components: { EditorBar, beUpload },
-  props: ["wordData", "reversedMessage", "signData"],
+  props: ["wordData", "reversedMessage", "signData",'download'],
   emit: ["getFile", "fileOption", "saveFile"],
   data() {
     return {
@@ -1234,4 +1246,9 @@ export default {
     display: block;
   }
 }
+.downloadClass{
+	font-size: 10.5pt !important;
+	font-family: 'FangSong' !important;
+	color: #333 !important;
+}
 </style>

+ 36 - 7
src/views/projectApply/components/studentProjectWordDetail.vue

@@ -1,20 +1,22 @@
 <template>
-  <div id="studentProjectWordDetail">
+  <div id="studentProjectWordDetail" v-loading="loading || downloadWordDig">
     <studentProjectWord
       v-if="isupload == 0"
       :wordData="wordData"
       :reversedMessage="reversedMessage"
 			:signData="signData"
+			:download="loading"
 			@getFile="getFile"
 			@fileOption="fileOption"
 			@saveFile="saveFile"
     />
     <studentProjectWordShow
       ref="myChild"
-      v-if="isupload != 0 || downloadDig"
+      v-if="isupload != 0 || downloadWordDig"
       :downWordData="downWordData"
       :reversedMessage="reversedMessage"
 			:signData="signData"
+			:download="loading"
 			@getFile="getFile"
 			@fileOption="fileOption"
 			@saveFile="saveFile"
@@ -95,7 +97,7 @@
       class="pageSubmitData"
     >
       <div class="deleteContent">确定下载文档?</div>
-      <span slot="footer" class="dialog-footer">
+      <span slot="footer" class="dialog-footer" v-loading="loading">
         <el-button type="primary" @click="downloadPDFFile" class="AllDialogBtn"
           >确认</el-button
         >
@@ -119,7 +121,7 @@
 				<!-- <el-button type="primary" @click="downloadWord2" class="AllDialogBtn"
           >确认2</el-button
         > -->
-        <el-button @click="downloadWordDig = false" class="AllDialogBtn"
+        <el-button @click="()=>{downloadWordDig = false;loading = false}" class="AllDialogBtn"
           >取消</el-button
         >
       </span>
@@ -205,7 +207,7 @@
       
     <script>
 import { getNowDate } from "@/components/tool/Date.js";
-import { getWord2 } from "@/components/tool/getWord";
+import { getWord2 } from "@/components/tool/getWord2";
 import studentProjectWord from "./studentProjectWord.vue";
 import studentProjectWordShow from "./studentProjectWordShow.vue";
 import { downloadPDF } from "@/components/tool/pdf";
@@ -217,6 +219,7 @@ export default {
     return {
       isupload: 1,
       DepartmentData: [], //部门学院
+			loading:false,
       downloadDig: false, //下载文档对话框
 			downloadWordDig:false,
       updatedWordDig: false, //立即修改对话框
@@ -738,8 +741,34 @@ export default {
         );
     },
 		downloadWordFile(){
-			getWord2({...this.downWordData,signData:this.signData});
-			this.downloadWordDig = false;
+			this.loading = true;
+			
+			this.$nextTick(()=>{
+				this.$message.info("正在下载,请稍等...")
+				let elementList = this.$refs.myChild.$refs.pdfShow.querySelectorAll('.downImage')
+				elementList.forEach(el => {
+				  let img = el.getElementsByTagName('img');
+					for(let i=0;i<img.length;i++){
+						img[i].setAttribute("crossOrigin","*");
+					}
+				})
+				
+				getWord2({...this.downWordData,signData:this.signData,elementList}).then(_=>{
+					elementList.forEach(el => {
+				  	let img = el.getElementsByTagName('img');
+						for(let i=0;i<img.length;i++){
+							img[i].removeAttribute('crossOrigin')
+						}
+					})
+					this.downloadWordDig = false;
+					this.loading = false;
+				})
+			})
+			
+			
+			// getWord2({...this.downWordData,elementList:this.$refs.myChild.$refs.pdfShow.querySelectorAll('.downImage')})
+			// getWord2({...this.downWordData,signData:this.signData});
+			
 		},
     downloadPDFFile() {
 			// let elementList = this.$refs.myChild.$refs.pdfShow.querySelectorAll('.downImage')

+ 23 - 15
src/views/projectApply/components/studentProjectWordShow.vue

@@ -225,7 +225,9 @@
           style="padding: 20px 30px"
         >
           <span class="jc">项目学生成员</span><br />
-          (至少2个学院以上学生构成,其中:1.创新项目、创业训练项目人数为5+3组成,其中不超过5名学生为项目主要成员,由初起二、三、四年级(高起一、二年级)学生组成,3名学生作为后备成员由一年级学生组成。2.创业实践项目人数为6+3组成,其中不超过6名学生为初起三、四、五年级(高起二、三年级)学生,3名学生作为后备成员由一年级学生组成。
+					(至少2个学院以上学生构成,其中:
+1.创新项目、创业训练项目人数为5+3组成,其中不超过5名学生为项目主要成员,由初起二、三、四年级(高起一、二年级)学生组成,3名学生作为后备成员由一、二年级学生组成。
+2.创业实践项目人数为6+3组成,其中不超过6名学生为初起三、四、五年级(高起二、三年级)学生,3名学生作为后备成员由一、二年级学生组成。
         </td>
         <td>姓名</td>
         <td colspan="2">所在学院/部门/专业</td>
@@ -248,8 +250,7 @@
           style="padding: 20px 30px"
         >
           <span class="jc">项目组指导教师</span><br />
-          (2个学院以上,
-          2-3名指导教师,指导教师须有中级以上职称或研究生以上学历,创业实践项目除配备2名以上校内指导教师外,还须配备1名企业指导教师。)
+          (2个学院以上, 2-4名指导教师,指导教师须有中级以上职称或研究生以上学历,创业实践项目除配备2名以上校内指导教师外,还须配备1名企业指导教师。)
         </td>
         <td>姓名</td>
         <td colspan="2">所在学院/部门/专业</td>
@@ -281,7 +282,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>项目研发背景</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="back"
             v-html="downWordData.introduce.back"
           ></span>
@@ -291,7 +292,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>项目创新点</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="innovate"
             v-html="downWordData.introduce.innovate"
           ></span>
@@ -301,7 +302,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>技术研发路线</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="path"
             v-html="downWordData.introduce.path"
           ></span>
@@ -311,7 +312,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>项目应用场景</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="scene"
             v-html="downWordData.introduce.scene"
           ></span>
@@ -325,7 +326,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>项目商业模式/社会价值</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="worth"
             v-html="downWordData.introduce.worth"
           ></span>
@@ -339,7 +340,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>团队构成及优势</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="team"
             v-html="downWordData.introduce.team"
           ></span>
@@ -353,7 +354,7 @@
         <td style="text-align: left" colspan="6" class="textLeft">
           <p>研发成本来源及构成</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="cost"
             v-html="downWordData.introduce.cost"
           ></span>
@@ -369,7 +370,7 @@
             项目预期成果、数量及形式(产品原型/发明专利/双创竞赛/成果转化/社会效益)
           </p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="expectResults"
             v-html="downWordData.introduce.expectResults"
           ></span>
@@ -379,7 +380,7 @@
         <td style="text-align: left" colspan="6">
           <p>学生创客人才培养预期成果、数量(教师填写)</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="expectResultsTeacher"
             v-html="downWordData.introduce.expectResultsTeacher"
           ></span>
@@ -389,7 +390,7 @@
         <td style="text-align: left" colspan="6">
           <p>项目预期孵化、转化创业项目情况</p>
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="expectConversion"
             v-html="downWordData.introduce.expectConversion"
           ></span>
@@ -402,7 +403,7 @@
         </td>
         <td style="text-align: left" colspan="6" class="textLeft">
           <span
-            class="downImage"
+            :class="['downImage',download?'downloadClass':'']"
             tag="plan"
             v-html="downWordData.introduce.plan"
           ></span>
@@ -641,7 +642,7 @@ import beUpload from "@/components/tool/beUpload";
 
 export default {
   emit: ["getFile", "fileOption", "saveFile"],
-  props: ["reversedMessage", "downWordData", "signData"],
+  props: ["reversedMessage", "downWordData", "signData","download"],
   components: {
     beUpload,
   },
@@ -936,4 +937,11 @@ export default {
     display: block;
   }
 }
+.downloadClass{
+	font-size: 23.5pt !important;
+	font-family: 'FangSong' !important;
+	color: #333 !important;
+	line-height: 30pt !important;
+
+}
 </style>

+ 24 - 1
src/views/projectApply/projectApplication.vue

@@ -95,6 +95,23 @@
             >
             </el-option>
           </el-select>
+        </div>
+				<div class="selectsBlock">
+          <span class="selectLabel">年份</span>
+          <el-select
+            v-model="selectInp.year"
+            @change="getData"
+            placeholder="请选择"
+          >
+            <el-option label="所有年份" value="" />
+            <el-option
+              v-for="item in options.year"
+              :key="item.time"
+              :label="item.time + '年'"
+              :value="item.time"
+            >
+            </el-option>
+          </el-select>
         </div>
       </div>
       <div class="ProjectManagementQuery">
@@ -504,6 +521,7 @@ export default {
         sort: "",
         person: "",
         state: "",
+				year:"",
       },
       options: {
         //头部搜索框下拉框数据
@@ -538,6 +556,7 @@ export default {
             label: "已结项",
           },
         ],
+				year:[],
       },
       auditDialog: {
         //审核对话框数据
@@ -765,7 +784,7 @@ export default {
         tid: this.selectInp.sort, //分类
         leader: this.selectInp.person, //负责人
         st: this.selectInp.state, //审核状态
-        year: "",
+        year: this.selectInp.year,
         textInp: encodeURIComponent(this.input),
         page: this.table.currentPage, //当前页
         lim: this.table.packageSize, //限制获取几条数据
@@ -786,6 +805,10 @@ export default {
           a.department = data[2];
           a.sort = data[3];
           a.person = data[4];
+					a.year = data[6]
+					if(a.year.filter(item=>item['time']==new Date().getFullYear().toString()).length==0){
+						a.year.push({time:new Date().getFullYear().toString()});
+					}
           this.table.total = data[5][0].total;
           // this.tableData.forEach(item=>{
           //   if(item['time']!=null&&item['time']!=''){

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików