index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898
  1. <template>
  2. <view class="ps-wrapper">
  3. <view id="headerBox" ref="headerBox" :class="[mpCommonClass]" :style="{
  4. // background: `url(${bgImg}) no-repeat center top`,
  5. backgroundSize: '100% 400rpx',
  6. paddingTop: `${navbarHeight+topData.height}px`,
  7. backgroundColor: '#D6E1D0',
  8. }" class="header-box">
  9. <view>
  10. <view :height="'1080rpx'" class="banner-container">
  11. <u-swiper :autoplay="true" :current="current" :height="'1080rpx'" :list="bannerList" circular
  12. duration="1000" interval="5000" @change="(data) => (current = data.current)" @click="bannerClick">
  13. <template #indicator>
  14. <view class="custom-indicator">
  15. <text v-for="item in bannerList.length" v-show="bannerList.length > 0" :key="item"
  16. :class="{ 'banner-active': item === current }" class="custom-indicator-item"></text>
  17. </view>
  18. </template>
  19. </u-swiper>
  20. <view class="logo-search-container" :style="{top:0,left:'0rpx',paddingBottom:'20rpx',height:navbarHeight+topData.height+10+'px'}">
  21. <view class="centered-image" :style="{
  22. marginTop:`${navbarHeight}px`
  23. }">
  24. <van-image
  25. :src="logoImg"
  26. fit="contain"
  27. :height="topData.height"
  28. width="83px"
  29. />
  30. </view>
  31. <view :style="{
  32. width: '50%',
  33. height:topData.height+'px',
  34. marginTop:`${navbarHeight}px`
  35. }" class="search-box" @click="toSearchList">
  36. <u-icon name="search" size="20"></u-icon>
  37. <text>请输入关键词</text>
  38. </view>
  39. </view>
  40. </view>
  41. <view style="background-color: #FFFFFF;">
  42. <view>
  43. <u-notice-bar @click="handleAdv" color="#EE7945" :text="advList.map((a) => a.remark)"></u-notice-bar>
  44. </view>
  45. </view>
  46. <!-- 商品分类 -->
  47. <view class="box-list">
  48. <view class="box-list-item" @click="jumpPage('haowu')">
  49. <van-image
  50. height="136rpx"
  51. src="/static/hd1.png"
  52. width="84rpx"
  53. />
  54. <view style=" margin-top: 14rpx">芳香好物</view>
  55. </view>
  56. <view class="box-list-item" @click="jumpPage('xueyuan')">
  57. <van-image
  58. height="136rpx"
  59. src="/static/hd2.png"
  60. width="84rpx"
  61. />
  62. <view style=" margin-top: 14rpx"> 芳香学院</view>
  63. </view>
  64. <view class="box-list-item" @click="jumpPage('huodong')">
  65. <van-image
  66. height="136rpx"
  67. src="/static/hd3.png"
  68. width="84rpx"
  69. />
  70. <view style=" margin-top: 14rpx"> 芳香活动</view>
  71. </view>
  72. <view class="box-list-item" @click="jumpPage('shenghuo')">
  73. <van-image
  74. height="136rpx"
  75. src="/static/hd5.png"
  76. width="84rpx"
  77. />
  78. <view style=" margin-top: 14rpx"> 芳香生活
  79. </view>
  80. </view>
  81. <view class="box-list-item" @click="jumpPage('peiban')">
  82. <van-image
  83. height="136rpx"
  84. src="/static/hd4.png"
  85. width="84rpx"
  86. />
  87. <view style=" margin-top: 14rpx">陪伴营</view>
  88. </view>
  89. </view>
  90. <view class="content-box">
  91. <view class="activity-list">
  92. <view class="biaoti" style="background: linear-gradient( 180deg, #C4D1BB 0%, #F7F9F6 84%);">
  93. <van-image
  94. height="85.94rpx"
  95. src="/static/biaoti1.png"
  96. width="171.3rpx"
  97. />
  98. </view>
  99. <image src="/static/huodong-icon.png" mode="aspectFill" class="biaoti-icon"></image>
  100. <view v-for="(item, index) in activityList" :key="index"
  101. @click="toHuodong(item)" class="activity-item">
  102. <van-image
  103. height="670rpx"
  104. :src="item.pic"
  105. width="750rpx"
  106. />
  107. <view class="activity-init display-flex-between ">
  108. <view class="display-flex-content-center">
  109. <view class="huodongText2">
  110. <van-image
  111. class="huodongText2-img"
  112. height="28rpx"
  113. src="/static/hdlist2.png" width="28rpx"
  114. />
  115. {{ item.hits }}
  116. </view>
  117. <view class="huodongText2">
  118. <van-image
  119. class="huodongText2-img"
  120. height="28rpx"
  121. src="/static/hdlist3.png" width="28rpx"
  122. />
  123. {{ item.entry_num }}
  124. </view>
  125. </view>
  126. <view class="activity-btn display-flex-content-center" @click.stop="handleRegister(item)">
  127. 立即报名
  128. </view>
  129. </view>
  130. </view>
  131. </view>
  132. <view class="course-list">
  133. <view class="biaoti">
  134. <van-image
  135. height="85.94rpx"
  136. src="/static/biaoti2.png"
  137. width="171.3rpx"
  138. />
  139. </view>
  140. <image src="/static/kecheng-icon.png" mode="aspectFill" class="biaoti-icon">
  141. </image>
  142. <view v-for="(item, index) in goods_class" :key="index" class="course-item" v-if="index < 2">
  143. <view style="margin-bottom: 24rpx" @click="toKecheng(item)">
  144. <van-image
  145. :src="item.cover"
  146. height="208rpx"
  147. width="100%"
  148. />
  149. </view>
  150. </view>
  151. </view>
  152. <view class="goods-list">
  153. <view class="biaoti">
  154. <van-image
  155. height="85.94rpx"
  156. src="/static/biaoti3.png"
  157. width="171.3rpx"
  158. />
  159. </view>
  160. <image src="/static/shangpin-icon.png" style="width: 250rpx;height: 250rpx;right: -43px;" mode="aspectFill" class="biaoti-icon">
  161. </image>
  162. <view
  163. :style="{width: '690rpx', margin: '0rpx auto'}">
  164. <CommercePart :data="commonDataList"></CommercePart>
  165. <!-- 赠品专区 -->
  166. <image v-if="giftBanner.pic" :src="giftBanner.pic" mode="aspectFill"
  167. style="width: 100%; height: 206rpx" @click="toSubpages('giftZone')">
  168. </image>
  169. </view>
  170. </view>
  171. </view>
  172. </view>
  173. </view>
  174. <tabbarCom current="0"></tabbarCom>
  175. <van-toast id="van-toast"/>
  176. </view>
  177. </template>
  178. <script>
  179. import tabbarCom from "@/components/tabbar/tabbar.vue"
  180. import CommercePart from "@/components/CommercePart.vue";
  181. // import FlowPart from "@/components/FlowPart.vue";
  182. import {
  183. goodsList
  184. } from "./config";
  185. import {
  186. getBanner
  187. } from "@/common/api/home.js";
  188. import {
  189. getNewsList
  190. } from "@/common/api/news.js";
  191. import {getActivityList} from "@/common/api/activity";
  192. import Toast from "wxcomponents/vant/dist/toast/toast";
  193. // 获取系统状态栏的高度
  194. let systemInfo = uni.getSystemInfoSync();
  195. let menuButtonInfo = {};
  196. // 如果是小程序,获取右上角胶囊的尺寸信息,避免导航栏右侧内容与胶囊重叠(支付宝小程序非本API,尚未兼容)
  197. menuButtonInfo = uni.getMenuButtonBoundingClientRect();
  198. export default {
  199. components: {
  200. tabbarCom,
  201. CommercePart
  202. },
  203. data() {
  204. return {
  205. bgImg: '',
  206. logoImg: '',
  207. shopName: '',
  208. shopShareImg: '',
  209. ponitsBanner: {}, // 积分兑换
  210. giftBanner: {}, // 赠品
  211. partGoodsList: [],
  212. msGoodsList: [],
  213. bannerList: [],
  214. topData: {
  215. top: 0,
  216. height: 0,
  217. },
  218. current: 0,
  219. titleTabCurrentIndex: 0,
  220. goodsList: goodsList,
  221. imageUrl: this.$C.imageUrl,
  222. userInfo: {},
  223. keyword: "",
  224. commonPage: {
  225. pageNum: 1,
  226. pageSize: 4,
  227. total: 0,
  228. },
  229. flowPage: {
  230. pageNum: 1,
  231. pageSize: 4,
  232. total: 0,
  233. },
  234. status: "loadmore",
  235. filterData: {},
  236. loadText: {
  237. loadmore: "点击加载更多",
  238. loading: "努力加载中",
  239. nomore: "没有更多了",
  240. },
  241. selectedType: "",
  242. activeTabStyle: {
  243. fontSize: "36rpx",
  244. fontWeight: "600",
  245. },
  246. mainHeightStyle: {},
  247. mainHeight: "",
  248. commonDataList: [],
  249. flowDataList: [],
  250. statusBarHeight: "",
  251. menuButtonInfo: menuButtonInfo,
  252. searchInputStyle: {
  253. backgroundColor: "transparent",
  254. color: "#1D161F",
  255. },
  256. prevData: [],
  257. advList: [],
  258. goods_class: [],
  259. sourceBanner: [],
  260. activityList: []
  261. };
  262. },
  263. computed: {
  264. // 转换字符数值为真正的数值
  265. navbarHeight() {
  266. console.log( uni.getMenuButtonBoundingClientRect())
  267. console.log( uni.getSystemInfoSync().statusBarHeight)
  268. console.log(this.topData)
  269. console.log(systemInfo.statusBarHeight)
  270. console.log("+++++++++++++++++++++++++++++++=")
  271. return this.topData.top
  272. },
  273. token() {
  274. return this.$U.getStorage("token");
  275. },
  276. mpCommonClass() {
  277. return this.$C.mpCommonClass || ''
  278. }
  279. },
  280. watch: {
  281. titleTabCurrentIndex() {
  282. if (this.titleTabCurrentIndex == 0) {
  283. this.getCommonData(true);
  284. } else {
  285. this.getFlowData(true);
  286. }
  287. },
  288. },
  289. onLoad() {
  290. },
  291. onShow() {
  292. this.getBanner();
  293. this.getNewsList();
  294. this.getActivityList();
  295. this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight - 1; // 状态栏高度
  296. // uni
  297. // .createSelectorQuery()
  298. // .in(this)
  299. // .select("#headerBox")
  300. // .boundingClientRect((data) => {
  301. // let height = (data.height + 20) * 2 + "rpx";
  302. // this.mainHeight = `calc(100vh - ${height})`;
  303. // })
  304. // .exec();
  305. const topData = uni.getMenuButtonBoundingClientRect();
  306. this.topData.top = topData.top;
  307. this.topData.height = topData.height;
  308. if (this.token) {
  309. this.userInfo = this.$U.getStorage("userInfo");
  310. }
  311. // this.getMsData()
  312. // this.getCommonData(true);
  313. },
  314. onReachBottom() {
  315. this.getCommonData();
  316. },
  317. onShareAppMessage(res) {
  318. if (res.from === 'button') { // 来自页面内分享按钮
  319. }
  320. let userInfo = uni.getStorageSync('userInfo')
  321. userInfo = userInfo && JSON.parse(userInfo) || {}
  322. let params = {}
  323. if (userInfo.id) {
  324. params = {
  325. id: userInfo.id
  326. }
  327. }
  328. return {
  329. title: this.shopName,
  330. path: `/pages/home/index${this.$stringPageOptions(params)}`,
  331. imageUrl: this.shopShareImg,
  332. }
  333. },
  334. onShareTimeline(res) {
  335. if (res.from === 'button') { // 来自页面内分享按钮
  336. }
  337. let userInfo = uni.getStorageSync('userInfo')
  338. userInfo = userInfo && JSON.parse(userInfo) || {}
  339. let params = {}
  340. if (userInfo.id) {
  341. params = {
  342. id: userInfo.id
  343. }
  344. }
  345. return {
  346. title: this.shopName,
  347. imageUrl: this.shopShareImg,
  348. path: `/pages/home/index${this.$stringPageOptions(params)}`
  349. }
  350. },
  351. methods: {
  352. toMsList() {
  353. uni.navigateTo({
  354. url: `/subPages/msGoodsList/msGoodsList`,
  355. });
  356. },
  357. toMsDetail(item) {
  358. // 秒杀详情
  359. uni.navigateTo({
  360. url: `/subPages/goodsDetail/goodsDetail?code=${item.id}&type=msGoods`,
  361. });
  362. },
  363. toDetails(item) {
  364. // 秒杀详情
  365. uni.navigateTo({
  366. url: `/subPages/goodsDetail/goodsDetail?code=${item.code}&type=common`,
  367. });
  368. },
  369. toSubpages(type) {
  370. if (type == "pointsZone") {
  371. uni.navigateTo({
  372. url: `/subPages/pointsZone/pointsZone?id=${this.ponitsBanner.pstn_id}`,
  373. });
  374. } else {
  375. uni.navigateTo({
  376. url: `/subPages/giftZone/giftZone?id=${this.giftBanner.pstn_id}`,
  377. });
  378. }
  379. },
  380. jumpPage(type) {
  381. if (type === "haowu") {
  382. uni.navigateTo({
  383. url: '/pages/productCenter/productCenter',
  384. })
  385. } else if (type === "xueyuan") {
  386. uni.navigateTo({url: `/subPages/course/course`,})
  387. } else if (type === "huodong") {
  388. uni.switchTab({
  389. url: '/pages/activity/activity',
  390. })
  391. } else if (type === "peiban") {
  392. uni.navigateTo({url: `/subPages/accompanyingCamp/accompanyingCamp`,})
  393. } else if (type === "shenghuo") {
  394. uni.navigateTo({url: `/subPages/fragrantLife/fragrantLife`,})
  395. } else {
  396. Toast('敬请期待');
  397. }
  398. },
  399. toHuodong(item) {
  400. uni.navigateTo({url: `/subPages/activityDetail/activityDetail?activityId=${item.id}`,})
  401. },
  402. toKecheng(item) {
  403. uni.navigateTo({url: `/subPages/courseDetail/courseDetail?goods_code=${item.code}`,})
  404. },
  405. bannerClick(index) {
  406. const currentUrl = this.sourceBanner[index].pic_url
  407. if (currentUrl != '#') {
  408. uni.navigateTo({
  409. url: currentUrl
  410. })
  411. }
  412. },
  413. getBanner() {
  414. getBanner().then((res) => {
  415. const {
  416. slider = [],
  417. goods_class = [],
  418. goods_cate = [],
  419. goods_online = [],
  420. seckill_goods = [],
  421. integral_page = [],
  422. gifts_page = [],
  423. shop_name,
  424. shop_home_logo,
  425. shop_share_img,
  426. shop_bgimg
  427. } = res.data;
  428. const configs = uni.getStorageSync("configs");
  429. if (configs) {
  430. this.logoImg = configs.shop_home_logo
  431. this.bgImg = configs.shop_bgimg
  432. this.shopName = configs.shop_share_title
  433. this.shopShareImg = configs.shop_share_img
  434. } else {
  435. this.logoImg = shop_home_logo
  436. this.bgImg = shop_bgimg
  437. this.shopName = shop_name
  438. this.shopShareImg = shop_share_img
  439. }
  440. this.bannerList = slider.map(item => item.pic);
  441. this.sourceBanner = slider
  442. this.goodsList = goods_cate;
  443. this.commonDataList = goods_online.slice(0, 4);;
  444. this.msGoodsList = seckill_goods;
  445. this.goods_class = goods_class;
  446. this.ponitsBanner = integral_page.length && integral_page[0];
  447. this.giftBanner = gifts_page.length && gifts_page[0];
  448. uni.setStorageSync('mpInfo', {
  449. shopName: this.shopName,
  450. shareImg: this.shopShareImg
  451. })
  452. });
  453. // const data = {
  454. // name: 'sliderread'
  455. // };
  456. // this.$api.getData(data)
  457. // .then((res) => {
  458. // uni.hideLoading();
  459. // console.log("getBanner==>", res.data)
  460. // if (res.data) {
  461. // this.bannerList = res.data;
  462. // } else {}
  463. // })
  464. // .catch(() => {
  465. // uni.hideLoading();
  466. // });
  467. },
  468. toSearchList() {
  469. uni.navigateTo({
  470. url: "/subPages/searchList/searchList",
  471. });
  472. },
  473. getActivityList() {
  474. getActivityList({page: 1, pageSize: 1}).then(({data}) => {
  475. this.activityList = data.list
  476. });
  477. },
  478. getMsData() {
  479. uni.showLoading({
  480. title: "加载中",
  481. });
  482. this.$api
  483. .getPSMsList()
  484. .then((res) => {
  485. uni.hideLoading();
  486. // this.msGoodsList = res.data && res.data.list || []
  487. })
  488. .catch(() => {
  489. uni.hideLoading();
  490. });
  491. },
  492. getNewsList() {
  493. getNewsList({
  494. cid: 1,
  495. page: 1,
  496. pageSize: 1,
  497. }).then(({
  498. data = {}
  499. }) => {
  500. this.advList = data.list || [];
  501. });
  502. },
  503. getCommonData(initFlag) {
  504. if (!initFlag) {
  505. if (
  506. this.commonPage.pageNum * this.commonPage.pageSize <
  507. this.commonPage.total
  508. ) {
  509. this.commonPage.pageNum++;
  510. } else {
  511. return;
  512. }
  513. } else {
  514. this.commonPage.pageNum = 1;
  515. this.commonPage.total = 0;
  516. this.commonDataList = [];
  517. }
  518. let sendData = {
  519. limit: this.commonPage.pageSize,
  520. page: this.commonPage.pageNum,
  521. };
  522. uni.showLoading({
  523. title: "加载中",
  524. });
  525. this.$api
  526. .getPSGoodsList(sendData)
  527. .then((res) => {
  528. uni.hideLoading();
  529. if (res.code == 1) {
  530. const {
  531. list = [], page = {}
  532. } = res.data;
  533. this.commonDataList = this.commonDataList.concat(list);
  534. this.commonPage.total = page.total;
  535. }
  536. })
  537. .catch((err) => {
  538. uni.hideLoading();
  539. });
  540. },
  541. getFlowData(initFlag) {
  542. if (!initFlag) {
  543. if (
  544. this.flowPage.pageNum * this.flowPage.pageSize <
  545. this.flowPage.total
  546. ) {
  547. this.flowPage.pageNum++;
  548. } else {
  549. return;
  550. }
  551. } else {
  552. this.flowPage.pageNum = 1;
  553. this.flowPage.total = 0;
  554. this.flowDataList = [];
  555. }
  556. let sendData = {
  557. limit: this.flowPage.pageSize,
  558. page: this.flowPage.pageNum,
  559. };
  560. uni.showLoading({
  561. title: "加载中",
  562. });
  563. this.$api
  564. .getFlowData(sendData)
  565. .then((res) => {
  566. uni.hideLoading();
  567. if (res.code == 1) {
  568. const {
  569. list = [], page = {}
  570. } = res.data;
  571. this.flowDataList = this.flowDataList.concat(list);
  572. this.flowPage.total = page.total;
  573. }
  574. })
  575. .catch((err) => {
  576. uni.hideLoading();
  577. });
  578. },
  579. searchChange() {
  580. },
  581. toDetail(item) {
  582. uni.navigateTo({
  583. url: "../../subPages/commerceDetail/commerceDetail?id=" + item.id,
  584. });
  585. },
  586. toList(item) {
  587. uni.setStorageSync('currentCateid', item.id)
  588. uni.switchTab({
  589. url: `/pages/productCenter/productCenter?cateid=${item.id}`,
  590. });
  591. },
  592. handleRegister(item2) {
  593. uni.navigateTo({url: `/subPages/activityDetail/activitySave?activityId=${item2.id}`,})
  594. },
  595. handleAdv(index = 0) {
  596. const activeAdv = this.advList[index];
  597. console.log("index==>", index)
  598. console.log("advList==>", this.advList)
  599. uni.navigateTo({
  600. url: "/subPages/accompanyingCamp/accompanyingCampDetail?id=" + activeAdv.id,
  601. });
  602. },
  603. },
  604. };
  605. </script>
  606. w
  607. <style lang="scss" scoped>
  608. page {
  609. overflow-x: hidden;
  610. }
  611. .ps-wrapper {
  612. //background-color: $primary-bg-color;
  613. background-color: #C4D1BB;
  614. overflow: hidden;
  615. .adv-box {
  616. position: relative;
  617. // padding: 0 33rpx 20rpx;
  618. height: 64rpx;
  619. background-color: white;
  620. padding: 0 20rpx 0;
  621. border-radius: 16rpx;
  622. margin: 40rpx 0 20rpx;
  623. font-weight: 500;
  624. .adv-icon {
  625. position: absolute;
  626. left: 6rpx;
  627. top: 50%;
  628. transform: translateY(-50%);
  629. }
  630. ::v-deep {
  631. .u-notice__left-icon {
  632. width: 19px;
  633. .u-icon__icon {
  634. display: none;
  635. }
  636. }
  637. }
  638. }
  639. .custom-indicator {
  640. position: absolute;
  641. bottom: 29rpx;
  642. display: flex;
  643. margin: 0 0rpx 0 0rpx;
  644. flex-direction: row;
  645. justify-content: center;
  646. transform: translateX(-80rpx);
  647. .custom-indicator-item {
  648. width: 16rpx;
  649. height: 16rpx;
  650. margin: 0 6rpx;
  651. border-radius: 12rpx;
  652. background-color: #666666;
  653. }
  654. .banner-active {
  655. width: 48rpx;
  656. background-color: #222222;
  657. }
  658. }
  659. .slot-wrap {
  660. background-color: red;
  661. }
  662. .content-box {
  663. // overflow-y: auto;
  664. background-color: $primary-bg-color;
  665. overflow: hidden;
  666. .activity-list{
  667. width: 750rpx;
  668. border-radius: 0;
  669. position: relative;
  670. overflow: hidden;
  671. .activity-item{
  672. width: 750rpx;
  673. height: 750rpx;
  674. background-color: #E1E3D5;
  675. opacity: 0.8;
  676. .activity-init {
  677. width: 750rpx;
  678. height: 80rpx;
  679. .huodongText2-img {
  680. margin-right: 30rpx;
  681. margin-left: 30rpx;
  682. display: flex; // 添加 flex 布局
  683. align-items: center; // 垂直居中
  684. }
  685. .huodongText2 {
  686. height: 80rpx;
  687. display: flex; // 添加 flex 布局
  688. align-items: center; // 垂直居中
  689. font-weight: 350;
  690. font-size: 24rpx;
  691. color: #4C644A;
  692. line-height: 34rpx;
  693. text-align: left;
  694. font-style: normal;
  695. text-transform: none;
  696. }
  697. .activity-btn {
  698. width: 144rpx;
  699. height: 48rpx;
  700. border-radius: 0rpx 0rpx 0rpx 0rpx;
  701. border: 1rpx solid #4C644A;
  702. font-weight: 350;
  703. font-size: 22rpx;
  704. color: #4C644A;
  705. line-height: 32rpx;
  706. text-align: left;
  707. font-style: normal;
  708. text-transform: none;
  709. margin-right: 20rpx;
  710. }
  711. }
  712. }
  713. }
  714. .biaoti-icon{
  715. width: 200rpx;
  716. height: 200rpx;
  717. position: absolute;
  718. top: 0;
  719. right: -22px;
  720. }
  721. .course-list {
  722. width: 750rpx;
  723. background: linear-gradient(180deg, #C4D1BB 0%, #F7F9F6 31%);
  724. border-radius: 0;
  725. padding-bottom: 22rpx;
  726. position: relative;
  727. .course-item {
  728. width: 690rpx;
  729. height: 208rpx;
  730. margin-bottom: 28rpx;
  731. padding: 0 30rpx;
  732. }
  733. overflow: hidden;
  734. }
  735. .goods-list{
  736. width: 750rpx;
  737. background: linear-gradient( 180deg, #C4D1BB 0%, #F7F9F6 31%);
  738. border-radius: 0;
  739. padding-bottom: 22rpx;
  740. position: relative;
  741. overflow: hidden;
  742. }
  743. .part-box {
  744. background: linear-gradient(180deg, #fdd118 0%, #f7f7f7 100%);
  745. border-radius: 10rpx 10rpx 10rpx 10rpx;
  746. padding: 18rpx 14rpx;
  747. .part-list {
  748. display: flex !important;
  749. flex-direction: row !important;
  750. // justify-content: space-between;
  751. background-color: #fff;
  752. border-radius: 10rpx;
  753. padding: 15rpx 15rpx 30rpx;
  754. font-size: 24rpx;
  755. color: #1d161f;
  756. margin-top: 15rpx;
  757. &-item {
  758. width: calc(33% - 10rpx);
  759. margin-right: 10rpx;
  760. }
  761. }
  762. }
  763. }
  764. .header-box {
  765. width: 100%;
  766. .banner-container {
  767. position: relative;
  768. width: 100%;
  769. .logo-search-container {
  770. position: fixed;
  771. width: 100%;
  772. display: flex;
  773. align-items: center;
  774. padding: 0 20rpx;
  775. box-sizing: border-box;
  776. z-index: 9999;
  777. background-color: rgba(214, 225, 208,1);
  778. .search-box {
  779. margin: 0rpx 20rpx 0rpx 20rpx;
  780. height: 61rpx;
  781. background: rgba(255, 255, 255, 0.3);
  782. border-radius: 30rpx;
  783. opacity: 1;
  784. display: flex;
  785. align-items: center;
  786. flex-direction: row;
  787. text {
  788. font-size: 24rpx;
  789. font-weight: 400;
  790. color: #9D9D9D;
  791. line-height: 61rpx;
  792. margin-left: 11rpx;
  793. }
  794. }
  795. }
  796. .centered-image {
  797. display: flex;
  798. justify-content: center;
  799. align-items: center;
  800. height: 61rpx;
  801. }
  802. }
  803. .content {
  804. width: 100%;
  805. z-index: 50;
  806. // margin-top: -60rpx;s
  807. .title-tab {
  808. font-size: 34rpx;
  809. color: #aca9af;
  810. font-style: italic;
  811. font-weight: 700;
  812. margin-bottom: 26rpx;
  813. padding: 0 20rpx;
  814. &-item {
  815. margin-right: 30rpx;
  816. }
  817. &-actived {
  818. color: #000;
  819. }
  820. }
  821. }
  822. }
  823. .box-list {
  824. display: flex;
  825. flex-wrap: wrap;
  826. justify-content: flex-start;
  827. width: calc(750rpx - 40rpx);
  828. height: 292rpx;
  829. background: linear-gradient(180deg, #C4D1BB 0%, #F7F9F6 44%);
  830. border-radius: 0rpx 0rpx 0rpx 0rpx;
  831. //background-color: #FFFFFF;;
  832. padding: 0 20rpx 0;
  833. &-item {
  834. display: flex;
  835. flex-direction: column;
  836. justify-content: center;
  837. align-items: center;
  838. width: 20%;
  839. flex-shrink: 0;
  840. text-align: center;
  841. color: #1d161f;
  842. font-size: 26rpx;
  843. }
  844. }
  845. .biaoti {
  846. width: 100%;
  847. height: 186rpx;
  848. display: flex;
  849. justify-content: center;
  850. align-items: center
  851. }
  852. }
  853. </style>
  854. <style lang="scss">
  855. page {
  856. height: 100vh;
  857. }
  858. </style>