bookPeruseItem.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744
  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>精读课堂</a
  14. >
  15. <div class="border"></div>
  16. <p>{{ "第 " + info.batch + " 期" }}{{ info.cn_title }}</p>
  17. </div>
  18. <!-- <div class="navBar-right">
  19. <a @click="handleShare">
  20. <svg-icon icon-class="share-personal" className="icon-share"></svg-icon>
  21. <span>分享</span>
  22. </a>
  23. <a @click="handlelike">
  24. <svg-icon icon-class="like-line" className="icon-like"></svg-icon>
  25. <span>收藏</span>
  26. </a>
  27. </div> -->
  28. </div>
  29. <div class="main-top" v-if="info">
  30. <div class="main-top-inner">
  31. <el-carousel
  32. class="swiper-container"
  33. trigger="click"
  34. arrow="never"
  35. height="414px"
  36. >
  37. <!-- <el-carousel-item v-for="(item1, index) in data.imgList" :key="index"> -->
  38. <el-image
  39. class="image"
  40. :src="
  41. info.cover_img
  42. ? info.cover_img
  43. : bookType === 'baozhi'
  44. ? require('../../assets/baozhi' +
  45. (Math.floor(Math.random() * 2) + 1) +
  46. '.png')
  47. : require('../../assets/kecheng' +
  48. (Math.floor(Math.random() * 3) + 1) +
  49. '.png')
  50. "
  51. :fit="'contain'"
  52. >
  53. </el-image>
  54. <!-- </el-carousel-item> -->
  55. </el-carousel>
  56. <div class="book-info-right">
  57. <h1 class="title">{{ info.cn_title }}</h1>
  58. <!-- <b class="org">{{data.org}}</b><span class="date">2023.07.01-2023.07.21</span> -->
  59. <div class="sales-box" v-if="isBuy === 'false'">
  60. <div class="sales-left">
  61. <span>优惠价</span>
  62. <span class="OPPOSans">¥{{ info.price | cutMoneyFiter }}</span>
  63. </div>
  64. <span class="sales-right" v-if="sales >= 1000"
  65. >累计销售 {{ salesCn }}</span
  66. >
  67. </div>
  68. <!-- <div class="book-describe">
  69. <h2 class="title">{{data.describe.title}}</h2>
  70. <span class="author">{{'BY '+data.describe.author}}</span>
  71. <p class="describe">{{data.describe.describe}}</p>
  72. </div> -->
  73. <div class="info-box">
  74. <div class="info-item">
  75. <label>机构</label>
  76. <span>中报二十一世纪(北京)传媒科技有限公司</span>
  77. </div>
  78. <div class="info-item">
  79. <label>学段</label>
  80. <span>{{ info.study_phase_name }}版</span>
  81. </div>
  82. <div class="info-item">
  83. <label>期数</label>
  84. <span>{{ info.batch }} 期</span>
  85. </div>
  86. <div class="info-item">
  87. <label>有效期</label>
  88. <span>永久有效</span>
  89. </div>
  90. <div class="info-item">
  91. <label>主题</label>
  92. <span>{{ info.label }}</span>
  93. </div>
  94. </div>
  95. <div class="btn-box">
  96. <a class="continue" v-if="isBuy === 'true'" @click="handleLink"
  97. >继续学习</a
  98. >
  99. <template v-else>
  100. <a
  101. class="el-button"
  102. @click="handleChangeWay('wei')"
  103. :loading="createOrderLoading"
  104. >立即购买</a
  105. >
  106. <!-- <a class="upgrade" @click="handleChangeWay('dui')">使用兑换码</a> -->
  107. <a class="upgrade" @click="linkSubscribe">多期订阅</a>
  108. </template>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="main-center" v-if="info">
  114. <el-tabs type="card" style="margin-bottom: 24px" v-if="info.introduction">
  115. <el-tab-pane label="简介">
  116. <div v-html="info.introduction"></div>
  117. </el-tab-pane>
  118. </el-tabs>
  119. <div class="banner-box-close" v-if="bannerFlag">
  120. <a v-if="1 == 2" href="#" target="_blank">
  121. <img class="banner-item" src="../../assets/banner4.png" />
  122. </a>
  123. <img v-else class="banner-item" src="../../assets/banner4.png" />
  124. <div class="close-box">
  125. <a class="close-btn" @click="bannerFlag = false"
  126. ><i class="el-icon-close"></i
  127. ></a>
  128. <span class="close-tips">广告</span>
  129. </div>
  130. </div>
  131. </div>
  132. <el-dialog
  133. :visible.sync="paymentShow"
  134. :show-close="false"
  135. :close-on-click-modal="false"
  136. width="712px"
  137. class="bookItem-dialog"
  138. v-if="paymentShow"
  139. >
  140. <Payment
  141. :data="info"
  142. :payWay="payWay"
  143. @handleClose="handleClose"
  144. @handleSuccess="handleSuccess"
  145. :orderId="orderId"
  146. :qr_code_url="qr_code_url"
  147. :order_amount="order_amount"
  148. />
  149. </el-dialog>
  150. </div>
  151. </template>
  152. <script>
  153. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  154. //例如:import 《组件名称》from ‘《组件路径》';
  155. import Header from "../../components/Header.vue";
  156. import BookCard from "@/components/common/BookCard.vue";
  157. import Payment from "./components/Payment.vue";
  158. import TreeList from "./components/TreeList";
  159. import CourseList from "./components/CourseList.vue";
  160. import { cutMoneyFiter } from "@/utils/defined";
  161. import { getLogin, getNoToken } from "@/api/ajax";
  162. import { getToken } from "@/utils/auth";
  163. export default {
  164. //import引入的组件需要注入到对象中才能使用
  165. components: { Header, BookCard, Payment, TreeList, CourseList },
  166. props: [],
  167. filters: {
  168. cutMoneyFiter,
  169. },
  170. data() {
  171. //这里存放数据
  172. return {
  173. config: this.$route.query.headerConfig
  174. ? decodeURIComponent(this.$route.query.headerConfig)
  175. : "",
  176. LoginNavIndex: 0,
  177. userBg: "rgba(0, 0, 0, 0.24)",
  178. headerBorder: "#5C5C5C",
  179. headerBg: "#00ADEF",
  180. previousPage: "商城",
  181. tagBg: ["#C9EBFF", "#FFFAC9", "#D7C9FF"], // 标签背景色
  182. tagColor: ["#006DAA", "#AA8500", "#7849C4"], // 标签字体颜色
  183. paymentShow: false, // 支付弹窗
  184. payWay: this.$route.query.paywei ? this.$route.query.paywei : "dui",
  185. bookType: this.$route.query.cardType
  186. ? this.$route.query.cardType
  187. : "baozhi", // 书籍类型
  188. bannerFlag: true, // 是否展示广告
  189. id: this.$route.query.id ? this.$route.query.id : "",
  190. info: null, // 信息
  191. courseList: [],
  192. sales: null,
  193. salesCn: "",
  194. isBuy: "false",
  195. userMessage: getToken() ? JSON.parse(getToken()) : null,
  196. orderId: "",
  197. qr_code_url: "",
  198. pre_play_cs_item_id: "", //上次阅读课节id
  199. pre_play_index: null, // 上次阅读索引
  200. order_amount: null,
  201. createOrderLoading: false,
  202. };
  203. },
  204. //计算属性 类似于data概念
  205. computed: {},
  206. //监控data中数据变化
  207. watch: {},
  208. //方法集合
  209. methods: {
  210. // 分享
  211. handleShare() {},
  212. // 收藏
  213. handlelike() {},
  214. handleChangeWay(type) {
  215. if (!this.userMessage) {
  216. this.$refs.header.handleLogin(
  217. "/bookItem?headerConfig=" +
  218. this.$route.query.headerConfig +
  219. "&cardType=" +
  220. this.bookType +
  221. "&id=" +
  222. this.id +
  223. "&paywei=" +
  224. type,
  225. "url"
  226. );
  227. return false;
  228. }
  229. this.payWay = type;
  230. this.handleOrder();
  231. },
  232. // 关闭弹窗
  233. handleClose() {
  234. this.paymentShow = false;
  235. this.getInfo();
  236. },
  237. handleSuccess() {
  238. this.paymentShow = false;
  239. this.getInfo();
  240. },
  241. // 详情
  242. getInfo() {
  243. let MethodName = "/PaperServer/Client/Iread/GetIreadBriefInfo";
  244. let data = {
  245. id: this.id,
  246. };
  247. getLogin(MethodName, data)
  248. .then((res) => {
  249. if (res.status === 1) {
  250. this.info = res.data;
  251. }
  252. })
  253. .catch(() => {});
  254. if (this.userMessage) {
  255. getLogin("/ShopServer/Client/BookshelfQuery/GetGoodsBuyStatus", {
  256. goods_type: 3,
  257. goods_id: this.id,
  258. })
  259. .then((res) => {
  260. if (res.status === 1) {
  261. this.isBuy = res.buy_info.is_buy;
  262. this.sales = res.data.sold_count;
  263. if (this.sales < 1000) {
  264. this.salesCn = "";
  265. } else if (1000 <= this.sales && this.sales < 10000) {
  266. this.salesCn = this.sales.toString().substring(0, 1) + "000+";
  267. } else if (10000 <= this.sales && this.sales < 100000) {
  268. this.salesCn = this.sales.toString().substring(0, 1) + "万+";
  269. } else if (100000 <= this.sales && this.sales < 1000000) {
  270. this.salesCn = this.sales.toString().substring(0, 1) + "0万+";
  271. } else if (1000000 <= this.sales && this.sales < 10000000) {
  272. this.salesCn = this.sales.toString().substring(0, 1) + "00万+";
  273. } else if (10000000 <= this.sales && this.sales < 100000000) {
  274. this.salesCn = this.sales.toString().substring(0, 1) + "000万+";
  275. } else if (100000000 <= this.sales) {
  276. this.salesCn = this.sales.toString().substring(0, 1) + "亿+";
  277. }
  278. }
  279. })
  280. .catch(() => {});
  281. } else {
  282. getNoToken(
  283. "/ShopServer/Client/BookshelfQuery/GetGoodsBuyStatus",
  284. {
  285. goods_type: 3,
  286. goods_id: this.id,
  287. },
  288. "VOID"
  289. )
  290. .then((res) => {
  291. if (res.status === 1) {
  292. this.isBuy = res.buy_info.is_buy;
  293. this.sales = res.data.sold_count;
  294. if (this.sales < 1000) {
  295. this.salesCn = "";
  296. } else if (1000 <= this.sales && this.sales < 10000) {
  297. this.salesCn = this.sales.toString().substring(0, 1) + "000+";
  298. } else if (10000 <= this.sales && this.sales < 100000) {
  299. this.salesCn = this.sales.toString().substring(0, 1) + "万+";
  300. } else if (100000 <= this.sales && this.sales < 1000000) {
  301. this.salesCn = this.sales.toString().substring(0, 1) + "0万+";
  302. } else if (1000000 <= this.sales && this.sales < 10000000) {
  303. this.salesCn = this.sales.toString().substring(0, 1) + "00万+";
  304. } else if (10000000 <= this.sales && this.sales < 100000000) {
  305. this.salesCn = this.sales.toString().substring(0, 1) + "000万+";
  306. } else if (100000000 <= this.sales) {
  307. this.salesCn = this.sales.toString().substring(0, 1) + "亿+";
  308. }
  309. }
  310. })
  311. .catch(() => {});
  312. }
  313. },
  314. // 生成订单
  315. handleOrder() {
  316. this.createOrderLoading = true;
  317. let MethodName = "/ShopServer/Client/OrderManager/CreateOrder";
  318. let data = {
  319. goods_type: 3,
  320. goods_id_list: [this.id],
  321. pay_type:
  322. this.payWay === "wei"
  323. ? 3
  324. : this.payWay === "zhi"
  325. ? 4
  326. : this.payWay === "dui"
  327. ? 5
  328. : null,
  329. };
  330. getLogin(MethodName, data)
  331. .then((res) => {
  332. this.createOrderLoading = false;
  333. if (res.status === 1) {
  334. this.order_amount = res.order_amount;
  335. if (this.order_amount <= 0) {
  336. this.getInfo();
  337. } else {
  338. this.orderId = res.id;
  339. this.qr_code_url = res.qr_code_url;
  340. this.paymentShow = true;
  341. }
  342. }
  343. })
  344. .catch(() => {
  345. this.createOrderLoading = false;
  346. });
  347. // this.paymentShow = true;
  348. },
  349. // 跳转
  350. handleLink() {
  351. let url =
  352. this.LoginNavIndex +
  353. "&&&" +
  354. this.userBg +
  355. "&&&" +
  356. this.headerBorder +
  357. "&&&" +
  358. this.headerBg;
  359. this.$router.push({
  360. path: "/articlePeruseDetail",
  361. query: {
  362. headerConfig: encodeURIComponent(url),
  363. peruseId: this.id,
  364. },
  365. });
  366. },
  367. // 多期订阅
  368. linkSubscribe() {
  369. this.$router.push({
  370. path: "/subscribe",
  371. query: {
  372. name: encodeURIComponent("精读"),
  373. type: "jingdu",
  374. studyType: this.info.study_phase,
  375. studyTypeName: encodeURIComponent(this.info.study_phase_name),
  376. },
  377. });
  378. },
  379. },
  380. //生命周期 - 创建完成(可以访问当前this实例)
  381. created() {
  382. if (this.config) {
  383. let arr = this.config.split("&&&");
  384. this.LoginNavIndex = arr[0] * 1;
  385. this.userBg = arr[1] ? arr[1] : "rgba(0, 0, 0, 0.24)";
  386. this.headerBorder = arr[2] ? arr[2] : "#5C5C5C";
  387. this.headerBg = arr[3] ? arr[3] : "#00ADEF";
  388. this.previousPage = arr[4] ? arr[4] : "商城";
  389. }
  390. if (this.userMessage) {
  391. this.getInfo();
  392. if (this.$route.query.paywei) {
  393. this.handleOrder();
  394. }
  395. }
  396. },
  397. //生命周期 - 挂载完成(可以访问DOM元素)
  398. mounted() {},
  399. //生命周期-创建之前
  400. beforeCreated() {},
  401. //生命周期-挂载之前
  402. beforeMount() {},
  403. //生命周期-更新之前
  404. beforUpdate() {},
  405. //生命周期-更新之后
  406. updated() {},
  407. //生命周期-销毁之前
  408. beforeDestory() {},
  409. //生命周期-销毁完成
  410. destoryed() {},
  411. //如果页面有keep-alive缓存功能,这个函数会触发
  412. activated() {},
  413. };
  414. </script>
  415. <style lang="scss" scoped>
  416. /* @import url(); 引入css类 */
  417. .bookItem {
  418. background: #f7f8fa;
  419. min-height: 100%;
  420. .main-top {
  421. background: #ffffff;
  422. padding: 48px 0;
  423. margin-top: 56px;
  424. &-inner {
  425. width: 1200px;
  426. margin: 0 auto;
  427. display: flex;
  428. .swiper-container {
  429. width: 416px;
  430. height: 440px;
  431. text-align: center;
  432. .el-image {
  433. width: 414px;
  434. height: 414px;
  435. border: 1px solid #f3f3f3;
  436. }
  437. }
  438. .book-info-right {
  439. flex: 1;
  440. padding-left: 88px;
  441. .title {
  442. color: #2f3742;
  443. font-weight: 500;
  444. font-size: 32px;
  445. line-height: 44px;
  446. margin: 0 0 16px 0;
  447. }
  448. .org,
  449. .date {
  450. font-weight: 500;
  451. font-size: 14px;
  452. line-height: 22px;
  453. color: rgba(0, 0, 0, 0.4);
  454. }
  455. .date {
  456. margin-left: 32px;
  457. line-height: 24px;
  458. }
  459. .label-box {
  460. display: flex;
  461. flex-flow: wrap;
  462. margin: 16px 0;
  463. label {
  464. margin: 0 8px 8px 0;
  465. border-radius: 20px;
  466. padding: 4px 12px;
  467. font-weight: 400;
  468. font-size: 14px;
  469. line-height: 22px;
  470. }
  471. }
  472. .book-describe {
  473. border-top: 1px solid #e5e6eb;
  474. border-bottom: 1px solid #e5e6eb;
  475. padding: 16px 0;
  476. .title {
  477. font-weight: 500;
  478. font-size: 16px;
  479. line-height: 24px;
  480. color: #000000;
  481. margin-bottom: 8px;
  482. }
  483. .author {
  484. font-weight: 400;
  485. font-size: 12px;
  486. line-height: 20px;
  487. color: #000000;
  488. margin-bottom: 8px;
  489. display: block;
  490. }
  491. .describe {
  492. font-weight: 400;
  493. font-size: 14px;
  494. line-height: 22px;
  495. color: #000000;
  496. margin: 0;
  497. }
  498. }
  499. .price-box {
  500. padding: 20px 0 16px 0;
  501. display: flex;
  502. align-items: flex-end;
  503. .price {
  504. font-weight: 500;
  505. font-size: 32px;
  506. line-height: 40px;
  507. color: #ea5939;
  508. }
  509. .oldPrice {
  510. padding: 0 0 2px 7px;
  511. font-weight: 500;
  512. font-size: 14px;
  513. line-height: 22px;
  514. color: rgba(0, 0, 0, 0.4);
  515. text-decoration-line: line-through;
  516. }
  517. }
  518. .info-box {
  519. display: flex;
  520. flex-flow: wrap;
  521. border-bottom: 1px solid #ebebeb;
  522. margin: 24px 0;
  523. .info-item {
  524. width: 50%;
  525. margin-bottom: 15px;
  526. font-size: 14px;
  527. line-height: 22px;
  528. display: flex;
  529. label {
  530. color: #c2c2c2;
  531. font-weight: 400;
  532. margin-right: 16px;
  533. width: 58px;
  534. display: block;
  535. text-align: justify;
  536. text-justify: distribute-all-lines;
  537. text-align-last: justify;
  538. -moz-text-align-last: justify;
  539. -webkit-text-align-last: justify;
  540. }
  541. }
  542. }
  543. .btn-box {
  544. display: flex;
  545. .el-button {
  546. width: 112px;
  547. height: 40px;
  548. background: #ea5939;
  549. box-shadow: 0px 8px 16px rgba(234, 89, 57, 0.24);
  550. border-radius: 4px;
  551. font-weight: 500;
  552. font-size: 16px;
  553. color: #ffffff;
  554. border: none;
  555. }
  556. .svg-icon {
  557. margin-left: 7px;
  558. }
  559. .continue {
  560. width: 112px;
  561. height: 40px;
  562. background: #175dff;
  563. border-radius: 4px;
  564. font-weight: 500;
  565. font-size: 16px;
  566. line-height: 40px;
  567. color: rgba(255, 255, 255, 1);
  568. display: block;
  569. text-align: center;
  570. box-shadow: 0px 8px 16px rgba(23, 93, 255, 0.24);
  571. }
  572. .upgrade {
  573. margin-left: 16px;
  574. display: block;
  575. padding: 0px 24px;
  576. height: 40px;
  577. background: #e9e9e9;
  578. box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.06);
  579. border-radius: 4px;
  580. color: #595959;
  581. font-weight: 500;
  582. font-size: 16px;
  583. line-height: 40px;
  584. text-align: center;
  585. width: 130px;
  586. }
  587. }
  588. }
  589. }
  590. }
  591. .main-center {
  592. width: 1200px;
  593. margin: 0 auto;
  594. padding: 40px 0;
  595. .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
  596. border-color: #e7e7e7;
  597. }
  598. }
  599. .main-bottom {
  600. width: 1200px;
  601. margin: 0 auto;
  602. padding-bottom: 40px;
  603. &-top {
  604. display: flex;
  605. justify-content: space-between;
  606. p {
  607. margin: 0;
  608. font-weight: 500;
  609. font-size: 24px;
  610. line-height: 32px;
  611. color: #1f2c5c;
  612. font-family: initial;
  613. }
  614. .right {
  615. color: rgba(0, 0, 0, 0.88);
  616. font-weight: 400;
  617. font-size: 16px;
  618. line-height: 24px;
  619. cursor: pointer;
  620. a {
  621. margin-right: 8px;
  622. }
  623. }
  624. }
  625. }
  626. .list {
  627. margin-top: 24px;
  628. display: flex;
  629. flex-wrap: wrap;
  630. > div {
  631. width: 200px;
  632. border-radius: 8px;
  633. overflow: hidden;
  634. background: #ffffff;
  635. margin-bottom: 24px;
  636. }
  637. }
  638. }
  639. .banner-box-close {
  640. margin-top: 40px;
  641. }
  642. .sales-box {
  643. display: flex;
  644. // width: 592px;
  645. padding: 16px;
  646. border-radius: 4px;
  647. background: #f5f5f5;
  648. justify-content: space-between;
  649. align-items: flex-end;
  650. color: #adadad;
  651. font-size: 14px;
  652. font-weight: 400;
  653. line-height: 22px;
  654. .OPPOSans {
  655. margin: 0 8px 0 16px;
  656. color: #ea5939;
  657. font-size: 32px;
  658. font-weight: 500;
  659. line-height: 40px;
  660. }
  661. .old-price {
  662. color: rgba(0, 0, 0, 0.4);
  663. font-size: 14px;
  664. font-weight: 500;
  665. line-height: 22px;
  666. text-decoration: line-through;
  667. }
  668. }
  669. </style>
  670. <style lang="scss">
  671. .bookItem {
  672. .el-carousel__button {
  673. width: 8px;
  674. height: 8px;
  675. background: #d9d9d9;
  676. opacity: 1;
  677. border-radius: 4px;
  678. }
  679. .el-carousel__indicator.is-active {
  680. .el-carousel__button {
  681. background: #5e5e5e;
  682. }
  683. }
  684. .el-tabs__header {
  685. margin: 0;
  686. }
  687. .el-tab-pane {
  688. background: #f8f8f8;
  689. border: 1px solid #e7e7e7;
  690. border-top: none;
  691. padding: 24px;
  692. }
  693. .el-tabs__item {
  694. width: 160px;
  695. height: 38px;
  696. text-align: center;
  697. font-weight: 500;
  698. font-size: 14px;
  699. line-height: 38px;
  700. color: #1f2c5c;
  701. &:hover {
  702. background: #e7e7e7;
  703. }
  704. &.is-active {
  705. // background: #3459D2;
  706. // color: #EEF3FF;
  707. border-bottom: none;
  708. background: #e7e7e7;
  709. }
  710. }
  711. }
  712. .bookitem-dropdown.el-dropdown-menu {
  713. padding: 4px;
  714. .el-dropdown-menu__item {
  715. font-weight: 500;
  716. font-size: 16px;
  717. line-height: 40px;
  718. color: #000000;
  719. }
  720. .el-dropdown-menu__item:focus,
  721. .el-dropdown-menu__item:not(.is-disabled):hover {
  722. background: #fdecee;
  723. border-radius: 4px;
  724. color: #ea5939;
  725. }
  726. }
  727. .bookItem-dialog {
  728. .el-dialog__header,
  729. .el-dialog__body {
  730. padding: 0;
  731. }
  732. .el-dialog {
  733. border: 1px solid #ebebeb;
  734. box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
  735. 0px 16px 24px 2px rgba(0, 0, 0, 0.04),
  736. 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
  737. border-radius: 8px;
  738. overflow: hidden;
  739. }
  740. }
  741. </style>