bookItem.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477
  1. <template>
  2. <div class="bookItem">
  3. <Header
  4. :headerBg="headerBg"
  5. :headerBorder="headerBorder"
  6. :userBg="userBg"
  7. :LoginNavIndex="LoginNavIndex"
  8. ref="header"
  9. />
  10. <div class="navBar" v-if="info">
  11. <div class="navBar-left">
  12. <a class="goback" @click="$router.go(-1)"
  13. ><i class="el-icon-arrow-left"></i
  14. >{{ info.study_phase_name ? info.study_phase_name + "版" : "" }}</a
  15. >
  16. <div class="border"></div>
  17. <p>{{ info.name || info.iss_name }}</p>
  18. </div>
  19. <!-- <div class="navBar-right">
  20. <a @click="handleShare">
  21. <svg-icon icon-class="share-personal" className="icon-share"></svg-icon>
  22. <span>分享</span>
  23. </a>
  24. <a @click="handlelike">
  25. <svg-icon icon-class="like-line" className="icon-like"></svg-icon>
  26. <span>收藏</span>
  27. </a>
  28. </div> -->
  29. </div>
  30. <div class="main-top" v-if="info">
  31. <div class="main-top-inner">
  32. <el-carousel
  33. class="swiper-container"
  34. trigger="click"
  35. arrow="never"
  36. height="414px"
  37. >
  38. <!-- <el-carousel-item v-for="(item1, index) in data.imgList" :key="index"> -->
  39. <el-image
  40. class="image"
  41. :src="
  42. info.cover_image_url || info.iss_cover_url
  43. ? info.cover_image_url || info.iss_cover_url
  44. : bookType === 'baozhi'
  45. ? require('../../assets/baozhi' +
  46. (Math.floor(Math.random() * 2) + 1) +
  47. '.png')
  48. : require('../../assets/kecheng' +
  49. (Math.floor(Math.random() * 3) + 1) +
  50. '.png')
  51. "
  52. :fit="'cover'"
  53. >
  54. </el-image>
  55. <!-- </el-carousel-item> -->
  56. </el-carousel>
  57. <div class="book-info-right">
  58. <h1 class="title">{{ info.name || info.iss_name }}</h1>
  59. <!-- <b class="org">{{data.org}}</b><span class="date">2023.07.01-2023.07.21</span> -->
  60. <div class="sales-box" v-if="isBuy === 'false'">
  61. <div class="sales-left">
  62. <span>优惠价</span>
  63. <span class="OPPOSans"
  64. >¥{{
  65. info.hasOwnProperty("price_discount") ||
  66. info.hasOwnProperty("iss_price_sell")
  67. ? info.price_discount || info.iss_price_sell
  68. : info.price || info.iss_price_org | cutMoneyFiter
  69. }}</span
  70. >
  71. <span
  72. class="old-price"
  73. v-if="
  74. (info.hasOwnProperty('price_discount') &&
  75. info.price_discount !== info.price) ||
  76. (info.hasOwnProperty('iss_price_sell') &&
  77. info.iss_price_sell !== info.iss_price_org)
  78. "
  79. >¥{{ info.price || info.iss_price_org | cutMoneyFiter }}</span
  80. >
  81. </div>
  82. <span class="sales-right" v-if="sales >= 1000"
  83. >累计销售 {{ salesCn }}</span
  84. >
  85. </div>
  86. <div class="label-box">
  87. <label
  88. v-for="(itemL, indexL) in info.label_name_list ||
  89. info.info_tag_data"
  90. :key="indexL"
  91. :style="{
  92. background: tagBg[indexL % 3],
  93. color: tagColor[indexL % 3],
  94. }"
  95. >
  96. {{ "# " + itemL }}
  97. </label>
  98. </div>
  99. <!-- <div class="book-describe">
  100. <h2 class="title">{{data.describe.title}}</h2>
  101. <span class="author">{{'BY '+data.describe.author}}</span>
  102. <p class="describe">{{data.describe.describe}}</p>
  103. </div> -->
  104. <div
  105. class="info-box"
  106. v-if="bookType === 'baozhi' || bookType === 'huakan'"
  107. >
  108. <div class="info-item">
  109. <label>出版社</label>
  110. <span>{{
  111. info.vendor_name ? info.vendor_name : "中国日报社"
  112. }}</span>
  113. </div>
  114. <!-- <div class="info-item">
  115. <label>字数</label>
  116. <span>78291</span>
  117. </div> -->
  118. <div class="info-item">
  119. <label>发行时间</label>
  120. <span>{{ info.release_date }}</span>
  121. </div>
  122. <div class="info-item">
  123. <label>语种</label>
  124. <span>中英双语</span>
  125. </div>
  126. <div class="info-item">
  127. <label>期数</label>
  128. <span>{{ info.iss_no }} 期</span>
  129. </div>
  130. <div class="info-item">
  131. <label>学段</label>
  132. <span>{{ info.study_phase_name }}</span>
  133. </div>
  134. <!-- <div class="info-item">
  135. <label>版本</label>
  136. <span>基础版</span>
  137. </div> -->
  138. </div>
  139. <div class="info-box" v-if="bookType === 'LB'">
  140. <div class="info-item">
  141. <label>机构</label>
  142. <!-- <span>{{ info.org_name }}</span> -->
  143. <span>中报二十一世纪(北京)传媒科技有限公司</span>
  144. </div>
  145. <div class="info-item" v-if="bookType === 'LB'">
  146. <label>教师</label>
  147. <span>{{ info.teacher_name_list.join("、") }}</span>
  148. </div>
  149. <div class="info-item">
  150. <label>类型</label>
  151. <span>录播课</span>
  152. </div>
  153. <div class="info-item">
  154. <label>课时</label>
  155. <span>{{ courseList.length + " 课时" }}</span>
  156. </div>
  157. <div class="info-item">
  158. <label>有效期</label>
  159. <span>{{ info.effective_month_count + " 个月" }}</span>
  160. </div>
  161. <div class="info-item">
  162. <label>学段</label>
  163. <span>{{ info.study_phase_name }}</span>
  164. </div>
  165. </div>
  166. <div class="info-box" v-if="bookType === 'zhuanji'">
  167. <div class="info-item">
  168. <label>出版社</label>
  169. <span>{{
  170. info.vendor_name ? info.vendor_name : "中国日报社"
  171. }}</span>
  172. </div>
  173. <div class="info-item">
  174. <label>学段</label>
  175. <span>{{ info.study_phase_name }}</span>
  176. </div>
  177. <!-- <div class="info-item">
  178. <label>字数</label>
  179. <span>78291</span>
  180. </div> -->
  181. <div class="info-item">
  182. <label>发行时间</label>
  183. <span>{{ info.shelve_date }}</span>
  184. </div>
  185. <div class="info-item">
  186. <label>语种</label>
  187. <span>中英双语</span>
  188. </div>
  189. <div class="info-item" style="width: 100%">
  190. <label>期数</label>
  191. <span>{{ itemContentStr }} </span>
  192. </div>
  193. <!-- <div class="info-item">
  194. <label>版本</label>
  195. <span>基础版</span>
  196. </div> -->
  197. </div>
  198. <div class="btn-box">
  199. <template v-if="isBuy === 'false'">
  200. <a
  201. class="el-button"
  202. @click="handleChangeWay('wei')"
  203. :loading="createOrderLoading"
  204. >立即购买</a
  205. >
  206. <p v-if="bookType === 'baozhi'" class="print-tips">
  207. 温馨提示:电子报刊每篇文章打印+下载共5次机会,支持一键多篇打印,不支持一键多篇下载。
  208. </p>
  209. </template>
  210. <template v-else-if="isBuy === 'true' && bookType !== 'zhuanji'">
  211. <a class="continue" @click="handleLink">继续学习</a>
  212. <!-- <a class="upgrade" @click="handleChangeWay('dui')">使用兑换码</a> -->
  213. <a
  214. class="upgrade"
  215. v-if="bookType === 'baozhi' || bookType === 'huakan'"
  216. @click="linkSubscribe"
  217. >多期订阅</a
  218. >
  219. </template>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. <div class="main-center" v-if="info">
  225. <el-tabs
  226. type="card"
  227. style="margin-bottom: 24px"
  228. v-if="info.intro || info.iss_note"
  229. >
  230. <el-tab-pane label="简介">
  231. <div v-html="info.intro || info.iss_note"></div>
  232. </el-tab-pane>
  233. </el-tabs>
  234. <el-tabs type="card" v-if="bookType !== 'huakan'">
  235. <!-- <el-tab-pane :label="bookType==='course'?'课程简介':'简介'">
  236. </el-tab-pane> -->
  237. <el-tab-pane label="目录" v-if="bookType === 'baozhi'">
  238. <tree-list
  239. :data="issueChnList"
  240. :isBuy="isBuy === 'true'"
  241. :headerBg="headerBg"
  242. :headerBorder="headerBorder"
  243. :userBg="userBg"
  244. :LoginNavIndex="LoginNavIndex"
  245. :cardType="bookType"
  246. >
  247. </tree-list>
  248. </el-tab-pane>
  249. <!-- <el-tab-pane label="目录" v-if="bookType==='huakan'">
  250. <tree-list
  251. :data="data.treeLists"
  252. :isBuy="isBuy==='true'"
  253. :headerBg="headerBg"
  254. :headerBorder="headerBorder"
  255. :userBg="userBg"
  256. :LoginNavIndex="LoginNavIndex"
  257. :cardType="bookType">
  258. </tree-list>
  259. </el-tab-pane> -->
  260. <el-tab-pane label="课程目录" v-if="bookType === 'LB'">
  261. <course-list
  262. :data="courseList"
  263. :isBuy="isBuy === 'true'"
  264. :headerBg="headerBg"
  265. :headerBorder="headerBorder"
  266. :userBg="userBg"
  267. :LoginNavIndex="LoginNavIndex"
  268. :cardType="info.type"
  269. >
  270. </course-list>
  271. </el-tab-pane>
  272. <el-tab-pane label="内容" v-if="bookType === 'zhuanji'">
  273. <BookCard
  274. :item="item"
  275. class="item"
  276. v-for="(item, index) in itemList"
  277. :key="index + 'todayNew'"
  278. />
  279. </el-tab-pane>
  280. </el-tabs>
  281. <div class="banner-box-close" v-if="bannerFlag">
  282. <a v-if="1 == 2" href="#" target="_blank">
  283. <img class="banner-item" src="../../assets/banner4.png" />
  284. </a>
  285. <img v-else class="banner-item" src="../../assets/banner4.png" />
  286. <div class="close-box">
  287. <a class="close-btn" @click="bannerFlag = false"
  288. ><i class="el-icon-close"></i
  289. ></a>
  290. <span class="close-tips">广告</span>
  291. </div>
  292. </div>
  293. </div>
  294. <el-dialog
  295. :visible.sync="paymentShow"
  296. :show-close="false"
  297. :close-on-click-modal="false"
  298. width="712px"
  299. class="bookItem-dialog"
  300. v-if="paymentShow"
  301. >
  302. <Payment
  303. :data="info"
  304. :payWay="payWay"
  305. @handleClose="handleClose"
  306. :orderId="orderId"
  307. :qr_code_url="qr_code_url"
  308. :order_amount="order_amount"
  309. @handleSuccess="handleSuccess"
  310. />
  311. </el-dialog>
  312. </div>
  313. </template>
  314. <script>
  315. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  316. //例如:import 《组件名称》from ‘《组件路径》';
  317. import Header from "../../components/Header.vue";
  318. import BookCard from "@/components/common/BookCard.vue";
  319. import Payment from "./components/Payment.vue";
  320. import TreeList from "./components/TreeList";
  321. import CourseList from "./components/CourseList.vue";
  322. import { cutMoneyFiter } from "@/utils/defined";
  323. import { getLogin, getNoToken } from "@/api/ajax";
  324. import { getToken } from "@/utils/auth";
  325. export default {
  326. //import引入的组件需要注入到对象中才能使用
  327. components: { Header, BookCard, Payment, TreeList, CourseList },
  328. props: [],
  329. filters: {
  330. cutMoneyFiter,
  331. },
  332. data() {
  333. //这里存放数据
  334. return {
  335. config: this.$route.query.headerConfig
  336. ? decodeURIComponent(this.$route.query.headerConfig)
  337. : "",
  338. LoginNavIndex: 0,
  339. userBg: "rgba(0, 0, 0, 0.24)",
  340. headerBorder: "#5C5C5C",
  341. headerBg: "#00ADEF",
  342. previousPage: "商城",
  343. data: {
  344. navTitle: "第 815 期 Celebrating new King",
  345. title: "第 815 期 Celebrating new King",
  346. org: "二十一世纪英文报",
  347. tagList: ["中英双语", "经典读物", "初中必读"],
  348. imgList: [
  349. require("../../assets/img1.png"),
  350. require("../../assets/bookcard-image.png"),
  351. ],
  352. describe: {
  353. title: "Bring books up to date",
  354. author: "TEENS",
  355. describe:
  356. "Should childrenn read the original or adapted version? 英国童书再版遭大量删改引争议 词数 372 测试见IV版 建议阅读时间 5分钟 Puffin ...",
  357. },
  358. price: "3.9",
  359. oldPrice: "5.99",
  360. isBuy: this.$route.query.isBuy ? this.$route.query.isBuy : false,
  361. treeList: [
  362. {
  363. number: "1",
  364. title: "FRONTPAGE",
  365. children: [
  366. {
  367. number: "1.1",
  368. title: "Meeting Foreigners at an Airport",
  369. },
  370. ],
  371. },
  372. {
  373. number: "2",
  374. title: "OUR WORLD",
  375. children: [
  376. {
  377. number: "2.1",
  378. title: "Out in the fields",
  379. },
  380. {
  381. number: "2.2",
  382. title: "IN BRIEF 新闻速览",
  383. },
  384. {
  385. number: "2.3",
  386. title: "XI’S WORDS 英语学习",
  387. },
  388. {
  389. number: "2.4",
  390. title: "WORLD LENS 图行天下",
  391. },
  392. {
  393. number: "2.5",
  394. title: "4,200",
  395. },
  396. ],
  397. },
  398. {
  399. number: "3",
  400. title: "SCIENCE STUDY",
  401. children: [
  402. {
  403. number: "3.1",
  404. title: "Listened to by aliens",
  405. },
  406. {
  407. number: "3.2",
  408. title: "Wearable mushrooms",
  409. },
  410. {
  411. number: "3.3",
  412. title: "Lend a helping fin",
  413. },
  414. ],
  415. },
  416. {
  417. number: "4",
  418. title: "READING & WRITING",
  419. children: [
  420. {
  421. number: "4.1",
  422. title: "What’s the word 短文填空",
  423. },
  424. {
  425. number: "4.2",
  426. title: "任务型阅读:我的身体我做主",
  427. },
  428. ],
  429. },
  430. ],
  431. treeLists: [
  432. {
  433. chn_name: "Nature",
  434. chn_idx: 0,
  435. arts: [
  436. {
  437. id: "i21a160948",
  438. art_title: "I have a super ‘mouth’",
  439. en_flag: 1,
  440. art_status: 1,
  441. chn_item: "FRONTPAGE",
  442. art_idx: 0,
  443. art_author: "TEENS",
  444. },
  445. ],
  446. },
  447. {
  448. chn_name: "My works",
  449. chn_idx: 1,
  450. arts: [
  451. {
  452. id: "i21a160954",
  453. art_title: "My works",
  454. en_flag: 1,
  455. art_status: 1,
  456. chn_item: "OUR WORLD",
  457. art_idx: 1,
  458. art_author: "TEENS",
  459. },
  460. ],
  461. },
  462. {
  463. chn_name: "Daily words",
  464. chn_idx: 2,
  465. arts: [
  466. {
  467. id: "i21a160962",
  468. art_title: "Happy birthday",
  469. en_flag: 1,
  470. art_status: 9,
  471. chn_item: "SCHOOL TIME",
  472. art_idx: 0,
  473. art_author: "TEENS",
  474. },
  475. ],
  476. },
  477. {
  478. chn_name: "Have a go",
  479. chn_idx: 3,
  480. arts: [
  481. {
  482. id: "i21a160964",
  483. art_title: "P1 Have a go",
  484. en_flag: 1,
  485. art_status: 9,
  486. chn_item: "MAGIC WORLD",
  487. art_idx: 0,
  488. art_author: "TEENS",
  489. },
  490. {
  491. id: "i21a160965",
  492. art_title: "Listen and write",
  493. en_flag: 1,
  494. art_status: 9,
  495. chn_item: "MAGIC WORLD",
  496. art_idx: 1,
  497. art_author: "TEENS",
  498. },
  499. {
  500. id: "i21a160966",
  501. art_title: "P6 Have a go",
  502. en_flag: 1,
  503. art_status: 1,
  504. chn_item: "MAGIC WORLD",
  505. art_idx: 2,
  506. art_author: "TEENS",
  507. },
  508. {
  509. id: "i21a160967",
  510. art_title: "P4 Have a go",
  511. en_flag: 1,
  512. art_status: 9,
  513. chn_item: "MAGIC WORLD",
  514. art_idx: 3,
  515. art_author: "TEENS",
  516. },
  517. ],
  518. },
  519. {
  520. chn_name: "Little Hikers",
  521. chn_idx: 4,
  522. arts: [
  523. {
  524. id: "i21a160968",
  525. art_title: "Beach full of shells",
  526. en_flag: 1,
  527. art_status: 9,
  528. chn_item: "SCIENCE STUDY",
  529. art_idx: 0,
  530. art_author: "TEENS",
  531. },
  532. ],
  533. },
  534. {
  535. chn_name: "Cartoons",
  536. chn_idx: 5,
  537. arts: [
  538. {
  539. id: "i21a160971",
  540. art_title: "Bud likes mud",
  541. en_flag: 1,
  542. art_status: 9,
  543. chn_item: "READING FUN",
  544. art_idx: 0,
  545. art_author: "TEENS",
  546. },
  547. ],
  548. },
  549. {
  550. chn_name: "Game bar",
  551. chn_idx: 6,
  552. arts: [
  553. {
  554. id: "i21a160972",
  555. art_title: "GAME BAR",
  556. en_flag: 1,
  557. art_status: 9,
  558. chn_item: "WORLD CUP FOCUS",
  559. art_idx: 0,
  560. art_author: "TEENS",
  561. },
  562. ],
  563. },
  564. {
  565. chn_name: "Word lab",
  566. chn_idx: 7,
  567. arts: [
  568. {
  569. id: "i21a160973",
  570. art_title: "Word lab",
  571. en_flag: 1,
  572. art_status: 9,
  573. chn_item: "LEARNING",
  574. art_idx: 0,
  575. art_author: "TEENS",
  576. },
  577. ],
  578. },
  579. {
  580. chn_name: "Photos",
  581. chn_idx: 8,
  582. arts: [
  583. {
  584. id: "i21a160975",
  585. art_title: "Happy festival",
  586. en_flag: 1,
  587. art_status: 9,
  588. chn_item: "READING & WRITING",
  589. art_idx: 0,
  590. art_author: "TEENS",
  591. },
  592. ],
  593. },
  594. {
  595. chn_name: "World wows",
  596. chn_idx: 9,
  597. arts: [
  598. {
  599. id: "i21a160978",
  600. art_title: "World wows",
  601. en_flag: 1,
  602. art_status: 9,
  603. chn_item: "EXTRA CREDIT",
  604. art_idx: 0,
  605. art_author: "TEENS",
  606. },
  607. ],
  608. },
  609. ],
  610. },
  611. guessList: [
  612. {
  613. src: require("../../assets/bookcard-image.png"),
  614. name: "名称名称名称名称名称名称名称名称名称名称名称名称",
  615. price: "3.00",
  616. oldprice: "3.00",
  617. author: "作者",
  618. score: 3,
  619. progress: "90%",
  620. },
  621. {
  622. src: require("../../assets/bookcard-image.png"),
  623. name: "名称名称名称名称名称名称名称名称名称名称名称名称",
  624. price: "3.00",
  625. oldprice: "3.00",
  626. author: "作者",
  627. score: 3,
  628. },
  629. {
  630. src: require("../../assets/bookcard-image.png"),
  631. name: "名称名称名称名称名称名称名称名称名称名称名称名称",
  632. price: "3.00",
  633. oldprice: "3.00",
  634. author: "作者",
  635. score: 3,
  636. },
  637. {
  638. src: require("../../assets/bookcard-image.png"),
  639. name: "名称名称名称名称名称名称名称名称名称名称名称名称",
  640. price: "3.00",
  641. oldprice: "3.00",
  642. author: "作者",
  643. score: 3,
  644. },
  645. {
  646. src: require("../../assets/bookcard-image.png"),
  647. name: "名称名称名称名称名称名称名称名称名称名称名称名称",
  648. price: "3.00",
  649. oldprice: "3.00",
  650. author: "作者",
  651. score: 3,
  652. },
  653. ],
  654. tagBg: ["#C9EBFF", "#FFFAC9", "#D7C9FF"], // 标签背景色
  655. tagColor: ["#006DAA", "#AA8500", "#7849C4"], // 标签字体颜色
  656. paymentShow: false, // 支付弹窗
  657. payWay: this.$route.query.paywei ? this.$route.query.paywei : "dui",
  658. bookType: this.$route.query.cardType
  659. ? this.$route.query.cardType
  660. : "baozhi", // 书籍类型
  661. bannerFlag: true, // 是否展示广告
  662. id: this.$route.query.id ? this.$route.query.id : "",
  663. info: null, // 信息
  664. courseList: [],
  665. sales: null,
  666. salesCn: "",
  667. isBuy: "false",
  668. userMessage: getToken() ? JSON.parse(getToken()) : null,
  669. orderId: "",
  670. qr_code_url: "",
  671. pre_play_cs_item_id: "", //上次阅读课节id
  672. pre_play_index: null, // 上次阅读索引
  673. issueChnList: [],
  674. order_amount: null,
  675. createOrderLoading: false,
  676. studyObj: {
  677. 1: "学前",
  678. 11: "小学",
  679. 20: "初中",
  680. 21: "初一",
  681. 22: "初二",
  682. 23: "初三",
  683. 30: "高中",
  684. 31: "高一",
  685. 32: "高二",
  686. 33: "高三",
  687. 100: "全学段",
  688. },
  689. itemList: [],
  690. itemContentStr: "",
  691. };
  692. },
  693. //计算属性 类似于data概念
  694. computed: {},
  695. //监控data中数据变化
  696. watch: {
  697. $route(to, from) {
  698. if (to.query.id) {
  699. window.location.reload();
  700. }
  701. },
  702. },
  703. //方法集合
  704. methods: {
  705. // 分享
  706. handleShare() {},
  707. // 收藏
  708. handlelike() {},
  709. handleChangeWay(type) {
  710. if (!this.userMessage) {
  711. this.$refs.header.handleLogin(
  712. "/bookItem?headerConfig=" +
  713. this.$route.query.headerConfig +
  714. "&cardType=" +
  715. this.bookType +
  716. "&id=" +
  717. this.id +
  718. "&paywei=" +
  719. type,
  720. "url"
  721. );
  722. return false;
  723. }
  724. this.payWay = type;
  725. this.handleOrder();
  726. },
  727. // 关闭弹窗
  728. handleClose() {
  729. this.paymentShow = false;
  730. this.getInfo();
  731. },
  732. handleSuccess() {
  733. this.paymentShow = false;
  734. this.getInfo();
  735. },
  736. // 详情
  737. getInfo() {
  738. let MethodName = "/CourseServer/Client/LBCourseQuery/GetLBCourseInfo";
  739. let data = null;
  740. if (this.bookType === "LB") {
  741. data = {
  742. id: this.id,
  743. is_contain_cs_item: "true",
  744. cs_item_sort_mode: "ASCE",
  745. };
  746. } else if (this.bookType === "baozhi") {
  747. MethodName = "/PaperServer/Client/Issue/GetIssueBriefInfo";
  748. data = {
  749. id: this.id,
  750. };
  751. } else if (this.bookType === "huakan") {
  752. MethodName = "/PaperServer/Client/PicIssue/GetIssueBriefInfo";
  753. data = {
  754. id: this.id,
  755. };
  756. } else if (this.bookType === "zhuanji") {
  757. MethodName = "/ShopServer/Client/AlbumQuery/GetAlbumInfo";
  758. data = {
  759. id: this.id,
  760. };
  761. }
  762. getLogin(MethodName, data)
  763. .then((res) => {
  764. if (res.status === 1) {
  765. if (this.bookType === "LB") {
  766. this.info = res.lb_course;
  767. if (res.my_play_record.pre_play_cs_item_id) {
  768. this.pre_play_cs_item_id =
  769. res.my_play_record.pre_play_cs_item_id;
  770. }
  771. this.courseList = this.handleCourseLength(res.cs_item_list);
  772. } else if (
  773. this.bookType === "baozhi" ||
  774. this.bookType === "huakan"
  775. ) {
  776. this.info = res.data;
  777. this.issueChnList = res.data.chn_art_data;
  778. } else if (this.bookType === "zhuanji") {
  779. this.info = res.album;
  780. this.info.study_phase_name = this.studyObj[res.album.study_phase];
  781. }
  782. }
  783. })
  784. .catch(() => {});
  785. if (this.userMessage) {
  786. getLogin("/ShopServer/Client/BookshelfQuery/GetGoodsBuyStatus", {
  787. goods_type:
  788. this.bookType === "LB"
  789. ? 0
  790. : this.bookType === "baozhi"
  791. ? 2
  792. : this.bookType === "huakan"
  793. ? 4
  794. : this.bookType === "zhuanji"
  795. ? 20
  796. : null,
  797. goods_id: this.id,
  798. })
  799. .then((res) => {
  800. if (res.status === 1) {
  801. this.isBuy = res.buy_info.is_buy;
  802. this.sales = res.data.sold_count;
  803. if (this.sales < 1000) {
  804. this.salesCn = "";
  805. } else if (1000 <= this.sales && this.sales < 10000) {
  806. this.salesCn = this.sales.toString().substring(0, 1) + "000+";
  807. } else if (10000 <= this.sales && this.sales < 100000) {
  808. this.salesCn = this.sales.toString().substring(0, 1) + "万+";
  809. } else if (100000 <= this.sales && this.sales < 1000000) {
  810. this.salesCn = this.sales.toString().substring(0, 1) + "0万+";
  811. } else if (1000000 <= this.sales && this.sales < 10000000) {
  812. this.salesCn = this.sales.toString().substring(0, 1) + "00万+";
  813. } else if (10000000 <= this.sales && this.sales < 100000000) {
  814. this.salesCn = this.sales.toString().substring(0, 1) + "000万+";
  815. } else if (100000000 <= this.sales) {
  816. this.salesCn = this.sales.toString().substring(0, 1) + "亿+";
  817. }
  818. }
  819. })
  820. .catch(() => {});
  821. } else {
  822. getNoToken(
  823. "/ShopServer/Client/BookshelfQuery/GetGoodsBuyStatus",
  824. {
  825. goods_type:
  826. this.bookType === "LB"
  827. ? 0
  828. : this.bookType === "baozhi"
  829. ? 2
  830. : this.bookType === "huakan"
  831. ? 4
  832. : null,
  833. goods_id: this.id,
  834. },
  835. "VOID"
  836. )
  837. .then((res) => {
  838. if (res.status === 1) {
  839. this.isBuy = res.buy_info.is_buy;
  840. this.sales = res.data.sold_count;
  841. if (this.sales < 1000) {
  842. this.salesCn = "";
  843. } else if (1000 <= this.sales && this.sales < 10000) {
  844. this.salesCn = this.sales.toString().substring(0, 1) + "000+";
  845. } else if (10000 <= this.sales && this.sales < 100000) {
  846. this.salesCn = this.sales.toString().substring(0, 1) + "万+";
  847. } else if (100000 <= this.sales && this.sales < 1000000) {
  848. this.salesCn = this.sales.toString().substring(0, 1) + "0万+";
  849. } else if (1000000 <= this.sales && this.sales < 10000000) {
  850. this.salesCn = this.sales.toString().substring(0, 1) + "00万+";
  851. } else if (10000000 <= this.sales && this.sales < 100000000) {
  852. this.salesCn = this.sales.toString().substring(0, 1) + "000万+";
  853. } else if (100000000 <= this.sales) {
  854. this.salesCn = this.sales.toString().substring(0, 1) + "亿+";
  855. }
  856. }
  857. })
  858. .catch(() => {});
  859. }
  860. },
  861. // 处理授课时长 小于1分钟的按1分钟 之后个位数四舍五入
  862. handleCourseLength(list) {
  863. let listArr = JSON.parse(JSON.stringify(list));
  864. listArr.forEach((item, index) => {
  865. if (item.file_media_duration) {
  866. if (item.file_media_duration < 60) {
  867. item.timeCn = "1分钟";
  868. } else if (item.file_media_duration < 600) {
  869. item.timeCn = Math.ceil(item.file_media_duration / 60) + "分钟";
  870. } else {
  871. let first =
  872. Math.ceil(item.file_media_duration / 60)
  873. .toString()
  874. .substring(
  875. 0,
  876. Math.ceil(item.file_media_duration / 60).toString().length - 1
  877. ) * 1;
  878. let last =
  879. Math.ceil(item.file_media_duration / 60)
  880. .toString()
  881. .substring(
  882. Math.ceil(item.file_media_duration / 60).toString().length - 1
  883. ) * 1;
  884. if (last < 5) {
  885. item.timeCn = first + "0分钟";
  886. } else {
  887. item.timeCn = first + 1 + "0分钟";
  888. }
  889. }
  890. } else {
  891. item.timeCn = "-";
  892. }
  893. if (item.id === this.pre_play_cs_item_id) {
  894. this.pre_play_index = index;
  895. }
  896. });
  897. return listArr;
  898. },
  899. // 生成订单
  900. handleOrder() {
  901. this.createOrderLoading = true;
  902. let MethodName = "/ShopServer/Client/OrderManager/CreateOrder";
  903. let data = {
  904. goods_type:
  905. this.bookType === "LB"
  906. ? 0
  907. : this.bookType === "baozhi"
  908. ? 2
  909. : this.bookType === "huakan"
  910. ? 4
  911. : this.bookType === "zhuanji"
  912. ? 20
  913. : null,
  914. goods_id_list: [this.id],
  915. pay_type:
  916. this.payWay === "wei"
  917. ? 3
  918. : this.payWay === "zhi"
  919. ? 4
  920. : this.payWay === "dui"
  921. ? 5
  922. : null,
  923. };
  924. getLogin(MethodName, data)
  925. .then((res) => {
  926. this.createOrderLoading = false;
  927. if (res.status === 1) {
  928. this.order_amount = res.order_amount;
  929. if (this.order_amount <= 0) {
  930. this.getInfo();
  931. } else {
  932. this.orderId = res.id;
  933. this.qr_code_url = res.qr_code_url;
  934. this.paymentShow = true;
  935. }
  936. }
  937. })
  938. .catch(() => {
  939. this.createOrderLoading = false;
  940. });
  941. // this.paymentShow = true;
  942. },
  943. // 跳转
  944. async handleLink() {
  945. let url =
  946. this.LoginNavIndex +
  947. "&&&" +
  948. this.userBg +
  949. "&&&" +
  950. this.headerBorder +
  951. "&&&" +
  952. this.headerBg;
  953. let MethodNames = "/ShopServer/Client/BookshelfQuery/SetMyGoodsIsLooked";
  954. let datas = {
  955. goods_id: this.$route.query.id,
  956. goods_type: 0,
  957. };
  958. if (this.bookType === "baozhi" || this.info.goods_type === 2) {
  959. let articleId = "";
  960. datas.goods_type = 2;
  961. await getLogin(MethodNames, datas)
  962. .then((res) => {})
  963. .catch(() => {});
  964. if (this.info.last_read_art_id) {
  965. articleId = this.info.last_read_art_id;
  966. } else {
  967. for (let i = 0; i < this.issueChnList.length; i++) {
  968. if (articleId) {
  969. break;
  970. }
  971. if (
  972. this.issueChnList[i].arts &&
  973. this.issueChnList[i].arts.length > 0
  974. ) {
  975. for (let j = 0; j < this.issueChnList[i].arts.length; j++) {
  976. if (this.issueChnList[i].arts[j].id) {
  977. articleId = this.issueChnList[i].arts[j].id;
  978. break;
  979. }
  980. }
  981. }
  982. }
  983. }
  984. let MethodName = "/PaperServer/Client/Issue/SaveLastReadArtInIss";
  985. let data = {
  986. iss_id: this.$route.query.id,
  987. art_id: articleId,
  988. };
  989. await getLogin(MethodName, data).then((res) => {});
  990. this.$router.push({
  991. path: "/articleDetail",
  992. query: {
  993. headerConfig: encodeURIComponent(url),
  994. id: articleId,
  995. iss_id: this.$route.query.id,
  996. },
  997. });
  998. } else if (this.bookType === "huakan" || this.info.goods_type === 4) {
  999. datas.goods_type = 4;
  1000. await getLogin(MethodNames, datas)
  1001. .then((res) => {})
  1002. .catch(() => {});
  1003. this.$router.push({
  1004. path: "/magazineDetail",
  1005. query: {
  1006. headerConfig: encodeURIComponent(url),
  1007. iss_id: this.$route.query.id,
  1008. },
  1009. });
  1010. } else if (this.info.goods_type === 3) {
  1011. datas.goods_type = 3;
  1012. await getLogin(MethodNames, datas)
  1013. .then((res) => {})
  1014. .catch(() => {});
  1015. this.$router.push({
  1016. path: "/bookPeruseItem",
  1017. query: {
  1018. headerConfig: encodeURIComponent(url),
  1019. cardType: "jingdu",
  1020. id: this.$route.query.id,
  1021. },
  1022. });
  1023. } else if (this.bookType === "huakan" || this.info.goods_type === 4) {
  1024. datas.goods_type = 4;
  1025. await getLogin(MethodNames, datas)
  1026. .then((res) => {})
  1027. .catch(() => {});
  1028. this.$router.push({
  1029. path: "/magazineDetail",
  1030. query: {
  1031. headerConfig: encodeURIComponent(url),
  1032. iss_id: this.$route.query.id,
  1033. },
  1034. });
  1035. } else {
  1036. datas.goods_type = 0;
  1037. await getLogin(MethodNames, datas)
  1038. .then((res) => {})
  1039. .catch(() => {});
  1040. this.$router.push({
  1041. path: this.info.type === 1 ? "/courseDetail" : "/videoDetail",
  1042. query: {
  1043. headerConfig: encodeURIComponent(url),
  1044. index: this.pre_play_index,
  1045. id: this.id,
  1046. },
  1047. });
  1048. }
  1049. },
  1050. // 多期订阅
  1051. linkSubscribe() {
  1052. this.$router.push({
  1053. path: "/subscribe",
  1054. query: {
  1055. name: encodeURIComponent("报纸"),
  1056. type: this.bookType,
  1057. studyType: this.info.study_phase,
  1058. studyTypeName: encodeURIComponent(this.info.study_phase_name),
  1059. },
  1060. });
  1061. },
  1062. // 专辑列表
  1063. getIssList() {
  1064. let MethodName =
  1065. "/ShopServer/Client/AlbumQuery/PageQueryAlbumContentItemList";
  1066. let data = {
  1067. album_id: this.id,
  1068. page_capacity: 50,
  1069. cur_page: 1,
  1070. };
  1071. getLogin(MethodName, data)
  1072. .then((res) => {
  1073. if (res.status === 1) {
  1074. res.content_item_list.forEach((item) => {
  1075. item.type = item.goods_type;
  1076. });
  1077. this.itemList = res.content_item_list;
  1078. this.itemContentStr = res.content_item_list
  1079. .map((item) => item.name)
  1080. .join("; ");
  1081. }
  1082. })
  1083. .catch(() => {});
  1084. },
  1085. },
  1086. //生命周期 - 创建完成(可以访问当前this实例)
  1087. created() {
  1088. if (this.config) {
  1089. let arr = this.config.split("&&&");
  1090. this.LoginNavIndex = arr[0] * 1;
  1091. this.userBg = arr[1] ? arr[1] : "rgba(0, 0, 0, 0.24)";
  1092. this.headerBorder = arr[2] ? arr[2] : "#5C5C5C";
  1093. this.headerBg = arr[3] ? arr[3] : "#00ADEF";
  1094. this.previousPage = arr[4] ? arr[4] : "商城";
  1095. }
  1096. this.getInfo();
  1097. if (this.$route.query.paywei) {
  1098. this.handleOrder();
  1099. }
  1100. if (this.bookType === "zhuanji") {
  1101. this.getIssList();
  1102. }
  1103. },
  1104. //生命周期 - 挂载完成(可以访问DOM元素)
  1105. mounted() {},
  1106. //生命周期-创建之前
  1107. beforeCreated() {},
  1108. //生命周期-挂载之前
  1109. beforeMount() {},
  1110. //生命周期-更新之前
  1111. beforUpdate() {},
  1112. //生命周期-更新之后
  1113. updated() {},
  1114. //生命周期-销毁之前
  1115. beforeDestory() {},
  1116. //生命周期-销毁完成
  1117. destoryed() {},
  1118. //如果页面有keep-alive缓存功能,这个函数会触发
  1119. activated() {},
  1120. };
  1121. </script>
  1122. <style lang="scss" scoped>
  1123. /* @import url(); 引入css类 */
  1124. .bookItem {
  1125. background: #f7f8fa;
  1126. min-height: 100%;
  1127. .main-top {
  1128. background: #ffffff;
  1129. padding: 48px 0;
  1130. margin-top: 56px;
  1131. &-inner {
  1132. width: 1200px;
  1133. margin: 0 auto;
  1134. display: flex;
  1135. .swiper-container {
  1136. width: 416px;
  1137. height: 440px;
  1138. text-align: center;
  1139. .el-image {
  1140. width: 297px;
  1141. height: 414px;
  1142. border: 1px solid #f3f3f3;
  1143. }
  1144. }
  1145. .book-info-right {
  1146. flex: 1;
  1147. padding-left: 88px;
  1148. .title {
  1149. color: #2f3742;
  1150. font-weight: 500;
  1151. font-size: 32px;
  1152. line-height: 44px;
  1153. margin: 0 0 16px 0;
  1154. }
  1155. .org,
  1156. .date {
  1157. font-weight: 500;
  1158. font-size: 14px;
  1159. line-height: 22px;
  1160. color: rgba(0, 0, 0, 0.4);
  1161. }
  1162. .date {
  1163. margin-left: 32px;
  1164. line-height: 24px;
  1165. }
  1166. .label-box {
  1167. display: flex;
  1168. flex-flow: wrap;
  1169. margin: 16px 0;
  1170. label {
  1171. margin: 0 8px 8px 0;
  1172. border-radius: 20px;
  1173. padding: 4px 12px;
  1174. font-weight: 400;
  1175. font-size: 14px;
  1176. line-height: 22px;
  1177. }
  1178. }
  1179. .book-describe {
  1180. border-top: 1px solid #e5e6eb;
  1181. border-bottom: 1px solid #e5e6eb;
  1182. padding: 16px 0;
  1183. .title {
  1184. font-weight: 500;
  1185. font-size: 16px;
  1186. line-height: 24px;
  1187. color: #000000;
  1188. margin-bottom: 8px;
  1189. }
  1190. .author {
  1191. font-weight: 400;
  1192. font-size: 12px;
  1193. line-height: 20px;
  1194. color: #000000;
  1195. margin-bottom: 8px;
  1196. display: block;
  1197. }
  1198. .describe {
  1199. font-weight: 400;
  1200. font-size: 14px;
  1201. line-height: 22px;
  1202. color: #000000;
  1203. margin: 0;
  1204. }
  1205. }
  1206. .price-box {
  1207. padding: 20px 0 16px 0;
  1208. display: flex;
  1209. align-items: flex-end;
  1210. .price {
  1211. font-weight: 500;
  1212. font-size: 32px;
  1213. line-height: 40px;
  1214. color: #ea5939;
  1215. }
  1216. .oldPrice {
  1217. padding: 0 0 2px 7px;
  1218. font-weight: 500;
  1219. font-size: 14px;
  1220. line-height: 22px;
  1221. color: rgba(0, 0, 0, 0.4);
  1222. text-decoration-line: line-through;
  1223. }
  1224. }
  1225. .info-box {
  1226. display: flex;
  1227. flex-flow: wrap;
  1228. border-bottom: 1px solid #ebebeb;
  1229. margin-bottom: 24px;
  1230. .info-item {
  1231. width: 50%;
  1232. margin-bottom: 15px;
  1233. font-size: 14px;
  1234. line-height: 22px;
  1235. display: flex;
  1236. label {
  1237. color: #c2c2c2;
  1238. font-weight: 400;
  1239. margin-right: 16px;
  1240. width: 58px;
  1241. display: block;
  1242. text-align: justify;
  1243. text-justify: distribute-all-lines;
  1244. text-align-last: justify;
  1245. -moz-text-align-last: justify;
  1246. -webkit-text-align-last: justify;
  1247. }
  1248. }
  1249. }
  1250. .btn-box {
  1251. display: flex;
  1252. align-items: center;
  1253. gap: 10px;
  1254. .el-button {
  1255. width: 112px;
  1256. height: 40px;
  1257. background: #ea5939;
  1258. box-shadow: 0px 8px 16px rgba(234, 89, 57, 0.24);
  1259. border-radius: 4px;
  1260. font-weight: 500;
  1261. font-size: 16px;
  1262. color: #ffffff;
  1263. border: none;
  1264. }
  1265. .svg-icon {
  1266. margin-left: 7px;
  1267. }
  1268. .continue {
  1269. width: 112px;
  1270. height: 40px;
  1271. background: #175dff;
  1272. border-radius: 4px;
  1273. font-weight: 500;
  1274. font-size: 16px;
  1275. line-height: 40px;
  1276. color: rgba(255, 255, 255, 1);
  1277. display: block;
  1278. text-align: center;
  1279. box-shadow: 0px 8px 16px rgba(23, 93, 255, 0.24);
  1280. }
  1281. .upgrade {
  1282. margin-left: 16px;
  1283. display: block;
  1284. padding: 0px 24px;
  1285. height: 40px;
  1286. background: #e9e9e9;
  1287. box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.06);
  1288. border-radius: 4px;
  1289. color: #595959;
  1290. font-weight: 500;
  1291. font-size: 16px;
  1292. line-height: 40px;
  1293. text-align: center;
  1294. width: 130px;
  1295. }
  1296. .print-tips {
  1297. margin: 0;
  1298. color: #ea5939;
  1299. font-size: 12px;
  1300. }
  1301. }
  1302. }
  1303. }
  1304. }
  1305. .main-center {
  1306. width: 1200px;
  1307. margin: 0 auto;
  1308. padding: 40px 0;
  1309. .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
  1310. border-color: #e7e7e7;
  1311. }
  1312. }
  1313. .main-bottom {
  1314. width: 1200px;
  1315. margin: 0 auto;
  1316. padding-bottom: 40px;
  1317. &-top {
  1318. display: flex;
  1319. justify-content: space-between;
  1320. p {
  1321. margin: 0;
  1322. font-weight: 500;
  1323. font-size: 24px;
  1324. line-height: 32px;
  1325. color: #1f2c5c;
  1326. font-family: initial;
  1327. }
  1328. .right {
  1329. color: rgba(0, 0, 0, 0.88);
  1330. font-weight: 400;
  1331. font-size: 16px;
  1332. line-height: 24px;
  1333. cursor: pointer;
  1334. a {
  1335. margin-right: 8px;
  1336. }
  1337. }
  1338. }
  1339. }
  1340. .list {
  1341. margin-top: 24px;
  1342. display: flex;
  1343. flex-wrap: wrap;
  1344. > div {
  1345. width: 200px;
  1346. border-radius: 8px;
  1347. overflow: hidden;
  1348. background: #ffffff;
  1349. margin-bottom: 24px;
  1350. }
  1351. }
  1352. }
  1353. .banner-box-close {
  1354. margin-top: 40px;
  1355. }
  1356. .sales-box {
  1357. display: flex;
  1358. // width: 592px;
  1359. padding: 16px;
  1360. border-radius: 4px;
  1361. background: #f5f5f5;
  1362. justify-content: space-between;
  1363. align-items: flex-end;
  1364. color: #adadad;
  1365. font-size: 14px;
  1366. font-weight: 400;
  1367. line-height: 22px;
  1368. .OPPOSans {
  1369. margin: 0 8px 0 16px;
  1370. color: #ea5939;
  1371. font-size: 32px;
  1372. font-weight: 500;
  1373. line-height: 40px;
  1374. }
  1375. .old-price {
  1376. color: rgba(0, 0, 0, 0.4);
  1377. font-size: 14px;
  1378. font-weight: 500;
  1379. line-height: 22px;
  1380. text-decoration: line-through;
  1381. }
  1382. }
  1383. .item {
  1384. width: 200px;
  1385. flex-shrink: 0;
  1386. border-radius: 8px;
  1387. overflow: hidden;
  1388. background: #ffffff;
  1389. &:hover {
  1390. box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
  1391. }
  1392. }
  1393. :deep .el-tab-pane {
  1394. display: flex;
  1395. gap: 24px 36px;
  1396. flex-flow: wrap;
  1397. }
  1398. </style>
  1399. <style lang="scss">
  1400. .bookItem {
  1401. .el-carousel__button {
  1402. width: 8px;
  1403. height: 8px;
  1404. background: #d9d9d9;
  1405. opacity: 1;
  1406. border-radius: 4px;
  1407. }
  1408. .el-carousel__indicator.is-active {
  1409. .el-carousel__button {
  1410. background: #5e5e5e;
  1411. }
  1412. }
  1413. .el-tabs__header {
  1414. margin: 0;
  1415. }
  1416. .el-tab-pane {
  1417. background: #f8f8f8;
  1418. border: 1px solid #e7e7e7;
  1419. border-top: none;
  1420. padding: 24px;
  1421. }
  1422. .el-tabs__item {
  1423. width: 160px;
  1424. height: 38px;
  1425. text-align: center;
  1426. font-weight: 500;
  1427. font-size: 14px;
  1428. line-height: 38px;
  1429. color: #1f2c5c;
  1430. &:hover {
  1431. background: #e7e7e7;
  1432. }
  1433. &.is-active {
  1434. // background: #3459D2;
  1435. // color: #EEF3FF;
  1436. border-bottom: none;
  1437. background: #e7e7e7;
  1438. }
  1439. }
  1440. }
  1441. .bookitem-dropdown.el-dropdown-menu {
  1442. padding: 4px;
  1443. .el-dropdown-menu__item {
  1444. font-weight: 500;
  1445. font-size: 16px;
  1446. line-height: 40px;
  1447. color: #000000;
  1448. }
  1449. .el-dropdown-menu__item:focus,
  1450. .el-dropdown-menu__item:not(.is-disabled):hover {
  1451. background: #fdecee;
  1452. border-radius: 4px;
  1453. color: #ea5939;
  1454. }
  1455. }
  1456. .bookItem-dialog {
  1457. .el-dialog__header,
  1458. .el-dialog__body {
  1459. padding: 0;
  1460. }
  1461. .el-dialog {
  1462. border: 1px solid #ebebeb;
  1463. box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
  1464. 0px 16px 24px 2px rgba(0, 0, 0, 0.04),
  1465. 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
  1466. border-radius: 8px;
  1467. overflow: hidden;
  1468. }
  1469. }
  1470. </style>