liveProjectDetail.vue 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578
  1. <template>
  2. <div
  3. style="
  4. background: rgb(230, 234, 240);
  5. width: 100%;
  6. margin: 0;
  7. position: relate;
  8. height: 100%;
  9. "
  10. >
  11. <div class="blackBottom">
  12. <div
  13. style="
  14. display: flex;
  15. flex-direction: row;
  16. flex-wrap: nowrap;
  17. align-items: stretch;
  18. padding-left: 10px;
  19. "
  20. >
  21. <div class="logoLive">
  22. <img src="../assets/icon/logo.png" alt />
  23. </div>
  24. <div style="color: #fff; line-height: 45px; padding-left: 15px">
  25. 湖心亭看雪可可乐博模拟展示课件
  26. </div>
  27. </div>
  28. <!-- <div
  29. style="display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center"
  30. >
  31. <div class="blackButton" @click="answerWork" v-if="steps == 0">下一步</div>
  32. <div class="blackButton" @click="steps = 3" v-if="steps != 3">提交作业</div>
  33. </div>-->
  34. </div>
  35. <div class="isNoOther">
  36. <div
  37. class="imgMiddle"
  38. :class="isBlock > 0 ? 'imghalf' : 'imgMiddle'"
  39. v-show="!full"
  40. >
  41. <!-- <iframe
  42. style="width: 100%; height: 100%; border: none"
  43. src="https://view.officeapps.live.com/op/view.aspx?src=https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/0701%E5%AE%9E%E6%97%B6%E8%AF%BE%E5%A0%82%E6%A8%A1%E6%8B%9F%E6%BC%94%E7%A4%BA%E8%AF%BE%E4%BB%B61656644341323.pptx"
  44. ></iframe>-->
  45. <pdf
  46. :pdfUrl="pdfUrl"
  47. style="width: 100%; height: 100%"
  48. :ppage="ppage"
  49. @getPageTotal="getPageTotal"
  50. ></pdf>
  51. </div>
  52. <div
  53. style="
  54. background: #d0d6e4;
  55. width: 40%;
  56. height: 100%;
  57. max-width: 40%;
  58. overflow: auto;
  59. "
  60. :class="{ fullStyle: full }"
  61. v-if="isBlock > 0"
  62. >
  63. <div
  64. style="
  65. background: #fff;
  66. width: 96%;
  67. margin: 10px auto;
  68. height: 96%;
  69. position: relative;
  70. "
  71. >
  72. <div
  73. style="color: #bfbfbf; padding: 15px 0 15px 25px; font-size: 20px"
  74. v-if="isBlock == 3"
  75. >
  76. 课堂评价
  77. </div>
  78. <div
  79. style="
  80. margin-left: 25px;
  81. border-bottom: 3px solid #2c83ee;
  82. width: 70px;
  83. padding-bottom: 3px;
  84. text-align: center;
  85. padding-top: 15px;
  86. "
  87. v-if="isBlock == 1"
  88. >
  89. 开始答题
  90. </div>
  91. <!-- <div
  92. style="
  93. margin-left: 25px;
  94. border-bottom: 3px solid #2c83ee;
  95. width: 70px;
  96. padding-bottom: 3px;
  97. text-align: center;
  98. "
  99. v-if="steps == 2"
  100. >
  101. 选择工具
  102. </div>-->
  103. <div class="answerBox" v-if="isBlock == 1">
  104. <!-- <div>
  105. <span class="timuButton">题目</span>
  106. <span style="letter-spacing: 3px; line-height: 35px"
  107. >小明有3本不同的语文书,2本不同的数学书,4本不同的英语书,小明整理书架时,要把这些书放在同一层,且相同科目的书要相邻摆放,问共有多少种摆放方式?</span
  108. >
  109. </div>
  110. <el-radio-group v-model="answerBox" class="anserBoxCss">
  111. <el-radio v-for="item1 in answer" :key="item1" :label="item1">{{
  112. item1.name
  113. }}</el-radio>
  114. </el-radio-group>
  115. <span slot="footer" class="dialog-footer sztFooter">
  116. <el-button type="primary" @click="answerQue">确定</el-button>
  117. </span>
  118. <div class="nextStepOne" @click="answerWork">下一步</div>-->
  119. <div class="answerBox">
  120. <div
  121. style="
  122. display: flex;
  123. flex-direction: column;
  124. flex-wrap: wrap;
  125. align-items: center;
  126. justify-content: center;
  127. "
  128. v-for="item in 1"
  129. :key="item"
  130. >
  131. <div class="choose_style">
  132. <!-- {{
  133. item
  134. }}、小明有3本不同的语文书,2本不同的数学书,4本不同的英语书,小明整理书架时,要把这些书放在同一层,且相同科目的书要相邻摆放,问共有多少种摆放方式?-->
  135. <span
  136. @click="isChooseActive(1)"
  137. :class="typeC.indexOf(1) != -1 ? 'isChoose' : ''"
  138. >A</span
  139. >
  140. <span
  141. @click="isChooseActive(2)"
  142. :class="typeC.indexOf(2) != -1 ? 'isChoose' : ''"
  143. >B</span
  144. >
  145. <span
  146. @click="isChooseActive(3)"
  147. :class="typeC.indexOf(3) != -1 ? 'isChoose' : ''"
  148. >C</span
  149. >
  150. <span
  151. @click="isChooseActive(4)"
  152. :class="typeC.indexOf(4) != -1 ? 'isChoose' : ''"
  153. >D</span
  154. >
  155. </div>
  156. <el-button style="margin: 0 auto" @click="showMember(item)"
  157. >提交</el-button
  158. >
  159. </div>
  160. </div>
  161. </div>
  162. <div
  163. class="answerBox"
  164. style="height: 100%"
  165. v-if="isBlock == 2"
  166. ref="qrcodePicture"
  167. >
  168. <div style="height: 100%; width: 100%">
  169. <div
  170. v-if="toolsList[0].tools[howTools] == 1"
  171. class="tools_child_box"
  172. >
  173. <div class="tools_title">
  174. <span>电子白板</span>
  175. <div>
  176. <img
  177. src="../assets/full.png"
  178. class="full"
  179. @click="fullTools"
  180. />
  181. </div>
  182. </div>
  183. <iframe
  184. style="width: 100%; height: 100%; border: none"
  185. src="https://iwb.cocorobo.cn/"
  186. ref="whiteBoard"
  187. ></iframe>
  188. </div>
  189. <div
  190. v-if="toolsList[0].tools[howTools] == 2"
  191. class="tools_child_box"
  192. >
  193. <div class="tools_title">
  194. <span>便签</span>
  195. <div>
  196. <img
  197. src="../assets/full.png"
  198. class="full"
  199. @click="fullTools"
  200. />
  201. </div>
  202. </div>
  203. <iframe
  204. style="width: 100%; height: 100%; border: none"
  205. src="https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/note"
  206. ></iframe>
  207. </div>
  208. <div
  209. v-if="toolsList[0].tools[howTools] == 3"
  210. class="tools_child_box"
  211. >
  212. <div class="tools_title">
  213. <span>思维导图</span>
  214. <div>
  215. <img
  216. src="../assets/full.png"
  217. class="full"
  218. @click="fullTools"
  219. />
  220. </div>
  221. </div>
  222. <iframe
  223. style="width: 100%; height: 100%; border: none"
  224. src="https://cloud.cocorobo.cn/kityminder-editor/dist/index.html"
  225. ref="mind"
  226. ></iframe>
  227. </div>
  228. <div
  229. v-if="toolsList[0].tools[howTools] == 4"
  230. class="tools_child_box"
  231. >
  232. <div class="tools_title">
  233. <span>问卷调查</span>
  234. <div>
  235. <img
  236. src="../assets/full.png"
  237. class="full"
  238. @click="fullTools"
  239. />
  240. </div>
  241. </div>
  242. <iframe
  243. style="width: 100%; height: 100%; border: none"
  244. src="https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/ask"
  245. ></iframe>
  246. </div>
  247. <div
  248. v-if="toolsList[0].tools[howTools] == 6"
  249. class="tools_child_box"
  250. >
  251. <div class="tools_title">
  252. <span>协同文档</span>
  253. <div>
  254. <img
  255. src="../assets/full.png"
  256. class="full"
  257. @click="fullTools"
  258. />
  259. </div>
  260. </div>
  261. <iframe
  262. style="width: 100%; height: 100%; border: none"
  263. src="https://cloud.cocorobo.cn/Office/Word/WordEditArea.htm"
  264. ></iframe>
  265. </div>
  266. <div
  267. v-if="toolsList[0].tools[howTools] == 7"
  268. class="tools_child_box"
  269. >
  270. <div class="tools_title">
  271. <span>思维网格</span>
  272. <div>
  273. <img
  274. src="../assets/full.png"
  275. class="full"
  276. @click="fullTools"
  277. />
  278. </div>
  279. </div>
  280. <iframe
  281. style="width: 100%; height: 100%; border: none"
  282. src="https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/Grid"
  283. ref="grid"
  284. ></iframe>
  285. </div>
  286. <div
  287. v-if="toolsList[0].tools[howTools] == 8"
  288. class="tools_child_box"
  289. >
  290. <div class="tools_title">
  291. <span>素材库</span>
  292. <div>
  293. <img
  294. src="../assets/full.png"
  295. class="full"
  296. @click="fullTools"
  297. />
  298. </div>
  299. </div>
  300. <iframe
  301. style="width: 100%; height: 100%; border: none"
  302. src="https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/library"
  303. ></iframe>
  304. </div>
  305. <div
  306. v-if="toolsList[0].tools[howTools] == 9"
  307. class="tools_child_box"
  308. >
  309. <div class="tools_title">
  310. <span>选择题</span>
  311. <div>
  312. <img
  313. src="../assets/full.png"
  314. class="full"
  315. @click="fullTools"
  316. />
  317. </div>
  318. </div>
  319. <div>选择题</div>
  320. </div>
  321. <div
  322. v-if="toolsList[0].tools[howTools] == 10"
  323. class="tools_child_box"
  324. >
  325. <div class="tools_title">
  326. <span>倒计时</span>
  327. <div>
  328. <img
  329. src="../assets/full.png"
  330. class="full"
  331. @click="fullTools"
  332. />
  333. </div>
  334. </div>
  335. <div>倒计时</div>
  336. </div>
  337. <div
  338. v-if="toolsList[0].tools[howTools] == 11"
  339. class="tools_child_box"
  340. >
  341. <div class="tools_title">
  342. <span>问答题</span>
  343. <div>
  344. <img
  345. src="../assets/full.png"
  346. class="full"
  347. @click="fullTools"
  348. />
  349. </div>
  350. </div>
  351. <div>问答题</div>
  352. </div>
  353. <div
  354. v-if="toolsList[0].tools[howTools] == 13"
  355. class="tools_child_box"
  356. >
  357. <div class="tools_title">
  358. <span>分小组</span>
  359. <div>
  360. <img
  361. src="../assets/full.png"
  362. class="full"
  363. @click="fullTools"
  364. />
  365. </div>
  366. </div>
  367. <div>分小组</div>
  368. </div>
  369. <div class="nextStepBox" v-if="toolsList[0].tools.length > 1">
  370. <div
  371. class="nextStepOne"
  372. @click="howTools--"
  373. v-if="howTools != 0"
  374. >
  375. 上一步
  376. </div>
  377. <div
  378. class="nextStepOne"
  379. @click="howTools++"
  380. v-if="howTools != toolsList[0].tools.length - 1"
  381. >
  382. 下一步
  383. </div>
  384. </div>
  385. <div
  386. class="nextStepOne"
  387. style="float: right"
  388. @click="getImg"
  389. v-if="
  390. toolsList[0].tools[howTools] == 1 ||
  391. toolsList[0].tools[howTools] == 3 ||
  392. toolsList[0].tools[howTools] == 7
  393. "
  394. >
  395. 截图
  396. </div>
  397. </div>
  398. <!-- <div v-if="toolCount == 0" style="height: 100%">
  399. <iframe
  400. style="width: 100%; height: 100%; border: none"
  401. src="https://pbl.cocorobo.cn/pbl-teacher-table/dist/#/Grid"
  402. ></iframe>
  403. </div>
  404. <div v-if="toolCount == 1" style="height: 100%">
  405. <iframe
  406. style="width: 100%; height: 100%; border: none"
  407. src="https://iwb.cocorobo.cn/"
  408. ></iframe>
  409. </div>
  410. <div v-if="toolCount == 2" style="height: 90%">
  411. <iframe
  412. style="width: 100%; height: 100%; border: none"
  413. src="https://cloud.cocorobo.cn/kityminder-editor/dist/index.html"
  414. ></iframe>
  415. </div>-->
  416. <!-- <div class="toolList">
  417. <div class="tools">
  418. <div>
  419. <img
  420. src="../assets/icon/mindNetwork.png"
  421. alt=""
  422. @click="addTool(7)"
  423. />
  424. </div>
  425. <div>思维网格</div>
  426. </div>
  427. <div class="tools">
  428. <div>
  429. <img
  430. src="../assets/icon/whiteBoard.png"
  431. alt=""
  432. @click="addTool(1)"
  433. />
  434. </div>
  435. <div>电子白板</div>
  436. </div>
  437. <div class="tools">
  438. <div>
  439. <img
  440. src="../assets/icon/secondToolList/mindMapping.png"
  441. alt=""
  442. @click="addTool(3)"
  443. />
  444. </div>
  445. <div>思维导图</div>
  446. </div>
  447. </div>-->
  448. <!-- <div class="nextStepOne" @click="nextTool">下一步</div> -->
  449. </div>
  450. <div
  451. class="answerBox"
  452. v-if="isBlock == 3"
  453. style="padding: 0 0 0 25px"
  454. >
  455. <div>
  456. <div class="score_box">
  457. <span>自我评价</span>
  458. <el-rate v-model="rateList.ca"></el-rate>
  459. </div>
  460. <div class="score_box">
  461. <span>他人评价</span>
  462. <el-rate v-model="rateList.sia"></el-rate>
  463. </div>
  464. </div>
  465. <div>
  466. <div style="padding-bottom: 15px; sont-size: 14px">备注</div>
  467. <div class="bz">
  468. <el-input
  469. type="textarea"
  470. placeholder="请输入一些你想表达的"
  471. :rows="6"
  472. resize="none"
  473. v-model="rateList.content"
  474. ></el-input>
  475. </div>
  476. </div>
  477. <span
  478. slot="footer"
  479. class="dialog-footer sztFooter"
  480. style="
  481. padding: 0 0 30px 0px;
  482. position: absolute;
  483. right: 20px;
  484. bottom: 0;
  485. "
  486. >
  487. <el-button @click="isBlock = 0">取消</el-button>
  488. <el-button type="primary" @click="dialogVisible = true"
  489. >确定</el-button
  490. >
  491. </span>
  492. </div>
  493. </div>
  494. </div>
  495. <!-- <div v-if="steps == 3" style="width: 40%; height: 96%">
  496. <div
  497. style="
  498. box-sizing: border-box;
  499. background: rgb(255, 255, 255);
  500. width: 96%;
  501. height: 96%;
  502. margin: 10px auto;
  503. overflow: auto;
  504. position: relative;
  505. "
  506. >
  507. <div class="close" @click="(steps = 0), (type = 0)">
  508. <img src="../assets/icon/close.png" alt />
  509. </div>
  510. <div style="color: #b6b6b6; font-size: 20px; padding: 20px">上传作业</div>
  511. <div
  512. style="
  513. display: flex;
  514. flex-direction: row;
  515. flex-wrap: wrap;
  516. justify-content: flex-start;
  517. align-items: flex-start;
  518. margin-bottom: 30px;
  519. "
  520. >
  521. <div v-if="upload[0].upImg.length > 0" class="hengCss">
  522. <div
  523. v-for="(uImg, imgIndex) in upload[0].upImg"
  524. :key="imgIndex"
  525. class="uploadImgPic"
  526. >
  527. <img :src="uImg.url" alt />
  528. <div>{{ uImg.name }}</div>
  529. <div class="deleteWord" @click="clean(1)">
  530. <img src="../assets/icon/delete.png" alt />
  531. </div>
  532. </div>
  533. </div>
  534. <div
  535. class="uploadImg"
  536. @click="addImg($event)"
  537. v-if="upload[0].upImg.length == 0"
  538. >
  539. <img src="../assets/icon/uploadImg.png" alt />
  540. <input
  541. type="file"
  542. accept="image/png, image/gif, image/jpeg"
  543. style="display: none"
  544. @change="beforeUpload1($event, 1)"
  545. />
  546. <div style="text-align: center; color: rgb(182, 182, 182); font-size: 20px">
  547. 上传截图
  548. </div>
  549. </div>
  550. </div>-->
  551. <!-- <div
  552. style="
  553. display: flex;
  554. flex-direction: row;
  555. flex-wrap: wrap;
  556. justify-content: flex-start;
  557. align-items: flex-start;
  558. margin-bottom: 30px;
  559. "
  560. >
  561. <div v-if="upload[0].upVedio.length > 0" class="hengCss">
  562. <div
  563. v-for="(uVedio, vedioIndex) in upload[0].upVedio"
  564. :key="vedioIndex"
  565. class="uploadImgPic"
  566. >
  567. <img src="../assets/uploadMp4.png" alt="" />
  568. <div>{{ uVedio.name }}</div>
  569. <div class="deleteWord" @click="clean(2)">
  570. <img src="../assets/icon/delete.png" alt="" />
  571. </div>
  572. </div>
  573. </div>
  574. <div class="uploadImg" @click="addImg($event)">
  575. <img src="../assets/icon/uploadVedio.png" alt="" />
  576. <input
  577. type="file"
  578. accept="video/mp4,video/quicktime,video/x-msvideo"
  579. style="display: none"
  580. @change="beforeUpload1($event, 2)"
  581. />
  582. <div
  583. style="
  584. text-align: center;
  585. color: rgb(182, 182, 182);
  586. font-size: 20px;
  587. "
  588. >
  589. 上传视频
  590. </div>
  591. </div>
  592. </div>-->
  593. <!-- <div style="padding-left: 25px"><span style="color: red">*</span> 简要描述</div>
  594. <div style="padding: 10px 0 0 25px">
  595. <textarea
  596. rows="6"
  597. class="binfo_input"
  598. cols
  599. style="width: 95%; height: 120px"
  600. v-model="upload[0].upIntro"
  601. ></textarea>
  602. </div>
  603. <span
  604. slot="footer"
  605. class="dialog-footer sztFooter"
  606. style="padding: 10% 10px 50px 0px"
  607. >
  608. <el-button @click="steps = 1">返回答题</el-button>
  609. <el-button type="primary" @click="addWork">确定</el-button>
  610. </span>
  611. </div>
  612. </div>-->
  613. </div>
  614. <div class="blackBottomB"></div>
  615. <div v-if="proVisible" class="mask">
  616. <div class="progressBox">
  617. <div class="lbox">
  618. <img src="../assets/loading.gif" />上传中,请稍后
  619. </div>
  620. <el-progress
  621. :text-inside="true"
  622. :stroke-width="20"
  623. :percentage="progress"
  624. style="width: 80%"
  625. ></el-progress>
  626. </div>
  627. </div>
  628. <el-dialog
  629. :visible.sync="dialogVisible"
  630. :append-to-body="true"
  631. width="500px"
  632. :before-close="handleClose"
  633. class="dialog_diy"
  634. >
  635. <div style="text-align: center; padding: 20px 0 50px 0; font-size: 18px">
  636. 提交成功
  637. </div>
  638. <div
  639. style="
  640. width: 200px;
  641. background: #4d8ae0;
  642. height: 35px;
  643. margin: 0 auto;
  644. text-align: center;
  645. line-height: 35px;
  646. color: #fff;
  647. border-radius: 5px;
  648. cursor: pointer;
  649. "
  650. @click="dialogVisible = false"
  651. >
  652. 确定
  653. </div>
  654. </el-dialog>
  655. </div>
  656. </template>
  657. <script>
  658. import pdf from "./components/pdf";
  659. import html2canvas from "html2canvas";
  660. export default {
  661. components: {
  662. pdf,
  663. },
  664. data() {
  665. return {
  666. pdfUrl:
  667. "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/0629%E5%AE%9E%E6%97%B6%E8%AF%BE%E5%A0%82%E6%A8%A1%E6%8B%9F%E6%BC%94%E7%A4%BA%E8%AF%BE%E4%BB%B61656920880446.pdf",
  668. ppage: 2,
  669. full: false,
  670. pageTotal: 0,
  671. howTools: 0,
  672. toolsList: [],
  673. timer: null,
  674. isLoading: false,
  675. formLabelWidth: "100px",
  676. userid: this.$route.query.userid,
  677. cid: this.$route.query.courseId,
  678. oid: this.$route.query.oid,
  679. mr: require("../assets/kc1.png"),
  680. timu: [],
  681. dialogVisible: false,
  682. answerBox: "",
  683. isNoHomeWork: false,
  684. answer: [
  685. { name: "A.1568" },
  686. { name: "B.720" },
  687. { name: "C.1728" },
  688. { name: "D.480" },
  689. ],
  690. steps: 0,
  691. isBlock: 0,
  692. isNext: false,
  693. isAnswer: false,
  694. upload: [
  695. {
  696. upImg: [],
  697. upVedio: [],
  698. upIntro: "",
  699. },
  700. ],
  701. noneBtnImg: false,
  702. proVisible: false,
  703. progress: 0,
  704. typeC: [],
  705. toolCount: 0,
  706. tools: [
  707. "",
  708. "",
  709. { tools: [9] }, //选择题
  710. { tools: [10] }, //倒计时
  711. { tools: [11] }, //问答题
  712. { tools: [11] }, //问答题
  713. { tools: [3, 1] }, //思维导图/电子白板
  714. { tools: [12] }, //选人回答
  715. { tools: [10, 13] }, //倒计时、分小组
  716. { tools: [3, 1, 7] }, //思维导图/电子白板/思维网格
  717. { tools: [14] }, //查看作业
  718. { tools: [14] }, //查看作业
  719. "", //查看作业
  720. //1、电子白板 2、便签 3、思维导图 4、问卷调查 5、量规评分 6、协同文档 7、思维网格 8、素材库 9、选择题 10、倒计时 11、问答题 12、选人回答 13、分小组 14、老师对提交作业进行评价
  721. ],
  722. rateList: {
  723. ca: 0,
  724. sia: 0,
  725. content: "",
  726. },
  727. imgUrl: "",
  728. imgFile: "",
  729. imgFileUp: [],
  730. };
  731. },
  732. methods: {
  733. change(val) {
  734. console.log(val);
  735. },
  736. goTo(path) {
  737. this.$router.push(path);
  738. },
  739. tableRowClassName({ row, rowIndex }) {
  740. if ((rowIndex + 1) % 2 === 0) {
  741. return "even_row";
  742. } else {
  743. return "";
  744. }
  745. },
  746. jump(cid) {
  747. window.parent.postMessage({ cid: cid, type: "1" }, "*");
  748. },
  749. handleCurrentChange(val) {
  750. // console.log(`当前页: ${val}`);
  751. this.page = val;
  752. },
  753. init() {},
  754. handleClose(done) {
  755. done();
  756. },
  757. handleRemove(file, fileList) {
  758. console.log(file, fileList);
  759. },
  760. onExceed() {
  761. this.$message.error("课程海报仅支持上传一张,请删除后再进行上传");
  762. },
  763. //uuid生成
  764. guid() {
  765. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
  766. /[xy]/g,
  767. function (c) {
  768. var r = (Math.random() * 16) | 0,
  769. v = c == "x" ? r : (r & 0x3) | 0x8;
  770. return v.toString(16);
  771. }
  772. );
  773. },
  774. time() {
  775. if (!this.now) {
  776. this.now = new Date().getTime();
  777. return true;
  778. } else {
  779. let time = new Date().getTime();
  780. if (time - this.now > 3000) {
  781. this.now = time;
  782. return true;
  783. } else {
  784. return false;
  785. }
  786. }
  787. },
  788. // answerWork() {
  789. // this.steps++;
  790. // },
  791. addTool(t) {
  792. if (t == 1) {
  793. window.parent.postMessage({ tools: "1" }, "*");
  794. } else if (t == 3) {
  795. window.parent.postMessage({ tools: "3" }, "*");
  796. } else if (t == 7) {
  797. window.parent.postMessage({ tools: "7" }, "*");
  798. }
  799. },
  800. answerQue() {
  801. this.dialogVisible = true;
  802. },
  803. isChooseActive(t) {
  804. if (this.isAnswer == true) {
  805. return;
  806. } else {
  807. if (this.typeC.length == 0) {
  808. this.typeC.push(t);
  809. } else {
  810. if (this.typeC.indexOf(t) != -1) {
  811. this.typeC.splice(this.typeC.indexOf(t), 1);
  812. } else {
  813. this.typeC.push(t);
  814. }
  815. }
  816. }
  817. },
  818. showMember(i) {
  819. if (this.typeC.length > 0) {
  820. // this.steps = 2;
  821. this.isAnswer = true;
  822. this.dialogVisible = true;
  823. } else {
  824. this.$message.error("至少选择一个答案!");
  825. }
  826. },
  827. clean(type) {
  828. if (type == 1) {
  829. this.upload[0].upImg.splice(0, 1);
  830. } else if (type == 2) {
  831. this.upload[0].upVedio.splice(0, 1);
  832. }
  833. },
  834. addImg(e) {
  835. var el = e.currentTarget;
  836. el.getElementsByTagName("input")[0].click();
  837. },
  838. imgChange(file, fileList, type) {
  839. if (type == 1) {
  840. var _tmp = this.upload[0].upImg;
  841. } else if (type == 2) {
  842. var _tmp = this.upload[0].upVedio;
  843. } else if (type == 100) {
  844. var _tmp = this.imgFileUp;
  845. }
  846. this.noneBtnImg = _tmp.length >= 1;
  847. },
  848. beforeUpload1(event, type) {
  849. if (type == 100) {
  850. var file = event;
  851. } else {
  852. var file = event.target.files[0];
  853. }
  854. var credentials = {
  855. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  856. secretAccessKey: "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",
  857. }; //秘钥形式的登录上传
  858. window.AWS.config.update(credentials);
  859. window.AWS.config.region = "cn-northwest-1"; //设置区域
  860. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  861. var _this = this;
  862. _this.progress = 0;
  863. _this.proVisible = true;
  864. if (file) {
  865. var params = {
  866. Key:
  867. file.name.split(".")[0] +
  868. new Date().getTime() +
  869. "." +
  870. file.name.split(".")[1],
  871. ContentType: file.type,
  872. Body: file,
  873. "Access-Control-Allow-Credentials": "*",
  874. ACL: "public-read",
  875. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  876. var options = {
  877. partSize: 2048 * 1024 * 1024,
  878. queueSize: 2,
  879. leavePartsOnError: true,
  880. };
  881. bucket
  882. .upload(params, options)
  883. .on("httpUploadProgress", function (evt) {
  884. //这里可以写进度条
  885. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  886. _this.progress = parseInt((evt.loaded * 80) / evt.total);
  887. })
  888. .send(function (err, data) {
  889. _this.progress = 100;
  890. setTimeout(() => {
  891. _this.proVisible = false;
  892. }, 1000);
  893. if (err) {
  894. var a = _this.$refs.upload1.uploadFiles;
  895. a.splice(a.length - 1, a.length);
  896. _this.$message.error("上传失败");
  897. } else {
  898. if (type == 1) {
  899. _this.upload[0].upImg.push({
  900. name: file.name,
  901. url: data.Location,
  902. uid: file.uid,
  903. });
  904. _this.imgChange(null, null, type);
  905. } else if (type == 2) {
  906. _this.upload[0].upVedio.push({
  907. name: file.name,
  908. url: data.Location,
  909. uid: file.uid,
  910. });
  911. _this.imgChange(null, null, type);
  912. } else if (type == 100) {
  913. _this.imgFileUp.push({
  914. name: file.name,
  915. url: data.Location,
  916. uid: file.uid,
  917. });
  918. _this.imgChange(null, null, type);
  919. }
  920. console.log(data.Location);
  921. }
  922. });
  923. }
  924. },
  925. beforeUpload2(event) {
  926. var file = event;
  927. var credentials = {
  928. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  929. secretAccessKey: "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",
  930. }; //秘钥形式的登录上传
  931. window.AWS.config.update(credentials);
  932. window.AWS.config.region = "cn-northwest-1"; //设置区域
  933. var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  934. var _this = this;
  935. _this.progress = 0;
  936. _this.proVisible = true;
  937. if (file) {
  938. var params = {
  939. Key: file.name.split(".")[0] + new Date().getTime() + "." + "png",
  940. ContentType: file.type,
  941. Body: file,
  942. "Access-Control-Allow-Credentials": "*",
  943. ACL: "public-read",
  944. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  945. var options = {
  946. partSize: 2048 * 1024 * 1024,
  947. queueSize: 2,
  948. leavePartsOnError: true,
  949. };
  950. bucket
  951. .upload(params, options)
  952. .on("httpUploadProgress", function (evt) {
  953. //这里可以写进度条
  954. // console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
  955. _this.progress = parseInt((evt.loaded * 80) / evt.total);
  956. })
  957. .send(function (err, data) {
  958. _this.progress = 100;
  959. setTimeout(() => {
  960. _this.proVisible = false;
  961. }, 1000);
  962. if (err) {
  963. var a = _this.$refs.upload1.uploadFiles;
  964. a.splice(a.length - 1, a.length);
  965. _this.$message.error("上传失败");
  966. } else {
  967. _this.imgFileUp.push({
  968. name: file.name,
  969. url: data.Location,
  970. uid: file.uid,
  971. });
  972. _this.imgChange(null, null, type);
  973. console.log(data.Location);
  974. }
  975. });
  976. }
  977. },
  978. addWork() {
  979. if (this.upload[0].upImg.length == 0) {
  980. this.$message.error("请上传图片");
  981. return;
  982. }
  983. // else if (this.upload[0].upVedio.length == 0) {
  984. // this.$message.error("请上传视频");
  985. // return;
  986. // }
  987. else if (this.upload[0].upIntro == "") {
  988. this.$message.error("请填写简要描述");
  989. return;
  990. }
  991. if (this.isNoHomeWork == true) {
  992. this.$confirm(
  993. "您已经提交了该作业了,如果您再提交将覆盖上次提交的作业!",
  994. "提示",
  995. {
  996. confirmButtonText: "确定",
  997. cancelButtonText: "取消",
  998. type: "warning",
  999. }
  1000. )
  1001. .then(() => {
  1002. this.addSWork();
  1003. })
  1004. .catch(() => {});
  1005. } else {
  1006. this.addSWork();
  1007. }
  1008. },
  1009. addSWork() {
  1010. let params = {
  1011. uid: this.userid,
  1012. cid: this.cid,
  1013. upload: JSON.stringify(this.upload),
  1014. };
  1015. this.ajax
  1016. .get(this.$store.state.api + "insertSWork", params)
  1017. .then((res) => {
  1018. this.isNoHomeWork = true;
  1019. this.dialogVisible = true;
  1020. this.selectSWork(); // this.upload = res.data[0][0].upload;
  1021. })
  1022. .catch((err) => {
  1023. this.$message.error("提交失败");
  1024. console.error(err);
  1025. });
  1026. },
  1027. selectSWork() {
  1028. let params = {
  1029. uid: this.userid,
  1030. cid: this.cid,
  1031. };
  1032. this.ajax
  1033. .get(this.$store.state.api + "selectSWork", params)
  1034. .then((res) => {
  1035. if (res.data[0].length > 0) {
  1036. this.isNoHomeWork = true;
  1037. }
  1038. })
  1039. .catch((err) => {
  1040. this.$message.error("暂无作业");
  1041. console.error(err);
  1042. });
  1043. },
  1044. getImg() {
  1045. var iframeHtml;
  1046. let iframeBody;
  1047. if (this.toolsList[0].tools[this.howTools] == 1) {
  1048. iframeHtml = this.$refs.whiteBoard;
  1049. } else if (this.toolsList[0].tools[this.howTools] == 3) {
  1050. iframeHtml = this.$refs.mind;
  1051. } else if (this.toolsList[0].tools[this.howTools] == 7) {
  1052. iframeHtml = this.$refs.grid;
  1053. }
  1054. iframeBody = iframeHtml.contentWindow.body;
  1055. // 第一个参数是需要生成截图的元素,第二个是自己需要配置的参数,宽高等
  1056. html2canvas(iframeBody, {
  1057. backgroundColor: null, //画出来的图片有白色的边框,不要可设置背景为透明色(null)
  1058. useCORS: true, //支持图片跨域
  1059. scale: 1, //设置放大的倍数
  1060. }).then((canvas) => {
  1061. // 把生成的base64位图片上传到服务器,生成在线图片地址
  1062. let url = canvas.toDataURL("image/png"); // toDataURL: 图片格式转成 base64
  1063. this.imgUrl = url; //将图片下载到本地
  1064. let a = document.createElement("a"); // 生成一个a元素
  1065. let event = new MouseEvent("click"); // 创建一个单击事件
  1066. a.download = "作业"; // 设置图片名称没有设置则为默认
  1067. a.href = this.imgUrl; // 将生成的URL设置为a.href属性
  1068. a.dispatchEvent(event); // 触发a的单击事件
  1069. let file = this.dataURLtoFile(url, "作业");
  1070. this.imgFile = file;
  1071. this.beforeUpload2(this.imgFile);
  1072. console.log(this.imgFile)
  1073. });
  1074. },
  1075. dataURLtoFile(dataurl, filename) {
  1076. let arr = dataurl.split(","),
  1077. mime = arr[0].match(/:(.*?);/)[1],
  1078. bstr = atob(arr[1]),
  1079. n = bstr.length,
  1080. u8arr = new Uint8Array(n);
  1081. while (n--) {
  1082. u8arr[n] = bstr.charCodeAt(n);
  1083. }
  1084. return new File([u8arr], filename, { type: mime });
  1085. },
  1086. search() {},
  1087. howPage(page) {
  1088. if (page == this.pageTotal) {
  1089. this.isBlock = 3;
  1090. } else {
  1091. if (this.ppage < 3) {
  1092. this.isBlock = 0;
  1093. }
  1094. if (this.ppage == 3) {
  1095. this.isBlock = 1;
  1096. }
  1097. if (this.ppage > 3) {
  1098. this.isBlock = 2;
  1099. }
  1100. this.howTools = 0;
  1101. if (this.toolsList.length > 0) {
  1102. this.toolsList = [];
  1103. this.toolsList.push({ tools: this.tools[page - 1].tools });
  1104. } else {
  1105. this.toolsList.push({ tools: this.tools[page - 1].tools });
  1106. }
  1107. if (
  1108. this.toolsList[0].tools &&
  1109. (this.toolsList[0].tools[0] == 14 || this.toolsList[0].tools[0] == 12)
  1110. ) {
  1111. this.isBlock = 0;
  1112. }
  1113. }
  1114. },
  1115. setPage() {
  1116. this.ajax
  1117. .get(this.$store.state.api + "selectPptPage", "")
  1118. .then((res) => {
  1119. if (res.data[0].length > 0) {
  1120. if (this.ppage == res.data[0][0].page) {
  1121. return;
  1122. } else {
  1123. this.ppage = res.data[0][0].page;
  1124. console.log(1);
  1125. this.howPage(this.ppage);
  1126. }
  1127. }
  1128. })
  1129. .catch((err) => {
  1130. this.$message.error("查询失败");
  1131. console.error(err);
  1132. });
  1133. },
  1134. getPageTotal(total) {
  1135. this.pageTotal = total;
  1136. },
  1137. fullTools() {
  1138. this.full = !this.full;
  1139. },
  1140. },
  1141. beforeDestroy() {
  1142. clearInterval(this.timer);
  1143. this.timer = null;
  1144. },
  1145. created() {
  1146. this.selectSWork();
  1147. let _this = this;
  1148. this.timer = setInterval(() => {
  1149. _this.setPage();
  1150. }, 1000);
  1151. },
  1152. };
  1153. </script>
  1154. <style scoped>
  1155. .dialog_diy >>> .el-dialog__header {
  1156. background: #3d67bc !important;
  1157. padding: 15px 20px;
  1158. }
  1159. .dialog_diy >>> .el-dialog__title {
  1160. color: #fff;
  1161. }
  1162. .dialog_diy >>> .el-dialog__headerbtn {
  1163. top: 9px;
  1164. }
  1165. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  1166. color: #fff;
  1167. }
  1168. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  1169. color: #fff;
  1170. }
  1171. .blackBottom {
  1172. background: rgb(0, 0, 0);
  1173. height: 45px;
  1174. width: 100%;
  1175. display: flex;
  1176. flex-direction: row;
  1177. flex-wrap: nowrap;
  1178. align-items: center;
  1179. justify-content: space-between;
  1180. }
  1181. .imgMiddle {
  1182. width: 100%;
  1183. }
  1184. .imgMiddle > img,
  1185. .imghalf > img,
  1186. .szt > img,
  1187. .uploadImg > img,
  1188. .uploadVedio > img,
  1189. .uploadImgPic > img,
  1190. .logoLive > img,
  1191. .close > img,
  1192. .deleteWord > img {
  1193. width: 100%;
  1194. height: 100%;
  1195. }
  1196. .deleteWord {
  1197. width: 22px !important;
  1198. height: 22px;
  1199. position: absolute;
  1200. right: -5px;
  1201. top: -5px;
  1202. cursor: pointer;
  1203. }
  1204. .blackBottomB {
  1205. position: absolute;
  1206. bottom: 0px;
  1207. left: 0px;
  1208. display: flex;
  1209. flex-direction: row;
  1210. flex-wrap: wrap;
  1211. align-content: center;
  1212. justify-content: flex-start;
  1213. align-items: center;
  1214. background: rgb(0, 0, 0);
  1215. height: 45px;
  1216. width: 100%;
  1217. }
  1218. .blackBottomB > div:nth-child(1) {
  1219. margin-left: 10px !important;
  1220. }
  1221. .blackButton {
  1222. color: #fff;
  1223. background: #066ebe;
  1224. width: 100px;
  1225. height: 30px;
  1226. line-height: 30px;
  1227. text-align: center;
  1228. margin: 0 25px;
  1229. border-radius: 5px;
  1230. font-size: 15px;
  1231. cursor: pointer;
  1232. }
  1233. .isNoOther {
  1234. width: 100%;
  1235. display: flex;
  1236. height: calc(100% - 90px);
  1237. }
  1238. .imghalf {
  1239. width: 60% !important;
  1240. }
  1241. .answerBox {
  1242. padding: 25px;
  1243. overflow: auto;
  1244. height: 70%;
  1245. box-sizing: border-box;
  1246. }
  1247. .answerTimuBox {
  1248. display: flex;
  1249. flex-direction: row;
  1250. flex-wrap: nowrap;
  1251. align-items: center;
  1252. justify-content: space-between;
  1253. padding-bottom: 15px;
  1254. }
  1255. .memberBox {
  1256. display: flex;
  1257. flex-direction: row;
  1258. flex-wrap: wrap;
  1259. align-items: center;
  1260. }
  1261. .memberBox > div {
  1262. background: rgb(240, 185, 204);
  1263. width: 120px;
  1264. color: #fff;
  1265. height: 40px;
  1266. text-align: center;
  1267. line-height: 40px;
  1268. border-radius: 5px;
  1269. margin: 0 15px 15px 0;
  1270. cursor: pointer;
  1271. }
  1272. .viewSta {
  1273. background: rgb(97, 97, 97);
  1274. color: #bebebe;
  1275. margin: 20% auto 20px;
  1276. width: 300px;
  1277. height: 40px;
  1278. text-align: center;
  1279. line-height: 40px;
  1280. border-radius: 5px;
  1281. cursor: pointer;
  1282. }
  1283. .szt {
  1284. width: 450px;
  1285. margin: 20px auto;
  1286. }
  1287. .sztFooter {
  1288. padding: 20px 10px 50px 0;
  1289. display: flex;
  1290. flex-direction: row;
  1291. flex-wrap: nowrap;
  1292. justify-content: flex-end;
  1293. align-items: center;
  1294. }
  1295. .timuButton {
  1296. background: #649ef2;
  1297. width: 75px;
  1298. height: 27px;
  1299. line-height: 27px;
  1300. text-align: center;
  1301. border-radius: 5px;
  1302. color: #fff;
  1303. margin-right: 20px;
  1304. display: inline-block;
  1305. }
  1306. .anserBoxCss {
  1307. margin: 30px 0 20px 0;
  1308. }
  1309. .anserBoxCss >>> .el-radio__label {
  1310. font-size: 18px;
  1311. }
  1312. .anserBoxCss >>> .el-radio__inner {
  1313. border-radius: 0px !important;
  1314. }
  1315. .nextStepBox {
  1316. display: flex;
  1317. justify-content: center;
  1318. margin-top: 10px;
  1319. }
  1320. .nextStepOne {
  1321. background: #6b92c9;
  1322. color: #fff;
  1323. width: 110px;
  1324. text-align: center;
  1325. height: 35px;
  1326. line-height: 35px;
  1327. font-size: 14px;
  1328. border-radius: 5px;
  1329. cursor: pointer;
  1330. }
  1331. .nextStepOne,
  1332. .nextStepOne {
  1333. margin-left: 10px;
  1334. }
  1335. .toolList {
  1336. display: flex;
  1337. flex-direction: row;
  1338. flex-wrap: wrap;
  1339. justify-content: flex-start;
  1340. align-items: center;
  1341. }
  1342. .tools {
  1343. display: flex;
  1344. flex-direction: column;
  1345. align-items: center;
  1346. margin-right: 20px;
  1347. }
  1348. .tools > div:nth-child(1) {
  1349. width: 60px;
  1350. }
  1351. .tools > div:nth-child(1) > img {
  1352. width: 100%;
  1353. height: 100%;
  1354. }
  1355. .uploadImg {
  1356. width: 100px;
  1357. margin: 10px 0 0 15px;
  1358. cursor: pointer;
  1359. }
  1360. .upImg {
  1361. display: flex;
  1362. flex-direction: column;
  1363. flex-wrap: nowrap;
  1364. align-items: center;
  1365. justify-content: center;
  1366. color: rgb(182, 182, 182);
  1367. font-size: 20px;
  1368. }
  1369. .binfo_input {
  1370. font: inherit;
  1371. color: currentColor;
  1372. width: 100%;
  1373. margin: 0;
  1374. padding: 15px 14px;
  1375. display: block;
  1376. min-width: 0;
  1377. outline: none;
  1378. box-sizing: content-box;
  1379. background: none;
  1380. -webkit-tap-highlight-color: transparent;
  1381. border: 1px solid rgba(0, 0, 0, 0.23);
  1382. border-radius: 4px;
  1383. box-sizing: border-box;
  1384. resize: none;
  1385. }
  1386. .binfo_input:focus-visible {
  1387. border: 1px solid rgba(61, 103, 188);
  1388. }
  1389. .hengCss {
  1390. display: flex;
  1391. flex-direction: row;
  1392. flex-wrap: wrap;
  1393. align-items: center;
  1394. padding: 5px 0 0 20px;
  1395. }
  1396. .uploadImgPic {
  1397. width: 100px;
  1398. height: 100px;
  1399. position: relative;
  1400. margin: 0 20px 0 0;
  1401. }
  1402. .uploadImgPic > div {
  1403. width: 100px;
  1404. white-space: nowrap;
  1405. overflow: hidden;
  1406. text-overflow: ellipsis;
  1407. }
  1408. .mask {
  1409. background-color: rgba(0, 0, 0, 0);
  1410. position: fixed;
  1411. top: 0;
  1412. left: 0;
  1413. width: 100%;
  1414. height: 100%;
  1415. z-index: 20000;
  1416. display: flex;
  1417. align-items: center;
  1418. justify-content: center;
  1419. }
  1420. .progressBox {
  1421. width: 500px;
  1422. height: 180px;
  1423. background: #fff;
  1424. border-radius: 10px;
  1425. box-shadow: 0 0 6px 1px #bfbfbf;
  1426. display: flex;
  1427. align-items: center;
  1428. justify-content: center;
  1429. flex-direction: column;
  1430. }
  1431. .progressBox .lbox {
  1432. height: 100px;
  1433. font-size: 19px;
  1434. display: flex;
  1435. align-items: center;
  1436. }
  1437. .progressBox .lbox img {
  1438. width: 40px;
  1439. margin-right: 20px;
  1440. }
  1441. .progressBox >>> .el-progress-bar__outer {
  1442. background-color: #d1dfff !important;
  1443. }
  1444. .progressBox .lbox {
  1445. height: 100px;
  1446. font-size: 19px;
  1447. display: flex;
  1448. align-items: center;
  1449. }
  1450. .progressBox .lbox img {
  1451. width: 40px;
  1452. margin-right: 20px;
  1453. }
  1454. .logoLive {
  1455. width: 35px;
  1456. }
  1457. .choose_style {
  1458. display: flex;
  1459. justify-content: center;
  1460. align-items: center;
  1461. width: 100%;
  1462. margin: 10px 0 30px;
  1463. }
  1464. .choose_style span {
  1465. background: #f8f9ff;
  1466. color: #677fff;
  1467. border: 1px solid #95b5ff;
  1468. padding: 15px 20px;
  1469. font-size: 25px;
  1470. border-radius: 18px;
  1471. cursor: pointer;
  1472. }
  1473. .choose_style span + span {
  1474. margin-left: 25px;
  1475. }
  1476. .isChoose {
  1477. color: #fff !important;
  1478. background: #5e78fa !important;
  1479. }
  1480. .close {
  1481. position: absolute;
  1482. right: 10px;
  1483. top: 10px;
  1484. width: 20px;
  1485. cursor: pointer;
  1486. }
  1487. .score_box {
  1488. font-size: 14px;
  1489. }
  1490. .score_box >>> .el-rate {
  1491. margin: 10px 0 20px 0;
  1492. }
  1493. .score_box >>> .el-rate__icon {
  1494. font-size: 23px;
  1495. }
  1496. .bz >>> .el-textarea__inner {
  1497. width: 40%;
  1498. border: 1px solid;
  1499. border-radius: 0px;
  1500. }
  1501. .tools_title {
  1502. background: #000;
  1503. position: absolute;
  1504. width: 100%;
  1505. top: 0;
  1506. left: 0;
  1507. display: flex;
  1508. align-items: center;
  1509. height: 40px;
  1510. justify-content: space-between;
  1511. padding: 0 15px;
  1512. box-sizing: border-box;
  1513. }
  1514. .tools_title span {
  1515. color: #fff;
  1516. }
  1517. .tools_title div {
  1518. display: flex;
  1519. align-items: center;
  1520. }
  1521. .full,
  1522. .closeImg {
  1523. height: 22px;
  1524. cursor: pointer;
  1525. }
  1526. .tools_title img,
  1527. img {
  1528. margin-left: 10px;
  1529. }
  1530. .tools_box {
  1531. width: 38.5%;
  1532. max-width: 38.5%;
  1533. overflow: auto;
  1534. background: rgb(255, 255, 255);
  1535. height: 91.5%;
  1536. position: relative;
  1537. margin: 10px 15px;
  1538. }
  1539. .tools_child_box {
  1540. width: 100%;
  1541. height: calc(90% - 40px);
  1542. padding-top: 40px;
  1543. }
  1544. .fullStyle {
  1545. width: 100% !important;
  1546. max-width: 100% !important;
  1547. }
  1548. </style>