courseWare.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <template>
  2. <div class="container GCLS-BOOK-Container">
  3. <div
  4. id="content-scroll"
  5. class="content"
  6. :class="[type ? 'content-top' : '']"
  7. >
  8. <div
  9. id="data-screen"
  10. v-loading="loading"
  11. :class="['inner', fullscreen ? 'inner-full' : '']"
  12. >
  13. <div class="resule-box" v-if="ViewMode === 'Result'">
  14. <span>用时:{{ handleDateTime(this.duration) }}</span>
  15. <span
  16. >答对:<span style="color: #2ca767">{{ rightNumber }}</span>
  17. 个</span
  18. >
  19. <span
  20. >答错:<span style="color: #ed342d">{{ errorNumber }}</span>
  21. 个</span
  22. >
  23. </div>
  24. <div v-if="chapterId" class="title-box">
  25. <img
  26. v-if="!treeFlag"
  27. src="../assets/common/icon-view-back.png"
  28. @click="treeShow"
  29. />
  30. <img
  31. v-if="!treeFlag"
  32. src="../assets/common/icon-treelist.png"
  33. @click="chooseCourseware"
  34. />
  35. </div>
  36. <template v-if="category == 'OC' || !category">
  37. <Preview
  38. v-if="chapterId && context"
  39. ref="previewAnswer"
  40. :context="context"
  41. :book-answer-content="bookAnswerContent"
  42. bookclientwidth="900"
  43. :task-model="TaskModel"
  44. @handleBookUserAnswer="handleBookUserAnswer"
  45. />
  46. </template>
  47. <template
  48. v-if="
  49. category == 'NPC' &&
  50. ((bookAnswerContent && TaskModel === 'ANSWER') ||
  51. TaskModel !== 'ANSWER')
  52. "
  53. >
  54. <Booknpc
  55. v-if="chapterId && context"
  56. ref="previewBook"
  57. :context="context"
  58. :current-tree-i-d="chapterId"
  59. :father-tree-data="FatherTreeData"
  60. :change-id="changeId"
  61. :theme-color="themeColor"
  62. :is-show-title="false"
  63. :task-model="TaskModel"
  64. :is-show-save="showSaveFlag"
  65. :book-answer-content="bookAnswerContent"
  66. :is-answer-item-show="isAnswerItemShow"
  67. :previewType="previewType"
  68. :previewGroupId="previewGroupId"
  69. @finishTaskMaterial="finishTaskMaterial"
  70. />
  71. </template>
  72. <template v-if="category == 'NNPE'">
  73. <Booknnpe
  74. v-if="chapterId && context"
  75. ref="previewAnswerNNPE"
  76. :context="context"
  77. :current-tree-i-d="chapterId"
  78. :father-tree-data="FatherTreeData"
  79. :change-id="changeId"
  80. :theme-color="themeColor"
  81. :is-show-title="false"
  82. :is-answer-item-show="true"
  83. :task-model="TaskModel"
  84. :is-show-save="showSaveFlag"
  85. :book-answer-content="bookAnswerContent"
  86. @finishTaskMaterial="finishTaskMaterial"
  87. />
  88. </template>
  89. <template v-if="category == 'RLC'">
  90. <Bookrlc
  91. v-if="chapterId && context"
  92. ref="previewAnswerRLC"
  93. :context="context"
  94. :current-tree-i-d="chapterId"
  95. :father-tree-data="FatherTreeData"
  96. :change-id="changeId"
  97. :theme-color="themeColor"
  98. :is-show-title="false"
  99. :book-font-size="bookFontSize"
  100. :is-answer-item-show="isAnswerItemShow"
  101. :task-model="TaskModel"
  102. :is-show-save="showSaveFlag"
  103. :book-answer-content="bookAnswerContent"
  104. @finishTaskMaterial="finishTaskMaterial"
  105. />
  106. </template>
  107. </div>
  108. </div>
  109. </div>
  110. </template>
  111. <script>
  112. import Header from "@/components/inputModules/common/Header";
  113. import Nav from "@/components/inputModules/common/Nav";
  114. import TreeView from "@/components/inputModules/common/TreeView";
  115. import { getContens } from "@/api/ajax";
  116. import Cookies from "js-cookie";
  117. // import Preview from '@/componentsAnswer/PreviewAnswer.vue'
  118. import Preview from "@/components/Preview";
  119. import { getStaticContent, getContent, LearnWebSI } from "@/api/ajax";
  120. import { setToken } from "@/utils/auth";
  121. export default {
  122. name: "CourseWare",
  123. directives: {
  124. move(el, bindings) {
  125. el.onmousedown = function (e) {
  126. var init = e.clientX;
  127. var parent = document.getElementById("content-tree");
  128. var initWidth = parent.offsetWidth;
  129. document.onmousemove = function (e) {
  130. var end = e.clientX;
  131. var newWidth = end - init + initWidth;
  132. if (newWidth >= 340 && newWidth <= 680) {
  133. parent.style.width = newWidth + "px";
  134. }
  135. };
  136. document.onmouseup = function () {
  137. document.onmousemove = document.onmouseup = null;
  138. };
  139. };
  140. },
  141. },
  142. components: {
  143. Header,
  144. Nav,
  145. TreeView,
  146. Preview,
  147. },
  148. data() {
  149. return {
  150. bookId: "",
  151. chapterId: "",
  152. fullscreen: false, // 控制全屏
  153. fullTree: false, // 全屏模式下树是否显示
  154. context: null,
  155. question: null, // 选择的模板题型
  156. treeFlag: true, // tree是否显示
  157. isAnswerShow: false, // 是否显示答案
  158. bookAnswerContent: "",
  159. TaskModel: "",
  160. category: "",
  161. FatherTreeData: null,
  162. themeColor: "",
  163. type: "",
  164. name: "",
  165. loading: false,
  166. bookFontSize: "",
  167. showContent: false,
  168. isAnswerItemShow: true,
  169. showSaveFlag: false,
  170. rightNumber: 0,
  171. errorNumber: 0,
  172. duration: 0,
  173. AppID: this.$route.query.AppID ? this.$route.query.AppID : "",
  174. AccessToken: this.$route.query.AccessToken
  175. ? this.$route.query.AccessToken
  176. : "",
  177. CoursewareID: this.$route.query.CoursewareID
  178. ? this.$route.query.CoursewareID
  179. : "",
  180. UserID: this.$route.query.UserID ? this.$route.query.UserID : "",
  181. ViewMode: this.$route.query.ViewMode ? this.$route.query.ViewMode : "",
  182. BusinessID: this.$route.query.BusinessID
  183. ? this.$route.query.BusinessID
  184. : "",
  185. previewType:
  186. this.$route.query.ViewMode && this.$route.query.ViewMode === "Select"
  187. ? "previewCheck"
  188. : "previewCheckShow",
  189. previewGroupId: this.$route.query.CoursewareGroupIDSelectedInfo
  190. ? this.$route.query.CoursewareGroupIDSelectedInfo
  191. : "[]",
  192. };
  193. },
  194. watch: {
  195. bookAnswerContent: {
  196. handler(newVal, oldVal) {
  197. if (newVal) {
  198. this.loading = false;
  199. }
  200. },
  201. deep: true,
  202. },
  203. },
  204. async created() {
  205. const _this = this;
  206. if (_this.AccessToken) {
  207. const Mname = "login_control-ParseAccessToken";
  208. await getStaticContent(Mname, {
  209. access_token: _this.AccessToken,
  210. }).then((res) => {
  211. setToken(res);
  212. sessionStorage.setItem("GCLS_Token_Book", JSON.stringify(res));
  213. if (_this.AppID === "Mobile_Task") {
  214. _this.UserID = res.user_code;
  215. }
  216. });
  217. }
  218. if (_this.ViewMode === "Answer") {
  219. // 答题模式下 显示提交按钮 隐藏查看答案按钮
  220. this.showSaveFlag = true;
  221. this.isAnswerItemShow = false;
  222. } else if (_this.ViewMode === "Result") {
  223. this.isAnswerItemShow = false;
  224. this.TaskModel = "ANSWER";
  225. this.getUserAnswer();
  226. }
  227. _this.changeId();
  228. },
  229. mounted() {
  230. const _this = this;
  231. window.addEventListener(
  232. "message",
  233. function (event) {
  234. if (event.data === "Selected") {
  235. _this.finishPreviewGroupIds();
  236. }
  237. },
  238. false
  239. );
  240. },
  241. methods: {
  242. back() {
  243. this.$router.go(-1);
  244. },
  245. changeTreeData(val) {
  246. this.FatherTreeData = JSON.parse(JSON.stringify(val));
  247. },
  248. changeId(id, name) {
  249. const _this = this;
  250. _this.chapterId = _this.CoursewareID;
  251. _this.isAnswerShow = false;
  252. _this.onGetData();
  253. },
  254. // 点击全屏展示 隐藏tree
  255. fullScreen() {
  256. this.treeFlag = false;
  257. this.fullscreen = true;
  258. document.getElementById("content-tree").style.display = "none";
  259. },
  260. treeShow() {
  261. this.treeFlag = true;
  262. this.fullTree = false;
  263. this.fullscreen = false;
  264. document.getElementById("content-tree").style.display = "block";
  265. },
  266. // 获取预览数据
  267. onGetData() {
  268. this.loading = true;
  269. const _this = this;
  270. const AppID = _this.AppID;
  271. const AccessToken = _this.AccessToken;
  272. const MethodName =
  273. "/TeachingServer/BookIntegrationManager/GetCoursewareContent_View";
  274. const data = {
  275. courseware_id: _this.CoursewareID,
  276. user_id: _this.UserID,
  277. };
  278. if (_this.AppID === "Mobile_Task") {
  279. const MethodName = "book-courseware_manager-GetCoursewareContent_View";
  280. const data = {
  281. id: _this.chapterId,
  282. };
  283. getContent(MethodName, data).then((res) => {
  284. this.category = res.category;
  285. this.themeColor = res.book_theme_color;
  286. this.bookFontSize = res.book_font_size;
  287. if (res.content) {
  288. const _this = this;
  289. if (!this.category || this.category == "OC") {
  290. _this.context = {
  291. id: _this.chapterId,
  292. ui_type: JSON.parse(res.content).question
  293. ? JSON.parse(res.content).question.ui_type
  294. : "",
  295. sort_number: 1,
  296. content: JSON.parse(res.content),
  297. };
  298. } else {
  299. _this.context = JSON.parse(res.content);
  300. }
  301. setTimeout(() => {
  302. if (_this.ViewMode === "Answer") {
  303. _this.$refs.previewBook.handleAnswerTimeStart();
  304. }
  305. }, 200);
  306. } else {
  307. const _this = this;
  308. _this.context = null;
  309. }
  310. if (_this.ViewMode !== "Result") {
  311. this.loading = false;
  312. }
  313. });
  314. } else {
  315. getContens(MethodName, data, AccessToken, AppID).then((res) => {
  316. this.category = res.category;
  317. this.themeColor = res.book_theme_color;
  318. this.bookFontSize = res.book_font_size;
  319. if (res.content) {
  320. const _this = this;
  321. if (!this.category || this.category == "OC") {
  322. _this.context = {
  323. id: _this.chapterId,
  324. ui_type: JSON.parse(res.content).question
  325. ? JSON.parse(res.content).question.ui_type
  326. : "",
  327. sort_number: 1,
  328. content: JSON.parse(res.content),
  329. };
  330. } else {
  331. _this.context = JSON.parse(res.content);
  332. }
  333. setTimeout(() => {
  334. if (_this.ViewMode === "Answer") {
  335. _this.$refs.previewBook.handleAnswerTimeStart();
  336. }
  337. }, 200);
  338. } else {
  339. const _this = this;
  340. _this.context = null;
  341. }
  342. if (_this.ViewMode !== "Result") {
  343. this.loading = false;
  344. }
  345. });
  346. }
  347. },
  348. // 跳转编辑页面
  349. handleEdit() {
  350. const index = this.$refs.treeView.handleParentIndex().split("###");
  351. if (index.length > 1) {
  352. Cookies.set("bookIndex", index[0]);
  353. Cookies.set("bookLevel", index[1]);
  354. Cookies.set("bookNodename", index[2]);
  355. }
  356. this.$router.push("/input?bookId=" + this.bookId);
  357. },
  358. // 显示或隐藏答案
  359. handleAnswerShow() {
  360. this.isAnswerShow = !this.isAnswerShow;
  361. this.$refs.previewAnswer.bookAnswerShow(this.isAnswerShow);
  362. },
  363. // 得到用户答题答案
  364. handleBookUserAnswer(data) {
  365. console.log(data);
  366. },
  367. // 悬浮树隐藏显示
  368. chooseCourseware() {
  369. this.fullTree = !this.fullTree;
  370. if (this.fullTree) {
  371. document.getElementById("content-tree").style.display = "block";
  372. } else {
  373. document.getElementById("content-tree").style.display = "none";
  374. }
  375. },
  376. finishTaskMaterial(data, time, rightNumber, errorNumber) {
  377. // sessionStorage.setItem("userAnswers", data);
  378. // console.log("用户提交的答案:" + data);
  379. // console.log("答题时间" + time);
  380. // console.log("答对个数" + rightNumber);
  381. // console.log("答错个数" + errorNumber);
  382. this.loading = true;
  383. if (this.AppID === "Mobile_Task") {
  384. const MethodName = "teaching-task_manager-FinishMyTaskMaterial_Student";
  385. const datas = {
  386. task_id: this.BusinessID,
  387. material_id: this.CoursewareID,
  388. material_type: "COURSEWARE",
  389. exam_answer: {
  390. duration: time,
  391. count_right: rightNumber,
  392. count_error: errorNumber,
  393. content: data,
  394. },
  395. };
  396. LearnWebSI(MethodName, datas)
  397. .then((res) => {
  398. this.loading = false;
  399. if (res.status === 1) {
  400. this.$message.success("提交成功");
  401. }
  402. })
  403. .catch(() => {
  404. this.loading = false;
  405. });
  406. } else {
  407. const AppID = this.AppID;
  408. const AccessToken = this.AccessToken;
  409. const MethodName =
  410. "/TeachingServer/BookIntegrationManager/SaveCoursewareExamAnswer";
  411. let datas = {
  412. courseware_id: this.CoursewareID,
  413. user_id: this.UserID,
  414. business_id: this.BusinessID,
  415. exam_answer: {
  416. duration: time,
  417. count_right: rightNumber,
  418. count_error: errorNumber,
  419. content: data,
  420. },
  421. };
  422. getContens(MethodName, datas, AccessToken, AppID)
  423. .then((res) => {
  424. this.loading = false;
  425. if (res.status === 1) {
  426. this.$message.success("提交成功");
  427. }
  428. })
  429. .catch(() => {
  430. this.loading = false;
  431. });
  432. }
  433. },
  434. finishPreviewGroupId() {
  435. this.$refs.previewBook.submitPreviewGroupId();
  436. },
  437. // 给父级返回选中课件内容id
  438. finishPreviewGroupIds() {
  439. let CoursewareGroupIDSelectedInfo =
  440. this.$refs.previewBook.submitPreviewGroupId();
  441. window.parent.postMessage(CoursewareGroupIDSelectedInfo, "*");
  442. },
  443. // 获取用户答题信息
  444. getUserAnswer() {
  445. this.loading = true;
  446. if (this.AppID === "Mobile_Task") {
  447. const MethodName =
  448. "teaching-task_manager-GetTaskMaterialStudentExamAnswer";
  449. let datas = {
  450. task_id: this.BusinessID,
  451. material_id: this.CoursewareID,
  452. material_type: "COURSEWARE",
  453. student_id: this.UserID,
  454. };
  455. LearnWebSI(MethodName, datas)
  456. .then((res) => {
  457. this.loading = false;
  458. if (res.status === 1) {
  459. this.bookAnswerContent = res.content;
  460. this.duration = res.duration;
  461. this.rightNumber = res.count_right;
  462. this.errorNumber = res.count_error;
  463. }
  464. })
  465. .catch(() => {
  466. this.loading = false;
  467. });
  468. } else {
  469. const AppID = this.AppID;
  470. const AccessToken = this.AccessToken;
  471. const MethodName =
  472. "/TeachingServer/BookIntegrationManager/GetCoursewareExamAnswer";
  473. let datas = {
  474. courseware_id: this.CoursewareID,
  475. user_id: this.UserID,
  476. business_id: this.BusinessID,
  477. };
  478. getContens(MethodName, datas, AccessToken, AppID)
  479. .then((res) => {
  480. if (res.status === 1) {
  481. let exam_answer = res.exam_answer
  482. ? JSON.parse(res.exam_answer)
  483. : null;
  484. if (!exam_answer) return;
  485. this.bookAnswerContent = exam_answer.content;
  486. this.duration = exam_answer.duration;
  487. this.rightNumber = exam_answer.count_right;
  488. this.errorNumber = exam_answer.count_error;
  489. } else {
  490. this.loading = false;
  491. }
  492. })
  493. .catch(() => {
  494. this.loading = false;
  495. });
  496. }
  497. },
  498. handleDateTime(time) {
  499. if (parseInt(time / 60) < 10) {
  500. time =
  501. ("0" + parseInt(time / 60)).substring(
  502. ("0" + parseInt(time / 60)).length - 2
  503. ) +
  504. ":" +
  505. ("0" + (time % 60)).substring(("0" + (time % 60)).length - 2);
  506. } else {
  507. time =
  508. parseInt(time / 60) +
  509. ":" +
  510. ("0" + (time % 60)).substring(("0" + (time % 60)).length - 2);
  511. }
  512. return time;
  513. },
  514. },
  515. };
  516. </script>
  517. <style lang="scss" scoped>
  518. .header-box {
  519. position: fixed;
  520. width: 100%;
  521. top: 0;
  522. left: 0;
  523. z-index: 999;
  524. }
  525. .container {
  526. width: 100%;
  527. height: auto;
  528. .bookname {
  529. width: 100%;
  530. height: 60px;
  531. display: flex;
  532. align-items: center;
  533. box-sizing: border-box;
  534. padding: 0 46px;
  535. background: #f3f7fa;
  536. position: relative;
  537. z-index: 999;
  538. }
  539. .content {
  540. width: 100%;
  541. display: flex;
  542. justify-content: flex-start;
  543. align-items: flex-start;
  544. height: 100vh;
  545. overflow: auto;
  546. padding-top: 24px;
  547. &-top {
  548. padding-top: 60px;
  549. .title-box {
  550. top: 66px !important;
  551. }
  552. .content-tree-full {
  553. top: 100px !important;
  554. }
  555. }
  556. &-tree {
  557. width: 340px;
  558. height: 85vh;
  559. overflow: auto;
  560. padding: 20px 0px;
  561. border-right: 1px solid #d9d9d9;
  562. background: #fff;
  563. position: fixed;
  564. left: 0;
  565. z-index: 2;
  566. }
  567. .content-tree-full {
  568. position: fixed !important;
  569. top: 170px;
  570. left: 152px;
  571. max-height: 588px;
  572. overflow: auto;
  573. z-index: 1000;
  574. background: #fff;
  575. box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.25);
  576. border-radius: 4px;
  577. }
  578. #content-tree {
  579. // position: relative;
  580. }
  581. .moveBtn-nnpe {
  582. position: absolute;
  583. height: 100%;
  584. width: 10px;
  585. right: 0;
  586. top: 0;
  587. cursor: col-resize;
  588. }
  589. .inner {
  590. // border-left: 1px solid #d9d9d9;
  591. width: 1000px;
  592. margin: 0 auto;
  593. flex: 1;
  594. box-sizing: border-box;
  595. padding: 20px;
  596. position: relative;
  597. background: #fff;
  598. &.inner-full {
  599. margin-left: 0;
  600. }
  601. .title-box {
  602. display: flex;
  603. align-items: center;
  604. margin-bottom: 12px;
  605. padding-right: 160px;
  606. position: fixed;
  607. top: 130px;
  608. left: 64px;
  609. z-index: 1;
  610. > img {
  611. width: 40px;
  612. margin-right: 16px;
  613. cursor: pointer;
  614. }
  615. }
  616. .title {
  617. font-size: 24px;
  618. margin-bottom: 20px;
  619. line-height: 40px;
  620. margin: 0;
  621. }
  622. .has-module {
  623. display: flex;
  624. justify-content: flex-start;
  625. align-items: flex-start;
  626. &-tree {
  627. width: 340px;
  628. height: 100%;
  629. overflow: auto;
  630. padding: 20px 0px;
  631. border-right: 1px solid #d9d9d9;
  632. }
  633. .inner {
  634. // border-left: 1px solid #d9d9d9;
  635. width: 1000px;
  636. flex: 1;
  637. margin: 0 auto;
  638. box-sizing: border-box;
  639. padding: 20px;
  640. position: relative;
  641. background: #fff;
  642. .title-box {
  643. display: flex;
  644. align-items: center;
  645. margin-bottom: 12px;
  646. padding-right: 160px;
  647. position: relative;
  648. > img {
  649. width: 40px;
  650. margin-right: 16px;
  651. cursor: pointer;
  652. }
  653. }
  654. .title {
  655. font-size: 24px;
  656. margin-bottom: 20px;
  657. line-height: 40px;
  658. margin: 0;
  659. }
  660. .has-module {
  661. display: flex;
  662. justify-content: flex-start;
  663. align-items: flex-start;
  664. }
  665. .edit-btn {
  666. display: inline-block;
  667. font-size: 14px;
  668. background: #ff9900;
  669. float: right;
  670. line-height: 36px;
  671. color: #fff;
  672. width: 60px;
  673. text-align: center;
  674. border-radius: 4px;
  675. }
  676. }
  677. }
  678. }
  679. .nav-list {
  680. width: 200px;
  681. height: 40px;
  682. background: rgba(49, 212, 134, 0.2);
  683. border-radius: 240px;
  684. display: flex;
  685. justify-content: flex-start;
  686. align-items: center;
  687. padding: 0;
  688. margin: 0;
  689. margin-bottom: 10px;
  690. list-style: none;
  691. > li {
  692. height: 40px;
  693. width: 100px;
  694. text-align: center;
  695. font-style: normal;
  696. font-weight: bold;
  697. font-size: 14px;
  698. line-height: 40px;
  699. color: #19b068;
  700. cursor: pointer;
  701. &.active {
  702. background: #19b068;
  703. border-radius: 240px;
  704. color: #ffffff;
  705. }
  706. }
  707. }
  708. }
  709. .answerShow {
  710. position: absolute;
  711. right: 20px;
  712. top: 20px;
  713. width: 112px;
  714. height: 40px;
  715. background: #ffffff url("../assets/common/icon-eye-close.png") 16px center
  716. no-repeat;
  717. background-size: 16px;
  718. border: 1px solid rgba(44, 44, 44, 0.15);
  719. box-sizing: border-box;
  720. border-radius: 4px;
  721. font-size: 14px;
  722. line-height: 150%;
  723. color: #000000;
  724. padding: 9px 16px 9px 36px;
  725. cursor: pointer;
  726. z-index: 2;
  727. &.answerShowTrue {
  728. background: #f5f5f5 url("../assets/common/icon-eye-open.png") 16px center
  729. no-repeat;
  730. background-size: 16px;
  731. }
  732. }
  733. }
  734. .resule-box {
  735. width: 860px;
  736. margin: 0 auto 20px auto;
  737. > span {
  738. margin-right: 24px;
  739. }
  740. }
  741. </style>
  742. <style lang="scss">
  743. .GCLS-BOOK-Container {
  744. .screen-full {
  745. position: fixed;
  746. right: 30px;
  747. bottom: 30px;
  748. width: 48px;
  749. height: 48px;
  750. background: rgba(0, 0, 0, 0.4) url("../assets/common/icon-screenFull.png")
  751. center no-repeat;
  752. background-size: 32px;
  753. }
  754. }
  755. .title-box {
  756. .el-switch {
  757. position: absolute;
  758. top: 0;
  759. right: 0px;
  760. border: 1px solid rgba(44, 44, 44, 0.15);
  761. border-radius: 40px;
  762. height: 40px;
  763. padding: 6px 6px 6px 16px;
  764. }
  765. .el-switch__label.is-active {
  766. color: #000000;
  767. font-size: 16px;
  768. }
  769. }
  770. </style>