searchInfo.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. <template>
  2. <view>
  3. <u-sticky :offsetTop="0" :customNavHeight='0' class="searchtop">
  4. <view class="searchtop-box x-bc">
  5. <image class="backicon" src="@/static/image/black_back.png" mode="aspectFill" @click="$navBack"></image>
  6. <u-search :showAction="true" actionText="搜索" v-model="keyword" @search="search" @custom="search"></u-search>
  7. </view>
  8. <!-- <u-tabs class="tabs" :list="list1" :current="current" lineWidth="48rpx" lineHeight="6rpx" lineColor="#2583EB" :activeStyle="activeStyle"
  9. itemStyle="font-family: PingFang SC;font-weight: 400;font-size: 28rpx;color: #757575;padding:30rpx 36rpx" @click="handleTab">
  10. </u-tabs> -->
  11. </u-sticky>
  12. <view class="search-res">
  13. <view v-if="current != 0">
  14. <mescroll-body ref="mescrollRef" :style="{height:height,minHeight:minHeight}" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  15. <view class="box" v-if="current==1">
  16. <view class="hothall" v-for="(item, index) in dataList" :key="index" @click="navTo('/pages/course/info?courseId='+item.courseId)">
  17. <image class="video-img" :src="item.imgUrl"></image>
  18. <view class="hothall-infobox">
  19. <view class="hothall-info">
  20. <image :src="item.secondImg" mode="aspectFit"></image>
  21. <view>
  22. <view class="hothall-title">{{item.courseName}}</view>
  23. <view class="hothall-desc">{{item.description}}
  24. </view>
  25. </view>
  26. <view v-if="item.isIntegral!=1" class="vip">VIP</view>
  27. </view>
  28. <view class="tagbox">
  29. <block v-if="item.tags!=null">
  30. <view class="tag" v-for="(item, index) in item.tags.split(',')" :key="index" >{{item}}</view>
  31. </block>
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. <!-- 视频 -->
  37. <view class="box maxstyle" :id="'mescrollRef' + current" v-if="current==2">
  38. <view class="hallbox">
  39. <view class="hall-box-item" v-for="(item, index) in dataList " :key="index" @click="handleDetail(item,index,'video')">
  40. <view class="video-imgbox">
  41. <image class="video-img" :src="item.cover" mode="aspectFill" :lazy-load="true"></image>
  42. <image class="video-img-icon" src="@/static/image/hall/video_icon.png" mode="aspectFill"></image>
  43. </view>
  44. <view class="hall-box-info">
  45. <view class="hall-box-name">{{item.title}}</view>
  46. <view class="hall-box-footer" style="margin-top: 16rpx;">
  47. <view class="hall-box-footerl footer-flex">
  48. <image class="hall-box-img" :src="item.headImg"></image>
  49. <text>{{item.username}}</text>
  50. </view>
  51. <view class="hall-box-footerr footer-flex">
  52. <image class="hall-box-img" src="@/static/image/hall/zan_icon.png"></image>
  53. <text>{{ formatNum(item.likeNum) }}</text>
  54. </view>
  55. </view>
  56. </view>
  57. </view>
  58. </view>
  59. </view>
  60. <!-- 养生干货 -->
  61. <view class="box" v-if="current==3">
  62. <view class="health-guidelines-item border-line" v-for="(item,index) in dataList" :key="index" @click="handleDetail(item)">
  63. <view class="health-guidelines-itemtxt">
  64. <text class="textTwo">{{item.title}}</text>
  65. <text class="health-guidelines-readnum">阅读 {{item.views || 0}}</text>
  66. </view>
  67. <image :src="item.imageUrl" mode="aspectFill"></image>
  68. </view>
  69. </view>
  70. <!-- 药膳 -->
  71. <view class="box" v-if="current!=0&&current!=1&&current!=2&&current!=3">
  72. <view v-for="i in 3" class="boxlist-item x-f">
  73. <image src="/static/bxzs.jpg" class="boxlist-img" mode="aspectFill"></image>
  74. <view style="flex: 1;overflow: hidden;margin-left: 30rpx;">
  75. <view class="boxlist-title textOne">大麦汤</view>
  76. <view class="textOne">调理慢病,治疗高血压</view>
  77. </view>
  78. </view>
  79. </view>
  80. </mescroll-body>
  81. </view>
  82. <!-- 健康讲堂 -->
  83. <view class="box" v-if="(current==0 ||current==1 )&&courseList && courseList.length > 0">
  84. <view class="box-nav">
  85. <view class="title">健康讲堂</view>
  86. <view class="box-nav-right" @click="navTo('/pages/course/famousHall?type=1')">
  87. <text>更多讲堂</text>
  88. <image class="right-arrow" src="@/static/image/home/my_right_arrow.png" mode="aspectFill" :lazy-load="true"></image>
  89. </view>
  90. </view>
  91. <view class="hothall" v-for="(item, index) in courseList" :key="index" @click="navTo('/pages/course/info?courseId='+item.courseId)">
  92. <image class="video-img" :src="item.imgUrl"></image>
  93. <view class="hothall-infobox">
  94. <view class="hothall-info">
  95. <image :src="item.secondImg" mode="aspectFit"></image>
  96. <view>
  97. <view class="hothall-title">{{item.courseName}}</view>
  98. <view class="hothall-desc">{{item.description}}
  99. </view>
  100. </view>
  101. <view v-if="item.isIntegral!=1" class="vip">VIP</view>
  102. </view>
  103. <view class="tagbox">
  104. <block v-if="item.tags!=null">
  105. <view class="tag" v-for="(item, index) in item.tags.split(',')" :key="index" >{{item}}</view>
  106. </block>
  107. </view>
  108. </view>
  109. </view>
  110. </view>
  111. <!-- 视频 -->
  112. <view :class="current==2 ? 'box maxstyle':'box'" v-if="isLastPage &&(current==0 ||current==2 )&&videoList && videoList.length > 0">
  113. <view class="box-nav">
  114. <view class="title">{{current==2?'猜你喜欢':'视频'}}</view>
  115. <view class="box-nav-right" @click="handleToVideo()">
  116. <text>{{current==2?'更多':'更多视频'}}</text>
  117. <image class="right-arrow" src="@/static/image/home/my_right_arrow.png" mode="aspectFill" :lazy-load="true"></image>
  118. </view>
  119. </view>
  120. <view class="hallbox">
  121. <view class="hall-box-item" v-for="(item, index) in videoList " :key="index">
  122. <view class="video-imgbox">
  123. <image class="video-img" :src="item.cover" mode="aspectFill" :lazy-load="true"></image>
  124. <image class="video-img-icon" src="@/static/image/hall/video_icon.png" mode="aspectFill"></image>
  125. </view>
  126. <view class="hall-box-info">
  127. <view class="hall-box-name">{{item.title}}</view>
  128. <view class="hall-box-footer">
  129. <view class="hall-box-footerl footer-flex">
  130. <image class="hall-box-img" :src="item.headImg"></image>
  131. <text>{{item.username}}</text>
  132. </view>
  133. <view class="hall-box-footerr footer-flex">
  134. <image class="hall-box-img" src="@/static/image/hall/zan_icon.png"></image>
  135. <text>{{ formatNum(item.likeNum) }}</text>
  136. </view>
  137. </view>
  138. </view>
  139. </view>
  140. </view>
  141. </view>
  142. <!-- 养生干货 -->
  143. <view class="box" v-if="(current==0 ||current==3 )&&articleList && articleList.length > 0">
  144. <view class="box-nav">
  145. <view class="title">养生干货</view>
  146. <view class="box-nav-right" @click="navTo('/pages/index/health/index')">
  147. <text>更多养生干货</text>
  148. <image class="right-arrow" src="@/static/image/home/my_right_arrow.png" mode="aspectFill" :lazy-load="true"></image>
  149. </view>
  150. </view>
  151. <view class="health-guidelines-item border-line" v-for="(item,index) in list" :key="index" @click="handleDetail(item)">
  152. <view class="health-guidelines-itemtxt">
  153. <text class="textTwo">{{item.title}}</text>
  154. <text class="health-guidelines-readnum">阅读 {{item.views || 0}}</text>
  155. </view>
  156. <image :src="item.imageUrl" mode="aspectFill"></image>
  157. </view>
  158. </view>
  159. <!-- 药膳 -->
  160. <view class="box" v-if="(current==0 || current==3)&&otherList && otherList.length > 0">
  161. <view class="box-nav">
  162. <view class="title">药膳</view>
  163. <view class="box-nav-right" @click="navTo('/pages/index/health/index')">
  164. <text>更多药膳</text>
  165. <image class="right-arrow" src="@/static/image/home/my_right_arrow.png" mode="aspectFill" :lazy-load="true"></image>
  166. </view>
  167. </view>
  168. <view v-for="i in 3" class="boxlist-item x-f">
  169. <image src="/static/bxzs.jpg" class="boxlist-img" mode="aspectFill"></image>
  170. <view style="flex: 1;overflow: hidden;margin-left: 30rpx;">
  171. <view class="boxlist-title textOne">大麦汤</view>
  172. <view class="textOne">调理慢病,治疗高血压</view>
  173. </view>
  174. </view>
  175. </view>
  176. <!-- 中药 -->
  177. <view class="box" v-if="(current==0 || current==4)&&otherList && otherList.length > 0">
  178. <view class="box-nav">
  179. <view class="title">中药</view>
  180. <view class="box-nav-right" @click="navTo('/pages/index/health/index')">
  181. <text>更多中药</text>
  182. <image class="right-arrow" src="@/static/image/home/my_right_arrow.png" mode="aspectFill" :lazy-load="true"></image>
  183. </view>
  184. </view>
  185. <view v-for="i in 3" class="boxlist-item x-f">
  186. <image src="/static/bxzs.jpg" class="boxlist-img" mode="aspectFill"></image>
  187. <view style="flex: 1;overflow: hidden;margin-left: 30rpx;">
  188. <view class="boxlist-title textOne">山杜仲</view>
  189. <view class="textOne">祛风湿,强筋骨治</view>
  190. </view>
  191. </view>
  192. </view>
  193. </view>
  194. </view>
  195. </template>
  196. <script>
  197. import { getCourseList } from '@/api/course';
  198. import { getArticleList } from '@/api/article';
  199. import { getVideoList,doFavorite,doLike } from '@/api/shortvideo';
  200. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  201. export default {
  202. mixins: [MescrollMixin],
  203. components: {
  204. },
  205. data() {
  206. return {
  207. keyword: "",
  208. list1: [
  209. {
  210. name: '综合',
  211. }, {
  212. name: '讲堂',
  213. },
  214. {
  215. name: '视频'
  216. },
  217. {
  218. name: '养生干货'
  219. }, {
  220. name: '药膳'
  221. }, {
  222. name: '中药'
  223. },
  224. ],
  225. current: 2,
  226. activeStyle: {
  227. fontFamily: "PingFang SC",
  228. fontWeight: 600,
  229. fontSize: "28rpx",
  230. color: "#222222"
  231. },
  232. recommendList:[],
  233. list:[],
  234. isLastPage: false,
  235. mescroll:null,
  236. downOption: { //下拉刷新
  237. use:true,
  238. auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
  239. },
  240. upOption: {
  241. use: true, // 是否启用上拉加载; 默认true
  242. page: {
  243. pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
  244. size: 10 // 每页数据的数量,默认10
  245. },
  246. noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  247. textNoMore:"没有更多了",
  248. empty: {
  249. icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/appimgs/cf4a86b913a04341bb44e34bb4d37aa2.png',
  250. tip: '暂无数据'
  251. }
  252. },
  253. dataList: [],
  254. courseList: [],
  255. videoList: [],
  256. articleList: [],
  257. otherList: [],
  258. height: 'auto',
  259. minHeight: 'auto',
  260. pageNum: 1,
  261. pageSize: 10
  262. }
  263. },
  264. onLoad(option) {
  265. this.keyword = option.keyword || ""
  266. this.current = option.type || 2
  267. // this.search()
  268. // this.getRecommendList()
  269. this.getVideoListTui()
  270. this.minHeight = uni.getSystemInfoSync().windowHeight
  271. },
  272. methods: {
  273. formatNum(num){
  274. if(num>10000){
  275. return (num/10000.0).toFixed(1)+'';
  276. }
  277. return num;
  278. },
  279. search() {
  280. if(this.current == 0) {
  281. this.getCourseListTui(this.keyword)
  282. } else {
  283. this.mescroll.scrollTo(0,0);
  284. this.mescroll.resetUpScroll()
  285. }
  286. },
  287. handleTab(e) {
  288. this.current = e.index
  289. this.mescroll.resetUpScroll()
  290. },
  291. navTo(url) {
  292. uni.navigateTo({
  293. url: url
  294. })
  295. },
  296. handleDetail(item,index,type) {
  297. if(type == 'video') {
  298. // #ifdef APP-PLUS
  299. let curPageNum = Math.floor(index / this.pageSize) + 1
  300. uni.navigateTo({
  301. url: "/pages/course/video/living-app-searchInfo?k="+index+'&curPageNum='+curPageNum+"&keyword="+this.keyword || ''
  302. })
  303. // #endif
  304. // #ifdef H5
  305. uni.navigateTo({
  306. url: "/pages/course/video/living-applet?index="+index+'&pageNum='+this.pageNum+'&pageSize='+this.pageSize+"&keyword="+this.keyword || ''
  307. })
  308. // #endif
  309. }
  310. },
  311. mescrollInit(mescroll) {
  312. this.mescroll = mescroll;
  313. },
  314. /*下拉刷新的回调 */
  315. downCallback(mescroll) {
  316. mescroll.resetUpScroll()
  317. },
  318. upCallback(page) {
  319. //联网加载数据
  320. if(this.current == 1) {
  321. this.getCourseList(page)
  322. } else if(this.current == 2) {
  323. this.getVideoList(page)
  324. } else if(this.current == 3) {
  325. this.getArticleList(page)
  326. } else if(this.current == 4) {
  327. this.getArticleList(page)
  328. } else if(this.current == 5) {
  329. this.getArticleList(page)
  330. }
  331. },
  332. getCourseList(page) {
  333. //联网加载数据
  334. const that = this;
  335. const data = {
  336. keyword:this.keyword,
  337. pageNum: page.num,
  338. pageSize: page.size
  339. };
  340. getCourseList(data).then(res => {
  341. if(res.code==200){
  342. //设置列表数据
  343. if (page.num == 1) {
  344. that.dataList = res.data.list;
  345. } else {
  346. that.dataList = that.dataList.concat(res.data.list);
  347. }
  348. that.mescroll.endBySize(res.data.list.length, res.data.total);
  349. }else{
  350. uni.showToast({
  351. icon:'none',
  352. title: "请求失败",
  353. });
  354. that.dataList = null;
  355. that.mescroll.endErr();
  356. }
  357. });
  358. },
  359. getCourseListTui() {
  360. getCourseList({isTui:1},1,10).then(res => {
  361. if(res.code==200){
  362. this.courseList=res.data.list.splice(0,2);
  363. }
  364. },
  365. rej => {}
  366. );
  367. },
  368. getRecommendList(){
  369. let that=this;
  370. const params={"isTui":1};
  371. getCourseList(params,1,10).then(res => {
  372. if(res.code==200){
  373. this.recommendList=res.data.list.splice(0,2);
  374. }
  375. },
  376. rej => {}
  377. );
  378. },
  379. getArticleList() {
  380. const queryParam = {
  381. keyword:undefined,
  382. cateId:undefined,
  383. page: 1,
  384. pageSize: 4
  385. }
  386. getArticleList(queryParam).then(res=>{
  387. if(res.code == 200) {
  388. this.list = res.data.list
  389. }
  390. })
  391. },
  392. // 视频搜索
  393. getVideoList(page){
  394. const that = this;
  395. let param = {
  396. keyword:this.keyword,
  397. };
  398. this.pageNum = page.num
  399. this.pageSize = page.size
  400. getVideoList(param,page.num,page.size).then(res => {
  401. if(res.code==200){
  402. this.isLastPage = res.data.isLastPage
  403. //设置列表数据
  404. if (page.num == 1) {
  405. that.dataList = res.data.list;
  406. } else {
  407. that.dataList = that.dataList.concat(res.data.list);
  408. }
  409. this.$nextTick(()=>{
  410. this.getHeight()
  411. })
  412. that.mescroll.endBySize(res.data.list.length, res.data.total);
  413. }else{
  414. uni.showToast({
  415. icon:'none',
  416. title: "请求失败",
  417. });
  418. that.dataList = null;
  419. that.mescroll.endErr();
  420. }
  421. });
  422. },
  423. // 视频推荐
  424. getVideoListTui(){
  425. getVideoList({},1, 6).then(res => {
  426. if(res.code==200){
  427. //设置列表数据
  428. this.videoList = res.data.list;
  429. }
  430. });
  431. },
  432. // 更多视频
  433. handleToVideo() {
  434. // #ifdef APP-PLUS
  435. uni.switchTab({
  436. url: '/pages/course/video/living-app'
  437. })
  438. // #endif
  439. // #ifdef H5
  440. uni.navigateTo({
  441. url: '/pages/course/video/living-applet'
  442. })
  443. // #endif
  444. },
  445. getHeight() {
  446. this.height = 'auto'
  447. this.minHeight = uni.getSystemInfoSync().windowHeight
  448. const el = '#mescrollRef' + this.current
  449. if(this.current > 0) {
  450. const query = uni.createSelectorQuery().in(this);
  451. const windowHeight = uni.getSystemInfoSync().windowHeight
  452. query
  453. .select(el)
  454. .boundingClientRect((data) => {
  455. if(this.isLastPage == true&&data.height<windowHeight){
  456. console.log("得到布局位置信息" + JSON.stringify(data));
  457. console.log("节点离页面顶部的距离为" + data.top,windowHeight);
  458. this.height = `calc(${data.height} + 40rpx)`
  459. this.minHeight = this.height
  460. }
  461. })
  462. .exec();
  463. }
  464. }
  465. }
  466. }
  467. </script>
  468. <style lang="scss" scoped>
  469. @mixin u-flex($flexD, $alignI, $justifyC) {
  470. display: flex;
  471. flex-direction: $flexD;
  472. align-items: $alignI;
  473. justify-content: $justifyC;
  474. }
  475. .searchtop {
  476. background-color: #fff;
  477. .backicon {
  478. width: 64rpx;
  479. height: 64rpx;
  480. }
  481. &-box {
  482. padding: 12rpx 24rpx;
  483. padding-top: calc(var(--status-bar-height) + 12rpx);
  484. background-color: #fff;
  485. }
  486. .tabs {
  487. background-color: #fff;
  488. }
  489. }
  490. .search-res {
  491. padding: 20rpx 24rpx;
  492. }
  493. .maxstyle {
  494. padding:0 !important;
  495. background-color: transparent !important;
  496. .hall-box {
  497. &-item {
  498. width: 342rpx !important;
  499. .video-imgbox {
  500. width: 342rpx !important;
  501. }
  502. .video-img {
  503. width: 342rpx !important;
  504. }
  505. }
  506. &-name {
  507. margin-bottom: 10rpx;
  508. }
  509. }
  510. }
  511. .box {
  512. background: #FFFFFF;
  513. border-radius: 16rpx 16rpx 16rpx 16rpx;
  514. padding: 0 32rpx;
  515. margin-bottom: 20rpx;
  516. .box-nav {
  517. width: 100%;
  518. padding: 36rpx 0;
  519. box-sizing: border-box;
  520. display: flex;
  521. justify-content: space-between;
  522. font-family: PingFang SC, PingFang SC;
  523. font-weight: 500;
  524. font-size: 34rpx;
  525. color: #222222;
  526. &-right {
  527. font-family: PingFang SC, PingFang SC;
  528. font-weight: 400;
  529. font-size: 24rpx;
  530. color: #999999;
  531. @include u-flex(row, center, flex-start);
  532. }
  533. .right-arrow {
  534. height: 48rpx;
  535. width: 48rpx;
  536. }
  537. }
  538. .hothall {
  539. width: 100%;
  540. background: #FFFFFF;
  541. border-radius: 16rpx 16rpx 16rpx 16rpx;
  542. overflow: hidden;
  543. position: relative;
  544. .video-img {
  545. width: 100%;
  546. height: 400rpx;
  547. background: rgba(0, 0, 0, 0.15);
  548. border-radius: 16rpx 16rpx 0rpx 0rpx;
  549. }
  550. .vip{
  551. position: absolute;
  552. min-width: 54rpx;
  553. min-height: 20rpx;
  554. line-height: 20rpx;
  555. background: linear-gradient(94deg, #FFE9D0 0%, #E9BD97 100%);
  556. border-radius: 16rpx 0 16rpx 0;
  557. top:0;
  558. left: 0;
  559. color:#333;
  560. font-size:18rpx ;
  561. text-align: center;
  562. font-weight: 500;
  563. font-style: italic;
  564. }
  565. &-infobox {
  566. padding: 24rpx 0;
  567. image {
  568. width: 88rpx;
  569. height: 128rpx;
  570. background: #ECECEC;
  571. border-radius: 8rpx 8rpx 8rpx 8rpx;
  572. border: 2rpx solid #ECECEC;
  573. flex-shrink: 0;
  574. margin-right: 28rpx;
  575. }
  576. }
  577. &-info {
  578. @include u-flex(row, center, flex-start);
  579. }
  580. &-title {
  581. font-weight: 500;
  582. font-size: 28rpx;
  583. color: #222222;
  584. overflow: hidden;
  585. white-space: nowrap;
  586. text-overflow: ellipsis;
  587. }
  588. &-desc {
  589. font-weight: 400;
  590. font-size: 24rpx;
  591. color: #757575;
  592. line-height: 28rpx;
  593. margin-top: 10rpx;
  594. overflow: hidden;
  595. text-overflow: ellipsis;
  596. display: -webkit-box;
  597. -webkit-line-clamp: 2;
  598. -webkit-box-orient: vertical;
  599. }
  600. .tagbox {
  601. @include u-flex(row, center, flex-start);
  602. flex-wrap: wrap;
  603. margin: 0 -12rpx -12rpx 0;
  604. }
  605. .tag {
  606. min-height: 40rpx;
  607. margin: 16rpx 12rpx 12rpx 0;
  608. background: #FEFAF3;
  609. border-radius: 20rpx 20rpx 20rpx 20rpx;
  610. border: 1rpx solid #FBEDD1;
  611. padding: 0 16rpx;
  612. font-weight: 400;
  613. font-size: 22rpx;
  614. color: #A97125;
  615. line-height: 40rpx;
  616. }
  617. }
  618. .hallbox {
  619. @include u-flex(row, center, flex-start);
  620. flex-wrap: wrap;
  621. margin: 0 -18rpx 0 0;
  622. .gapitem {
  623. width: 310rpx !important;
  624. margin: 0 18rpx 18rpx 0;
  625. }
  626. }
  627. .health-guidelines {
  628. padding: 24rpx 24rpx 0 24rpx;
  629. background: #FFFFFF;
  630. border-radius: 16rpx 16rpx 16rpx 16rpx;
  631. .box-title {
  632. font-family: PingFang SC, PingFang SC;
  633. font-weight: 400;
  634. font-size: 24rpx;
  635. color: #757575;
  636. @include u-flex(row, center, space-between);
  637. height: 80rpx;
  638. &-left {
  639. font-weight: 500;
  640. font-size: 36rpx;
  641. color: #222222;
  642. // line-height: 42rpx;
  643. }
  644. &-right {
  645. @include u-flex(row, center, flex-start);
  646. image {
  647. height: 48rpx;
  648. width: 48rpx;
  649. }
  650. }
  651. }
  652. &-item {
  653. padding: 30rpx 0 40rpx;
  654. font-family: PingFang SC, PingFang SC;
  655. font-weight: 400;
  656. font-size: 32rpx;
  657. color: #333333;
  658. line-height: 38rpx;
  659. @include u-flex(row, center, space-between);
  660. image {
  661. flex-shrink: 0;
  662. width: 180rpx;
  663. height: 136rpx;
  664. margin-left: 16rpx;
  665. background: #F5F6F6;
  666. border-radius: 10rpx 10rpx 10rpx 10rpx;
  667. overflow: hidden;
  668. }
  669. }
  670. &-itemtxt {
  671. flex: 1;
  672. }
  673. &-readnum {
  674. display: inline-block;
  675. margin-top: 30rpx;
  676. font-size: 26rpx;
  677. color: #999999;
  678. }
  679. .border-line:last-child::after {
  680. border: none;
  681. }
  682. }
  683. .boxlist {
  684. &-item {
  685. padding: 20rpx 0;
  686. font-family: PingFang SC, PingFang SC;
  687. font-weight: 400;
  688. font-size: 24rpx;
  689. color: #999999;
  690. overflow: hidden;
  691. }
  692. &-img {
  693. flex-shrink: 0;
  694. width: 180rpx;
  695. height: 128rpx;
  696. background: #F5F6F6;
  697. border-radius: 10rpx 10rpx 10rpx 10rpx;
  698. }
  699. &-title {
  700. margin-bottom: 24rpx;
  701. font-weight: 500;
  702. font-size: 32rpx;
  703. color: #222222;
  704. }
  705. }
  706. .hall-box {
  707. @include u-flex(row, center, flex-start);
  708. flex-wrap: wrap;
  709. &-item {
  710. width: 310rpx;
  711. margin: 0 18rpx 18rpx 0;
  712. background: #FFFFFF;
  713. border-radius: 16rpx 16rpx 16rpx 16rpx;
  714. overflow: hidden;
  715. position: relative;
  716. .video-imgbox {
  717. width: 310rpx;
  718. height: 280rpx;
  719. background: #ECECEC;
  720. border-radius: 16rpx 16rpx 0rpx 0rpx;
  721. position: relative;
  722. overflow: hidden;
  723. }
  724. .video-img-icon {
  725. width: 48rpx;
  726. height: 48rpx;
  727. position: absolute;
  728. left: 50%;
  729. top: 50%;
  730. transform: translate(-50%, -50%);
  731. z-index: 1;
  732. }
  733. .video-img {
  734. width: 310rpx;
  735. height: 280rpx;
  736. }
  737. }
  738. &-info {
  739. padding: 22rpx 20rpx;
  740. font-family: PingFang SC, PingFang SC;
  741. font-weight: 400;
  742. font-size: 24rpx;
  743. color: #999999;
  744. }
  745. &-name {
  746. font-weight: 400;
  747. font-size: 28rpx;
  748. color: #222222;
  749. overflow: hidden;
  750. white-space: nowrap;
  751. text-overflow: ellipsis;
  752. }
  753. &-desc {
  754. overflow: hidden;
  755. white-space: nowrap;
  756. text-overflow: ellipsis;
  757. margin: 10rpx 0 18rpx;
  758. }
  759. &-footer {
  760. @include u-flex(row, center, space-between);
  761. width: 100%;
  762. }
  763. &-footerl {
  764. flex: 1;
  765. text {
  766. overflow: hidden;
  767. white-space: nowrap;
  768. text-overflow: ellipsis;
  769. }
  770. }
  771. &-img {
  772. width: 32rpx;
  773. height: 32rpx;
  774. margin-right: 8rpx;
  775. flex-shrink: 0;
  776. border-radius: 50%;
  777. }
  778. }
  779. .footer-flex {
  780. overflow: hidden;
  781. @include u-flex(row, center, flex-start);
  782. }
  783. }
  784. </style>