resultDetail_student.vue 49 KB

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