index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. <template>
  2. <view>
  3. <!--#ifdef APP-PLUS-->
  4. <view class="lz-status_bar">
  5. <view class="lz-top_view"></view>
  6. </view>
  7. <!--#endif-->
  8. <view class="kaoshi-head">
  9. <view class="kaoshi-head-top">
  10. <view class="kaoshi-head-left" @tap="$openrul('/pages/auth/choiceSubject/index')">
  11. <view class="kaoshi-head-kemu">{{subject.subject_name}}</view>
  12. <view class="iconfont icon-weibiaoti"></view>
  13. </view>
  14. <view class="kaoshi-head-right">
  15. <text class="iconfont icon-sousuo" @tap="gotoSearch"></text>
  16. <text class="iconfont icon-lingdang" @tap="$openrul('/pages/article/notice')"
  17. style="margin-left: 12px;"></text>
  18. </view>
  19. </view>
  20. </view>
  21. <view class="kaoshi-index-content">
  22. <view class="kaoshi-head-banner">
  23. <swiper class="swiper" :indicator-dots="swiper_config.indicatorDots" :autoplay="swiper_config.autoplay"
  24. indicator-active-color="#3c7bfc" :interval="swiper_config.interval"
  25. :duration="swiper_config.duration">
  26. <swiper-item v-for="(item, index) in swiper_list" :key="index">
  27. <view @tap="windowopen(item.url)"><img :src="item.image" /></view>
  28. </swiper-item>
  29. </swiper>
  30. </view>
  31. <view class="notice" v-if="noticeList.length > 0">
  32. <an-notice-bar :message_list="noticeList" style="width: 100%;"></an-notice-bar>
  33. </view>
  34. <view class="kaoshi-index-nav" v-if="navList && navList.length > 0">
  35. <view class="kaoshi-index-nav-flex" @tap="windowopen(item.url)" v-for="(item,index) in navList"
  36. :key="index">
  37. <image :src="item.image" class="kaoshi-index-nav-img"></image>
  38. <view class="kaoshi-index-nav-title">{{item.title}}</view>
  39. </view>
  40. </view>
  41. </view>
  42. <view class="home-title" v-if="list.length > 0">
  43. <view class="home-title-l">最新题库</view>
  44. <navigator open-type="switchTab" url="/pages/questionBank/index" hover-class="none" class="home-title-r">
  45. <view>更多</view>
  46. <view class="iconfont icon-arrow"></view>
  47. </navigator>
  48. </view>
  49. <view class="home-box">
  50. <view v-for="(item, index) in list" :key="index" class="kaoshi-tiku">
  51. <view class="kaoshi-tiku-content" @tap="goto_detail(item,'1')">
  52. <view class="kaoshi-tiku-content-flex">
  53. <view class="kaoshi-tiku-content-top">
  54. <view>{{item.name}}
  55. <view v-if="item.is_vip == 1 && !subjectVip" class="vip">
  56. <image src="../../static/img/vip.png" mode=""></image>
  57. <view>VIP</view>
  58. </view>
  59. </view>
  60. </view>
  61. </view>
  62. <view class="kaoshi-tiku-content-flex">
  63. <view class="kaoshi-tiku-content-bottom">
  64. <view class="iconfont icon-dui2"></view>
  65. <view class="pub-gray">{{item.total_num}}</view>
  66. </view>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. <template v-if="articleList.length > 0 && auth != 1">
  72. <view class="home-title">
  73. <view class="home-title-l">新闻资讯</view>
  74. <navigator open-type="navigate" url="/pages/article/index" hover-class="none" class="home-title-r">
  75. <view>更多</view>
  76. <view class="iconfont icon-arrow"></view>
  77. </navigator>
  78. </view>
  79. <view class="home-box">
  80. <view class="news-content-box">
  81. <view class="news-content">
  82. <view class="news-list" v-for="(item, index) in articleList" :key="index"
  83. @tap="gotoNoticeDetail(item)">
  84. <view class="news-flex">
  85. <image :src="item.image == '' ? '../../static/img/pic.jpg' : item.image"
  86. class="news-list-img"></image>
  87. <view class="news-list-r">
  88. <view class="news-list-title">{{item.title}}</view>
  89. <view class="news-list-time">
  90. <view>{{item.noticetime}}</view>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. </view>
  96. </view>
  97. </view>
  98. </template>
  99. <view style="height: 10px;"></view>
  100. <authVip v-if="showAuthVip" @hideAuthVip="showAuthVip = false"></authVip>
  101. </view>
  102. </template>
  103. <script>
  104. import {
  105. mapState
  106. } from 'vuex';
  107. import Error from '@/core/untils/error/index';
  108. import authVip from '@/components/authVip.vue'
  109. export default {
  110. data() {
  111. return {
  112. // #ifdef MP
  113. auth: 1,
  114. // #endif
  115. // #ifdef H5
  116. auth: 0,
  117. // #endif
  118. showAuthVip: false, //是否显示认证vip
  119. swiper_list: [], //轮播图
  120. swiper_config: {
  121. indicatorDots: true,
  122. autoplay: true,
  123. interval: 2000,
  124. duration: 500
  125. },
  126. list: [], //最新题库
  127. subList: [], //科目列表
  128. noticeList: [], //通知公告
  129. articleList: [], //新闻
  130. navList: [], //首页导航图标
  131. };
  132. },
  133. async onShow() {
  134. this.get_lunbo_list();
  135. if (this.subject.id != undefined) {
  136. this.get_tiku_list();
  137. this.canReset && this.getNoticeList()
  138. this.canReset && this.getArticleList()
  139. this.canReset = true
  140. }
  141. if (this.userinfo.user_id !== undefined) {
  142. await this.$myUserLogin.getSubvip(this.subject.id)
  143. }
  144. // #ifdef MP-WEIXIN
  145. this.getUpdate()
  146. // #endif
  147. // #ifdef MP-WEIXIN
  148. if (this.userinfo.user_id !== undefined) {
  149. this.share.path = 'pages/index/index?scene=' + this.userinfo.user_id
  150. console.log(this.userinfo, 'this.userinfo')
  151. wx.showShareMenu({
  152. withShareTicket: true,
  153. menus: ["shareAppMessage"]
  154. })
  155. } else {
  156. wx.hideShareMenu()
  157. }
  158. // #endif
  159. // #ifdef H5
  160. this.loadShare()
  161. // #endif
  162. },
  163. onLoad(option) {
  164. // #ifdef MP
  165. this.getSh()
  166. if (option.scene) {
  167. // 存储小程序邀请人
  168. uni.setStorageSync('spread_code', option.scene);
  169. console.log(option.scene, 'option.scene')
  170. }
  171. // #endif
  172. // #ifdef H5
  173. if (option.recommend) {
  174. uni.setStorageSync('recommend', option.recommend);
  175. }
  176. // #endif
  177. if (this.subject.id == undefined) {
  178. this.getSub();
  179. } else {
  180. this.getNoticeList()
  181. this.getArticleList()
  182. }
  183. this.getNavList()
  184. },
  185. computed: {
  186. ...mapState(['subject', 'userinfo', 'subjectVip'])
  187. },
  188. components: {
  189. authVip
  190. },
  191. methods: {
  192. async loadShare() {
  193. let that = this
  194. let weixinObj = require('jweixin-module');
  195. console.log(window.location.href);
  196. let res = await this.$myHttp.get({
  197. url: this.$myHttp.urlMap.getConfig + '?url=https://ks.igxys.com/h5/',
  198. data: {
  199. url: 'https://ks.igxys.com/h5/'
  200. },
  201. params: {
  202. url: 'https://ks.igxys.com/h5/'
  203. },
  204. needLogin: false,
  205. })
  206. if (res.code == 1) {
  207. // this.navList = res.data.data
  208. console.log(res, 'res')
  209. let data = res.data
  210. weixinObj.config({
  211. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  212. appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
  213. timestamp: data.timestamp, // 必填,生成签名的时间戳
  214. nonceStr: data.nonceStr, // 必填,生成签名的随机串
  215. signature: data.signature, // 必填,签名,见附录1
  216. jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  217. });
  218. weixinObj.ready((e) => {
  219. let mess;
  220. mess = {
  221. link: 'https://ks.igxys.com/h5/?recommend=' +that.userinfo.user_id, // 分享链接
  222. imgUrl: 'https://ks.igxys.com/wap/sharelogo.jpg',
  223. desc: '看完就过医学考试题库',
  224. title:'隆熹晋升平台',
  225. success:function(a) {
  226. console.log(a);
  227. },
  228. fail: function(e) {
  229. console.log(e);
  230. }
  231. }
  232. weixinObj.updateAppMessageShareData(mess); // 即将废弃updateAppMessageShareData
  233. // 分享朋友圈
  234. weixinObj.updateTimelineShareData(mess); // 即将废弃
  235. })
  236. }
  237. // let showDate = {
  238. // "img_url": "",
  239. // "img_width": "120",
  240. // "img_height": "120",
  241. // "link": "https://ks.igxys.com/h5/",
  242. // "desc": "隆熹晋升平台",
  243. // "title": "隆熹晋升平台"
  244. // }
  245. // //https://ks.igxys.com/h5/
  246. // if(this.userinfo.user_id !== undefined) {
  247. // showDate.link = 'https://ks.igxys.com/h5/' + '?recommend=' + this.userinfo.user_id
  248. // }
  249. // WeixinJSBridge.invoke('shareTimeline', showDate);
  250. },
  251. // 获取审核详情
  252. async getSh() {
  253. let res = await this.$myHttp.get({
  254. url: this.$myHttp.urlMap.sh,
  255. data: {},
  256. needLogin: false,
  257. })
  258. if (res.code == 1) {
  259. // this.navList = res.data.data
  260. console.log(res)
  261. this.auth = res.data.auth
  262. // #ifdef H5
  263. this.auth = 0
  264. // #endif
  265. }
  266. },
  267. getUpdate() {
  268. const updateManager = wx.getUpdateManager()
  269. updateManager.onCheckForUpdate(function(res) {
  270. // 请求完新版本信息的回调
  271. console.log(res.hasUpdate)
  272. })
  273. updateManager.onUpdateReady(function() {
  274. wx.showModal({
  275. title: '更新提示',
  276. content: '新版本已经准备好,是否重启应用?',
  277. success(res) {
  278. if (res.confirm) {
  279. // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
  280. updateManager.applyUpdate()
  281. }
  282. }
  283. })
  284. })
  285. updateManager.onUpdateFailed(function() {
  286. // 新版本下载失败
  287. })
  288. },
  289. //首页导航图标
  290. async getNavList() {
  291. let res = await this.$myHttp.post({
  292. url: this.$myHttp.urlMap.navList,
  293. data: {},
  294. needLogin: false,
  295. })
  296. if (res.code == 1) {
  297. this.navList = res.data.data
  298. }
  299. },
  300. //通知公告
  301. async getNoticeList() {
  302. let res = await this.$myHttp.post({
  303. url: this.$myHttp.urlMap.noticeList,
  304. data: {
  305. page: 1,
  306. limit: 10,
  307. subject_id: this.subject.id || this.subList[0].id,
  308. cate_id: 1,
  309. },
  310. needLogin: false,
  311. })
  312. if (res.code == 1) {
  313. this.noticeList = res.data.data
  314. }
  315. },
  316. //新闻
  317. async getArticleList() {
  318. let res = await this.$myHttp.post({
  319. url: this.$myHttp.urlMap.noticeList,
  320. data: {
  321. page: 1,
  322. limit: 10,
  323. subject_id: this.subject.id || this.subList[0].id,
  324. cate_id: 2,
  325. },
  326. needLogin: false,
  327. })
  328. if (res.code == 1) {
  329. this.articleList = res.data.data
  330. }
  331. },
  332. //获取科目列表
  333. async getSub() {
  334. let res = await this.$myHttp.post({
  335. url: this.$myHttp.urlMap.subjectList,
  336. data: {
  337. page: 1,
  338. limit: 0
  339. }
  340. })
  341. if (res.code === 1) {
  342. this.subList = res.data
  343. console.log(this.subList, '选择的项目555')
  344. this.$store.commit('setSubject', {
  345. subject: {
  346. id: this.subList[0].childlist[0].id,
  347. subject_name: this.subList[0].childlist[0].subject_name,
  348. price: this.subList[0].childlist[0].price
  349. }
  350. })
  351. this.get_tiku_list();
  352. }
  353. },
  354. // 轮播图
  355. async get_lunbo_list() {
  356. let res = await this.$myHttp.post({
  357. url: this.$myHttp.urlMap.swiper,
  358. data: {
  359. searchdb: {
  360. code: 'shouye'
  361. }
  362. }
  363. });
  364. if (res.code === 1) {
  365. let rows = res.data.data || [];
  366. this.swiper_list = rows;
  367. }
  368. },
  369. // 最新题库
  370. async get_tiku_list() {
  371. let res = await this.$myHttp.post({
  372. url: this.$myHttp.urlMap.unitList,
  373. data: {
  374. subject_id: this.subject.id || this.subList[0].id,
  375. unit_id: 0,
  376. page: 1,
  377. limit: 10
  378. },
  379. });
  380. if (res.code === 1) {
  381. this.list = res.data.data;
  382. }
  383. },
  384. // 题库跳转
  385. goto_detail(item, type) {
  386. if (item.total_num == 0) { //如果目录下没有题目,提示用户
  387. this.$myUtils.$prompt.showToast({
  388. icon: 'none',
  389. title: '当前目录下没有题目,请联系老师'
  390. });
  391. return
  392. }
  393. if (!this.subjectVip && item.is_vip) {
  394. if (this.$myUserLogin.getToken()) {
  395. this.showAuthVip = true
  396. return
  397. } else {
  398. Error.errorNotLoggedIn();
  399. return
  400. }
  401. }
  402. if (type == '1') {
  403. if (item.is_last == 0) {
  404. //非终极栏目,点击进入下级栏目
  405. this.$openrul('/pages/questionBank/detail/index?id=' + item.id + '&from_type=1' + '&name=' + item
  406. .name)
  407. } else if (item.is_last == 1) {
  408. if (this.$myUserLogin.getToken()) {
  409. //终极栏目,点击进入答题页
  410. this.$openrul('/pages/questionBank/questionBankAnswer/index?id=' + item.id + '&from_type=1' +
  411. '&name=' + item.name)
  412. } else {
  413. Error.errorNotLoggedIn();
  414. }
  415. }
  416. } else if (type == '2') {
  417. if (this.$myUserLogin.getToken()) {
  418. //历年真题都是终极栏目,点击进入答题页
  419. this.$openrul('/pages/questionBank/questionBankAnswer/index?id=' + item.id + '&from_type=2' +
  420. '&name=' + item.name)
  421. } else {
  422. Error.errorNotLoggedIn();
  423. }
  424. }
  425. },
  426. //跳转前需要登录
  427. navTo(url) {
  428. if (this.$myUserLogin.getToken()) {
  429. this.$openrul(url)
  430. } else {
  431. Error.errorNotLoggedIn();
  432. }
  433. },
  434. // 搜索跳转
  435. gotoSearch() {
  436. uni.navigateTo({
  437. url: '/pages/questionSearch/searchList'
  438. })
  439. },
  440. // 新闻跳转
  441. gotoNoticeDetail(item) {
  442. if (item.url == '') {
  443. uni.navigateTo({
  444. url: '/pages/article/detail?id=' + item.id + '&type=1'
  445. })
  446. } else {
  447. uni.navigateTo({
  448. url: '/pages/webview/webview?url=' + item.url + '&title=' + item.title
  449. })
  450. }
  451. },
  452. // 轮播图跳转
  453. windowopen(url) {
  454. if (url.startsWith('http')) {
  455. uni.navigateTo({
  456. url: '/pages/webview/webview?url=' + url
  457. })
  458. } else {
  459. if (url == '/pages/index/index' || url == '/pages/questionBank/index' || url ==
  460. '/pages/examination/index' ||
  461. url == '/pages/article/index' || url == '/pages/my/index') {
  462. uni.switchTab({
  463. url
  464. })
  465. } else {
  466. uni.navigateTo({
  467. url
  468. })
  469. }
  470. }
  471. }
  472. }
  473. };
  474. </script>
  475. <style>
  476. page {
  477. background-image: linear-gradient(#026aef 0, #fff 180px, #fff 200px, #f9f9f9 230px, #f9f9f9 100%);
  478. background-repeat: no-repeat;
  479. background-color: #f9f9f9;
  480. }
  481. /* 首页头部 */
  482. .kaoshi-head {
  483. background: none;
  484. position: relative;
  485. top: 0;
  486. border-bottom: none;
  487. }
  488. .kaoshi-head-top {
  489. color: #fff;
  490. line-height: 58px;
  491. }
  492. .kaoshi-head-top .kaoshi-head-left {
  493. flex: 1;
  494. display: flex;
  495. align-items: center;
  496. }
  497. .kaoshi-head-top .kaoshi-head-left .icon-weibiaoti {
  498. padding-left: 4px;
  499. font-size: 18px;
  500. }
  501. .kaoshi-head-top .kaoshi-head-kemu {
  502. font-size: 16px;
  503. text-align: center;
  504. }
  505. .kaoshi-head-top .kaoshi-head-right {
  506. width: 18%;
  507. text-align: right;
  508. }
  509. .kaoshi-head-top .kaoshi-head-right .icon-datiqia {
  510. font-size: 22px;
  511. }
  512. .kaoshi-index-content {
  513. overflow: hidden;
  514. }
  515. /* 首页轮播图 */
  516. .kaoshi-head-banner {
  517. border-radius: 10px;
  518. width: 92%;
  519. margin: 6px auto;
  520. box-shadow: 0 3px 8px rgb(0 0 0 / 11%);
  521. margin-bottom: 19px;
  522. }
  523. .kaoshi-head-banner img {
  524. width: 100%;
  525. /* height: 140px; */
  526. height: 45vw;
  527. border-radius: 10px;
  528. }
  529. .kaoshi-head-banner .uni-swiper-dot-active::before {
  530. background: #3c7bfc !important;
  531. }
  532. .kaoshi-head-banner .swiper {
  533. height: 45vw !important;
  534. }
  535. /* 首页通知 */
  536. .notice {
  537. box-sizing: border-box;
  538. display: flex;
  539. justify-content: space-between;
  540. align-items: center;
  541. width: 92%;
  542. margin: 15px auto;
  543. padding: 0 10px;
  544. border-radius: 5px;
  545. line-height: 42px;
  546. background-color: #d1e5fe;
  547. }
  548. /* 首页导航 */
  549. .kaoshi-index-nav {
  550. box-sizing: border-box;
  551. display: flex;
  552. justify-content: flex-start;
  553. align-items: center;
  554. flex-wrap: wrap;
  555. text-align: center;
  556. font-size: 14px;
  557. color: #605d70;
  558. width: 92%;
  559. margin: 0 auto;
  560. background-color: #fff;
  561. border-radius: 8px;
  562. padding-bottom: 14px;
  563. }
  564. .kaoshi-index-nav .kaoshi-index-nav-flex {
  565. width: 25%;
  566. height: 70px;
  567. padding-top: 14px;
  568. }
  569. .kaoshi-index-nav .kaoshi-index-nav-title {
  570. margin: 7px auto 0;
  571. }
  572. .kaoshi-index-nav-img {
  573. width: 38px;
  574. height: 38px;
  575. border-radius: 5px;
  576. }
  577. .home-title {
  578. width: 92%;
  579. margin: 0 auto;
  580. padding: 12px 0;
  581. display: flex;
  582. align-items: center;
  583. justify-content: space-between;
  584. }
  585. .home-title-l {
  586. display: flex;
  587. font-weight: bold;
  588. font-size: 18px;
  589. }
  590. .home-title-r {
  591. display: flex;
  592. align-items: center;
  593. color: #bbb;
  594. font-size: 14px;
  595. }
  596. .home-title-r .iconfont {
  597. font-size: 11px;
  598. }
  599. .home-box {
  600. width: 92%;
  601. margin: 0 auto;
  602. border-radius: 8px;
  603. overflow: hidden;
  604. background: #fff;
  605. }
  606. .kaoshi-tiku-content {
  607. width: 92%;
  608. margin: 0 auto;
  609. display: flex;
  610. flex-direction: column;
  611. font-size: 14px;
  612. padding: 10px 0;
  613. border-bottom: solid 1px #f5f5f5;
  614. }
  615. .kaoshi-tiku-content-flex {
  616. width: 100%;
  617. display: flex;
  618. justify-content: space-between;
  619. align-items: inherit;
  620. }
  621. .kaoshi-tiku-content .kaoshi-tiku-content-flex:first-child {
  622. padding-bottom: 6px;
  623. }
  624. .kaoshi-tiku-content .kaoshi-tiku-content-flex:last-child {
  625. font-size: 14px;
  626. }
  627. .kaoshi-tiku-content-top {
  628. display: flex;
  629. align-items: center;
  630. flex: 1;
  631. font-size: 16px;
  632. }
  633. .kaoshi-tiku-content-top img {
  634. width: 20px;
  635. height: 22px;
  636. margin-right: 10px;
  637. }
  638. .kaoshi-tiku-content-bottom {
  639. font-size: 13px;
  640. display: flex;
  641. align-items: center;
  642. }
  643. .kaoshi-tiku-content-flex .icon-dui2 {
  644. margin: 2px 2px 0 0;
  645. color: #3c7bfc;
  646. }
  647. /* 新闻资讯 */
  648. .news-content-box {
  649. background: #fff;
  650. padding: 1px 0;
  651. }
  652. .news-content {
  653. width: 94%;
  654. margin: 0 auto;
  655. }
  656. .news-flex {
  657. display: flex;
  658. align-items: flex-start;
  659. margin-bottom: 12px;
  660. }
  661. .news-list-img {
  662. width: 66px;
  663. height: 66px;
  664. border-radius: 6px;
  665. border: solid 1px #f1f1f1;
  666. }
  667. .news-list-r {
  668. margin-left: 10px;
  669. flex: 1;
  670. height: 66px;
  671. display: flex;
  672. flex-direction: column;
  673. justify-content: space-between;
  674. }
  675. .news-list-title {
  676. font-size: 16px;
  677. line-height: 21px;
  678. padding-top: 4px;
  679. text-overflow: ellipsis;
  680. display: -webkit-box;
  681. -webkit-line-clamp: 2;
  682. -webkit-box-orient: vertical;
  683. display: -moz-box;
  684. -moz-line-clamp: 2;
  685. -moz-box-orient: vertical;
  686. overflow-wrap: break-word;
  687. word-break: break-all;
  688. white-space: normal;
  689. overflow: hidden;
  690. }
  691. .news-list-time {
  692. display: flex;
  693. flex-direction: column;
  694. align-items: flex-start;
  695. color: #999;
  696. font-size: 13px;
  697. line-height: 21px;
  698. }
  699. .news-list {
  700. margin-top: 12px;
  701. border-bottom: solid 1px #f1f1f1;
  702. }
  703. .news-content .news-list:last-child {
  704. margin-bottom: 0;
  705. border-bottom: none
  706. }
  707. </style>