group.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. <!-- 拼团 -->
  2. <template>
  3. <view class="groupBox" v-if="groupProductList.length" :style="[...boxPadding]">
  4. <view class="group" :style="[...boxStyle]">
  5. <view class="group-top acea-row row-middle row-between" :style="[bgImgStyle]">
  6. <view class="group-top-left acea-row">
  7. <image v-if="selectStyle == 0" :src="logoUrl" alt="" class="logo">
  8. <view v-else class="titleFont" :style="[...headerTitleConfig]">{{ titleConfig }}</view>
  9. <view class="interval" :style="[lineColor]"></view>
  10. <!-- <image src="" alt="" class="pinkHead" :style="[contentStyle]"> -->
  11. <view class="avater-box"
  12. v-if="groupInfo.orderDoneUserImages&&groupInfo.orderDoneUserImages.length">
  13. <image class="avater1" :src="groupInfo.orderDoneUserImages[0]"></image>
  14. <image class="avater2" v-if="groupInfo.orderDoneUserImages.length>1"
  15. :src="groupInfo.orderDoneUserImages[1]"></image>
  16. <image class="avater3" v-if="groupInfo.orderDoneUserImages.length>2"
  17. :src="groupInfo.orderDoneUserImages[2]"></image>
  18. </view>
  19. <view v-if="groupInfo.orderDoneUserImages" class="num ml-num"
  20. :class="groupInfo.orderDoneUserImages.length==1?'num1':groupInfo.orderDoneUserImages.length==2?'num2':groupInfo.orderDoneUserImages.length>=3?'num3':''"
  21. :style="[titleColor]">{{groupInfo.totalAllOrderDone}}人拼团成功</view>
  22. </view>
  23. <view class="group-top-right" :style="[headerBtnColor]" @click="toMore">
  24. 更多
  25. <text class="iconfont icon-xiangyou" :style="[headerBtnColor]"></text>
  26. </view>
  27. </view>
  28. <!-- 样式一 -->
  29. <view v-if="listStyle == 0" :style="[...boxBgStyle]" class="group-bottom">
  30. <view v-for="(item, index) in groupProductList" :key="index" :style="[contentConfig]">
  31. <view class=" acea-row row-between" v-if="item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses"
  32. @click="toGroupDetail(item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].productId,item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].groupActivityId)">
  33. <view class="group-bottom-left">
  34. <view class="img acea-row row-center row-middle relative" :style="[contentStyle]">
  35. <view v-show="item.stock===0" class="sellOut">已售罄</view>
  36. <easy-loadimage :image-src="item.groupBuyActivityProductResponse.image" width="250rpx"
  37. height="250rpx" :radius="dataConfig.contentStyle.val"></easy-loadimage>
  38. </view>
  39. </view>
  40. <view class="group-bottom-right acea-row row-column row-between">
  41. <view class="right-top">
  42. <view class="title line2" v-if="typeShow.includes(0)" :style="[nameColor]">
  43. {{item.groupBuyActivityProductResponse.productName}}
  44. </view>
  45. <view class="pink acea-row" v-if="typeShow.includes(1)">
  46. <view class="people-box acea-row" :style="[groupTitleColor]">
  47. <view class="people" :style="[groupTitleColor]">{{item.buyCount}}人团</view>
  48. <view class="groupNum" :style="[groupTitleFontColor]">
  49. 已拼{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses.latestBuyCount||'0'}}份
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. <view class="right-bottom acea-row row-between">
  55. <view class="price">
  56. <view class="pinkNum" v-if="typeShow.includes(2)" :style="[priceColor]"><text
  57. class="pinkNum-title">拼团价</text><text class="pinkNum-icon">¥</text><text
  58. class="pinkNum-num semiBold">{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].activePrice}}</text>
  59. </view>
  60. <view class="num" v-if="typeShow.includes(3)" :style="[originalColor]"><text
  61. class="num-title">单买价</text><text class="num-icon">¥</text><text
  62. class="icon-num regular">{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0]['attrValue'][0].price}}</text>
  63. </view>
  64. </view>
  65. <view class="btnBox" v-if="groupBtnShow">
  66. <view class="btn" :style="[...btnColor]">去拼团</view>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. </view>
  72. </view>
  73. <!-- 样式二 -->
  74. <view class="group-bottom two acea-row row-between grid-list" v-if="listStyle == 1"
  75. :style="[...boxBgStyle]">
  76. <view v-for="(item, index) in groupProductList" :key="index" v-if="item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses"
  77. @click="toGroupDetail(item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].productId,item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].groupActivityId)">
  78. <view class="group-bottom-left">
  79. <view class="img acea-row row-center row-middle big-img relative" :style="[contentStyle]">
  80. <view v-show="item.stock===0" class="sellOut">已售罄</view>
  81. <easy-loadimage :image-src="item.groupBuyActivityProductResponse.image" width="324rpx"
  82. height="324rpx" :radius="dataConfig.contentStyle.val"></easy-loadimage>
  83. </view>
  84. </view>
  85. <view class="two-item">
  86. <view class="title acea-row">
  87. <view :style="[groupTitleColor]" class="numPink-box">
  88. <view class="numPink" v-if="typeShow.includes(1)" :style="[groupTitleFontColor]">
  89. {{item.buyCount}}人团
  90. </view>
  91. </view>
  92. <text :class="typeShow.includes(1) ? 'line1-show' : 'line1-hidden'" class="line1"
  93. v-if="typeShow.includes(0)" :style="[nameColor]">
  94. {{item.groupBuyActivityProductResponse.productName}}
  95. </text>
  96. </view>
  97. <view class="two-item-bottom acea-row row-between">
  98. <view class="price">
  99. <view class="pinkNum" v-if="typeShow.includes(2)" :style="[priceColor]">
  100. <text class="num-icon">¥</text><text
  101. class="num semiBold">{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].activePrice}}</text>
  102. </view>
  103. <view class="otNum regular" v-if="typeShow.includes(3)" :style="[originalColor]">
  104. ¥{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0]['attrValue'][0].price}}
  105. </view>
  106. </view>
  107. <view class="btnBox" v-if="groupBtnShow">
  108. <view class="btn" :style="[...btnColor]">去拼团</view>
  109. </view>
  110. </view>
  111. </view>
  112. </view>
  113. </view>
  114. <!-- 样式三 -->
  115. <view class="group-bottom three acea-row grid-three" v-if="listStyle == 2" :style="[...boxBgStyle]">
  116. <view v-for="(item, index) in groupProductList" :key="index" class="three-box" v-if="item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses"
  117. @click="toGroupDetail(item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].productId,item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].groupActivityId)">
  118. <view class="group-bottom-left">
  119. <view class="img acea-row row-center row-middle three-img relative" :style="[contentStyle]">
  120. <view v-show="item.stock===0" class="sellOut">已售罄</view>
  121. <easy-loadimage :image-src="item.groupBuyActivityProductResponse.image" width="100%"
  122. class="loadimage" height="100%" :radius="dataConfig.contentStyle.val"></easy-loadimage>
  123. </view>
  124. </view>
  125. <view class="two-item">
  126. <view class="title acea-row">
  127. <view :style="[groupTitleColor]" class="numPink-box numPink-box-special">
  128. <view class="numPink" v-if="typeShow.includes(1)" :style="[groupTitleFontColor]">
  129. {{item.buyCount}}人团
  130. </view>
  131. </view>
  132. <text class="line1" v-if="typeShow.includes(0)" :style="[nameColor]">
  133. {{item.groupBuyActivityProductResponse.productName}}
  134. </text>
  135. </view>
  136. <view class="two-item-bottom">
  137. <view class="price">
  138. <view class="pinkNum" v-if="typeShow.includes(2)" :style="[priceColor]">
  139. <text class="num-icon">¥</text><text
  140. class="num semiBold">{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].activePrice}}</text>
  141. </view>
  142. <view class="otNum regular" v-if="typeShow.includes(3)" :style="[originalColor]">
  143. ¥{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0]['attrValue'][0].price}}
  144. </view>
  145. </view>
  146. </view>
  147. </view>
  148. </view>
  149. </view>
  150. <!-- 样式四 -->
  151. <view class="group-bottom four acea-row " v-if="listStyle == 3" :style="[...boxBgStyle]">
  152. <scroll-view scroll-x="true" class="scroll_view">
  153. <view v-for="(item, index) in groupProductList" :key="index" class="four-item" :style="[fourStyle]" v-if="item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses"
  154. @click="toGroupDetail(item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].productId,item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].groupActivityId)">
  155. <view class="group-bottom-left">
  156. <view class="img acea-row row-center row-middle four-img relative" :style="[contentStyle]">
  157. <view v-show="item.stock===0" class="sellOut">已售罄</view>
  158. <easy-loadimage :image-src="item.groupBuyActivityProductResponse.image" width="240rpx"
  159. height="240rpx" :radius="dataConfig.contentStyle.val"></easy-loadimage>
  160. </view>
  161. </view>
  162. <view class="two-item">
  163. <view class="title acea-row" :style="[nameColor]">
  164. <view :style="[groupTitleColor]" class="numPink-box numPink-box-special">
  165. <view class="numPink" v-if="typeShow.includes(1)" :style="[groupTitleFontColor]">
  166. {{item.buyCount}}人团
  167. </view>
  168. </view>
  169. <text class="line1" v-if="typeShow.includes(0)">
  170. {{item.groupBuyActivityProductResponse.productName}}
  171. </text>
  172. </view>
  173. <view class="two-item-bottom">
  174. <view class="price">
  175. <view class="pinkNum" v-if="typeShow.includes(2)" :style="[priceColor]">
  176. <text class="num-icon">¥</text><text
  177. class="num semiBold">{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0].activePrice}}</text>
  178. </view>
  179. <view class="otNum regular" v-if="typeShow.includes(3)" :style="[originalColor]">
  180. ¥{{item.groupBuyActivityProductResponse.groupBuyActivitySkuResponses[0]['attrValue'][0].price}}
  181. </view>
  182. </view>
  183. </view>
  184. </view>
  185. </view>
  186. </scroll-view>
  187. </view>
  188. <emptyPage :mTop="'0'" v-if="groupProductList.length==0" title="暂无拼团商品,去看看其他商品吧~~"
  189. :imgSrc="urlDomain+'crmebimage/presets/noActivity.png'"></emptyPage>
  190. </view>
  191. </view>
  192. </template>
  193. <script>
  194. import {
  195. getGroupIndexApi,
  196. groupbuyMerchantApi
  197. } from '@/api/group.js'
  198. import easyLoadimage from '@/components/base/easy-loadimage.vue';
  199. import emptyPage from '@/components/emptyPage.vue'
  200. let app = getApp();
  201. export default {
  202. name: 'homeGroup',
  203. components: {
  204. easyLoadimage,
  205. emptyPage
  206. },
  207. props: {
  208. dataConfig: {
  209. type: Object,
  210. default: () => {}
  211. },
  212. merId: { // 商户id
  213. type: Number,
  214. default: 0
  215. },
  216. },
  217. data() {
  218. return {
  219. urlDomain: this.$Cache.get("imgHost"),
  220. listStyle: 0,
  221. logoUrl: null,
  222. typeShow: [0, 1, 2, 3],
  223. groupBtnShow: true,
  224. selectStyle: '',
  225. titleConfig: '',
  226. selectBgImg: '',
  227. bgImgUrl: '',
  228. headerTitleStyle: 0,
  229. old: {
  230. scrollTop: 0
  231. },
  232. groupInfo: {},
  233. groupProductList: [],
  234. themeColor:this.$options.filters.filterTheme(app.globalData.theme)
  235. }
  236. },
  237. computed: {
  238. //容器样式
  239. //最外层盒子的样式
  240. boxStyle() {
  241. return [{
  242. 'border-radius': this.dataConfig.bgStyle.val ? 2 * this.dataConfig.bgStyle.val + 'rpx' : '0'
  243. },
  244. {
  245. margin: 0 + ' ' + 2 * this.dataConfig.lrConfig.val + 'rpx' + ' ' + 0
  246. },
  247. {
  248. background: `linear-gradient(to right,${this.dataConfig.bgColor.color[0].item}, ${this.dataConfig.bgColor.color[1].item})`,
  249. },
  250. ];
  251. },
  252. //边距
  253. boxPadding() {
  254. return [{
  255. padding: 2 * this.dataConfig.upConfig.val + 'rpx' + ' ' + '0rpx' + ' ' + 2 * this.dataConfig
  256. .downConfig.val + 'rpx',
  257. },
  258. {
  259. margin: 2 * this.dataConfig.mbConfig.val + 'rpx' + ' ' + 0 + ' ' + 0
  260. },
  261. ]
  262. },
  263. //背景颜色
  264. boxBgStyle() {
  265. return [{
  266. gap: this.listStyle != 3 ? `${2*this.dataConfig.contentConfig.val}rpx` : ''
  267. },
  268. {
  269. background: `linear-gradient(to right,${this.dataConfig.contentBgColor.color[0].item}, ${this.dataConfig.contentBgColor.color[1].item})`,
  270. },
  271. ];
  272. },
  273. fourStyle() {
  274. return {
  275. 'margin-right': this.listStyle == 3 ? `${2*this.dataConfig.contentConfig.val}rpx` : ''
  276. }
  277. },
  278. //标题颜色
  279. titleColor() {
  280. return {
  281. color: this.dataConfig.titleColor.color[0].item,
  282. };
  283. },
  284. //头部按钮颜色
  285. headerBtnColor() {
  286. return {
  287. color: this.dataConfig.headerBtnColor.color[0].item,
  288. };
  289. },
  290. //商品名称颜色
  291. nameColor() {
  292. return {
  293. color: this.dataConfig.nameColor.color[0].item,
  294. };
  295. },
  296. //商品原价颜色
  297. originalColor() {
  298. return {
  299. color: this.dataConfig.originalColor.color[0].item,
  300. };
  301. },
  302. //拼团价格颜色
  303. priceColor() {
  304. return {
  305. color: this.dataConfig.themeStyleConfig.tabVal?this.dataConfig.priceColor.color[0].item:this.themeColor,
  306. };
  307. },
  308. //标签颜色
  309. groupTitleColor() {
  310. return {
  311. background: this.dataConfig.themeStyleConfig.tabVal?this.dataConfig.groupTitleColor.color[0].item:this.themeColor,
  312. };
  313. },
  314. //已拼颜色
  315. groupTitleFontColor() {
  316. return {
  317. color: this.dataConfig.themeStyleConfig.tabVal?this.dataConfig.groupTitleColor.color[0].item:this.themeColor,
  318. }
  319. },
  320. //分割线颜色
  321. lineColor() {
  322. return {
  323. border: `1rpx solid ${this.dataConfig.lineColor.color[0].item}`,
  324. };
  325. },
  326. //按钮颜色
  327. btnColor() {
  328. return [{
  329. background: `linear-gradient(to right,${this.dataConfig.themeStyleConfig.tabVal?this.dataConfig.btnColor.color[0].item:'#FF7931'}, ${this.dataConfig.themeStyleConfig.tabVal?this.dataConfig.btnColor.color[1].item:this.themeColor})`,
  330. },
  331. {
  332. color: this.dataConfig.btnFontColor.color[0].item,
  333. }
  334. ];
  335. },
  336. //图片圆角
  337. contentStyle() {
  338. return {
  339. 'border-radius': this.dataConfig.contentStyle.val ? 2 * this.dataConfig.contentStyle.val + 'rpx' : '0',
  340. };
  341. },
  342. //样式一内容边距
  343. contentConfig() {
  344. return {
  345. 'paddingBottom': 2 * this.dataConfig.contentConfig.val + 'rpx',
  346. };
  347. },
  348. //背景图片
  349. bgImgStyle() {
  350. return {
  351. 'background': this.selectBgImg == 0 ? `url(${this.bgImgUrl})` :
  352. `linear-gradient(to right,${this.dataConfig.bgColor.color[0].item}, ${this.dataConfig.bgColor.color[1].item})`,
  353. };
  354. },
  355. //标题文字格式
  356. headerTitleConfig() {
  357. return [{
  358. 'font-weight': this.headerTitleStyle == 0 ? 600 : ''
  359. },
  360. {
  361. 'font-style': this.headerTitleStyle == 2 ? 'italic' : 'normal'
  362. },
  363. {
  364. color: this.dataConfig.headerTitleColor.color[0].item,
  365. }
  366. ]
  367. }
  368. },
  369. created() {
  370. this.setConfig()
  371. this.getInfo()
  372. },
  373. methods: {
  374. //去拼团
  375. toGroupDetail(id, groupActivityId) {
  376. uni.navigateTo({
  377. url: `/pages/goods/goods_details/index?id=${id}&mt=2&gd=${groupActivityId}`
  378. })
  379. },
  380. getInfo() {
  381. this.merId ? groupbuyMerchantApi(this.merId, 6).then((res) => {
  382. this.groupInfo = res.data
  383. this.groupProductList = res.data.items
  384. }) : getGroupIndexApi(6).then((res) => {
  385. this.groupInfo = res.data
  386. this.groupProductList = res.data.items
  387. })
  388. },
  389. scroll: function(e) {
  390. this.old.scrollTop = e.detail.scrollTop
  391. },
  392. // 更多
  393. toMore() {
  394. uni.navigateTo({
  395. url: `/pages/activity/goods_group/index?merId=${this.merId}`
  396. })
  397. },
  398. setConfig() {
  399. this.listStyle = this.dataConfig.tabConfig.tabVal;
  400. this.logoUrl = this.dataConfig.logoConfig.url;
  401. this.typeShow = this.dataConfig.typeConfig.activeValue;
  402. this.groupBtnShow = this.dataConfig.groupBtnConfig.tabVal == 0 ? true : false;
  403. this.selectStyle = this.dataConfig.selectStyle.tabVal;
  404. this.titleConfig = this.dataConfig.titleConfig.val;
  405. this.selectBgImg = this.dataConfig.selectBgImg.tabVal;
  406. this.bgImgUrl = this.dataConfig.bgImg.url;
  407. this.headerTitleStyle = this.dataConfig.headerTitleStyle.tabVal;
  408. },
  409. }
  410. }
  411. </script>
  412. <style lang="scss" scoped>
  413. .groupBox {
  414. overflow: hidden;
  415. .group {
  416. overflow: hidden;
  417. .group-top {
  418. width: 100%;
  419. height: 100rpx;
  420. padding: 0 24rpx;
  421. background-size: cover !important;
  422. .group-top-left {
  423. align-items: center;
  424. .ml10 {
  425. margin-top: 4rpx;
  426. }
  427. .logo {
  428. width: 154rpx;
  429. height: 32rpx;
  430. object-fit: contain;
  431. }
  432. .interval {
  433. width: 0rpx;
  434. height: 28rpx;
  435. margin-left: 20rpx;
  436. margin-top: 4rpx;
  437. opacity: 0.6;
  438. }
  439. .pinkHead {
  440. width: 108rpx;
  441. height: 36rpx;
  442. }
  443. .num {
  444. height: 32rpx;
  445. line-height: 32rpx;
  446. font-size: 26rpx;
  447. margin-left: 16rpx;
  448. color: #FFFFFF;
  449. margin-top: 6rpx;
  450. }
  451. .num1 {
  452. margin-left: 12rpx;
  453. }
  454. .num2 {
  455. margin-left: 41rpx;
  456. }
  457. .num3 {
  458. margin-left: 76rpx;
  459. }
  460. }
  461. .group-top-right {
  462. height: 32rpx;
  463. line-height: 32rpx;
  464. font-size: 24rpx;
  465. .icon-xiangyou {
  466. font-size: 24rpx;
  467. }
  468. }
  469. }
  470. .group-bottom {
  471. width: 100%;
  472. padding: 20rpx;
  473. .img {
  474. width: 240rpx;
  475. // height: 240rpx;
  476. // background: #F3F9FF;
  477. }
  478. .big-img.img {
  479. width: 100%;
  480. height: 324rpx;
  481. }
  482. .three-img.img {
  483. width: 100%;
  484. height: 210rpx;
  485. }
  486. .loadimage {
  487. width: 100%;
  488. height: 100%;
  489. }
  490. .four-img {
  491. width: 240rpx;
  492. height: 240rpx;
  493. }
  494. .group-bottom-right {
  495. flex: 1;
  496. margin-left: 20rpx;
  497. .right-top {
  498. .title {
  499. font-size: 28rpx;
  500. color: #333333;
  501. }
  502. .people-box {
  503. border-radius: 8rpx;
  504. }
  505. .pink {
  506. margin-top: 16rpx;
  507. font-size: 22rpx;
  508. border-radius: 8rpx;
  509. .people {
  510. color: #fff;
  511. padding: 4rpx 16rpx;
  512. border-radius: 8rpx;
  513. }
  514. .groupNum {
  515. background-color: rgba(255, 255, 255, 0.9);
  516. padding: 4rpx 12rpx;
  517. border-radius: 0 6rpx 6rpx 0;
  518. margin-left: 2rpx;
  519. }
  520. }
  521. }
  522. .right-bottom {
  523. .price {
  524. .pinkNum {
  525. .pinkNum-num {
  526. font-size: 36rpx;
  527. }
  528. }
  529. .num {
  530. color: #999999;
  531. }
  532. }
  533. .btnBox {
  534. // margin-top: 16rpx;
  535. font-size: 22rpx;
  536. display: flex;
  537. align-items: end;
  538. .btn {
  539. padding: 12rpx 20rpx;
  540. border-radius: 50rpx;
  541. }
  542. }
  543. }
  544. }
  545. }
  546. .group-bottom.two {
  547. .two-item {
  548. width: 100%;
  549. .title {
  550. margin-top: 20rpx;
  551. .numPink {
  552. color: #ffffff;
  553. padding: 6rpx 12rpx;
  554. border-radius: 4rpx;
  555. font-size: 22rpx;
  556. }
  557. .line1-show {
  558. width: 210rpx;
  559. margin-left: 10rpx;
  560. }
  561. .line1-hidden {
  562. width: 300rpx;
  563. }
  564. }
  565. .two-item-bottom {
  566. margin-top: 10rpx;
  567. .pinkNum {
  568. .num {
  569. font-size: 36rpx;
  570. }
  571. }
  572. .otNum {
  573. font-size: 26rpx;
  574. color: #999999;
  575. text-decoration: line-through;
  576. }
  577. .btnBox {
  578. margin-top: 16rpx;
  579. font-size: 22rpx;
  580. .btn {
  581. padding: 12rpx 24rpx;
  582. border-radius: 50rpx;
  583. }
  584. }
  585. }
  586. }
  587. }
  588. .group-bottom.three {
  589. .three-box {
  590. position: relative;
  591. }
  592. .numPink {
  593. color: #ffffff;
  594. padding: 4rpx 12rpx;
  595. border-radius: 16rpx;
  596. font-size: 22rpx;
  597. // z-index: 9;
  598. }
  599. .two-item {
  600. width: 100%;
  601. .title {
  602. margin-top: 18rpx;
  603. // width: 100%;
  604. .numPink {
  605. color: #ffffff;
  606. padding: 4rpx 12rpx;
  607. border-radius: 8rpx;
  608. font-size: 22rpx;
  609. }
  610. .line1 {
  611. width: 180rpx;
  612. margin-left: 5px;
  613. }
  614. }
  615. .two-item-bottom {
  616. margin-top: 10rpx;
  617. .pinkNum {
  618. .num {
  619. font-size: 36rpx;
  620. }
  621. }
  622. .otNum {
  623. font-size: 26rpx;
  624. color: #999999;
  625. text-decoration: line-through;
  626. }
  627. .btnBox {
  628. margin-top: 16rpx;
  629. font-size: 22rpx;
  630. .btn {
  631. padding: 12rpx 24rpx;
  632. border-radius: 50rpx;
  633. }
  634. }
  635. }
  636. }
  637. }
  638. .group-bottom.four {
  639. overflow: hidden;
  640. flex-wrap: nowrap;
  641. position: relative;
  642. .four-item {
  643. position: relative;
  644. }
  645. .numPink {
  646. color: #ffffff;
  647. padding: 6rpx 12rpx;
  648. border-radius: 32rpx;
  649. font-size: 22rpx;
  650. z-index: 9;
  651. }
  652. .two-item {
  653. width: 210rpx;
  654. .title {
  655. margin-top: 18rpx;
  656. .numPink {
  657. color: #ffffff;
  658. padding: 6rpx 12rpx;
  659. border-radius: 32rpx;
  660. font-size: 22rpx;
  661. }
  662. .line1 {
  663. width: 210rpx;
  664. }
  665. }
  666. .two-item-bottom {
  667. margin-top: 10rpx;
  668. .pinkNum {
  669. .num {
  670. font-size: 36rpx;
  671. }
  672. }
  673. .otNum {
  674. font-size: 26rpx;
  675. text-decoration: line-through;
  676. }
  677. .btnBox {
  678. margin-top: 16rpx;
  679. font-size: 22rpx;
  680. .btn {
  681. padding: 12rpx 24rpx;
  682. border-radius: 50rpx;
  683. }
  684. }
  685. }
  686. }
  687. }
  688. }
  689. .price {
  690. display: flex;
  691. flex-direction: column;
  692. justify-content: flex-end;
  693. }
  694. .grid-list {
  695. display: grid !important;
  696. grid-template-columns: repeat(2, 1fr);
  697. grid-template-rows: auto;
  698. width: 100%;
  699. }
  700. .grid-three {
  701. width: 100%;
  702. display: grid !important;
  703. grid-template-columns: repeat(3, 1fr);
  704. grid-template-rows: auto;
  705. }
  706. }
  707. .titleFont {
  708. font-size: 16px;
  709. }
  710. .scroll_view {
  711. white-space: nowrap;
  712. .four-item {
  713. display: inline-block;
  714. color: #999999;
  715. }
  716. }
  717. .numPink {
  718. background-color: rgba(255, 255, 255, 0.9);
  719. }
  720. .numPink-box {
  721. border-radius: 8rpx;
  722. }
  723. .numPink-box-special {
  724. position: absolute;
  725. left: 10rpx;
  726. top: 10rpx;
  727. border-radius: 32rpx;
  728. }
  729. .avater-box {
  730. position: relative;
  731. display: flex;
  732. align-items: end;
  733. margin-top: 4rpx;
  734. image {
  735. width: 36rpx;
  736. height: 36rpx;
  737. border-radius: 18rpx;
  738. }
  739. .avater1 {
  740. margin-left: 20rpx;
  741. }
  742. .avater2 {
  743. position: absolute;
  744. margin-left: 48rpx;
  745. }
  746. .avater3 {
  747. position: absolute;
  748. left: 78rpx;
  749. }
  750. }
  751. .regular {
  752. line-height: 34rpx !important;
  753. font-weight: 400 !important;
  754. }
  755. </style>