top.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818
  1. <template>
  2. <div id="top" :class="$store.state.TENANT_NANE == '200459300052468'?'top22':'top11'">
  3. <div class="n_box">
  4. <div class="left">
  5. <div class="tab_main">
  6. <header>
  7. <div :class="active == 1 ? 'active_tab' : ''">课程导航</div>
  8. <!-- <div :class="active == 2 ? 'active_tab' : ''">报考指导</div> -->
  9. </header>
  10. <div class="content_tab scroll_style">
  11. <div class="tab_li" v-for="(item, index) in typeList" :key="index">
  12. <div class="tops">
  13. <span>{{ item.educationName }}</span>
  14. <i class="el-icon-arrow-right"></i>
  15. </div>
  16. <ul>
  17. <li
  18. v-for="(items, indexs) in item.businessList"
  19. :key="indexs"
  20. v-show="indexs < 4"
  21. >
  22. {{ items.aliasName }}
  23. </li>
  24. <li
  25. v-if="$store.state.TENANT_NANE == '680980002459417532'"
  26. @click="goLink('https://cranesystem.gdcic.net:8080/')"
  27. >
  28. 建筑施工特种作业人员<span
  29. v-if="item.educationName == '考前培训'"
  30. >(建筑电工、司索工、施工升降机)</span
  31. >
  32. </li>
  33. <div style="clear:both;"></div>
  34. </ul>
  35. <div class="ri_p">
  36. <h4>{{ typeList[index].educationName }}</h4>
  37. <div class="fgx" style="margin:12px 0px;"></div>
  38. <ul class="scroll_style">
  39. <li
  40. v-for="(it, ix) in typeList[index].businessList"
  41. :key="ix"
  42. @click="goCourse(it)"
  43. >
  44. {{ it.aliasName }}
  45. </li>
  46. <li
  47. v-if="$store.state.TENANT_NANE == '680980002459417532'"
  48. @click="goLink('https://cranesystem.gdcic.net:8080/')"
  49. >
  50. 建筑施工特种作业人员<span
  51. v-if="typeList[index].educationName == '考前培训'"
  52. >(建筑电工、司索工、施工升降机)</span
  53. >
  54. </li>
  55. <div style="clear:both;"></div>
  56. </ul>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="swiper">
  62. <swiper
  63. v-if="swiperOptions.bannerList.length > 0"
  64. :options="swiperOptions"
  65. >
  66. <swiper-slide
  67. v-for="(item, index) in swiperOptions.bannerList"
  68. v-bind:key="index"
  69. @click.native="swiperJump(item)"
  70. >
  71. <img :src="$tools.splitImgHost(item.adverUrl)" alt="" />
  72. </swiper-slide>
  73. <div class="swiper-pagination" slot="pagination"></div>
  74. </swiper>
  75. </div>
  76. </div>
  77. <div class="login">
  78. <template v-if="!userInfo">
  79. <h2 class="title">账号登录注册</h2>
  80. <p class="value">获取海量优质课程</p>
  81. <img class="ggImg" src="@/assets/new1/zshktj.png" alt="" />
  82. <div class="btn" @click="$refs.login.openBox()">登录/注册</div>
  83. </template>
  84. <template v-else>
  85. <header class="header_user">
  86. <div>
  87. <img :src="$tools.splitImgHost(userInfo.avatar)" alt="" />
  88. <span>{{ userInfo.realname }}</span>
  89. </div>
  90. <div>
  91. <span
  92. @click="go('/person-center/my-info')"
  93. style="cursor: pointer;"
  94. >个人中心</span
  95. >
  96. <i class="el-icon-arrow-right"></i>
  97. </div>
  98. </header>
  99. <div class="header_li">
  100. <div
  101. @click="go('/person-center/my-course')"
  102. style="cursor: pointer;"
  103. >
  104. <img src="@/assets/kc.png" alt="" />
  105. <p>课程</p>
  106. </div>
  107. <div @click="go('/person-center/my-bank')" style="cursor: pointer;">
  108. <img src="@/assets/tk.png" alt="" />
  109. <p>题库</p>
  110. </div>
  111. <div
  112. @click="go('/person-center/my-order')"
  113. style="cursor: pointer;"
  114. >
  115. <img src="@/assets/dd.png" alt="" />
  116. <p>订单</p>
  117. </div>
  118. </div>
  119. <div class="fgx" style="width: 100%;opacity: 0.5;"></div>
  120. <div class="f_box" v-if="recordList.goodsId">
  121. <div class="btnsy">上次播放</div>
  122. <div class="title" @click="goLast">{{ recordList.goodsName }}</div>
  123. <div class="remark">
  124. <span
  125. >已学{{
  126. toFixed(
  127. (recordList.videoCurrentTime / recordList.durationTime) *
  128. 100
  129. )
  130. }}%</span
  131. >
  132. <span>{{ recordList.date }}</span>
  133. </div>
  134. </div>
  135. </template>
  136. </div>
  137. </div>
  138. <login ref="login"></login>
  139. <RebuildModal
  140. ref="rebuildModal"
  141. @rebuildSubmit="rebuildSubmit($event)"
  142. ></RebuildModal>
  143. </div>
  144. </template>
  145. <script>
  146. import login from "@/components/login";
  147. import RebuildModal from "@/components/rebuildModal";
  148. import { swiper, swiperSlide } from "vue-awesome-swiper";
  149. import "swiper/swiper-bundle.css";
  150. import { mapGetters } from "vuex";
  151. export default {
  152. components: {
  153. swiper,
  154. swiperSlide,
  155. login,RebuildModal
  156. },
  157. data() {
  158. return {
  159. recordList: {},
  160. active: 1,
  161. typeList: [],
  162. swiperOptions: {
  163. bannerList: [],
  164. loop: true,
  165. observer: true,
  166. observeParents: true,
  167. speed: 300,
  168. autoplayDisableOnInteraction: false,
  169. autoplayStopOnLast: false,
  170. autoplay: {
  171. delay: 1000,
  172. disableOnInteraction: false
  173. },
  174. // 显示分页
  175. pagination: {
  176. el: ".swiper-pagination",
  177. clickable: true //允许分页点击跳转
  178. },
  179. // 设置点击箭头
  180. navigation: {
  181. nextEl: ".swiper-button-next",
  182. prevEl: ".swiper-button-prev"
  183. }
  184. } //轮播
  185. };
  186. },
  187. computed: {
  188. ...mapGetters(["userInfo"]),
  189. toFixed: function() {
  190. return function(num) {
  191. if (num) {
  192. let str = String(num).indexOf(".");
  193. if (str != -1) {
  194. return +num.toFixed(2);
  195. } else {
  196. return num;
  197. }
  198. } else {
  199. return 0;
  200. }
  201. };
  202. }
  203. },
  204. watch: {
  205. userInfo: {
  206. handler(newVal, oldVal) {
  207. this.getRecord();
  208. }
  209. }
  210. },
  211. mounted() {
  212. this.advertisingList();
  213. this.educationTypeList();
  214. this.getRecord();
  215. },
  216. methods: {
  217. /**
  218. * 播放记录
  219. */
  220. getRecord() {
  221. this.recordList = {};
  222. if (this.userInfo) {
  223. this.$request
  224. .studRrecordListUserRecord({
  225. pageNum: 1,
  226. pageSize: 1
  227. })
  228. .then(res => {
  229. if (res.rows.length) {
  230. this.recordList = res.rows[0];
  231. }
  232. });
  233. }
  234. },
  235. go(path, query) {
  236. this.$router.push({
  237. path,
  238. query
  239. });
  240. },
  241. goLast() {
  242. if (this.recordList.goodsType == 6) {
  243. this.go("/my-live-detail/" + this.recordList.goodsId, {
  244. gradeId: this.recordList.gradeId,
  245. orderGoodsId: this.recordList.orderGoodsId,
  246. courseId: this.recordList.courseId
  247. });
  248. } else if (this.recordList.goodsType == 1) {
  249. this.canJump(this.recordList).then(res => {
  250. this.$router.push({
  251. path: `/my-course-detail/${this.recordList.goodsId}`,
  252. query: {
  253. gradeId: this.recordList.gradeId,
  254. orderGoodsId: this.recordList.orderGoodsId,
  255. }
  256. });
  257. })
  258. }
  259. },
  260. canJump(item) {
  261. return new Promise(resolve => {
  262. this.$request
  263. .orderInfo({
  264. orderGoodsId: item.orderGoodsId
  265. })
  266. .then(async res => {
  267. let items = res.data;
  268. let currentTime = this.$tools.timest();
  269. if (items.interfaceAccountId > 0) {
  270. //学习账号已开通
  271. if (items.learnStatus == 1) {
  272. //跳转第三方h5
  273. const confirmText = [
  274. "您的学习账号已经开通,请按照步骤操作,进行学习。",
  275. "1.点击【跳转学习网址】按钮",
  276. "2.打开学习网址后,选择【个人用户】进行登录",
  277. "(1)账号:您个人的身份证号码",
  278. "(2)密码:身份证号码,再加111111"
  279. ];
  280. const newDatas = [];
  281. const h = this.$createElement;
  282. for (const i in confirmText) {
  283. newDatas.push(h("p", null, confirmText[i]));
  284. }
  285. this.$confirm(h("div", null, newDatas), "温馨提示", {
  286. confirmButtonText: "跳转学习网址",
  287. cancelButtonText: "关闭",
  288. closeOnClickModal: false,
  289. closeOnPressEscape: false,
  290. distinguishCancelAndClose: false,
  291. showClose: false
  292. })
  293. .then(_ => {
  294. window.open("http://admin.zhujianpeixun.com/", "_blank");
  295. })
  296. .catch(_ => {});
  297. return;
  298. } else {
  299. this.$message({
  300. type: "warning",
  301. message:
  302. "您的学习账号未开通,请稍后再尝试,有疑问,请联系020-87085982!"
  303. });
  304. return;
  305. }
  306. }
  307. // //内部系统
  308. // if (items.interfacePushId > 0 && items.officialStatus != 1) {
  309. // this.$message({
  310. // type: "warning",
  311. // message:
  312. // "机构正在为您报名中,请耐心等待,有疑问请联系020-87085982!",
  313. // });
  314. // return;
  315. // }
  316. if (items.goodsType !== 6) {
  317. if (
  318. this.sysTime <= items.serviceStartTime ||
  319. this.sysTime >= items.serviceEndTime
  320. ) {
  321. this.$message({
  322. type: "warning",
  323. message: "不在学习服务期,不能进入学习"
  324. });
  325. return;
  326. }
  327. if (
  328. (items.classStartTime &&
  329. this.sysTime <= items.classStartTime) ||
  330. (items.classEndTime && this.sysTime >= items.classEndTime)
  331. ) {
  332. this.$message({
  333. type: "warning",
  334. message: "不在班级有效期,不能进入学习"
  335. });
  336. return;
  337. }
  338. if (items.learningStatus == 2) {
  339. this.$message({
  340. type: "warning",
  341. message: "开放学习时间待定,不能进入学习"
  342. });
  343. return;
  344. }
  345. if (items.classStatus == 0) {
  346. this.$message({
  347. type: "warning",
  348. message: "尚未开班,不能进入学习"
  349. });
  350. return;
  351. }
  352. if (
  353. items.learningStatus == 3 &&
  354. this.sysTime < items.learningTimeStart
  355. ) {
  356. this.$message({
  357. type: "warning",
  358. message: "不在开放学习时间,不能进入学习"
  359. });
  360. return;
  361. }
  362. let rebuildStatus = await this.courseGoodsRebuildStatus(
  363. items.goodsId,
  364. items.gradeId
  365. );
  366. if (rebuildStatus == 0) {
  367. this.$refs.rebuildModal.showModal(items);
  368. return;
  369. }
  370. }
  371. // if (item.educationName == "继续教育") {
  372. this.$request
  373. .lockLockStatus({
  374. action: "jxjy"
  375. })
  376. .then(res => {
  377. //有其他端在操作,不能学习
  378. this.$message({
  379. type: "warning",
  380. message: res.msg
  381. });
  382. })
  383. .catch(err => {
  384. //可以学习
  385. this.$request
  386. .courseCourseList({
  387. pageNum: 1,
  388. pageSize: 1,
  389. goodsId: items.goodsId,
  390. gradeId: items.gradeId
  391. })
  392. .then(res => {
  393. if (res.rows.length) {
  394. resolve(res);
  395. } else {
  396. this.$message({
  397. type: "warning",
  398. message: "课程内暂无可以学习的科目"
  399. });
  400. }
  401. });
  402. });
  403. // } else {
  404. // this.$request
  405. // .courseCourseList({
  406. // pageNum: 1,
  407. // pageSize: 1,
  408. // goodsId: items.goodsId,
  409. // gradeId: items.gradeId,
  410. // })
  411. // .then((res) => {
  412. // if (res.rows.length) {
  413. // resolve(res);
  414. // } else {
  415. // this.$message({
  416. // type: "warning",
  417. // message: "课程内暂无可以学习的科目",
  418. // });
  419. // }
  420. // });
  421. // }
  422. });
  423. });
  424. },
  425. goCourse(item) {
  426. // if (item.topicId) {
  427. // this.$router.push({
  428. // path: "/goodsTopic",
  429. // query: {
  430. // topicId: item.topicId
  431. // }
  432. // });
  433. // return;
  434. // }
  435. this.$router.push({
  436. path: "/course-list",
  437. query: {
  438. educationId: item.educationId ? item.educationId : item.id || "",
  439. projectId: item.projectId || "",
  440. businessId: item.educationId ? item.id : ""
  441. }
  442. });
  443. },
  444. educationTypeList() {
  445. this.$request.educationTypeList().then(res => {
  446. this.typeList = res.rows || [];
  447. this.typeList.forEach(async (item, index) => {
  448. const A = await this.$request.businessList({ educationId: item.id });
  449. item.businessList = A.rows.filter(items => items.aliasName);
  450. });
  451. });
  452. },
  453. swiperJump(swiper) {
  454. if (swiper.jumpType == 1) {
  455. //无跳转
  456. return;
  457. } else if (swiper.jumpType == 2) {
  458. //url
  459. window.open(swiper.jumpUrl, "_blank");
  460. } else if (swiper.jumpType == 3) {
  461. //内部接口
  462. this.$router.push({
  463. path: swiper.jumpUrl
  464. });
  465. }
  466. },
  467. goLink(path) {
  468. window.open(path);
  469. },
  470. advertisingList() {
  471. this.$request
  472. .advertisinghomeLocationList({
  473. platform: 2, //1小程序2PC网站
  474. status: 1,
  475. locationKey: "home-banner" //首页轮播KEY
  476. })
  477. .then(res => {
  478. /**
  479. * 如果存在-调用轮播图列表
  480. */
  481. if (res.data.length) {
  482. this.$request
  483. .advertisingList({ locationId: res.data[0].locationId })
  484. .then(result => {
  485. this.swiperOptions.autoplay.delay =
  486. res.data[0].intervalTime * 1000;
  487. this.swiperOptions.bannerList = result.rows;
  488. });
  489. }
  490. });
  491. }
  492. }
  493. };
  494. </script>
  495. <style lang="scss" scoped>
  496. .scroll_style {
  497. &::-webkit-scrollbar {
  498. width: 5px;
  499. height: 9px;
  500. display: none;
  501. }
  502. /*定义滚动条轨道 内阴影+圆角*/
  503. &::-webkit-scrollbar-track {
  504. background-color: inherit;
  505. border: none;
  506. /* margin: 6px; */
  507. border-radius: 10px;
  508. /* -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
  509. background-color: #F5F5F5; */
  510. }
  511. /*定义滑块 内阴影+圆角*/
  512. &::-webkit-scrollbar-thumb {
  513. border-radius: 10px;
  514. position: relative;
  515. right: 2px;
  516. /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/
  517. background-color: #c6c6cd;
  518. width: 6px;
  519. }
  520. }
  521. .top11{
  522. background: url("../../assets/new1/banner.png");
  523. }
  524. .top22{
  525. background: url("../../assets/new1/banner2.png");
  526. }
  527. #top {
  528. height: 600px;
  529. // background: url("../../assets/new1/banner.png");
  530. position: relative;
  531. .n_box {
  532. position: absolute;
  533. width: 1200px;
  534. height: 400px;
  535. top: 126px;
  536. left: 50%;
  537. transform: translateX(-50%);
  538. display: flex;
  539. align-items: center;
  540. & > .left {
  541. flex: 1;
  542. background-color: #fff;
  543. border-radius: 4px;
  544. overflow: hidden;
  545. height: 100%;
  546. position: relative;
  547. .tab_main {
  548. backdrop-filter: blur(10px);
  549. width: 300px;
  550. height: 400px;
  551. z-index: 10;
  552. position: absolute;
  553. top: 0;
  554. left: 0;
  555. background-color: rgba(0, 0, 0, 0.85);
  556. & > header {
  557. display: flex;
  558. align-items: center;
  559. height: 50px;
  560. color: #fff;
  561. user-select: none;
  562. & > div {
  563. font-size: 16px;
  564. flex: 1;
  565. text-align: center;
  566. height: 48px;
  567. line-height: 48px;
  568. cursor: pointer;
  569. font-weight: 400;
  570. border-bottom: 2px solid #eeeeee50;
  571. &:hover {
  572. border-color: rgb(0, 122, 255);
  573. font-weight: bold;
  574. }
  575. // border-bottom: 2px solid #eee;
  576. }
  577. & > .active_tab {
  578. border-color: rgb(0, 122, 255);
  579. font-weight: bold;
  580. }
  581. }
  582. & > .content_tab {
  583. height: 350px;
  584. overflow: auto;
  585. & > .tab_li {
  586. padding: 16px 0px;
  587. margin: 0px;
  588. color: #fff;
  589. border-bottom: 1px solid rgb(86, 89, 92);
  590. &:hover {
  591. color: #007aff !important;
  592. }
  593. & > .ri_p {
  594. visibility: hidden;
  595. position: absolute;
  596. background-color: #fff;
  597. top: 0px;
  598. left: 300px;
  599. width: 580px;
  600. height: 400px;
  601. // transition: all 0.3s;
  602. opacity: 0;
  603. padding: 15px 30px 0px;
  604. display: flex;
  605. flex-direction: column;
  606. h4 {
  607. font-weight: bold;
  608. color: #007aff;
  609. font-size: 16px;
  610. }
  611. ul {
  612. overflow: auto;
  613. > li {
  614. user-select: none;
  615. cursor: pointer;
  616. float: left;
  617. margin: 0px 36px 20px 0px;
  618. color: #007aff;
  619. &:hover {
  620. font-weight: bold;
  621. }
  622. }
  623. }
  624. }
  625. &:hover .ri_p {
  626. visibility: visible;
  627. opacity: 1;
  628. }
  629. &:last-child {
  630. border-bottom: none;
  631. }
  632. & > .tops {
  633. padding: 0px 20px;
  634. user-select: none;
  635. display: flex;
  636. align-items: center;
  637. justify-content: space-between;
  638. margin-bottom: 14px;
  639. font-weight: bold;
  640. }
  641. & > ul {
  642. padding: 0px 20px;
  643. & > li {
  644. margin: 0px 10px 6px 0px;
  645. float: left;
  646. user-select: none;
  647. }
  648. }
  649. }
  650. }
  651. }
  652. }
  653. & > .login {
  654. margin-left: 20px;
  655. border-radius: 4px;
  656. overflow: hidden;
  657. background-color: rgba(0, 0, 0, 0.5);
  658. backdrop-filter: blur(10px);
  659. width: 300px;
  660. height: 100%;
  661. display: flex;
  662. flex-direction: column;
  663. align-items: center;
  664. & > .title {
  665. font-size: 18px;
  666. font-weight: bold;
  667. color: #fff;
  668. margin-top: 50px;
  669. margin-bottom: 20px;
  670. }
  671. & > .value {
  672. font-size: 14px;
  673. color: #fff;
  674. margin-bottom: 20px;
  675. }
  676. & > .ggImg {
  677. border-radius: 14px;
  678. overflow: hidden;
  679. margin-bottom: 20px;
  680. width: 211px;
  681. height: 120px;
  682. background-color: #fff;
  683. }
  684. & > .btn {
  685. user-select: none;
  686. cursor: pointer;
  687. width: 211px;
  688. border-radius: 100px;
  689. color: #fff;
  690. background-color: rgb(0, 122, 255);
  691. text-align: center;
  692. height: 30px;
  693. line-height: 30px;
  694. transition: all 0.2s;
  695. &:hover {
  696. background-color: rgb(2, 106, 244);
  697. }
  698. }
  699. & > .header_user {
  700. display: flex;
  701. align-items: center;
  702. justify-content: space-between;
  703. width: 100%;
  704. padding: 30px;
  705. padding-top: 25px;
  706. & > div {
  707. display: flex;
  708. align-items: center;
  709. & > img {
  710. width: 40px;
  711. height: 40px;
  712. margin-right: 6px;
  713. overflow: hidden;
  714. border-radius: 50%;
  715. }
  716. & > span {
  717. color: #fff;
  718. margin-right: 6px;
  719. }
  720. & > i {
  721. color: #fff;
  722. }
  723. }
  724. }
  725. & > .header_li {
  726. width: 100%;
  727. display: flex;
  728. align-items: center;
  729. justify-content: space-between;
  730. padding: 0px 30px;
  731. & > div {
  732. color: #fff;
  733. & > img {
  734. width: 60px;
  735. height: 60px;
  736. overflow: hidden;
  737. border-radius: 50%;
  738. margin-bottom: 15px;
  739. }
  740. & > p {
  741. text-align: center;
  742. }
  743. }
  744. }
  745. & > .f_box {
  746. user-select: none;
  747. padding: 20px;
  748. color: #fff;
  749. width: 100%;
  750. & > .btnsy {
  751. display: inline-block;
  752. border-radius: 14px;
  753. padding: 4px 8px;
  754. border: 1px solid #fff;
  755. margin-bottom: 20px;
  756. }
  757. & > .title {
  758. margin-bottom: 15px;
  759. cursor: pointer;
  760. &:hover {
  761. color: #409eff;
  762. }
  763. }
  764. & > .remark {
  765. display: flex;
  766. align-items: center;
  767. justify-content: space-between;
  768. margin-bottom: 10px;
  769. }
  770. }
  771. }
  772. }
  773. }
  774. .swiper-slide {
  775. cursor: pointer;
  776. height: 400px;
  777. img {
  778. width: 100%;
  779. height: 100%;
  780. }
  781. }
  782. .swiper-pagination {
  783. text-align: right;
  784. padding-right: 24px;
  785. /deep/ .swiper-pagination-bullet {
  786. background: rgba(255, 255, 255, 0.4);
  787. &-active {
  788. background: rgba(255, 255, 255, 1);
  789. }
  790. }
  791. }
  792. .fgx {
  793. margin-top: 30px;
  794. height: 1px;
  795. background-color: #eee;
  796. }
  797. </style>