resultDetail_MakerSpace.vue 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. <template>
  2. <!-- 成果展示 项目成果展示 -->
  3. <div class="rs1apply" v-loading="loading">
  4. <!-- 头部展示区开始 -->
  5. <div class="header">
  6. <div class="imgBlock">
  7. <img :src="TitleMessage.image" alt="">
  8. </div>
  9. <div class="headerConcent">
  10. <div class="rsHead1Tit">项目名称:<span>{{ TitleMessage.title }}</span></div>
  11. <div class="rsHead2Tit rsHead3Tit">
  12. <div>负责人:<span class="titleMessage">{{ TitleMessage.pro_leader }}</span></div>
  13. <div v-if="TitleMessage.lead_leader">学院牵头领导:<span class="titleMessage">{{ TitleMessage.lead_leader }}</span></div>
  14. </div>
  15. <div class="rsHead3Tit rsHead2Tit">
  16. <div>学院:<span class="titleMessage">{{ TitleMessage.ClassName }}</span></div>
  17. <div>分类:<span class="titleMessage">{{ TitleMessage.TypeName }} - {{ TitleMessage.tn2}}</span></div>
  18. </div>
  19. <div class="rsHead2Tit personListUL">
  20. <!-- 老师 -->
  21. <img src="@/assets/img/doctorialHat.svg" style="margin-right: 10px;width:25px;height: 25px;">
  22. <div class="personListLI">
  23. <span v-for="(item,index) in TitleMessage.teacher" :key="index">{{ item.name }}</span>
  24. </div>
  25. <!-- 学生 -->
  26. <img src="@/assets/img/student.svg" style="margin: 0px 10px;width:25px;height: 25px;">
  27. <div class="personListLI">
  28. <span v-for="(item,index) in TitleMessage.student" :key="index">{{ item.name }}</span>
  29. </div>
  30. </div>
  31. </div>
  32. <!-- <el-button class="backBtn" type="primary" @click="$router.back()">返回</el-button> -->
  33. </div>
  34. <!-- 头部展示区结束 -->
  35. <!--导航栏区域开始-->
  36. <div id="Nav">
  37. <div class="navLi" @click="pageState=0">
  38. <img src="@/assets/anliDetail/proOver.png" alt="">
  39. <span>项目基本内容</span>
  40. </div>
  41. <div class="navLi" @click="pageState=1">
  42. <img src="@/assets/anliDetail/proOverTwo.png" alt="">
  43. <span>项目详细</span>
  44. </div>
  45. <div class="navLi" @click="pageState=2">
  46. <i class="iconStyle iconfont icon-jiegou" style="color:#58c2fe;font-size:22px;margin-right: 7px;"></i>
  47. <span>活动开展</span>
  48. </div>
  49. <div class="navLi" @click="pageState=3">
  50. <i class="iconStyle iconfont icon-wenjian" style="color:#58c2fe;font-size:22px;margin-right: 7px;"></i>
  51. <span>项目附件</span>
  52. </div>
  53. <div class="navLi" @click="pageState=4">
  54. <i class="iconStyle iconfont icon-baogao" style="color:#58c2fe;font-size:22px;margin-right: 7px;"></i>
  55. <span>项目结题报告</span>
  56. </div>
  57. </div>
  58. <!--导航栏区域结束-->
  59. <!--内容区开始-->
  60. <!--基础信息开始-->
  61. <div class="BaseMessage" v-show="pageState==0">
  62. <div class="BaseTitle">
  63. <span>项目基本内容</span>
  64. </div>
  65. <div class="brief">
  66. <div class="brief_title">
  67. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  68. <span>开始时间与结题时间</span>
  69. </div>
  70. <div class="beginTime_EndTime">
  71. <span>{{ TitleMessage.beginTime }}</span>
  72. <i class="el-icon-arrow-right"></i>
  73. <span>{{ TitleMessage.EndTime }}</span>
  74. </div>
  75. </div>
  76. <!-- <div class="brief">
  77. <div class="brief_title">
  78. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  79. <span>项目内容</span>
  80. </div>
  81. <el-descriptions style="width: 100%;margin-top: 10px;" :column="3" border>
  82. <el-descriptions-item>
  83. <template slot="label">
  84. </template>
  85. {{ TitleMessage['beginTime'] }}
  86. </el-descriptions-item>
  87. <el-descriptions-item>
  88. <template slot="label">
  89. <i class="el-icon-mobile-phone"></i>
  90. 手机号
  91. </template>
  92. 18100000000
  93. </el-descriptions-item>
  94. <el-descriptions-item>
  95. <template slot="label">
  96. <i class="el-icon-location-outline"></i>
  97. 居住地
  98. </template>
  99. 苏州市
  100. </el-descriptions-item>
  101. <el-descriptions-item>
  102. <template slot="label">
  103. <i class="el-icon-tickets"></i>
  104. 备注
  105. </template>
  106. <el-tag size="small">学校</el-tag>
  107. </el-descriptions-item>
  108. <el-descriptions-item>
  109. <template slot="label">
  110. <i class="el-icon-office-building"></i>
  111. 联系地址
  112. </template>
  113. 江苏省苏州市吴中区吴中大道 1188 号
  114. </el-descriptions-item>
  115. </el-descriptions>
  116. </div> -->
  117. <div class="brief">
  118. <div class="brief_title">
  119. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  120. <span>教师组</span>
  121. </div>
  122. <div class="projectStudent">
  123. <el-table
  124. :data="TitleMessage.teacher"
  125. border
  126. style="width: 100%">
  127. <el-table-column
  128. prop="name"
  129. label="姓名"
  130. align="center">
  131. </el-table-column>
  132. <el-table-column
  133. prop="speciality"
  134. label="专业"
  135. align="center">
  136. </el-table-column>
  137. <el-table-column
  138. prop="title"
  139. label="职称"
  140. align="center">
  141. </el-table-column>
  142. <el-table-column
  143. prop="education"
  144. align="center"
  145. label="学历">
  146. </el-table-column>
  147. <el-table-column
  148. prop="section"
  149. align="center"
  150. label="所在教研室">
  151. </el-table-column>
  152. <el-table-column
  153. prop="work"
  154. align="center"
  155. label="项目组任务分工">
  156. </el-table-column>
  157. </el-table>
  158. </div>
  159. </div>
  160. <!-- 学生组表格 -->
  161. <div class="brief">
  162. <div class="brief_title">
  163. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  164. <span>学生组</span>
  165. </div>
  166. <div class="projectStudent">
  167. <el-table
  168. :data="TitleMessage.student"
  169. border
  170. style="width: 100%">
  171. <el-table-column
  172. prop="name"
  173. label="姓名"
  174. align="center">
  175. </el-table-column>
  176. <el-table-column
  177. prop="class"
  178. label="班级"
  179. align="center">
  180. </el-table-column>
  181. <el-table-column
  182. prop="age"
  183. label="年龄"
  184. align="center">
  185. </el-table-column>
  186. <el-table-column
  187. prop="work"
  188. align="center"
  189. label="项目组任务分工">
  190. </el-table-column>
  191. </el-table>
  192. </div>
  193. </div>
  194. <div class="brief" v-if="TitleMessage.brief!=''">
  195. <div class="brief_title">
  196. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  197. <span>简介</span>
  198. </div>
  199. <div class="TextView">
  200. {{ TitleMessage.brief }}
  201. </div>
  202. </div>
  203. </div>
  204. <!--基础信息结束-->
  205. <!--项目详细开始-->
  206. <div class="BaseMessage" v-show="pageState==1">
  207. <div class="BaseTitle" type="1">
  208. <span>项目详细</span>
  209. </div>
  210. <div class="BaseTitle" type="1">
  211. <span>项目建设内容及目标</span>
  212. </div>
  213. <div class="brief">
  214. <div class="brief_title" type="1.1">
  215. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  216. <span>一、建设内容(空间优化/场馆规划方面拟解决的关键问题及主要建设指标)</span>
  217. </div>
  218. <div class="TextView" >
  219. <VueEditor v-model="DetailMessage['Construction']" :disabled="true"></VueEditor>
  220. </div>
  221. </div>
  222. <div class="BaseTitle" type="1">
  223. <span>预项目建设论证报告</span>
  224. </div>
  225. <div class="brief">
  226. <div class="brief_title" type="1.1">
  227. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  228. <span style="font-size: 16px;">一、立项依据 (说明本项目的目的、意义以及国内外高校现状、市场预测和发展趋势,预期达到的目标,研究的预期效果分析,成果受益面)</span>
  229. </div>
  230. <div class="TextView" >
  231. <VueEditor v-model="DetailMessage['ProjectBasis']" :disabled="true"></VueEditor>
  232. </div>
  233. </div>
  234. <div class="BaseTitle" type="1">
  235. <span>预期成果</span>
  236. </div>
  237. <div class="brief">
  238. <div class="brief_title" type="1.1">
  239. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  240. <span>一、创客空间物理环境、制度建设及软件设施建设情况(环境优化/制度完善/设施改造)</span>
  241. </div>
  242. <div class="TextView" >
  243. <VueEditor v-model="DetailMessage['development']" :disabled="true"></VueEditor>
  244. </div>
  245. </div>
  246. <div class="brief">
  247. <div class="brief_title" type="1.1">
  248. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  249. <span>二、学生创客工作室建设情况(工作室数量及活动开展情况)</span>
  250. </div>
  251. <div class="TextView" >
  252. <VueEditor v-model="DetailMessage['studio']" :disabled="true"></VueEditor>
  253. </div>
  254. </div>
  255. <div class="brief">
  256. <div class="brief_title" type="1.1">
  257. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  258. <span>三、学生创客团队(人才)培养预期成果、数量</span>
  259. </div>
  260. <div class="TextView" >
  261. <VueEditor v-model="DetailMessage['studentTeam']" :disabled="true"></VueEditor>
  262. </div>
  263. </div>
  264. <div class="brief">
  265. <div class="brief_title" type="1.1">
  266. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  267. <span>四、学生创客活动组织实施情况</span>
  268. </div>
  269. <div class="TextView" >
  270. <VueEditor v-model="DetailMessage['studentActivities']" :disabled="true"></VueEditor>
  271. </div>
  272. </div>
  273. <div class="brief">
  274. <div class="brief_title" type="1.1">
  275. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  276. <span>五、学生创客团队孵化、转化创业项目情况</span>
  277. </div>
  278. <div class="TextView" >
  279. <VueEditor v-model="DetailMessage['Transforming']" :disabled="true"></VueEditor>
  280. </div>
  281. </div>
  282. <div class="BaseTitle" type="1">
  283. <span>立项基础及条件</span>
  284. </div>
  285. <div class="brief">
  286. <div class="brief_title" type="1.1">
  287. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  288. <span>一、基础条件(物理环境/设备设施/项目实施/活动开展/技术力量/社会资源)</span>
  289. </div>
  290. <div class="TextView" >
  291. <VueEditor v-model="DetailMessage['condition']" :disabled="true"></VueEditor>
  292. </div>
  293. </div>
  294. <!-- <div class="BaseTitle" type="1">
  295. <span>预期取得成果</span>
  296. </div> -->
  297. <!-- <div class="brief">
  298. <div class="brief_title" type="1.1">
  299. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  300. <span>一、项目预期成果、数量及形式</span>
  301. </div>
  302. <div class="TextView" >
  303. <VueEditor v-model="DetailMessage[1]" :disabled="true"></VueEditor>
  304. </div>
  305. </div>
  306. <div class="brief">
  307. <div class="brief_title" type="1.1">
  308. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  309. <span>二、创客人才培养预期成果、数量</span>
  310. </div>
  311. <div class="TextView" >
  312. <VueEditor v-model="DetailMessage[2]" :disabled="true"></VueEditor>
  313. </div>
  314. </div>
  315. <div class="brief">
  316. <div class="brief_title" type="1.1">
  317. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  318. <span>三、项目预期孵化、转化创业项目情况</span>
  319. </div>
  320. <div class="TextView" >
  321. <VueEditor v-model="DetailMessage[3]" :disabled="true"></VueEditor>
  322. </div>
  323. </div>
  324. <div class="brief">
  325. <div class="brief_title" type="1.1">
  326. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  327. <span>项目实施计划</span>
  328. </div>
  329. <div class="TextView" >
  330. <VueEditor v-model="DetailMessage[4]" :disabled="true"></VueEditor>
  331. </div>
  332. </div> -->
  333. </div>
  334. <!-- 项目详细结束 -->
  335. <!-- 活动开展开始 -->
  336. <div class="BaseMessage" v-show="pageState==2">
  337. <div class="BaseTitle" type="1">
  338. <span>活动开展</span>
  339. </div>
  340. <div class="arrangement" v-for="(item,index) in AllActivity" :key="item.acId">
  341. <div class="arrangement_assignment">
  342. <div class="arrangement_assignment_title">
  343. <span>
  344. <img src="@/assets/anliDetail/jdNewTitle.png">
  345. <span>活动{{ index+1 }}:</span>
  346. <span>{{ item.title }}</span>
  347. </span>
  348. </div>
  349. <div class="brief">
  350. <div class="brief_title">
  351. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  352. <i class="el-icon-tickets"></i>
  353. <span>基础信息</span>
  354. </div>
  355. <div class="ActivityBaseMessage">
  356. <el-descriptions class="margin-top" :column="3" border>
  357. <el-descriptions-item>
  358. <template slot="label">
  359. <i class="el-icon-s-custom"></i>
  360. 负责人
  361. </template>
  362. {{ item.pro_leader }}
  363. </el-descriptions-item>
  364. <el-descriptions-item>
  365. <template slot="label">
  366. <i class="el-icon-mobile-phone"></i>
  367. 联系电话
  368. </template>
  369. {{ item.phone }}
  370. </el-descriptions-item>
  371. <el-descriptions-item>
  372. <template slot="label">
  373. <i class="el-icon-coordinate"></i>
  374. 活动创建时间
  375. </template>
  376. {{item.create_at}}
  377. </el-descriptions-item>
  378. <el-descriptions-item>
  379. <template slot="label">
  380. <i class="el-icon-date"></i>
  381. 活动开展时间
  382. </template>
  383. {{ JSON.parse(item.begin_at)[0]+"\t至\t"+JSON.parse(item.begin_at)[1] }}
  384. </el-descriptions-item>
  385. <el-descriptions-item>
  386. <template slot="label">
  387. <i class="el-icon-coin"></i>
  388. 活动预算(元)
  389. </template>
  390. {{ item.money }}
  391. </el-descriptions-item>
  392. <el-descriptions-item>
  393. <template slot="label">
  394. <i class="el-icon-user"></i>
  395. 参与学生人数
  396. </template>
  397. {{ item.students }}
  398. </el-descriptions-item>
  399. </el-descriptions>
  400. </div>
  401. <div class="brief_title MarginTop30px">
  402. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  403. <i class="el-icon-user-solid"></i>
  404. <span>指导老师</span>
  405. </div>
  406. <div class="projectStudent">
  407. <el-table
  408. :data="JSON.parse(item.course_teacher)"
  409. border
  410. style="width: 100%">
  411. <el-table-column
  412. prop="Name"
  413. label="姓名"
  414. align="center">
  415. </el-table-column>
  416. <el-table-column
  417. prop="work"
  418. label="工作单位"
  419. align="center">
  420. </el-table-column>
  421. <el-table-column
  422. prop="takeCharge"
  423. align="center"
  424. label="活动分工">
  425. </el-table-column>
  426. </el-table>
  427. </div>
  428. <div class="brief_title MarginTop30px">
  429. <img src="@/assets/anliDetail/proOverTwo.png" alt="">
  430. <span>活动简介</span>
  431. </div>
  432. <div class="TextView">
  433. {{ item.brief }}
  434. </div>
  435. <div class="brief_title MarginTop30px">
  436. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  437. <i class="el-icon-edit-outline"></i>
  438. <span>活动计划</span>
  439. </div>
  440. <div class="TextView" >
  441. <VueEditor v-model="JSON.parse(item.chapters)[0]" :disabled="true"></VueEditor>
  442. </div>
  443. <div class="brief_title MarginTop30px">
  444. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  445. <i class="el-icon-data-line"></i>
  446. <span>预期目标</span>
  447. </div>
  448. <div class="TextView" >
  449. <VueEditor v-model="JSON.parse(item.chapters)[1]" :disabled="true"></VueEditor>
  450. </div>
  451. <div class="brief_title MarginTop30px">
  452. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  453. <i class="el-icon-pie-chart"></i>
  454. <span>活动受面</span>
  455. </div>
  456. <div class="TextView" >
  457. <VueEditor v-model="JSON.parse(item.chapters)[2]" :disabled="true"></VueEditor>
  458. </div>
  459. <div class="brief_title MarginTop30px">
  460. <!-- <img src="@/assets/anliDetail/jdTitle.png" alt=""> -->
  461. <i class="el-icon-money"></i>
  462. <span>经费支出计划</span>
  463. </div>
  464. <div class="TextView" >
  465. <VueEditor v-model="JSON.parse(item.chapters)[3]" :disabled="true"></VueEditor>
  466. </div>
  467. <div class="brief_title MarginTop30px" v-if="ActivityLookFile[index].url!=''">
  468. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  469. <!-- <i class="el-icon-money"></i> -->
  470. <span>活动完结报告</span>
  471. </div>
  472. <div class="brief" v-if="ActivityLookFile[index].url!=''">
  473. <div class="material">
  474. <div class="material_title">
  475. <img src="@/assets/anliDetail/fileList.png" alt="">
  476. <span>活动完结报告</span>
  477. </div>
  478. <div class="FileShowArea">
  479. <div class="FileShowArea_Left">
  480. <vword
  481. style="width: 100%; height: 100%; overflow: auto"
  482. class="fullStyle"
  483. v-if="checkFileType(ActivityLookFile[index].url)['type']!='pdf'&&checkFileType(ActivityLookFile[index].url)['name']!='图片'"
  484. :pdfUrl="'https://view.officeapps.live.com/op/view.aspx?src='+ActivityLookFile[index].url"
  485. ></vword>
  486. <vpdf
  487. style="width: 100%; height: 100%; overflow: auto"
  488. class="fullStyle"
  489. :pdfUrl="ActivityLookFile[index].url"
  490. v-if="checkFileType(ActivityLookFile[index].url)['type']=='pdf'"
  491. ></vpdf>
  492. <img :src="ActivityLookFile[index].url" alt="图片哦" v-if="checkFileType(ActivityLookFile[index].url)['name']=='图片'" style="width: 100%;height: 100%;">
  493. </div>
  494. <div class="FileShowArea_Right core_dialogue">
  495. <div v-for="(i,index2) in item.reportFile" :key="i.url" @click="Object.assign(ActivityLookFile[index],i)" :class="['FileList',ActivityLookFile[index]['url']==i.url?'lookFile':'']"><span>{{ index2+1 }}.{{ checkFileType(i.url)["name"] }}</span><div>{{ i.fileName }}</div></div>
  496. </div>
  497. </div>
  498. </div>
  499. </div>
  500. </div>
  501. </div>
  502. </div>
  503. </div>
  504. <!-- 活动开展结束 -->
  505. <!-- 项目附件开始 -->
  506. <div class="BaseMessage" v-show="pageState==3">
  507. <div class="BaseTitle" type="3">
  508. <span>项目附件</span>
  509. </div>
  510. <div class="brief" v-if="ProjectLookFile.url!=''">
  511. <div class="material">
  512. <div class="material_title">
  513. <img src="@/assets/anliDetail/fileList.png" alt="">
  514. <span>项目材料</span>
  515. </div>
  516. <div class="FileShowArea">
  517. <div class="FileShowArea_Left">
  518. <vword
  519. style="width: 100%; height: 100%; overflow: auto"
  520. class="fullStyle"
  521. v-if="checkFileType(ProjectLookFile.url)['type']!='pdf'&&checkFileType(ProjectLookFile.url)['name']!='图片'"
  522. :pdfUrl="'https://view.officeapps.live.com/op/view.aspx?src='+ProjectLookFile.url"
  523. ></vword>
  524. <vpdf
  525. style="width: 100%; height: 100%; overflow: auto"
  526. class="fullStyle"
  527. :pdfUrl="ProjectLookFile.url"
  528. v-if="checkFileType(ProjectLookFile.url)['type']=='pdf'"
  529. ></vpdf>
  530. <img :src="ProjectLookFile.url" alt="图片哦" v-if="checkFileType(ProjectLookFile.url)['name']=='图片'" style="width: 100%;height: 100%;">
  531. </div>
  532. <div class="FileShowArea_Right core_dialogue">
  533. <div v-for="(item,index) in ProjectFile" :key="item.url" @click="ProjectLookFile = item" :class="['FileList',ProjectLookFile['url']==item.url?'lookFile':'']"><span>{{ index+1 }}.{{ checkFileType(item.url)["name"] }}</span><div>{{ item.fileName }}</div></div>
  534. </div>
  535. </div>
  536. </div>
  537. </div>
  538. </div>
  539. <!-- 项目中期报告开始 -->
  540. <div class="BaseMessage" v-show="pageState==4">
  541. <!-- <div class="BaseTitle">
  542. <span>结项评价</span>
  543. </div>
  544. <div class="brief">
  545. <div class="brief_title" type="1.1">
  546. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  547. <span>科研办</span>
  548. </div>
  549. <div class="TextView" >
  550. <div class="TextView">
  551. {{ endProjectRemark['kRem'] }}
  552. </div>
  553. </div>
  554. </div>
  555. <div class="brief">
  556. <div class="brief_title" type="1.1">
  557. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  558. <span>学术委员会</span>
  559. </div>
  560. <div class="TextView" >
  561. <div class="TextView">
  562. {{ endProjectRemark["bRem"] }}
  563. </div>
  564. </div>
  565. </div>
  566. <div class="brief">
  567. <div class="brief_title" type="1.1">
  568. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  569. <span>部门审核评语</span>
  570. </div>
  571. <div class="TextView" >
  572. <div class="TextView">
  573. {{ endProjectRemark["xRem"] }}
  574. </div>
  575. </div>
  576. </div> -->
  577. <div class="BaseTitle" type="5">
  578. <span>项目结题报告</span>
  579. </div>
  580. <div class="brief">
  581. <div class="brief_title">
  582. <img src="@/assets/anliDetail/jdTitle.png" alt="">
  583. <span>项目结题附件</span>
  584. </div>
  585. <div class="material" v-if="ProjectEndLookFile.url!=''">
  586. <div class="material_title">
  587. <img src="@/assets/anliDetail/fileList.png" alt="">
  588. <span>项目结题附件</span>
  589. </div>
  590. <div class="FileShowArea">
  591. <div class="FileShowArea_Left">
  592. <vword
  593. style="width: 100%; height: 100%; overflow: auto"
  594. class="fullStyle"
  595. v-if="checkFileType(ProjectEndLookFile.url)['type']!='pdf'&&checkFileType(ProjectEndLookFile.url)['name']!='图片'"
  596. :pdfUrl="'https://view.officeapps.live.com/op/view.aspx?src='+ProjectEndLookFile.url"
  597. ></vword>
  598. <vpdf
  599. style="width: 100%; height: 100%; overflow: auto"
  600. class="fullStyle"
  601. :pdfUrl="ProjectEndLookFile.url"
  602. v-if="checkFileType(ProjectEndLookFile.url)['type']=='pdf'"
  603. ></vpdf>
  604. <img :src="ProjectEndLookFile.url" alt="图片哦" v-if="checkFileType(ProjectEndLookFile.url)['name']=='图片'" style="width: 100%;height: 100%;">
  605. </div>
  606. <div class="FileShowArea_Right core_dialogue">
  607. <div v-for="(item,index) in ProjectEndFile" :key="item.url" @click="ProjectEndLookFile = item" :class="['FileList',ProjectEndLookFile['url']==item.url?'lookFile':'']"><span>{{ index+1 }}.{{ checkFileType(item.url)["name"] }}</span><div>{{ item.fileName }}</div></div>
  608. </div>
  609. </div>
  610. </div>
  611. </div>
  612. </div>
  613. <!--项目详结束-->
  614. <!--内容区结束-->
  615. </div>
  616. </template>
  617. <script>
  618. import vpdf from '@/components/vpdf.vue'
  619. import vword from '@/components/vword.vue'
  620. import { VueEditor } from "vue2-editor";
  621. export default {
  622. components:{vpdf,vword,VueEditor},
  623. data() {
  624. return {
  625. pageState:0,
  626. loading:false,
  627. //头部信息 项目名称 负责人 学院牵头领导 封面图片 分类 所在部门 优先支持项目 联系电话 项目申请人 美丽校园改造项目
  628. TitleMessage:{title:"",pro_leader:"",lead_leader:"",image:"",TypeName:"",ClassName:"",tn2:0},
  629. // TitleMessage:{ClassName:"",EndTime:"",TypeName:"",beginTime:"",brief:"",course_student:[],image:"",pro_leader:"",title:""},
  630. DetailMessage:[],
  631. ProjectFile:[],
  632. ProjectLookFile:{url:"",type:""},
  633. ProjectEndFile:[],
  634. ProjectEndLookFile:{url:"",type:""},
  635. AllActivity:[],
  636. ActivityLookFile:[],
  637. endProjectRemark:{kRem:"",bRem:"",xRem:""},
  638. canonical:{
  639. Image:/^https?:\/\/(.+\/)+.+(\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif))$/i,
  640. File:/^https?:\/\/(.+\/)+.+(\.(docx|xlsx|ppt|pdf))$/i
  641. },
  642. }
  643. },
  644. methods:{
  645. getData(){
  646. this.loading = true;
  647. this.ActivityLookFile = [];
  648. this.ajax.get(this.$store.state.api+"/GetProjectDetailIsConclusion",{
  649. uid:this.$store.state.userInfo.userid,
  650. pid:this.$route.query["pid"]
  651. }).then(res=>{
  652. let FormData = res.data;
  653. console.log(FormData)
  654. //头部信息
  655. this.TitleMessage = FormData[0][0];
  656. // 教师表格
  657. this.TitleMessage['teacher'] = JSON.parse(this.TitleMessage['teacher']);
  658. // 学生表格
  659. this.TitleMessage['student'] = JSON.parse(this.TitleMessage['student']);
  660. //项目详细
  661. this.DetailMessage = JSON.parse(FormData[1][0]['chapters']);
  662. this.ProjectFile = JSON.parse(FormData[2][0]['projectFile'])
  663. if(this.ProjectFile!=null)this.ProjectLookFile = this.ProjectFile[0]
  664. else this.ProjectLookFile = {url:'',type:""};
  665. this.ProjectEndFile = JSON.parse(FormData[3][0]['endFile']);
  666. if(this.ProjectEndFile!=null)this.ProjectEndLookFile = this.ProjectEndFile[0];
  667. else this.ProjectEndLookFile = {url:"",type:""}
  668. if(FormData[4][0]['title']!=null){
  669. this.AllActivity = FormData[4]
  670. this.AllActivity.forEach(item=>{
  671. if(item['reportFile']!=null&&item['reportFile']!=''){
  672. item['reportFile'] = JSON.parse(item['reportFile']);
  673. this.ActivityLookFile.push({url:item['reportFile'][0].url,fileName:item['reportFile'][0].fileName})
  674. }else this.ActivityLookFile.push({url:"",type:""})
  675. })
  676. };
  677. if(JSON.parse(FormData[5][0]['endProjectRemark'])!=null)this.endProjectRemark = JSON.parse(FormData[5][0]['endProjectRemark']);
  678. this.loading = false;
  679. }).catch(err=>{
  680. console.log(err)
  681. })
  682. },
  683. checkFileType(url){
  684. if(typeof url=='undefined')return {type:"",name:""};
  685. let urlSplit = url.split(".");
  686. const type = urlSplit[urlSplit.length-1]
  687. if(this.canonical.Image.test(url))return {type:type,name:"图片"}
  688. if(this.canonical.File.test(url))return {type:type,name:"文档"}
  689. else return {type:type,name:type}
  690. },
  691. ActivityChangeFileLook(index,item){
  692. Object.assign(this.ActivityLookFile[index],item)
  693. }
  694. },
  695. mounted(){
  696. //监听元素滚动
  697. let Nav = document.querySelector("#Nav");
  698. document.querySelector(".core_dialogue").addEventListener("scroll",(e)=>{
  699. let scrollTop = e.target.scrollTop;
  700. if(scrollTop>=250){
  701. document.querySelector(".core_dialogue").querySelector('.el-header').style='position:fixed;z-index:10;width:100%'
  702. Nav.style = `width:100%;padding:0 20%;box-sizing: border-box;border-radius:0;display:flex;justify-content: space-around;position: fixed;top:calc(70px - 20px);z-index:99;align-items: center;box-shadow: 0 0 5px gray;`
  703. }else if(scrollTop<=100){
  704. document.querySelector(".core_dialogue").querySelector('.el-header').style=''
  705. Nav.style = ``
  706. }
  707. });
  708. this.getData();
  709. }
  710. }
  711. </script>
  712. <style lang="less" scoped>
  713. .rs1apply{
  714. width: 100%;
  715. height: 100%;
  716. // height: auto;
  717. display: flex;
  718. flex-direction: column;
  719. align-items: center;
  720. background-color: #e6eaf0;
  721. box-sizing: border-box;
  722. padding-bottom: 50px;
  723. }
  724. .header{
  725. width: 100%;
  726. min-height: 200px;
  727. background-color: white;
  728. margin-top: 10px;
  729. display: flex;
  730. align-items: center;
  731. box-sizing: border-box;
  732. padding-left: 5%;
  733. position: relative;
  734. .imgBlock{
  735. width: 230px;
  736. height: 130px;
  737. margin-right: 20px;
  738. img{
  739. width: 100%;
  740. height: 100%;
  741. object-fit: cover;
  742. }
  743. }
  744. .headerConcent{
  745. width: 500px;
  746. height: 130px;
  747. display: flex;
  748. flex-direction: column;
  749. justify-content: space-between;
  750. // width: ;
  751. .rsHead1Tit{
  752. font-size: 22px;
  753. font-weight: bold;
  754. }
  755. .rsHead2Tit{
  756. font-size: 16px;
  757. }
  758. .rsHead3Tit{
  759. display: flex;
  760. div{
  761. margin-right: 30px;
  762. }
  763. }
  764. }
  765. .backBtn{
  766. position: absolute;
  767. right: 10%;
  768. width:100px;
  769. top: 10%;
  770. box-sizing: border-box;
  771. padding: 9px 0;
  772. display: flex;
  773. justify-content: center;
  774. align-items: center;
  775. font-size: 16px;
  776. cursor: pointer;
  777. }
  778. }
  779. #Nav{
  780. box-sizing: border-box;
  781. padding: 0 80px 0 70px;
  782. width: 60%;
  783. min-height: 50px;
  784. background-color: white;
  785. margin-top: 20px;
  786. border-radius: 5px;
  787. display: flex;
  788. justify-content: space-around;
  789. align-items: center;
  790. .navLi{
  791. // width: 150px;
  792. height: 100%;
  793. display: flex;
  794. justify-content: flex-start;
  795. align-items: center;
  796. font-size: 18px;
  797. // margin-left: 20px;
  798. cursor: pointer;
  799. img{
  800. height: 40px;
  801. }
  802. }
  803. .navLi:hover span{
  804. color: gray;
  805. }
  806. }
  807. .BaseMessage{
  808. width: 60%;
  809. position: relative;
  810. box-sizing: border-box;
  811. // margin-bottom: 20px;
  812. .BaseTitle{
  813. width: 100%;
  814. height: 85px;
  815. background-color: white;
  816. border-radius: 5px;
  817. margin-top: 20px;
  818. display: flex;
  819. align-items: center;
  820. margin-bottom: 20px;
  821. span{
  822. display: flex;
  823. align-items: center;
  824. // width: 160px;
  825. height: 50px;
  826. box-sizing: border-box;
  827. justify-content: center;
  828. padding-right: 2%;
  829. padding-left: 4%;
  830. align-items: center;
  831. background-image: url('@/assets/anliDetail/longNavBg.png');
  832. background-size: 100% 100%;
  833. margin-left: 20px;
  834. color: white;
  835. font-size: 18px;
  836. }
  837. }
  838. .brief{
  839. width: 100%;
  840. height: auto;
  841. border-radius: 5px;
  842. box-sizing: border-box;
  843. display: flex;
  844. flex-direction: column;
  845. align-items: center;
  846. background-color: white;
  847. padding: 10px 10px 20px 10px;
  848. margin-bottom: 20px;
  849. position: relative;
  850. }
  851. .brief_title{
  852. width: 100%;
  853. height: 40px;
  854. display: flex;
  855. align-items: center;
  856. // margin-top: 10px;
  857. font-size: 18px;
  858. i{
  859. width: 30px;
  860. height: 30px;
  861. font-size: 1.5em;
  862. color: #50c5ff;
  863. }
  864. img{
  865. width: 30px;
  866. height: 30px;
  867. }
  868. span{
  869. margin-left: 10px;
  870. color: gray;
  871. }
  872. }
  873. .TextView{
  874. width: 100%;
  875. box-sizing: border-box;
  876. padding: 10px;
  877. border-radius: 5px;
  878. background-color: rgb(240, 240, 240);
  879. line-height: 2em;
  880. }
  881. .FileView{
  882. width: 100%;
  883. box-sizing: border-box;
  884. padding: 0px 10px 10px 10px;
  885. border-radius:10px ;
  886. background-color: rgb(240, 240, 240);
  887. .FileList{
  888. width: 100%;
  889. height: 50px;
  890. border-radius: 10px;
  891. background-color: white;
  892. display: flex;
  893. overflow: hidden;
  894. cursor: pointer;
  895. box-shadow: 0px 0px 4px rgb(185, 185, 185);
  896. margin-top: 10px;
  897. .FileType{
  898. width: 15%;
  899. height: 100%;
  900. display: flex;
  901. justify-content: center;
  902. align-items: center;
  903. color: white;
  904. font-size: 18px;
  905. background-color:#0c74ab;
  906. }
  907. .FileTitle{
  908. display: flex;
  909. height: 100%;
  910. flex: 1;
  911. align-items: center;
  912. box-sizing: border-box;
  913. padding-left: 2%;
  914. }
  915. }
  916. }
  917. .FileShow{
  918. width: 100%;
  919. height: 200px;
  920. background-color: gray;
  921. }
  922. }
  923. .material{
  924. width: 100%;
  925. height: 900px;
  926. // height: 1000px;
  927. margin-top: 20px;
  928. border-radius: 5px;
  929. box-sizing: border-box;
  930. border: 1px solid #2f89dd;
  931. overflow: hidden;
  932. .material_title{
  933. width: 100%;
  934. height: 40px;
  935. display: flex;
  936. align-items: center;
  937. box-sizing: border-box;
  938. padding-left: 10px;
  939. color: white;
  940. background-color: #2f89dd;
  941. }
  942. .FileShowArea{
  943. width: 100%;
  944. height: calc(100% - 40px);
  945. display: flex;
  946. justify-content: space-around;
  947. align-items: center;
  948. .FileShowArea_Left{
  949. width: 60%;
  950. height: 95%;
  951. background-color: white;
  952. }
  953. .FileShowArea_Right{
  954. width: 35%;
  955. height: 95%;
  956. display: flex;
  957. flex-direction: column;
  958. align-items: center;
  959. background-color: #f6f9fe;
  960. border-radius: 5px;
  961. .FileList{
  962. width: 95%;
  963. height: 45px;
  964. background-color: white;
  965. margin-top: 20px;
  966. border-radius: 10px;
  967. font-size: 18px;
  968. cursor: pointer;
  969. display: flex;
  970. align-items: center;
  971. overflow: hidden;
  972. div{
  973. height: auto;
  974. width: 70%;
  975. display: block;
  976. overflow: hidden;
  977. white-space: nowrap;
  978. text-overflow: ellipsis;
  979. }
  980. span{
  981. max-width: 20%;
  982. min-width: 20%;
  983. height: 100%;
  984. display: flex;
  985. align-items: center;
  986. justify-content: center;
  987. color: white;
  988. background-color: #0c74ab;
  989. margin-right: 10px;
  990. float: left;
  991. }
  992. }
  993. .FileList:hover{
  994. color: gray;
  995. }
  996. }
  997. }
  998. }
  999. .arrangement{
  1000. width: 100%;
  1001. margin-top: 10px;
  1002. background-color: white;
  1003. border-radius: 5px;
  1004. padding: 10 px;
  1005. box-sizing: border-box;
  1006. .arrangement_assignment_title{
  1007. width: 100%;
  1008. height: 50px;
  1009. display: flex;
  1010. box-sizing: border-box;
  1011. padding: 0px 20px 0px 10px;
  1012. justify-content: space-between;
  1013. font-size: 18px;
  1014. align-items: center;
  1015. span{
  1016. display: flex;
  1017. align-items: center;
  1018. color: black;
  1019. font-weight: 600;
  1020. span:nth-of-type(2){
  1021. margin-left: 10px;
  1022. }
  1023. img{
  1024. width: 30px;
  1025. height: 30px;
  1026. margin-right: 10px;
  1027. }
  1028. }
  1029. }
  1030. .assignment{
  1031. width: 100%;
  1032. display: flex;
  1033. box-sizing: border-box;
  1034. padding: 0px 20px 0px 20px;
  1035. justify-content: center;
  1036. font-size: 18px;
  1037. align-items: space-between;
  1038. flex-direction: column;
  1039. span{
  1040. display: flex;
  1041. align-items: center;
  1042. color: gray;
  1043. img{
  1044. width: 30px;
  1045. height: 30px;
  1046. margin-right: 10px;
  1047. }
  1048. }
  1049. .assignment_message{
  1050. width: 100%;
  1051. }
  1052. }
  1053. }
  1054. .fullStyle {
  1055. width: 100% !important;
  1056. max-width: 100% !important;
  1057. height: 100% !important;
  1058. margin: 0 !important;
  1059. }
  1060. .personListUL{
  1061. width: 100%;
  1062. display: flex;
  1063. align-items: center;
  1064. .personListLI{
  1065. width: 80%;
  1066. text-overflow: ellipsis;
  1067. overflow: hidden;
  1068. white-space: nowrap;
  1069. span{
  1070. margin-right: 10px;
  1071. color: darkgray;
  1072. }
  1073. }
  1074. }
  1075. .titleMessage{
  1076. color: darkgray;
  1077. }
  1078. .projectStudent{
  1079. width:100%;
  1080. cursor: default;
  1081. }
  1082. .beginTime_EndTime{
  1083. width: 100%;
  1084. height: 40px;
  1085. display: flex;
  1086. align-items: center;
  1087. font-size: 18px;
  1088. box-sizing: border-box;
  1089. padding-left: 20px;
  1090. i{
  1091. margin: 0 20px 0 20px;
  1092. font-size:22px;
  1093. }
  1094. // background-color: red;
  1095. }
  1096. /deep/ .ql-toolbar{
  1097. display: none !important;
  1098. }
  1099. /deep/ .ql-container.ql-snow{
  1100. border:none !important;
  1101. }
  1102. .lookFile{
  1103. color: grey;
  1104. }
  1105. .ActivityBaseMessage{
  1106. width: 100%;
  1107. height: auto;
  1108. }
  1109. .MarginTop30px{
  1110. margin-top: 30px;
  1111. }
  1112. </style>