MakerSpaceWord.vue 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230
  1. <template>
  2. <div id="MakerSpaceWord">
  3. <div id="title">
  4. <div class="school">深圳技师学院</div>
  5. <div class="wordTitle">二级学院特色创客空间建设项目立项申报书</div>
  6. <div class="date">申请日期: {{ wordData['applicationDate'] }}</div>
  7. </div>
  8. <div id="table">
  9. <div class="han" id="one">
  10. <div class="label">项目名称</div><div class="value">
  11. <el-input
  12. type="textarea"
  13. autosize
  14. resize="none"
  15. placeholder="请输入项目名称"
  16. v-model="wordData['projectName']">
  17. </el-input>
  18. </div>
  19. <div class="label">所在学院</div><div class="value">
  20. <el-select v-model="wordData['college']" style="width: 100%;" placeholder="请选择所在学院">
  21. <el-option
  22. v-for="item in DepartmentData"
  23. :key="item.id"
  24. :label="item.name"
  25. :value="item.id">
  26. </el-option>
  27. </el-select>
  28. </div>
  29. </div>
  30. <div class="status" id="two">
  31. <div class="statusLabel">项目状态</div>
  32. <div class="ValueDescribe">
  33. <div class="statusHan">
  34. <div class="DescribeLabel">
  35. <el-radio v-model="wordData['state']" label="00a3aa2f-f51e-11ed-a3f6-509a4c5b67cf">已建设</el-radio>
  36. </div><div class="DescribeValue">指二级学院已获得政府或学校资助(例:设计学院、信通学院、珠宝学院),已有双创空间(创客实践室)场地、设备设施并已投入运营,需对空间环境优化、规章制度建设、小型设施设备添置、创客项目物料增补,需拓展创客项目培训、辅导,创客讲座、沙龙、论坛,创客路演、竞赛、集市及成果参评、参展等方面的工作而提出的资助申请。</div>
  37. </div>
  38. <div class="statusHan">
  39. <div class="DescribeLabel">
  40. <el-radio v-model="wordData['state']" label="04692ef6-f51e-11ed-a3f6-509a4c5b67cf">待建设</el-radio>
  41. </div><div class="DescribeValue">指二级学院拟立项开展学院特色创客空间建设项目,需进行项目前期调研论证、场馆规划、空间图纸设计、设备选型等方面的工作而进行的资助申请。</div>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="han" id="three">
  46. <div class="label">项目起始时间</div><div class="value">
  47. <el-date-picker
  48. v-model="wordData['begin_at']"
  49. type="date"
  50. prefix-icon="none"
  51. placeholder="请选择项目开始时间"
  52. value-format="yyyy-MM-dd HH:mm:ss">
  53. </el-date-picker>
  54. </div>
  55. <div class="label">计划完成时间</div><div class="value">
  56. <el-date-picker
  57. v-model="wordData['plannedEnd_at']"
  58. type="date"
  59. placeholder="请选择项目计划完成时间"
  60. prefix-icon="none"
  61. value-format="yyyy-MM-dd HH:mm:ss">
  62. </el-date-picker>
  63. </div>
  64. </div>
  65. <div class="han" id="four">
  66. <div class="label">项目负责人</div><div class="value">
  67. <el-input
  68. type="textarea"
  69. autosize
  70. resize="none"
  71. placeholder="请输入项目负责人"
  72. v-model="wordData['pro_leader']">
  73. </el-input>
  74. </div>
  75. <div class="label">学院牵头领导</div><div class="value">
  76. <el-input
  77. type="textarea"
  78. autosize
  79. resize="none"
  80. placeholder="请输入学院牵头领导"
  81. v-model="wordData['lead_leader']">
  82. </el-input>
  83. </div>
  84. </div>
  85. <div class="han">
  86. <div class="label">项目组人数</div><div class="value">{{ wordData['teacher'].length+wordData['student'].length }}</div>
  87. <div class="label">参与教师人数</div><div class="value">{{wordData['teacher'].length}}</div>
  88. <div class="label">参与学生人数</div><div class="value">{{wordData['student'].length }}</div>
  89. </div>
  90. <div class="member" id="five">
  91. <div class="memberLabel">
  92. <span class="fontBold">项目组</span>
  93. <span class="fontBold">教师团队</span>
  94. <span>(团队3人以上,</span>
  95. <span>至少应包含1名教</span>
  96. <span>研室主任)</span>
  97. </div>
  98. <div class="memberTable" :style="wordData['teacher'].length<4?'border-bottom:solid 1px black':''">
  99. <div class="memberHan">
  100. <div class="memberValue">姓名</div>
  101. <div class="memberValue">专业</div>
  102. <div class="memberValue">职称</div>
  103. <div class="memberValue">学历</div>
  104. <div class="memberValue">所在教研室</div>
  105. <div class="memberValue">项目组角色分工</div>
  106. <div></div>
  107. </div>
  108. <div class="memberHan" v-for="(item,index) in wordData['teacher']" :key="index">
  109. <div class="memberValue">
  110. <el-input
  111. type="textarea"
  112. autosize
  113. resize="none"
  114. placeholder="姓名"
  115. v-model="item['name']">
  116. </el-input>
  117. </div>
  118. <div class="memberValue">
  119. <el-input
  120. type="textarea"
  121. autosize
  122. resize="none"
  123. placeholder="专业"
  124. v-model="item['speciality']">
  125. </el-input>
  126. </div>
  127. <div class="memberValue">
  128. <el-input
  129. type="textarea"
  130. autosize
  131. resize="none"
  132. placeholder="职称"
  133. v-model="item['title']">
  134. </el-input>
  135. </div>
  136. <div class="memberValue">
  137. <el-input
  138. type="textarea"
  139. autosize
  140. resize="none"
  141. placeholder="学历"
  142. v-model="item['education']">
  143. </el-input>
  144. </div>
  145. <div class="memberValue">
  146. <el-input
  147. type="textarea"
  148. autosize
  149. resize="none"
  150. placeholder="教研室"
  151. v-model="item['section']">
  152. </el-input>
  153. </div>
  154. <div class="memberValue">
  155. <el-input
  156. type="textarea"
  157. autosize
  158. resize="none"
  159. placeholder="项目组角色分工"
  160. v-model="item['work']">
  161. </el-input>
  162. </div>
  163. <div class="operate">
  164. <el-button @click="addTeacher" v-if="wordData['teacher'].length==index+1" type="primary" size="mini">添加</el-button>
  165. <el-button v-if="wordData['teacher'].length!=1 && wordData['teacher'].length>3" @click="DelTeacher(index)" type="primary" size="mini">删除</el-button>
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="member" id="six">
  171. <div class="memberLabel">
  172. <span class="fontBold">项目组</span>
  173. <span class="fontBold">学生团队</span>
  174. <span>(团队5人以上,</span>
  175. <span>学生团队年级结构</span>
  176. <span>安排合理)</span>
  177. </div>
  178. <div class="memberTable" :style="wordData['student'].length<4?'border-bottom:solid 1px black':''">
  179. <div class="memberHan">
  180. <div class="memberValue">姓名</div>
  181. <div class="memberValue">班级</div>
  182. <div class="memberValue">年龄</div>
  183. <div class="memberValue">项目组角色分工</div>
  184. <div></div>
  185. </div>
  186. <div class="memberHan" v-for="(item,index) in wordData['student']" :key="index">
  187. <div class="memberValue">
  188. <el-input
  189. type="textarea"
  190. autosize
  191. resize="none"
  192. placeholder="姓名"
  193. v-model="item['name']">
  194. </el-input>
  195. </div>
  196. <div class="memberValue">
  197. <el-input
  198. type="textarea"
  199. autosize
  200. placeholder="班级"
  201. resize="none"
  202. v-model="item['class']">
  203. </el-input>
  204. </div>
  205. <div class="memberValue">
  206. <el-input
  207. type="textarea"
  208. autosize
  209. resize="none"
  210. placeholder="年龄"
  211. v-model="item['age']">
  212. </el-input>
  213. </div>
  214. <div class="memberValue">
  215. <el-input
  216. type="textarea"
  217. autosize
  218. resize="none"
  219. placeholder="项目组角色分工"
  220. v-model="item['work']">
  221. </el-input>
  222. </div>
  223. <div class="operate">
  224. <el-button @click="addStudent" v-if="wordData['student'].length==index+1" type="primary" size="mini">添加</el-button>
  225. <el-button @click="DelStudent(index)" v-if="wordData['student'].length!=1 && wordData['student'].length>5" type="primary" size="mini">删除</el-button>
  226. </div>
  227. </div>
  228. </div>
  229. </div>
  230. <div class="chapters">
  231. <div class="chaptersLabel">
  232. <span class="fontBold">项目</span>
  233. <span class="fontBold">建设</span>
  234. <span class="fontBold">内容</span>
  235. <span class="fontBold">及</span>
  236. <span class="fontBold">目标</span>
  237. <span>(说明项目建设内</span><span>容、拟解决的关键</span><span>问题、创新之处、</span><span>主要建设指标)</span>
  238. </div>
  239. <div class="chaptersTable">
  240. <div class="chaptersValue" id="seven">
  241. <span>项目简介(200-300字)</span><br/>
  242. <el-input
  243. type="textarea"
  244. class="noCenter"
  245. :autosize="{minRows: 6}"
  246. resize="none"
  247. show-word-limit
  248. maxlength="300"
  249. v-model="wordData['brief']">
  250. </el-input>
  251. </div>
  252. <div class="chaptersValue" id="eight">
  253. <span>建设内容(空间优化/场馆规划方面拟解决的关键问题及主要建设指标)</span><br/>
  254. <!-- <el-input
  255. type="textarea"
  256. autosize
  257. resize="none"
  258. placeholder="请输入项目名称"
  259. v-model="wordData['projectName']">
  260. </el-input> -->
  261. <el-input
  262. type="textarea"
  263. class="noCenter"
  264. :autosize="{minRows: 6}"
  265. resize="none"
  266. v-model="wordData['Construction']">
  267. </el-input>
  268. </div>
  269. </div>
  270. </div>
  271. <div class="chapters">
  272. <div class="chaptersLabel fontBold">
  273. <span>项目</span>
  274. <span>建设</span>
  275. <span>论证</span>
  276. <span>报告</span>
  277. </div>
  278. <div class="chaptersTable">
  279. <div class="chaptersValue" id="nine">
  280. <span>立项依据(说明本项目的目的、意义以及国内外高校现状、市场预测和发展趋势,预期达到的目标,研究的预期效果分析,成果受益面)</span><br/>
  281. <el-input
  282. type="textarea"
  283. class="noCenter"
  284. :autosize="{minRows: 6}"
  285. resize="none"
  286. v-model="wordData['ProjectBasis']">
  287. </el-input>
  288. </div>
  289. </div>
  290. </div>
  291. <div class="chapters">
  292. <div class="chaptersLabel">
  293. <span class="fontBold">预期</span>
  294. <span class="fontBold">成果</span>
  295. <span>(项目预期成果、</span><span>数量及形式,结题</span><span>时:须附项目研究</span><span>报告)</span>
  296. </div>
  297. <div class="chaptersTable">
  298. <div class="chaptersValue" id="ten">
  299. <span>创客空间物理环境、制度建设及软件设施建设情况(环境优化/制度完善/设施改造)</span><br/>
  300. <el-input
  301. type="textarea"
  302. class="noCenter"
  303. :autosize="{minRows: 6}"
  304. resize="none"
  305. v-model="wordData['development']">
  306. </el-input>
  307. </div>
  308. <div class="chaptersValue" id="eleven">
  309. <span>学生创客工作室建设情况(工作室数量及活动开展情况)</span><br/>
  310. <el-input
  311. type="textarea"
  312. class="noCenter"
  313. :autosize="{minRows: 6}"
  314. resize="none"
  315. v-model="wordData['studio']">
  316. </el-input>
  317. </div>
  318. <div class="chaptersValue" id="twelve">
  319. <span>学生创客团队(人才)培养预期成果、数量</span><br/>
  320. <el-input
  321. type="textarea"
  322. class="noCenter"
  323. :autosize="{minRows: 6}"
  324. resize="none"
  325. v-model="wordData['studentTeam']">
  326. </el-input>
  327. </div>
  328. <div class="chaptersValue" id="thirteen">
  329. <span>学生创客活动组织实施情况</span><br/>
  330. <el-input
  331. type="textarea"
  332. class="noCenter"
  333. :autosize="{minRows: 6}"
  334. resize="none"
  335. v-model="wordData['studentActivities']">
  336. </el-input>
  337. </div>
  338. <div class="chaptersValue" id="fourteen">
  339. <span>学生创客团队孵化、转化创业项目情况</span><br/>
  340. <el-input
  341. type="textarea"
  342. class="noCenter"
  343. :autosize="{minRows: 6}"
  344. resize="none"
  345. v-model="wordData['Transforming']">
  346. </el-input>
  347. </div>
  348. </div>
  349. </div>
  350. <div class="chapters">
  351. <div class="chaptersLabel">
  352. <span class="fontBold">立项</span>
  353. <span class="fontBold">基础</span>
  354. <span class="fontBold">及</span>
  355. <span class="fontBold">条件</span>
  356. <span>(说明已开展的相</span>
  357. <span>关研究及基础准备</span>
  358. <span>工作,已具备的设</span>
  359. <span>备场地条件和技术</span>
  360. <span>力量,尚缺少的条</span>
  361. <span>件和拟解决的途</span>
  362. <span>径)</span>
  363. </div>
  364. <div class="chaptersTable">
  365. <div class="chaptersValue" id="fifteen">
  366. <span>基础条件(物理环境/设备设施/项目实施/活动开展/技术力量/社会资源)</span><br/>
  367. <el-input
  368. type="textarea"
  369. class="noCenter"
  370. :autosize="{minRows: 6}"
  371. resize="none"
  372. v-model="wordData['condition']">
  373. </el-input>
  374. </div>
  375. </div>
  376. </div>
  377. <div class="fund">
  378. <div class="fundTitle">
  379. 预算<br/>经费
  380. </div>
  381. <div class="fundTable">
  382. <div class="fundTotal">
  383. <div class="fundLabel">总经费</div>
  384. <div class="fundValue">{{wordData['fund']['total']||0}}万</div>
  385. </div>
  386. <div class="fundHeader">
  387. <div class="HeaderLabel">支出类别</div>
  388. <div class="HeaderLabel">支出项目</div>
  389. <div class="HeaderLabel">金额(元)</div>
  390. <div class="HeaderLabel">备注</div>
  391. </div>
  392. <div class="fundData">
  393. <div class="fundDataLabel">直接费用</div>
  394. <div class="fundDataHan">
  395. <div class="fundDataLie">
  396. <div class="fundDataValue">小型仪器设备费</div>
  397. <div class="fundDataValue">
  398. <el-input
  399. type="number"
  400. autosize
  401. resize="none"
  402. placeholder="小型仪器设备费"
  403. v-model.number="wordData['fund']['device']"
  404. @change="getTotal"></el-input>
  405. </div>
  406. <div class="fundDataValue"><span>项目开展所需的小型专用仪器设备、工具、配件购置或租赁费用。</span></div>
  407. </div>
  408. <div class="fundDataLie">
  409. <div class="fundDataValue">材料费</div>
  410. <div class="fundDataValue">
  411. <el-input
  412. type="number"
  413. autosize
  414. resize="none"
  415. placeholder="材料费"
  416. v-model.number="wordData['fund']['Material']"
  417. @change="getTotal"></el-input>
  418. </div>
  419. <div class="fundDataValue"><span>项目开展需消耗的各种原材料、辅助材料等低值易耗品的采购费用。</span></div>
  420. </div>
  421. <div class="fundDataLie">
  422. <div class="fundDataValue">测试化验加工费</div>
  423. <div class="fundDataValue">
  424. <el-input
  425. type="number"
  426. autosize
  427. resize="none"
  428. placeholder="测试化验加工费"
  429. v-model.number="wordData['fund']['processing']"
  430. @change="getTotal"></el-input>
  431. </div>
  432. <div class="fundDataValue"><span>项目开展过程中支付给外单位的检验、测试、化验、计算、分析及加工费等费用。</span></div>
  433. </div>
  434. <div class="fundDataLie">
  435. <div class="fundDataValue">项目协作费</div>
  436. <div class="fundDataValue">
  437. <el-input
  438. type="number"
  439. autosize
  440. resize="none"
  441. placeholder="项目协作费"
  442. v-model.number="wordData['fund']['Collaboration']"
  443. @change="getTotal"></el-input>
  444. </div>
  445. <div class="fundDataValue"><span>按合同规定支付给协作单位的费用</span></div>
  446. </div>
  447. </div>
  448. </div>
  449. <div class="fundData">
  450. <div class="fundDataLabel">间接费用</div>
  451. <div class="fundDataHan">
  452. <div class="fundDataLie">
  453. <div class="fundDataValue">项目成果鉴定费</div>
  454. <div class="fundDataValue">
  455. <el-input
  456. type="number"
  457. autosize
  458. resize="none"
  459. placeholder="项目成果鉴定费"
  460. v-model.number="wordData['fund']['APPRAISAL']"
  461. @change="getTotal"></el-input>
  462. </div>
  463. <div class="fundDataValue"><span>学术会务费、评审费、鉴定费、成果集制作费等费用。</span></div>
  464. </div>
  465. <div class="fundDataLie">
  466. <div class="fundDataValue">参展参赛费</div>
  467. <div class="fundDataValue">
  468. <el-input
  469. type="number"
  470. autosize
  471. resize="none"
  472. placeholder="参展参赛费"
  473. v-model.number="wordData['fund']['entery']"
  474. @change="getTotal"></el-input>
  475. </div>
  476. <div class="fundDataValue"><span>参加创客展会、竞赛等所需的报名费、展位费、布展费、宣传推广费及差旅费等费用。</span></div>
  477. </div>
  478. <div class="fundDataLie">
  479. <div class="fundDataValue">创客交流活动费</div>
  480. <div class="fundDataValue">
  481. <el-input
  482. type="number"
  483. autosize
  484. resize="none"
  485. placeholder="创客交流活动费"
  486. v-model.number="wordData['fund']['activities']"
  487. @change="getTotal"></el-input>
  488. </div>
  489. <div class="fundDataValue"><span>创客交流活动中支付给校外专家的指导费、咨询费、授课费等费用。</span></div>
  490. </div>
  491. <div class="fundDataLie">
  492. <div class="fundDataValue">知识产权事务费</div>
  493. <div class="fundDataValue">
  494. <el-input
  495. type="number"
  496. autosize
  497. resize="none"
  498. placeholder="知识产权事务费"
  499. v-model.number="wordData['fund']['Transaction']"
  500. @change="getTotal">
  501. </el-input>
  502. </div>
  503. <div class="fundDataValue"><span>论文版面费、专利及其他知识产权事务等费用。</span></div>
  504. </div>
  505. </div>
  506. </div>
  507. </div>
  508. </div>
  509. <div class="opinion">
  510. <div class="opinionLabel">所在学院/部门<br/> 意 见</div>
  511. <div class="opinionValue">
  512. <div class="opinionImport">
  513. <div class="opinionChapter">负责人签章:</div>
  514. <div class="opinionDate">年 月 日</div>
  515. </div>
  516. </div>
  517. </div>
  518. <div class="opinion">
  519. <div class="opinionLabel">财务部门<br/>意 见</div>
  520. <div class="opinionValue">
  521. <div class="opinionImport">
  522. <div class="opinionChapter">负责人签章:</div>
  523. <div class="opinionDate">年 月 日</div>
  524. </div>
  525. </div>
  526. </div>
  527. <div class="opinion">
  528. <div class="opinionLabel">创新创业学院<br/>审 核 意 见</div>
  529. <div class="opinionValue">
  530. <div class="opinionImport">
  531. <div class="opinionChapter">负责人签章:</div>
  532. <div class="opinionDate">年 月 日</div>
  533. </div>
  534. </div>
  535. </div>
  536. </div>
  537. <div class="notes">
  538. <span>备注:</span>
  539. <span>1.表格可顺延或另附页。</span>
  540. <span>2.项目申报需附相关佐证材料。</span>
  541. </div>
  542. <el-button type="primary" @click="test">确认</el-button>
  543. </div>
  544. </template>
  545. <script>
  546. import {getNowDate} from '@/components/tool/Date.js'
  547. export default {
  548. data() {
  549. return {
  550. wordData:{
  551. applicationDate:getNowDate(1),//申请日期
  552. projectName:"",//项目名称
  553. college:"",//所在学院
  554. begin_at:"",//项目开始时间
  555. state:"",//项目状态
  556. plannedEnd_at:"",//计划完成时间
  557. pro_leader:"",//项目负责人
  558. lead_leader:"",//学院牵头领导
  559. teacher:[
  560. {name:"",speciality:"",title:"",education:"",section:"",work:""},
  561. {name:"",speciality:"",title:"",education:"",section:"",work:""},
  562. {name:"",speciality:"",title:"",education:"",section:"",work:""},
  563. ], //教师组//name:姓名 speciality:专业 title:职称 education:学历 section:所在教研室 work:项目组角色分工
  564. student:[
  565. {name:"",class:"",age:"",work:""},
  566. {name:"",class:"",age:"",work:""},
  567. {name:"",class:"",age:"",work:""},
  568. {name:"",class:"",age:"",work:""},
  569. {name:"",class:"",age:"",work:""},
  570. ], //学生组//name:姓名 class:班级 age:年龄 work:项目组任务分工
  571. brief:"",//项目简介
  572. Construction:"",//建设内容
  573. ProjectBasis:"",//立项依据
  574. development:"",//创客空间物理环境、制度建设及软件设施建设情况
  575. studio:"",//学生创客工作室建设情况
  576. studentTeam:"",//学生创客团队(人才)培养预期成果、数量
  577. studentActivities:"",//学生创客活动组织实施情况
  578. Transforming:"",//学生创客团队孵化、转化创业项目情况
  579. condition:"",//立 项基 础及条 件
  580. fund:{
  581. total:"",
  582. device:"",
  583. Material:"",
  584. processing:"",
  585. Collaboration:"",
  586. APPRAISAL:"",
  587. entery:"",
  588. activities:"",
  589. Transaction:"",
  590. },//预算经费
  591. //total:总经费
  592. //小型仪器设备费:device deviceRemarks
  593. //材料费:Material MaterialRemarks
  594. //测试化验加工费:processing processingRemarks
  595. //项目协作费:Collaboration CollaborationRemarks
  596. //项目成果鉴定费:APPRAISAL APPRAISALRemarks
  597. //参展参赛费:entery enteryRemarks
  598. //创客交流活动费:activities activitiesRemarks
  599. //知识产权事务费:Transaction TransactionRemarks
  600. },
  601. DepartmentData:[],
  602. };
  603. },
  604. methods: {
  605. getProjectDepartmentData(){ //获取项目立项申请基础信息页面所在部门数据
  606. this.ajax.get(this.$store.state.api+'/SelectAllDepartment',{
  607. uid:this.$store.state.userInfo.userid
  608. }).then(res=>{
  609. this.DepartmentData = res.data[0]
  610. },err=>{
  611. console.log(err);
  612. })
  613. },
  614. test(){
  615. //检查各个字段
  616. const cEmpty = /^\s*$/g;
  617. for(let i in this.wordData){
  618. switch (i) {
  619. case "projectName":
  620. if(cEmpty.test(this.wordData[i])){
  621. this.$message.error("请输入项目名称");
  622. document.querySelector('#one').scrollIntoView({ behavior: "smooth" });
  623. return false;
  624. }
  625. break;
  626. case "college":
  627. if(cEmpty.test(this.wordData[i])){
  628. this.$message.error("请选择所在学院");
  629. document.querySelector('#one').scrollIntoView({ behavior: "smooth" });
  630. return false;
  631. }
  632. break;
  633. case "state":
  634. if(cEmpty.test(this.wordData[i])){
  635. this.$message.error("请选择项目状态");
  636. document.querySelector('#two').scrollIntoView({ behavior: "smooth" });
  637. return false;
  638. }
  639. break;
  640. case "begin_at":
  641. if(cEmpty.test(this.wordData[i])){
  642. this.$message.error("请选择项目开始时间");
  643. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  644. return false;
  645. }
  646. break;
  647. case "plannedEnd_at":
  648. if(cEmpty.test(this.wordData[i])){
  649. this.$message.error("请选择计划完成时间");
  650. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  651. return false;
  652. }
  653. break;
  654. case "pro_leader":
  655. if(cEmpty.test(this.wordData[i])){
  656. this.$message.error("请输入项目负责人");
  657. document.querySelector('#four').scrollIntoView({ behavior: "smooth" });
  658. return false;
  659. }
  660. break;
  661. case "lead_leader":
  662. if(cEmpty.test(this.wordData[i])){
  663. this.$message.error("请输入学院牵头领导");
  664. document.querySelector('#four').scrollIntoView({ behavior: "smooth" });
  665. return false;
  666. }
  667. break;
  668. case "teacher":
  669. if(this.wordData[i].length<3){
  670. this.$message.error('教师团队应3人以上')
  671. document.querySelector('#five').scrollIntoView({ behavior: "smooth" });
  672. return false;
  673. }else{
  674. let num = 0;
  675. this.wordData[i].forEach(item=>{
  676. for(let j in item){
  677. if(cEmpty.test(item[j])){
  678. num++;
  679. }
  680. }
  681. })
  682. if(num>0){
  683. this.$message.error("请填完教师信息");
  684. document.querySelector('#five').scrollIntoView({ behavior: "smooth" });
  685. return false;
  686. }
  687. }
  688. break;
  689. case "student":
  690. if(this.wordData[i].length<5){
  691. this.$message.error('学生团队应5人以上')
  692. document.querySelector('#six').scrollIntoView({ behavior: "smooth" });
  693. return false;
  694. }else{
  695. let num = 0;
  696. this.wordData[i].forEach(item=>{
  697. for(let j in item){
  698. if(cEmpty.test(item[j])){
  699. num++;
  700. }
  701. }
  702. })
  703. if(num>0){
  704. this.$message.error("请填完学生信息");
  705. document.querySelector('#six').scrollIntoView({ behavior: "smooth" });
  706. return false;
  707. }
  708. }
  709. break;
  710. case "brief":
  711. if(cEmpty.test(this.wordData[i])){
  712. this.$message.error("请填写项目简介");
  713. document.querySelector('#seven').scrollIntoView({ behavior: "smooth" });
  714. return false;
  715. }else{
  716. if(this.wordData[i].length<200||this.wordData>300){
  717. this.$message.error("项目简介需要200-300字")
  718. document.querySelector('#seven').scrollIntoView({ behavior: "smooth" });
  719. return false;
  720. }
  721. }
  722. break;
  723. case "Construction":
  724. if(cEmpty.test(this.wordData[i])){
  725. this.$message.error("请填写建设内容");
  726. document.querySelector('#eight').scrollIntoView({ behavior: "smooth" });
  727. return false;
  728. }
  729. break;
  730. case "ProjectBasis":
  731. if(cEmpty.test(this.wordData[i])){
  732. this.$message.error("请填写立项依据");
  733. document.querySelector('#nine').scrollIntoView({ behavior: "smooth" });
  734. return false;
  735. }
  736. break;
  737. case "development":
  738. if(cEmpty.test(this.wordData[i])){
  739. this.$message.error("请填写创客空间物理环境、制度建设及软件设施建设情况");
  740. document.querySelector('#ten').scrollIntoView({ behavior: "smooth" });
  741. return false;
  742. }
  743. break;
  744. case "studio":
  745. if(cEmpty.test(this.wordData[i])){
  746. this.$message.error("请填写学生创客工作室建设情况");
  747. document.querySelector('#eleven').scrollIntoView({ behavior: "smooth" });
  748. return false;
  749. }
  750. break;
  751. case "studentTeam":
  752. if(cEmpty.test(this.wordData[i])){
  753. this.$message.error("请填写学生创客团队(人才)培养预期成果、数量");
  754. document.querySelector('#twelve').scrollIntoView({ behavior: "smooth" });
  755. return false;
  756. }
  757. break;
  758. case "studentActivities":
  759. if(cEmpty.test(this.wordData[i])){
  760. this.$message.error("请填写学生创客活动组织实施情况");
  761. document.querySelector('#thirteen').scrollIntoView({ behavior: "smooth" });
  762. return false;
  763. }
  764. break;
  765. case "Transforming":
  766. if(cEmpty.test(this.wordData[i])){
  767. this.$message.error("请填写学生创客团队孵化、转化创业项目情况");
  768. document.querySelector('#fourteen').scrollIntoView({ behavior: "smooth" });
  769. return false;
  770. }
  771. break;
  772. case "condition":
  773. if(cEmpty.test(this.wordData[i])){
  774. this.$message.error("请填写基础条件");
  775. document.querySelector('#fifteen').scrollIntoView({ behavior: "smooth" });
  776. return false;
  777. }
  778. break
  779. }
  780. }
  781. this.$message.success("数据验证成功")
  782. // console.log("哇偶")
  783. // console.log(this.wordData)
  784. },
  785. addTeacher(){
  786. this.wordData['teacher'].push({name:"",speciality:"",title:"",education:"",section:"",work:""});
  787. },
  788. DelTeacher(index){
  789. this.wordData['teacher'].splice(index,1)
  790. },
  791. addStudent(){
  792. this.wordData['student'].push({name:"",class:"",age:"",work:""});
  793. },
  794. DelStudent(index){
  795. this.wordData['student'].splice(index,1)
  796. },
  797. getTotal(){
  798. this.wordData['fund']['total'] = Number(this.wordData['fund']['device'])+Number(this.wordData['fund']['Material'])+Number(this.wordData['fund']['processing'])+Number(this.wordData['fund']['Collaboration'])+Number(this.wordData['fund']['APPRAISAL'])+Number(this.wordData['fund']['entery'])+Number(this.wordData['fund']['activities'])+Number(this.wordData['fund']['Transaction'])
  799. this.wordData['fund']['total'] = this.wordData['fund']['total']/10000
  800. }
  801. },
  802. mounted(){
  803. this.getProjectDepartmentData();
  804. }
  805. };
  806. </script>
  807. <style lang="less" scoped>
  808. #MakerSpaceWord{
  809. width: 100%;
  810. display: flex;
  811. flex-direction: column;
  812. align-items: center;
  813. background-color: white;
  814. padding:100px;
  815. box-sizing:border-box;
  816. #title{
  817. width: 100%;
  818. display: flex;
  819. flex-direction: column;
  820. align-items: center;
  821. position: relative;
  822. // margin-top: 40px;
  823. .school{
  824. font-size: 2.5em;
  825. font-weight: bold;
  826. letter-spacing: 20px;
  827. }
  828. .wordTitle{
  829. font-size: 2em;
  830. letter-spacing: .15em;
  831. margin-bottom:40px ;
  832. }
  833. .date{
  834. font-size: 1em;
  835. position: absolute;
  836. bottom: 0;
  837. right: 100px;
  838. font-weight: bold;
  839. margin-bottom:5px;
  840. }
  841. }
  842. #table{
  843. box-sizing: border-box;
  844. border: solid 1px black;
  845. border-bottom: none;
  846. display: flex;
  847. flex-direction: column;
  848. .han{
  849. display: flex;
  850. height: auto;
  851. box-sizing: border-box;
  852. border-bottom:solid 1px black;
  853. .label{
  854. position: relative;
  855. flex:1;
  856. display: flex;
  857. justify-content: center;
  858. align-items: center;
  859. box-sizing: border-box;
  860. min-height: 50px;
  861. border-right: solid 1px black;
  862. font-weight:bold;
  863. }
  864. .value{
  865. flex: 2;
  866. display: flex;
  867. justify-content: center;
  868. align-items: center;
  869. box-sizing: border-box;
  870. min-height: 50px;
  871. &:not(:nth-last-child(1)){
  872. border-right: solid 1px black;
  873. }
  874. }
  875. &:nth-child(5){
  876. .label{
  877. flex: 1;
  878. }
  879. .value{
  880. flex: 1;
  881. }
  882. }
  883. }
  884. .status{
  885. display: flex;
  886. height: auto;
  887. box-sizing: border-box;
  888. .statusLabel{
  889. flex:1;
  890. display: flex;
  891. justify-content: center;
  892. align-items: center;
  893. box-sizing: border-box;
  894. border-right: solid 1px black;
  895. border-bottom: solid 1px black;
  896. font-weight:bold;
  897. }
  898. .ValueDescribe{
  899. flex: 5;
  900. display: flex;
  901. flex-direction: column;
  902. .statusHan{
  903. display: flex;
  904. box-sizing: border-box;
  905. border-bottom: solid 1px black;
  906. .DescribeLabel{
  907. flex: 1;
  908. display: flex;
  909. justify-content: center;
  910. align-items: center;
  911. box-sizing: border-box;
  912. // min-height: 200px;
  913. padding:40px 10px;
  914. border-right: solid 1px black;
  915. }
  916. &:nth-child(2){
  917. .DescribeLabel{
  918. min-height: 100px;
  919. }
  920. }
  921. .DescribeValue{
  922. flex: 5;
  923. box-sizing: border-box;
  924. padding: 15px;
  925. }
  926. }
  927. }
  928. }
  929. .member{
  930. display: flex;
  931. .memberLabel{
  932. flex:1;
  933. display: flex;
  934. flex-direction: column;
  935. align-items: center;
  936. justify-content: center;
  937. box-sizing: border-box;
  938. border-right: solid 1px black;
  939. border-bottom: solid 1px black;
  940. min-height: 200px;
  941. }
  942. .memberTable{
  943. flex: 5;
  944. display: flex;
  945. flex-direction: column;
  946. .memberHan{
  947. display: flex;
  948. box-sizing: border-box;
  949. border-bottom: solid 1px black;
  950. position:relative;
  951. .memberValue{
  952. box-sizing: border-box;
  953. flex: 1;
  954. display: flex;
  955. justify-content: center;
  956. align-items: center;
  957. border-right: solid 1px black;
  958. min-height: 45px;
  959. &:nth-last-child(2){
  960. border-right: none;
  961. flex: 3;
  962. }
  963. }
  964. .operate{
  965. right:-100px;
  966. width:100px;
  967. height:40px;
  968. display:flex;
  969. // justify-content:center;
  970. align-items:center;
  971. position:absolute;
  972. .el-button{
  973. max-width:10px;
  974. display:flex;
  975. justify-content:center;
  976. align-items:center;
  977. margin-left:10px;
  978. }
  979. }
  980. }
  981. }
  982. }
  983. .chapters{
  984. display: flex;
  985. .chaptersLabel{
  986. flex:1;
  987. display: flex;
  988. flex-direction: column;
  989. align-items: center;
  990. justify-content: center;
  991. box-sizing: border-box;
  992. padding: 20px 0;
  993. border-right: solid 1px black;
  994. border-bottom: solid 1px black;
  995. }
  996. .chaptersTable{
  997. flex: 5;
  998. display: flex;
  999. flex-direction: column;
  1000. .chaptersValue{
  1001. flex: 1;
  1002. height: auto;
  1003. // min-height:200px;
  1004. box-sizing: border-box;
  1005. border-bottom: solid 1px black;
  1006. padding: 5px;
  1007. span{
  1008. font-weight: bold;
  1009. }
  1010. }
  1011. }
  1012. }
  1013. .fund{
  1014. display: flex;
  1015. .fundTitle{
  1016. flex:1;
  1017. display: flex;
  1018. flex-direction: column;
  1019. align-items: center;
  1020. justify-content: center;
  1021. box-sizing: border-box;
  1022. border-right: solid 1px black;
  1023. border-bottom: solid 1px black;
  1024. font-weight:bold;
  1025. }
  1026. .fundTable{
  1027. flex: 5;
  1028. display: flex;
  1029. flex-direction: column;
  1030. box-sizing: border-box;
  1031. .fundTotal{
  1032. height: 60px;
  1033. box-sizing: border-box;
  1034. border-bottom: solid 1px black;
  1035. display: flex;
  1036. div{
  1037. display: flex;
  1038. justify-content: center;
  1039. align-items: center;
  1040. font-weight: bold;
  1041. }
  1042. .fundLabel{
  1043. flex: 1;
  1044. box-sizing: border-box;
  1045. border-right:solid 1px black;
  1046. }
  1047. .fundValue{
  1048. flex: 4;
  1049. }
  1050. }
  1051. .fundHeader{
  1052. min-height: 40px;
  1053. box-sizing: border-box;
  1054. border-bottom: solid 1px black;
  1055. display: flex;
  1056. font-weight:bold;
  1057. .HeaderLabel{
  1058. flex: 1;
  1059. display: flex;
  1060. box-sizing: border-box;
  1061. justify-content: center;
  1062. align-items: center;
  1063. border-right: solid 1px black;
  1064. &:nth-last-child(1){
  1065. flex: 2;
  1066. border: none;
  1067. }
  1068. }
  1069. }
  1070. .fundData{
  1071. display: flex;
  1072. .fundDataLabel{
  1073. flex:1;
  1074. box-sizing: border-box;
  1075. border-right: solid 1px black;
  1076. border-bottom: solid 1px black;
  1077. display: flex;
  1078. justify-content: center;
  1079. align-items: center;
  1080. font-weight:bold;
  1081. }
  1082. .fundDataHan{
  1083. flex: 4;
  1084. display: flex;
  1085. flex-direction: column;
  1086. .fundDataLie{
  1087. display: flex;
  1088. min-height: 40px;
  1089. flex: 4;
  1090. box-sizing: border-box;
  1091. border-bottom: solid 1px black;
  1092. .fundDataValue{
  1093. flex: 1;
  1094. min-height: 40px;
  1095. display: flex;
  1096. box-sizing: border-box;
  1097. justify-content: center;
  1098. align-items: center;
  1099. border-right: solid 1px black;
  1100. &:nth-last-child(1){
  1101. flex:2;
  1102. border: none;
  1103. justify-content: flex-start;
  1104. span{
  1105. padding: 10px 20px;
  1106. }
  1107. }
  1108. }
  1109. }
  1110. }
  1111. }
  1112. }
  1113. }
  1114. .opinion{
  1115. display: flex;
  1116. .opinionLabel{
  1117. flex:1;
  1118. display: flex;
  1119. flex-direction: column;
  1120. align-items: center;
  1121. justify-content: center;
  1122. box-sizing: border-box;
  1123. // padding: 3.5px;
  1124. border-right: solid 1px black;
  1125. border-bottom: solid 1px black;
  1126. font-weight:bold;
  1127. }
  1128. .opinionValue{
  1129. flex: 5;
  1130. min-height: 200px;
  1131. position: relative;
  1132. box-sizing:border-box;
  1133. border-bottom: solid 1px black;
  1134. .opinionImport{
  1135. display: flex;
  1136. width: 30%;
  1137. height:40%;
  1138. flex-direction: column;
  1139. position:absolute;
  1140. bottom: 0px;
  1141. right: 20px;
  1142. justify-content: space-between;
  1143. .opinionDate{
  1144. display: flex;
  1145. justify-content: flex-end;
  1146. font-size: 18px;
  1147. }
  1148. }
  1149. }
  1150. }
  1151. }
  1152. .notes{
  1153. width: 100%;
  1154. display: flex;
  1155. flex-direction:column;
  1156. }
  1157. :deep(.el-input__inner){
  1158. height: 100%;
  1159. border-radius: 0;
  1160. width: 100%;
  1161. background: none;
  1162. color: black;
  1163. text-align: center;
  1164. font-size: 16px;
  1165. box-sizing: border-box;
  1166. border: none;
  1167. outline: none;
  1168. &::-webkit-outer-spin-button,&::-webkit-inner-spin-button{
  1169. -webkit-appearance: none !important;
  1170. }
  1171. &[type='number'] {
  1172. -moz-appearance: textfield;
  1173. }
  1174. }
  1175. :deep(.el-textarea__inner){
  1176. height: 100%;
  1177. border-radius: 0;
  1178. width: 100%;
  1179. background: none;
  1180. color: black;
  1181. text-align: center;
  1182. font-size: 16px;
  1183. box-sizing: border-box;
  1184. border: none;
  1185. overflow: hidden;
  1186. }
  1187. .noCenter{
  1188. :deep(.el-textarea__inner ){
  1189. text-align:left;
  1190. }
  1191. }
  1192. :deep(.el-date-editor){
  1193. width: 100%;
  1194. height: 100%;
  1195. }
  1196. :deep(.el-input__suffix){
  1197. display:none;
  1198. }
  1199. //去除input number样式
  1200. input::-webkit-outer-spin-button,
  1201. input::-webkit-inner-spin-button {
  1202. -webkit-appearance: none !important;
  1203. }
  1204. input[type='number'] {
  1205. -moz-appearance: textfield;
  1206. }
  1207. .fontBold{
  1208. font-weight:bold;
  1209. }
  1210. }
  1211. </style>