Q-ABAB 1 год назад
Родитель
Сommit
7b802e10e8

BIN
public/file/2023年二级学院特色创客空间建设项目申报书模板 (2).docx


BIN
public/file/附件 5 :学校创客专项资金使用申请表.xlsx


+ 0 - 2
src/components/MakerSpaceWord.vue

@@ -618,8 +618,6 @@ import {getNowDate} from '@/components/tool/Date.js'
       },
       test(){
         //检查各个字段
-        // window.$().scrollTop(v0);
-        // scrollIntoView({ behavior: "smooth" });
         const cEmpty = /^\s*$/g;
         for(let i in this.wordData){
           switch (i) {

+ 885 - 0
src/components/MakerSpaceWordShow.vue

@@ -0,0 +1,885 @@
+<template>
+    <div id="MakerSpaceWord">
+        <div id="title">
+            <div class="school">深圳技师学院</div>
+            <div class="wordTitle">二级学院特色创客空间建设项目立项申报书</div>
+            <div class="date">申请日期: {{ wordData['applicationDate'] }}</div>
+        </div>
+        <div id="table">
+            <div class="han" id="one">
+              <div class="label">项目名称</div><div class="value" v-text="wordData['projectName']"></div>
+              <div class="label">所在学院</div><div class="value" v-text="wordData['college']"></div>
+            </div>
+            <div class="status" id="two">
+              <div class="statusLabel">项目状态</div>
+              <div class="ValueDescribe">
+                <div class="statusHan">
+                  <div class="DescribeLabel">
+                    <span v-if="wordData['state']=='已建设'">√</span><span v-else>□</span>已建设
+                </div><div class="DescribeValue">指二级学院已获得政府或学校资助(例:设计学院、信通学院、珠宝学院),已有双创空间(创客实践室)场地、设备设施并已投入运营,需对空间环境优化、规章制度建设、小型设施设备添置、创客项目物料增补,需拓展创客项目培训、辅导,创客讲座、沙龙、论坛,创客路演、竞赛、集市及成果参评、参展等方面的工作而提出的资助申请。</div>
+                </div>
+                <div class="statusHan">
+                  <div class="DescribeLabel">
+                    <span v-if="wordData['state']=='待建设'">√</span><span v-else>□</span>待建设
+                </div><div class="DescribeValue">指二级学院拟立项开展学院特色创客空间建设项目,需进行项目前期调研论证、场馆规划、空间图纸设计、设备选型等方面的工作而进行的资助申请。</div>
+                </div>
+              </div>
+            </div>
+            <div class="han" id="three">
+              <div class="label">项目起始时间</div><div class="value" v-text="wordData['begin_at']"></div>
+              <div class="label">计划完成时间</div><div class="value" v-text="wordData['plannedEnd_at']"></div>
+            </div>
+            <div class="han" id="four">
+              <div class="label">项目负责人</div><div class="value" v-text="wordData['pro_leader']"></div>
+              <div class="label">学院牵头领导</div><div class="value" v-text="wordData['lead_leader']"></div>
+            </div>
+            <div class="han">
+              <div class="label">项目组人数</div><div class="value">{{ wordData['teacher'].length+wordData['student'].length }}</div>
+              <div class="label">参与教师人数</div><div class="value">{{wordData['teacher'].length}}</div>
+              <div class="label">参与学生人数</div><div class="value">{{wordData['student'].length }}</div>
+            </div>
+            <div class="member" id="five">
+              <div class="memberLabel">
+                <span class="fontBold">项目组</span>
+                <span class="fontBold">教师团队</span>
+                <span>(团队3人以上,</span>
+                <span>至少应包含1名教</span>
+                <span>研室主任)</span>
+              </div>
+              <div class="memberTable" :style="wordData['teacher'].length<4?'border-bottom:solid 1px black':''">
+                <div class="memberHan">
+                  <div class="memberValue">姓名</div>
+                  <div class="memberValue">专业</div>
+                  <div class="memberValue">职称</div>
+                  <div class="memberValue">学历</div>
+                  <div class="memberValue">所在教研室</div>
+                  <div class="memberValue">项目组角色分工</div>
+                </div>
+                <div class="memberHan" v-for="(item,index) in wordData['teacher']" :key="index">
+                  <div class="memberValue" v-text="item['name']"></div>
+                  <div class="memberValue" v-text="item['speciality']"></div>
+                  <div class="memberValue" v-text="item['title']"></div>
+                  <div class="memberValue" v-text="item['education']"></div>
+                  <div class="memberValue" v-text="item['section']"></div>
+                  <div class="memberValue" v-text="item['work']"></div>
+                </div>
+              </div>
+            </div>
+            <div class="member" id="six">
+              <div class="memberLabel">
+                <span class="fontBold">项目组</span>
+                <span class="fontBold">学生团队</span>
+                <span>(团队5人以上,</span>
+                <span>学生团队年级结构</span>
+                <span>安排合理)</span>
+              </div>
+              <div class="memberTable" :style="wordData['student'].length<4?'border-bottom:solid 1px black':''">
+                <div class="memberHan">
+                  <div class="memberValue">姓名</div>
+                  <div class="memberValue">班级</div>
+                  <div class="memberValue">年龄</div>
+                  <div class="memberValue">项目组角色分工</div>
+                </div>
+                <div class="memberHan" v-for="(item,index) in wordData['student']" :key="index">
+                  <div class="memberValue" v-text="item['name']"></div>
+                  <div class="memberValue" v-text="item['class']"></div>
+                  <div class="memberValue" v-text="item['age']"></div>
+                  <div class="memberValue" v-text="item['work']"></div>
+                </div>
+              </div>
+            </div>
+            <div class="chapters">
+              <div class="chaptersLabel">
+                <span class="fontBold">项目</span>
+                <span class="fontBold">建设</span>
+                <span class="fontBold">内容</span>
+                <span class="fontBold">及</span>
+                <span class="fontBold">目标</span>
+                <span>(说明项目建设内</span><span>容、拟解决的关键</span><span>问题、创新之处、</span><span>主要建设指标)</span>
+              </div>
+              <div class="chaptersTable">
+                  <div class="chaptersValue" id="seven">
+                    <span>项目简介(200-300字)</span><br/>
+                    <p v-text="wordData['brief']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      show-word-limit
+                      maxlength="300"
+                      v-model="wordData['brief']">
+                    </el-input> -->
+                  </div>
+                  <div class="chaptersValue" id="eight">
+                    <span>建设内容(空间优化/场馆规划方面拟解决的关键问题及主要建设指标)</span><br/>
+                    <p v-text="wordData['Construction']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['Construction']">
+                    </el-input> -->
+                  </div>
+              </div>
+            </div>
+            <div class="chapters">
+              <div class="chaptersLabel fontBold">
+                <span>项目</span>
+                <span>建设</span>
+                <span>论证</span>
+                <span>报告</span>
+              </div>
+              <div class="chaptersTable">
+                  <div class="chaptersValue" id="nine">
+                    <span>立项依据(说明本项目的目的、意义以及国内外高校现状、市场预测和发展趋势,预期达到的目标,研究的预期效果分析,成果受益面)</span><br/>
+                    <p v-text="wordData['ProjectBasis']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['ProjectBasis']">
+                    </el-input> -->
+                  </div>
+              </div>
+            </div>
+            <div class="chapters">
+              <div class="chaptersLabel">
+                <span class="fontBold">预期</span>
+                <span class="fontBold">成果</span>
+                <span>(项目预期成果、</span><span>数量及形式,结题</span><span>时:须附项目研究</span><span>报告)</span>
+              </div>
+              <div class="chaptersTable">
+                  <div class="chaptersValue" id="ten">
+                    <span>创客空间物理环境、制度建设及软件设施建设情况(环境优化/制度完善/设施改造)</span><br/>
+                    <p v-text="wordData['development']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['development']">
+                    </el-input> -->
+                  </div>
+                  <div class="chaptersValue" id="eleven">
+                    <span>学生创客工作室建设情况(工作室数量及活动开展情况)</span><br/>
+                    <p v-text="wordData['studio']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['studio']">
+                    </el-input> -->
+                  </div>
+                  <div class="chaptersValue" id="twelve">
+                    <span>学生创客团队(人才)培养预期成果、数量</span><br/>
+                    <p v-text="wordData['studentTeam']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['studentTeam']">
+                    </el-input> -->
+                  </div>
+                  <div class="chaptersValue" id="thirteen">
+                    <span>学生创客活动组织实施情况</span><br/>
+                    <p v-text="wordData['studentActivities']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['studentActivities']">
+                    </el-input> -->
+                  </div>
+                  <div class="chaptersValue" id="fourteen">
+                    <span>学生创客团队孵化、转化创业项目情况</span><br/>
+                    <p v-text="wordData['Transforming']"></p>
+                  </div>
+              </div>
+            </div>
+            <div class="chapters">
+              <div class="chaptersLabel">
+                <span class="fontBold">立项</span>
+                <span class="fontBold">基础</span>
+                <span class="fontBold">及</span>
+                <span class="fontBold">条件</span>
+                <span>(说明已开展的相</span>
+                <span>关研究及基础准备</span>
+                <span>工作,已具备的设</span>
+                <span>备场地条件和技术</span>
+                <span>力量,尚缺少的条</span>
+                <span>件和拟解决的途</span>
+                <span>径)</span>
+              </div>
+              <div class="chaptersTable">
+                  <div class="chaptersValue" id="fifteen">
+                    <span>基础条件(物理环境/设备设施/项目实施/活动开展/技术力量/社会资源)</span><br/>
+                    <p v-text="wordData['condition']"></p>
+                    <!-- <el-input
+                      type="textarea"
+                      class="noCenter"
+                      :autosize="{minRows: 6}"
+                      resize="none"
+                      v-model="wordData['condition']">
+                    </el-input> -->
+                  </div>
+              </div>
+            </div>
+    
+            <div class="fund">
+              <div class="fundTitle">
+                预算<br/>经费
+              </div>
+              <div class="fundTable">
+                <div class="fundTotal">
+                  <div class="fundLabel">总经费</div>
+                  <div class="fundValue">{{Number(wordData['fund']['device'])+Number(wordData['fund']['Material'])+Number(wordData['fund']['processing'])+Number(wordData['fund']['Collaboration'])+Number(wordData['fund']['APPRAISAL'])+Number(wordData['fund']['entery'])+Number(wordData['fund']['activities'])+Number(wordData['fund']['Transaction'])}}元</div>
+                </div>
+                <div class="fundHeader">
+                  <div class="HeaderLabel">支出类别</div>
+                  <div class="HeaderLabel">支出项目</div>
+                  <div class="HeaderLabel">金额(元)</div>
+                  <div class="HeaderLabel">备注</div>
+                </div>
+                <div class="fundData">
+                  <div class="fundDataLabel">直接费用</div>
+                  <div class="fundDataHan">
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">小型仪器设备费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['device']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="小型仪器设备费"
+                          v-model.number="wordData['fund']['device']"
+                          @change="convertNumber('device',wordData['fund']['device'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>项目开展所需的小型专用仪器设备、工具、配件购置或租赁费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">材料费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['Material']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="材料费"
+                          v-model.number="wordData['fund']['Material']"
+                          @change="convertNumber('Material',wordData['fund']['Material'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>项目开展需消耗的各种原材料、辅助材料等低值易耗品的采购费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">测试化验加工费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['processing']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="测试化验加工费"
+                          v-model.number="wordData['fund']['processing']"
+                          @change="convertNumber('processing',wordData['fund']['processing'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>项目开展过程中支付给外单位的检验、测试、化验、计算、分析及加工费等费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">项目协作费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['Collaboration']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="项目协作费"
+                          v-model.number="wordData['fund']['Collaboration']"
+                          @change="convertNumber('Collaboration',wordData['fund']['Collaboration'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>按合同规定支付给协作单位的费用</span></div>
+                    </div>
+                   
+                  </div>
+                </div>
+    
+                <div class="fundData">
+                  <div class="fundDataLabel">间接费用</div>
+                  <div class="fundDataHan">
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">项目成果鉴定费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['APPRAISAL']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="项目成果鉴定费"
+                          v-model.number="wordData['fund']['APPRAISAL']"
+                          @change="convertNumber('APPRAISAL',wordData['fund']['APPRAISAL'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>学术会务费、评审费、鉴定费、成果集制作费等费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">参展参赛费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['entery']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="参展参赛费"
+                          v-model.number="wordData['fund']['entery']"
+                          @change="convertNumber('entery',wordData['fund']['entery'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>参加创客展会、竞赛等所需的报名费、展位费、布展费、宣传推广费及差旅费等费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">创客交流活动费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['activities']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="创客交流活动费"
+                          v-model.number="wordData['fund']['activities']"
+                          @change="convertNumber('activities',wordData['fund']['activities'])"></el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>创客交流活动中支付给校外专家的指导费、咨询费、授课费等费用。</span></div>
+                    </div>
+    
+                    <div class="fundDataLie">
+                      <div class="fundDataValue">知识产权事务费</div>
+                      <div class="fundDataValue" v-text="wordData['fund']['Transaction']">
+                        <!-- <el-input
+                          type="textarea"
+                          autosize
+                          resize="none"
+                          placeholder="知识产权事务费"
+                          v-model.number="wordData['fund']['Transaction']"
+                          @change="convertNumber('Transaction',wordData['fund']['Transaction'])">
+                        </el-input> -->
+                      </div>
+                      <div class="fundDataValue"><span>论文版面费、专利及其他知识产权事务等费用。</span></div>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="opinion">
+              <div class="opinionLabel">所在学院/部门<br/> 意 见</div>
+              <div class="opinionValue">
+                <div class="opinionImport">
+                  <div class="opinionChapter">负责人签章:</div>
+                  <div class="opinionDate">年 月 日</div>
+                </div>
+              </div>
+            </div>
+    
+            <div class="opinion">
+              <div class="opinionLabel">财务部门<br/>意 见</div>
+              <div class="opinionValue">
+                <div class="opinionImport">
+                  <div class="opinionChapter">负责人签章:</div>
+                  <div class="opinionDate">年 月 日</div>
+                </div>
+              </div>
+            </div>
+    
+            <div class="opinion">
+              <div class="opinionLabel">创新创业学院<br/>审 核 意 见</div>
+              <div class="opinionValue">
+                <div class="opinionImport">
+                  <div class="opinionChapter">负责人签章:</div>
+                  <div class="opinionDate">年 月 日</div>
+                </div>
+              </div>
+            </div>
+    
+          </div>
+          <div class="notes">
+            <span>备注:</span>
+            <span>1.表格可顺延或另附页。</span>
+            <span>2.项目申报需附相关佐证材料。</span>
+          </div>
+          <el-button type="primary" @click="getWord">下载表格</el-button>
+    </div>
+    </template>
+      
+    <script>
+    import {getMakerSpaceWord} from '@/components/tool/getWord'
+      export default {
+        data() {
+          return {
+            wordData:{
+              applicationDate:'2023年05月30日',//申请日期
+              projectName:"项目名称",//项目名称
+              college:"所在学院",//所在学院
+              begin_at:"2023-05-30",//项目开始时间
+              state:"已建设",//项目状态
+              plannedEnd_at:"2023-05-31",//计划完成时间
+              pro_leader:"项目负责人",//项目负责人
+              lead_leader:"学院牵头领导",//学院牵头领导
+              teacher:[
+                  {name:"姓名",speciality:"专业",title:"职称",education:"学历",section:"所在教研室",work:"项目组角色分工"},
+                  {name:"姓名",speciality:"专业",title:"职称",education:"学历",section:"所在教研室",work:"项目组角色分工"},
+                  {name:"姓名",speciality:"专业",title:"职称",education:"学历",section:"所在教研室",work:"项目组角色分工"},
+              ],   //教师组//name:姓名  speciality:专业  title:职称 education:学历    section:所在教研室    work:项目组角色分工
+              student:[
+                  {name:"姓名",class:"班级",age:"年龄",work:"项目组任务分工"},
+                  {name:"姓名",class:"班级",age:"年龄",work:"项目组任务分工"},
+                  {name:"姓名",class:"班级",age:"年龄",work:"项目组任务分工"},
+                  {name:"姓名",class:"班级",age:"年龄",work:"项目组任务分工"},
+                  {name:"姓名",class:"班级",age:"年龄",work:"项目组任务分工"},
+              ],   //学生组//name:姓名    class:班级 age:年龄   work:项目组任务分工
+              brief:"项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介项目简介",//项目简介
+              Construction:"建设内容",//建设内容
+              ProjectBasis:"立项依据",//立项依据
+              development:"创客空间物理环境、制度建设及软件设施建设情况",//创客空间物理环境、制度建设及软件设施建设情况
+              studio:"学生创客工作室建设情况",//学生创客工作室建设情况
+              studentTeam:"学生创客团队(人才)培养预期成果、数量",//学生创客团队(人才)培养预期成果、数量
+              studentActivities:"学生创客活动组织实施情况",//学生创客活动组织实施情况
+              Transforming:"学生创客团队孵化、转化创业项目情况",//学生创客团队孵化、转化创业项目情况
+              condition:"立项基础及条件",//立 项基 础及条 件
+              fund:{
+                device:200,
+                Material:100,
+                processing:200,
+                Collaboration:300,
+                APPRAISAL:400,
+                entery:1,
+                activities:0,
+                Transaction:200,
+              },//预算经费
+              //total:总经费     
+              //小型仪器设备费:device        deviceRemarks
+              //材料费:Material             MaterialRemarks
+              //测试化验加工费:processing    processingRemarks
+              //项目协作费:Collaboration     CollaborationRemarks
+              //项目成果鉴定费:APPRAISAL     APPRAISALRemarks
+              //参展参赛费:entery            enteryRemarks
+              //创客交流活动费:activities    activitiesRemarks
+              //知识产权事务费:Transaction   TransactionRemarks
+            },
+          };
+        },
+        methods: {
+            getData(){
+                console.log("获取数据")
+            },
+            getWord(){
+                this.$message.info("获取表单")
+                getMakerSpaceWord(this.wordData)
+            }
+        },
+        mounted(){
+            this.getData();
+        }
+      };
+    </script>
+      
+    <style lang="less" scoped>
+    #MakerSpaceWord{
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        background-color: white;
+        padding:100px;
+        box-sizing:border-box;
+        #title{
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            position: relative;
+            // margin-top: 40px;
+            .school{
+                font-size: 2.5em;
+                font-weight: bold;
+                letter-spacing: 20px;
+            }
+            .wordTitle{
+                font-size: 2em;
+                letter-spacing: .15em;
+                margin-bottom:40px ;
+            }
+            .date{
+    
+                font-size: 1em;
+                position: absolute;
+                bottom: 0;
+                right: 100px;
+                font-weight: bold;
+                margin-bottom:5px;
+            }
+        }
+        #table{
+        box-sizing: border-box;
+        border: solid 1px black;
+        border-bottom: none;
+        display: flex;
+        flex-direction: column;
+        .han{
+          display: flex;
+          height: auto;
+          box-sizing: border-box;
+          border-bottom:solid 1px black;
+          .label{
+            position: relative;
+            flex:1;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            box-sizing: border-box;
+            min-height: 50px;
+            border-right: solid 1px black;
+            font-weight:bold;
+          }
+          .value{
+            flex: 2;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            box-sizing: border-box;
+            min-height: 50px;
+            &:not(:nth-last-child(1)){
+              border-right: solid 1px black;
+            }
+          }
+          &:nth-child(5){
+            .label{
+              flex: 1;
+            }
+            .value{
+              flex: 1;
+            }
+          }
+        }
+        .status{
+          display: flex;
+          height: auto;
+          box-sizing: border-box;
+          .statusLabel{
+            flex:1;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            box-sizing: border-box;
+            border-right: solid 1px black;
+            border-bottom: solid 1px black;
+            font-weight:bold;
+          }
+          .ValueDescribe{
+            flex: 5;
+            display: flex;
+            flex-direction: column;
+            .statusHan{
+              display: flex;
+              box-sizing: border-box;
+              border-bottom: solid 1px black;
+    
+              .DescribeLabel{
+                flex: 1;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                box-sizing: border-box;
+                // min-height: 200px;
+                padding:40px 10px;
+                border-right: solid 1px black;
+              }
+              &:nth-child(2){
+                .DescribeLabel{
+                    min-height: 100px;
+                }
+              }
+              .DescribeValue{
+                flex: 5;
+                box-sizing: border-box;
+                padding: 15px;
+              }
+            }
+          }
+        }
+        .member{
+          display: flex;
+          .memberLabel{
+            flex:1;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+            box-sizing: border-box;
+            border-right: solid 1px black;
+            border-bottom: solid 1px black;
+            min-height: 200px;
+          }
+          .memberTable{
+            flex: 5;
+            display: flex;
+            flex-direction: column;
+            .memberHan{
+              display: flex;
+              box-sizing: border-box;
+              border-bottom: solid 1px black;
+              position:relative;
+              .memberValue{
+                box-sizing: border-box;
+                flex: 1;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                border-right: solid 1px black;
+                min-height: 45px;
+                &:nth-last-child(1){
+                  border-right: none;
+                  flex: 3;
+                }
+              }
+          }
+        }
+    }
+        .chapters{
+          display: flex;
+          .chaptersLabel{
+            flex:1;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+            box-sizing: border-box;
+            padding: 20px 0;
+            border-right: solid 1px black;
+            border-bottom: solid 1px black;
+          }
+          .chaptersTable{
+            flex: 5;
+            display: flex;
+            flex-direction: column;
+            .chaptersValue{
+              flex: 1;
+              min-height:200px;
+              box-sizing: border-box;
+              border-bottom: solid 1px black;
+              padding: 5px;
+              span{
+                font-weight: bold;
+              }
+            }
+          }
+        }
+        .fund{
+          display: flex;
+          .fundTitle{
+            flex:1;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+            box-sizing: border-box;
+            border-right: solid 1px black;
+            border-bottom: solid 1px black;
+            font-weight:bold;
+          }
+          .fundTable{
+            flex: 5;
+            display: flex;
+            flex-direction: column;
+            box-sizing: border-box;
+            .fundTotal{
+              height: 60px;
+              box-sizing: border-box;
+              border-bottom: solid 1px black;
+              display: flex;
+              div{
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                font-weight: bold;
+              }
+              .fundLabel{
+                flex: 1;
+                box-sizing: border-box;
+                border-right:solid 1px black;
+              }
+              .fundValue{
+                flex: 4;
+              }
+            }
+            .fundHeader{
+              min-height: 40px;
+              box-sizing: border-box;
+              border-bottom: solid 1px black;
+              display: flex;
+              font-weight:bold;
+              .HeaderLabel{
+                flex: 1;
+                display: flex;
+                box-sizing: border-box;
+                justify-content: center;
+                align-items: center;
+                border-right: solid 1px black;
+                &:nth-last-child(1){
+                  flex: 2;
+                  border: none;
+                }
+              }
+            }
+            .fundData{
+              display: flex;
+              .fundDataLabel{
+                flex:1;
+                box-sizing: border-box;
+                border-right: solid 1px black;
+                border-bottom: solid 1px black;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                font-weight:bold;
+              }
+              .fundDataHan{
+                flex: 4;
+                display: flex;
+                flex-direction: column;
+                .fundDataLie{
+                  display: flex;
+                  min-height: 40px;
+                  flex: 4;
+                  box-sizing: border-box;
+                  border-bottom: solid 1px black;
+                  .fundDataValue{
+                    flex: 1;
+                    min-height: 40px;
+                    display: flex;
+                    box-sizing: border-box;
+                    justify-content: center;
+                    align-items: center;
+                    border-right: solid 1px black;
+                    &:nth-last-child(1){
+                      flex:2;
+                      border: none;
+                      justify-content: flex-start;
+                      span{
+                        padding: 10px 20px;
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+        // .fundTable{
+        //   tr{
+        //     td{
+        //       height: 50px;
+        //     }
+        //     &:nth-child(1){
+        //       flex: 1;
+        //     }
+        //   }
+        // }
+        .opinion{
+          display: flex;
+          .opinionLabel{
+            flex:1;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            justify-content: center;
+            box-sizing: border-box;
+            // padding: 3.5px;
+            border-right: solid 1px black;
+            border-bottom: solid 1px black;
+            font-weight:bold;
+          }
+          .opinionValue{
+            flex: 5;
+            min-height: 200px;
+            position: relative;
+            box-sizing:border-box;
+            border-bottom: solid 1px black;
+            .opinionImport{
+              display: flex;
+              width: 30%;
+              height:40%;
+              flex-direction: column;
+              position:absolute;
+              bottom: 0px;
+              right: 20px;
+              justify-content: space-between;
+              .opinionDate{
+                display: flex;
+                justify-content: flex-end;
+                font-size: 18px;
+              }
+            }
+          }
+        }
+      }
+      .notes{
+        width: 100%;
+        display: flex;
+        flex-direction:column;
+      }
+      :deep(.el-input__inner){
+        height: 100%;
+        border-radius: 0;
+        width: 100%;
+        background: none;
+        color: black;
+        text-align: center;
+        font-size: 16px;
+        box-sizing: border-box;
+        border: none;
+        outline: none;
+      }
+      :deep(.el-textarea__inner){
+        height: 100%;
+        border-radius: 0;
+        width: 100%;
+        background: none;
+        color: black;
+        text-align: center;
+        font-size: 16px;
+        box-sizing: border-box;
+        border: none;
+        overflow: hidden;
+      }
+      .noCenter{
+        :deep(.el-textarea__inner ){
+          text-align:left;
+        }
+      }
+      :deep(.el-date-editor){
+        width: 100%;
+        height: 100%;
+      }
+      :deep(.el-input__suffix){
+        display:none;
+      }
+      // .InputDiv{
+      //   width: 100%;
+      //   height: 100%;
+      //   word-break: break-all;
+      //   display: flex;
+      //   justify-content: center;
+      //   align-items: center;
+      //   box-sizing: border-box;
+      //   padding: 10px;
+      //   outline: none;
+      //   &:focus{
+      //     border:solid 1px #409eff ;
+      //   }
+      // }
+      .fontBold{
+        font-weight:bold;
+      }
+    }
+    </style>

+ 80 - 0
src/components/tool/getWord.js

@@ -167,6 +167,85 @@ function MakerSpaceWord(data,fund){
     x.send()
 }
 
+function getMakerSpaceWord(wordData){
+    //获取模板文件
+    let _url = "./file/2023年二级学院特色创客空间建设项目申报书模板 (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);
+            //处理数据
+            wordData['fund']['total'] = Number(wordData['fund']['device'])+Number(wordData['fund']['Material'])+Number(wordData['fund']['processing'])+Number(wordData['fund']['Collaboration'])+Number(wordData['fund']['APPRAISAL'])+Number(wordData['fund']['entery'])+Number(wordData['fund']['activities'])+Number(wordData['fund']['Transaction']);
+            //模板数据
+            let data = {
+                applicationDate:wordData['applicationDate'],
+                ing:wordData['state']=='待建设'?"√":"□", //已建设
+                ed:wordData['state']=='已建设'?"√":"□",  //待建设
+                projectName:wordData['projectName'],//项目名称
+                college:wordData['college'],//所在学院
+                begin_at:wordData['begin_at'],//项目开始时间
+                plannedEnd_at:wordData['plannedEnd_at'],//计划完成时间
+                pro_leader:wordData['pro_leader'],//项目负责人
+                lead_leader:wordData['lead_leader'],//学院牵头领导
+                people:(wordData['teacher'].length+wordData['student'].length),//项目组人数
+                teacherNum:wordData['teacher'].length,//参与教师人数
+                studentNum:wordData['student'].length,//参与学生人数
+                teacher:wordData['teacher'],   //教师组//name:姓名  speciality:专业  title:职称 education:学历    section:所在教研室    work:项目组角色分工
+                student:wordData['student'],   //学生组//name:姓名    class:班级 age:年龄   work:项目组任务分工
+                brief:wordData['brief'],//项目简介
+                Construction:wordData['Construction'],//建设内容
+                ProjectBasis:wordData['ProjectBasis'],//立项依据
+                development:wordData['development'],//创客空间物理环境、制度建设及软件设施建设情况
+                studio:wordData['studio'],//学生创客工作室建设情况
+                studentTeam:wordData['studentTeam'],//学生创客团队(人才)培养预期成果、数量
+                studentActivities:wordData['studentActivities'],//学生创客活动组织实施情况
+                Transforming:wordData['Transforming'],//学生创客团队孵化、转化创业项目情况
+                condition:wordData['condition'],//立 项基 础及条 件
+                fund:[wordData['fund']],//预算经费
+                    //total:总经费     
+                    //小型仪器设备费:device        deviceRemarks
+                    //材料费:Material             MaterialRemarks
+                    //测试化验加工费:processing    processingRemarks
+                    //项目协作费:Collaboration     CollaborationRemarks
+                    //项目成果鉴定费:APPRAISAL     APPRAISALRemarks
+                    //参展参赛费:entery            enteryRemarks
+                    //创客交流活动费:activities    activitiesRemarks
+                    //知识产权事务费:Transaction   TransactionRemarks
+            }
+            //渲染模板
+            doc.setData(data);
+            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);
@@ -432,6 +511,7 @@ function ActivityWord(data){
 
 export{
     MakerSpaceWord,
+    getMakerSpaceWord,
     MakerStudentWord,
     ActivityWord
 }

+ 32 - 5
src/views/fundManage/makerfundApply.vue

@@ -60,16 +60,21 @@
                     <div class="inpInterval twoStyle">预算</div>
                     <el-input v-model="item.budget" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                 </div>
-            </div>
-            <div style="width: 100%;display: flex;flex-wrap: wrap;">
                 <div class="howMoney">
                     <div class="inpInterval">已支付</div>
                     <el-input v-model="item.usedFund" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                 </div>
+            </div>
+            <div style="width: 100%;display: flex;flex-wrap: wrap;">
+          
                 <div class="howMoney">
                     <div class="inpInterval twoStyle">本次申请</div>
                     <el-input v-model="item.apply" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                 </div>
+                <div class="howMoney">
+                    <div class="inpInterval twoStyle">实际使用</div>
+                    <el-input v-model="item.reality" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
+                </div>
                 <div class="howMoney">
                     <div class="inpInterval twoStyle">余额</div>
                     <el-input disabled :value="item.budget - item.usedFund -item.apply" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
@@ -119,17 +124,21 @@
                         <div class="inpInterval twoStyle">预算</div>
                         <el-input v-model="item.budget" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                     </div>
-                </div>
-
-                <div style="width: 100%;display: flex;flex-wrap: wrap;">
                     <div class="howMoney">
                         <div class="inpInterval">已支付</div>
                         <el-input v-model="item.usedFund" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                     </div>
+                </div>
+
+                <div style="width: 100%;display: flex;flex-wrap: wrap;">
                     <div class="howMoney">
                         <div class="inpInterval twoStyle">本次申请</div>
                         <el-input v-model="item.apply" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
                     </div>
+                    <div class="howMoney">
+                        <div class="inpInterval twoStyle">实际使用</div>
+                        <el-input v-model="item.reality" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
+                    </div>
                     <div class="howMoney">
                         <div class="inpInterval twoStyle">余额</div>
                         <el-input disabled :value="item.budget - item.usedFund -item.apply" type="number" class="inputNumber howMoneyInp" placeholder="金额"></el-input>
@@ -291,6 +300,7 @@
                     <td>预算</td>
                     <td>已支付</td>
                     <td>本次申请</td>
+                    <td>实际使用</td>
                     <td>余额</td>
                     <td style="width: 20%;">事由</td>
                 </tr>
@@ -300,6 +310,7 @@
                     <td>{{ AllFund.budget }}</td>
                     <td>{{ AllFund.expended }}</td>
                     <td>{{ AllFund.application }}</td>
+                    <td>实际使用</td>
                     <td>{{ AllFund.surplus }}</td>
                     <td style="width: 20%;"></td>
                 </tr>
@@ -309,6 +320,7 @@
                     <td>{{ IndirectFunding.budget }}</td>
                     <td>{{ IndirectFunding.expended }}</td>
                     <td>{{IndirectFunding.application}}</td>
+                    <td>实际使用</td>
                     <td>{{ IndirectFunding.surplus }}</td>
                     <td style="width: 20%;"></td>
                 </tr>
@@ -318,6 +330,7 @@
                     <td>{{ directData.facility==0?'':directData.facility }}</td>
                     <td>{{ usedDirectData.facility==0?'':usedDirectData.facility }}</td>
                     <td>{{ applicationDirectData.facility==0?'':applicationDirectData.facility }}</td>
+                    <td>实际使用</td>
                     <td>{{ directData.facility-usedDirectData.facility-applicationDirectData.facility }}</td>
                     <td style="width: 20%;">{{ directDataReason.reason }}</td>
                 </tr>
@@ -327,6 +340,7 @@
                     <td>{{ directData.cl==0?'':directData.cl }}</td>
                     <td>{{ usedDirectData.cl==0?'':usedDirectData.cl }}</td>
                     <td>{{ applicationDirectData.cl==0?'':applicationDirectData.cl }}</td>
+                    <td>实际使用</td>
                     <td>{{ directData.cl-usedDirectData.cl-applicationDirectData.cl }}</td>
                     <td style="width: 20%;">{{ directDataReason.reason1 }}</td>
                 </tr>
@@ -336,6 +350,7 @@
                     <td>{{ directData.jg==0?'':directData.jg }}</td>
                     <td>{{ usedDirectData.jg==0?'':usedDirectData.jg }}</td>
                     <td>{{ applicationDirectData.jg==0?'':applicationDirectData.jg }}</td>
+                    <td>实际使用</td>
                     <td>{{ directData.jg-usedDirectData.jg-applicationDirectData.jg }}</td>
                     <td style="width: 20%;">{{ directDataReason.reason2 }}</td>
                 </tr>
@@ -345,6 +360,7 @@
                     <td>{{ directData.xz==0?'':directData.xz }}</td>
                     <td>{{ usedDirectData.xz==0?'':usedDirectData.xz }}</td>
                     <td>{{ applicationDirectData.xz==0?'':applicationDirectData.xz }}</td>
+                    <td>实际使用</td>
                     <td>{{ directData.xz-usedDirectData.xz-applicationDirectData.xz }}</td>
                     <td style="width: 20%;">{{ directDataReason.reason3 }}</td>
                 </tr>
@@ -354,6 +370,7 @@
                     <td>{{ directData.qt==0?'':directData.qt }}</td>
                     <td>{{ usedDirectData.qt==0?'':usedDirectData.qt }}</td>
                     <td>{{ applicationDirectData.qt==0?'':applicationDirectData.qt }}</td>
+                    <td>实际使用</td>
                     <td>{{ directData.qt- usedDirectData.qt-applicationDirectData.qt}}</td>
                     <td style="width: 20%;">{{ directDataReason.reason4 }}</td>
                 </tr>
@@ -363,6 +380,7 @@
                     <td>{{ Expenditure['budget'] }}</td>
                     <td>{{ Expenditure['expended'] }}</td>
                     <td>{{ Expenditure['application'] }}</td>
+                    <td>实际使用</td>
                     <td>{{ Expenditure['surplus'] }}</td>
                     <td style="width: 20%;"></td>
                 </tr>
@@ -372,6 +390,7 @@
                     <td>{{ indirectData.facility==0?'':indirectData.facility }}</td>
                     <td>{{ usedInDirectData.facility==0?'':usedInDirectData.facility }}</td>
                     <td>{{ applicationInDirectData.facility==0?'':applicationInDirectData.facility }}</td>
+                    <td>实际使用</td>
                     <td>{{ indirectData.facility-usedInDirectData.facility-applicationInDirectData.facility }}</td>
                     <td style="width: 20%;">{{ indirectDataReason.reason }}</td>
                 </tr>
@@ -381,6 +400,7 @@
                     <td>{{ indirectData.cl==0?'':indirectData.cl }}</td>
                     <td>{{ usedInDirectData.cl==0?'':usedInDirectData.cl }}</td>
                     <td>{{ applicationInDirectData.cl==0?'':applicationInDirectData.cl }}</td>
+                    <td>实际使用</td>
                     <td>{{ indirectData.cl-usedInDirectData.cl-applicationInDirectData.cl }}</td>
                     <td style="width: 20%;">{{ indirectDataReason.reason1 }}</td>
                 </tr>
@@ -390,6 +410,7 @@
                     <td>{{ indirectData.jg==0?'':indirectData.jg }}</td>
                     <td>{{ usedInDirectData.jg==0?'':usedInDirectData.jg }}</td>
                     <td>{{ applicationInDirectData.jg==0?'':applicationInDirectData.jg }}</td>
+                    <td>实际使用</td>
                     <td>{{ indirectData.jg-usedInDirectData.jg-applicationInDirectData.jg }}</td>
                     <td style="width: 20%;">{{ indirectDataReason.reason2 }}</td>
                 </tr>
@@ -399,6 +420,7 @@
                     <td>{{ indirectData.xz==0?'':indirectData.xz }}</td>
                     <td>{{ usedInDirectData.xz==0?'':usedInDirectData.xz }}</td>
                     <td>{{ applicationInDirectData.xz==0?'':applicationInDirectData.xz }}</td>
+                    <td>实际使用</td>
                     <td>{{ indirectData.xz-usedInDirectData.xz-applicationInDirectData.xz }}</td>
                     <td style="width: 20%;">{{ indirectDataReason.reason3 }}</td>
                 </tr>
@@ -408,6 +430,7 @@
                     <td>{{ indirectData.qt==0?'':indirectData.qt }}</td>
                     <td>{{ usedInDirectData.qt==0?'':usedInDirectData.qt }}</td>
                     <td>{{ applicationInDirectData.qt==0?'':applicationInDirectData.qt }}</td>
+                    <td>实际使用</td>
                     <td>{{ indirectData.qt-usedInDirectData.qt-applicationInDirectData.qt }}</td>
                     <td style="width: 20%;">{{ indirectDataReason.reason4 }}</td>
                 </tr>
@@ -522,6 +545,7 @@ export default {
                     budget:'',         //预算
                     usedFund:'',       //已使用
                     apply:'',          //本次申请
+                    reality:"",        //实际使用
                     reason:''          //理由
                 }
             ], 
@@ -552,6 +576,7 @@ export default {
                 budget:'',         //预算
                 usedFund:'',       //已使用
                 apply:'',          //本次申请
+                reality:"",        //实际使用
                 reason:''          //理由
             },
 
@@ -583,6 +608,7 @@ export default {
                     budget:'',         //预算
                     usedFund:'',       //已使用
                     apply:'',          //本次申请
+                    reality:"",        //实际使用
                     reason:''          //理由
                 }
             ], 
@@ -613,6 +639,7 @@ export default {
                 budget:'',         //预算
                 usedFund:'',       //已使用
                 apply:'',          //本次申请
+                reality:"",        //实际使用
                 reason:''          //理由
             },
             

+ 8 - 3
src/views/test.vue

@@ -1,9 +1,11 @@
 <template>
   <!-- 测试上传组件 -->
   <div v-loading="loading" id="test">
-    <div id="word">
-      <MakerSpaceWord/>
+    <div class="word">
+      <!-- <MakerSpaceWord/> -->
+      <MakerSpaceWordShow/>
     </div>
+
     <!-- <div>
       <BeUpload
         @getFile="getFile"
@@ -25,10 +27,12 @@
 import BeUpload from "../components/tool/beUpload.vue";
 import getExcel from "@/components/tool/getExcel";
 import MakerSpaceWord from '@/components/MakerSpaceWord.vue'
+import MakerSpaceWordShow from '@/components/MakerSpaceWordShow.vue'
 export default {
   components: {
     BeUpload,
     MakerSpaceWord,
+    MakerSpaceWordShow,
   },
   data() {
     return {
@@ -54,8 +58,9 @@ export default {
   // background:blue;
   justify-content: center;
 }
-#word{
+.word{
   width: 1200px;
+  margin-left: 40px;
   height: auto;
 }
 </style>