bookItem.vue 42 KB

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