Bladeren bron

活动管理申请表

Q-ABAB 2 jaren geleden
bovenliggende
commit
1c517318b7

BIN
public/file/附件 2:创客专项资金项目申请表创客活动模板.docx


+ 17 - 0
src/components/tool/Date.js

@@ -21,7 +21,24 @@ function DifferDate(Date1, Date2) {
     return Math.floor((Date1 - Date2) / (24 * 3600 * 1000));
 }
 
+function GetTime(data){
+    let cdata = JSON.parse(data);
+    if(cdata[0]==cdata[1])return cdata[0];
+    let sp1 = cdata[0].split('-')
+    let sp2  =cdata[1].split('-')
+    if(sp1[0]==sp2[0]){
+      if(sp1[1]==sp2[1]){
+        return `${sp1[0]}-${sp1[1]}-${sp1[2]} 至 ${sp2[2]}`
+      }else{
+        return `${sp1[0]}-${sp1[1]}-${sp1[2]} 至 ${sp2[1]}-${sp2[2]}`
+      }           
+    }else{
+      return cdata[0]+" 至 "+cdata[1]
+    }
+}
+
 export {
     getNowDate,
     DifferDate,
+    GetTime,
 }

+ 64 - 1
src/components/tool/getWord.js

@@ -1,6 +1,7 @@
 import Docxtemplater from 'docxtemplater'
 import PizZip from 'pizzip'
 import { getNowDate } from './Date';
+import { GetTime } from './Date';
 // import HTMLModule from 'docx'
 function MakerSpaceWord(data,fund){
     //获取模板文件
@@ -365,8 +366,70 @@ function MakerStudentWord(data,fund){
     x.send()
 }
 
+//活动管理的申请表
+function ActivityWord(data){
+    let _url = "./file/附件 2:创客专项资金项目申请表创客活动模板.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['begin_at'] = GetTime(data['begin_at'])
+            data['course_teacher'] = JSON.parse(data['course_teacher'])
+            //模板数据
+            let wordData = {
+                activityName:data['title'],//活动名称
+                money:data['money'],//预算经费
+                pro_leader:data['pro_leader'],//负责人
+                class:data['className'],//所在部门
+                phone:data['phone'],//联系电话
+                activityTime:data['begin_at'],//活动时间
+                studentNum:data['students'],//参加学生人数
+                teacher:data['course_teacher'],//活动指导教师
+                plan:data['chapters'][0].replace(/<[^>]+>/g,""),//活动计划
+                Expectations:data['chapters'][1].replace(/<[^>]+>/g,""),//预期目标
+                EventAudience:data['chapters'][2].replace(/<[^>]+>/g,""),//活动受众面
+                fund:data['chapters'][3].replace(/<[^>]+>/g,""),//经费支出计划
+            }
+            //渲染模板
+            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 = '附件 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()
+}
+
 
 export{
     MakerSpaceWord,
-    MakerStudentWord
+    MakerStudentWord,
+    ActivityWord
 }

+ 12 - 3
src/views/activityManage/makerActvity.vue

@@ -134,7 +134,7 @@
                         <el-button type="primary" v-if="scope.row.state==0"  @click="audi(scope.row)" size="mini">审核</el-button>
                         <el-button type="info" disabled v-show="scope.row.state==1 || scope.row.state==2" size="mini">审核</el-button>
                         
-                        <el-button type="primary"  size="mini" @click="edit()">申请表</el-button>
+                        <el-button type="primary"  size="mini" @click="edit(scope.row.acId)">申请表</el-button>
                         <el-button type="primary" v-show="scope.row.state==1" size="mini" @click="end(scope.row)" >完结</el-button>
                         <el-button type="info" v-show="scope.row.state==2||scope.row.state==0" size="mini" disabled>完结</el-button>
 
@@ -289,6 +289,7 @@
 
 <script>
 import beUpload from '../../components/tool/beUpload';
+import { ActivityWord } from '@/components/tool/getWord';
 import downloadFile from '@/components/tool/downloadFile.js';
     export default {
       components:{beUpload},
@@ -428,8 +429,16 @@ import downloadFile from '@/components/tool/downloadFile.js';
           })
         },
         
-        edit(){ // 申请表按钮
-          downloadFile('/file/附件 2:创客专项资金项目申请表(创客活动).doc',"创客专项资金项目申请表(创客活动).doc",(_b)=>this.loading = _b);
+        edit(Id){ // 申请表按钮
+          this.ajax.get(this.$store.state.api+"/SelectActivityWord",{
+            uid:this.$store.state.userInfo.userid,
+            aid:Id
+          }).then(res=>{
+            ActivityWord(res.data[0][0])
+          }).catch(err=>{
+            this.$message.error("错误"+err.message)
+          })
+          // downloadFile('/file/附件 2:创客专项资金项目申请表(创客活动).doc',"创客专项资金项目申请表(创客活动).doc",(_b)=>this.loading = _b);
         },
              
         audi(row){  // 审核按钮

+ 5 - 1
src/views/projectApply/components/projectApplicationApplyMakerSpace.vue

@@ -74,6 +74,10 @@
                               <el-input type="number"  v-model.number="data.select.fund" placeholder="请输入内容"></el-input>
                               <div style="position: absolute;right: -30px;top: 10px;">(万)</div>
                           </div>
+                          <div class="inpBlock">
+                              <div class="label">选择分类</div>
+                              <el-cascader v-model="type" :options="option" disabled></el-cascader>
+                          </div>
                       </div>
                     </div>
                    
@@ -406,7 +410,7 @@
 <script>
 import BeUpload from "@/components/tool/beUpload.vue";
     export default { 
-      props:["data","next",'back','addPerson'],
+      props:["data","next",'back','addPerson','type','option'],
       components: {
         BeUpload,
       },

+ 1 - 1
src/views/projectApply/projectApplicationApplyMain.vue

@@ -29,7 +29,7 @@
         <projectApplicationApply3 :data="projectApplicationApply3" :confirmSetFund="confirmSetFund" :data2="pageType[0]=='5e21b204-c206-11ed-a4cd-509a4c5b67cf'?projectApplicationApply1:MakerSpace" :next="next" :back="back" :submitBtn="submitBtn" v-show="status==2"/> 
 
         <!-- 特色创客空间建设项目 -->
-        <projectApplicationApplyMakerSpace :data="MakerSpace" :next="next" :back="back" v-if="status==0 && pageType[0]=='5f7a66d5-c206-11ed-a4cd-509a4c5b67cf'"/>
+        <projectApplicationApplyMakerSpace :data="MakerSpace" :type="pageType" :option="projectApplicationApply1.sortOptions" :next="next" :back="back" v-if="status==0 && pageType[0]=='5f7a66d5-c206-11ed-a4cd-509a4c5b67cf'"/>
         <projectApplicationApplyMakerSpace2 :data="MakerSpace2" :next="next" :back="back" v-if="status==1 && pageType[0]=='5f7a66d5-c206-11ed-a4cd-509a4c5b67cf'"/>
         <!-- <projectApplicationApply :data="projectApplicationApply1" :next="next"  :back="back" v-if="status==0 && pageType[0]=='5e21b204-c206-11ed-a4cd-509a4c5b67cf'"/> -->
         <!-- <projectApplicationApplyMakerSpace :data="MakerSpace" :next="next"  :back="back" v-if="status==0 && pageType[0]=='5f7a66d5-c206-11ed-a4cd-509a4c5b67cf'"/> -->