GoodsGroup.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. <template>
  2. <div class="goods-view" :style="{ backgroundColor: modelData.bgColor || '' }">
  3. <div v-if="modelData.navStyle === 1">
  4. <!-- 标题栏风格1-->
  5. <div class="title-view clearfix" v-if="modelData.titleStyle === 2" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
  6. {{ modelData.title }}
  7. <text class="second-tit primary-btn" v-if="modelData.title_two">{{ modelData.title_two }}</text>
  8. </div>
  9. <!-- 标题栏风格2-->
  10. <div class="tit-view-two clearfix" v-if="modelData.titleStyle === 1" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
  11. <text class="tit-view-two-line" :style="{ background: modelData.titleSetColor }"></text>
  12. <text class="tit-two-text">{{ modelData.title }}</text>
  13. <text class="tit-two-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</text>
  14. </div>
  15. <!-- 标题栏风格3-->
  16. <div class="tit-view-three" v-if="modelData.titleStyle === 3" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
  17. <div class="tit-three-text">
  18. <div class="tit-view-style tit-view-style-left">
  19. <text class="three-style-big" :style="{ background: modelData.titleSetColor }"></text>
  20. <text class="three-style-small" :style="{ background: modelData.titleSetColor }"></text>
  21. </div>
  22. {{ modelData.title }}
  23. <div class="tit-view-style tit-view-style-right">
  24. <text class="three-style-small" :style="{ background: modelData.titleSetColor }"></text>
  25. <text class="three-style-big" :style="{ background: modelData.titleSetColor }"></text>
  26. </div>
  27. </div>
  28. <div class="tit-three-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</div>
  29. </div>
  30. <!-- 标题栏风格4 -->
  31. <div class="tit-view-four" v-if="modelData.titleStyle === 4" :style="{ color: modelData.titleColor, backgroundColor: modelData.titleBgColor }">
  32. <div class="tit-four-text">{{ modelData.title }}</div>
  33. <div class="tit-four-text-c" v-if="modelData.title_two">{{ modelData.title_two }}</div>
  34. </div>
  35. </div>
  36. <ul v-if="modelData.navStyle === 2" class="cate-nav-s">
  37. <li class="cate-li" v-for="(item, index) in modelData.tabList" :key="index" :class="[index === tab_index ? 'cate-on' : '']" @click="changeTab(item, index)">
  38. {{ item.tabName }}
  39. </li>
  40. </ul>
  41. <div class="goods-div" :class="[modelData.type === 2 ? 'show-scroll' : '']">
  42. <ul v-if="modelData.colNum === 1">
  43. <li
  44. class="clearfix goods-box"
  45. v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList"
  46. :key="index"
  47. @click="goPage(`/pagesT/product/product?id=${item.id}`)"
  48. :style="{ backgroundColor: modelData.itemBgColor || '#ffffff', color: modelData.textColor || '#333333' }"
  49. >
  50. <view v-if="item.brandName" class="brand-name primary-lg">{{ item.brandName }}</view>
  51. <view class="float_left img-box">
  52. <block v-if="item.isDistribution === 4">
  53. <view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
  54. </block>
  55. <image class="goods-img-one" :src="item.images[0]" mode="aspectFill"></image>
  56. </view>
  57. <div class="float_left goods-info">
  58. <div class="goods-one-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
  59. <div class="goods-one-desc ellipsis" v-if="modelData.goodsInfo.includes(4)">{{ item.describe }}</div>
  60. <div class="goods-one-sale">
  61. <text v-if="modelData.goodsInfo.includes(5) && isSalesNum === 5">已售{{ item.realSalesNum || 0 }}</text>
  62. </div>
  63. <div class="goods-price clearfix">
  64. <view class="float_left price-view">
  65. <block v-if="!showGoodsPrice">
  66. <view class="now-priceG" v-if="modelData.goodsInfo.includes(2)">
  67. <text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
  68. <view style="display: inline-block;font-size: 32rpx;" :style="{ color: modelData.priceColor || primaryColor }">
  69. <block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
  70. <block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
  71. </view>
  72. <view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
  73. <view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
  74. <view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
  75. <view class="price-bs">vip</view>
  76. </view>
  77. </view>
  78. <view class="decs-price" v-if="modelData.goodsInfo.includes(3) && !showGoodsPrice">¥{{ item.marketPrice || 0 }}</view>
  79. </block>
  80. <block v-else>
  81. <view class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)">
  82. <text :style="{ color: modelData.priceColor || primaryColor }">{{ showGoodsPrice }}</text>
  83. </view>
  84. </block>
  85. </view>
  86. <div :style="{ color: modelData.btnColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
  87. <text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
  88. <text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
  89. </div>
  90. </div>
  91. </div>
  92. </li>
  93. </ul>
  94. <!-- 两列 -->
  95. <div class="more-col-view goods-two-ul" v-else-if="modelData.colNum === 2">
  96. <div class="more-col-li goods-two-li" v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList" :key="index">
  97. <div :style="{ backgroundColor: modelData.itemBgColor }" class="goods-li" @click="goPage(`/pagesT/product/product?id=${item.id}`)">
  98. <div class="goods-img-box">
  99. <block v-if="item.isDistribution === 4">
  100. <view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
  101. </block>
  102. <view v-if="item.brandName" class="goods-brand primary-lg">{{ item.brandName }}</view>
  103. <image class="goods-two-img" :src="item.images[0]" mode="aspectFill"></image>
  104. </div>
  105. <div class="goods-info-box">
  106. <div class="goods-two-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
  107. <div class="goods-price clearfix">
  108. <view class="float_left price-view" v-if="!showGoodsPrice">
  109. <view class="now-priceG" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
  110. <text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
  111. <view style="display: inline-block;">
  112. <block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
  113. <block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
  114. </view>
  115. </view>
  116. <view class="vip-price clearfix" v-if="item.minMemberPrice > 0">
  117. <view class="price-text" v-if="item.isEq === 4">¥{{ item.minMemberPrice }}</view>
  118. <view class="price-text" v-else>¥{{ item.maxMemberPrice }}</view>
  119. <view class="price-bs">vip</view>
  120. </view>
  121. <block v-else>
  122. <text class="y-price" :style="{ color: changeColor(modelData.textColor, 0.35) }" v-if="modelData.goodsInfo.includes(3)">
  123. ¥{{ item.marketPrice || 0 }}
  124. </text>
  125. </block>
  126. </view>
  127. <view class="float_left price-view" v-else>
  128. <text class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
  129. {{ showGoodsPrice }}
  130. </text>
  131. </view>
  132. <view :style="{ color: modelData.btnColor || primaryColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
  133. <text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
  134. <text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
  135. </view>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. <!-- 三列 -->
  142. <div class="more-col-view" v-else>
  143. <div class="more-col-li goods-three-li" v-for="(item, index) in modelData.navStyle === 2 ? tab_goods_list : goodsList" :key="index">
  144. <div :style="{ backgroundColor: modelData.itemBgColor }" class="goods-li" @click="goPage(`/pagesT/product/product?id=${item.id}`)">
  145. <div class="goods-img-box">
  146. <block v-if="item.isDistribution === 4">
  147. <view class="sale-end" v-if="!(item.inventorTotal - 0) || item.inventorTotal - 0 <= 0"><text class="ibonfont ibonbuhuozhong"></text></view>
  148. </block>
  149. <view v-if="item.brandName" class="goods-brand primary-lg">{{ item.brandName }}</view>
  150. <image class="goods-three-img" :src="item.images[0]" mode="aspectFill"></image>
  151. </div>
  152. <div class="goods-info-box">
  153. <div class="goods-name ellipsis" v-if="modelData.goodsInfo.includes(1)">{{ item.title }}</div>
  154. <div class="goods-price clearfix">
  155. <view class="float_left now-priceG" v-if="!showGoodsPrice">
  156. <view v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
  157. <text class="rmbG-icon" :style="{ color: modelData.priceColor || primaryColor }">¥</text>
  158. <view style="display: inline-block;">
  159. <block v-if="item.isEq === 4"><rich-text :nodes="$_utils.splitPrice(item.minSalePrice)"></rich-text></block>
  160. <block v-else><rich-text :nodes="$_utils.splitPrice(item.maxSalePrice)"></rich-text></block>
  161. </view>
  162. </view>
  163. </view>
  164. <view class="float_left price-view" v-else>
  165. <text class="now-priceG showGoodsPrice" v-if="modelData.goodsInfo.includes(2)" :style="{ color: modelData.priceColor || primaryColor }">
  166. {{ showGoodsPrice }}
  167. </text>
  168. </view>
  169. <view :style="{ color: modelData.btnColor || primaryColor }" class="float_right add-Car-div" @click.stop="openPopSku(index)">
  170. <text v-if="modelData.btnStyle === 2" class="ibonfont ibongouwuche1 p-background-img"></text>
  171. <text v-else class="ibonfont ibonxinzeng1 p-background-img"></text>
  172. </view>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <AddCardModel :selAddress="selAddressD" @close="is_add_show = false" :isShow="is_add_show" @change="cardModelPopChange" :goodsId="goods_id" />
  180. </div>
  181. </template>
  182. <script>
  183. import AddCardModel from '@/components/AddCardModel';
  184. export default {
  185. name: 'GoodsGroup',
  186. components: {
  187. AddCardModel
  188. },
  189. props: {
  190. showGoodsPrice: {
  191. type: [Number, String],
  192. default: ''
  193. },
  194. modelData: {
  195. type: Object,
  196. default: () => {
  197. return {};
  198. }
  199. },
  200. goodsList: {
  201. type: Array,
  202. default: () => {
  203. return [];
  204. }
  205. },
  206. selAddress: {
  207. type: Object,
  208. default: () => {
  209. return {};
  210. }
  211. }
  212. },
  213. data() {
  214. return {
  215. source: '',
  216. tab_index: 0,
  217. tab_goods_list: [],
  218. add_goods: {
  219. images: []
  220. },
  221. buyNum: 1,
  222. goodsindex: 0,
  223. goods_id: 0,
  224. add_sku: {},
  225. is_add_show: false,
  226. isSalesNum: 4,
  227. selAddressD: {}
  228. };
  229. },
  230. watch: {
  231. selAddress(val) {
  232. this.selAddressD = val;
  233. }
  234. },
  235. created() {
  236. this.tab_goods_list = this.modelData.tabList[0].data || [];
  237. this.isSalesNum = this.$store.state.baseSet.isSalesNum;
  238. },
  239. methods: {
  240. changeColor(color, n) {
  241. return this.$u.colorToRgba(this.$_utils.hexify(color), n);
  242. },
  243. changeTab(row, index) {
  244. this.tab_index = index;
  245. this.tab_goods_list = row.data;
  246. },
  247. cardModelPopChange(obj) {
  248. if (!obj.show) {
  249. this.is_add_show = false;
  250. }
  251. },
  252. //打开加入购物车弹窗
  253. openPopSku(index) {
  254. // this.$refs.addCartPop.open();
  255. this.is_add_show = true;
  256. let row = {};
  257. // 因为不知道为什么直接把数据带过来会保错,所以我只能把index带过来
  258. if (this.modelData.navStyle === 2) {
  259. row = this.tab_goods_list[index];
  260. } else {
  261. row = this.goodsList[index];
  262. }
  263. this.goods_id = row.id;
  264. // this.add_goods = row;
  265. }
  266. }
  267. };
  268. </script>
  269. <style lang="scss">
  270. .cate-nav-s {
  271. white-space: nowrap;
  272. line-height: 70upx;
  273. width: 100%;
  274. overflow: hidden;
  275. }
  276. .cate-li {
  277. display: inline-block;
  278. font-size: 28upx;
  279. color: #666;
  280. font-weight: 400;
  281. padding: 0 20upx;
  282. text-align: center;
  283. }
  284. .cate-on:after {
  285. content: ' ';
  286. display: block;
  287. width: 50upx;
  288. margin: 0 auto;
  289. border-radius: 6upx;
  290. height: 6upx;
  291. background: $base-btn-bg;
  292. transform: translateY(-6upx);
  293. }
  294. .cate-on {
  295. color: $uni-color-primary;
  296. font-size: 32upx;
  297. }
  298. .goods-div {
  299. padding: 20upx 12rpx;
  300. }
  301. .show-scroll {
  302. height: 408upx;
  303. overflow: hidden;
  304. }
  305. .rmbG-icon {
  306. font-size: 22upx;
  307. font-weight: 400;
  308. margin-right: 2upx;
  309. }
  310. .vip-price {
  311. display: inline-block;
  312. vertical-align: middle;
  313. margin-left: 20rpx;
  314. line-height: 32rpx;
  315. height: 32rpx;
  316. border-radius: 3rpx;
  317. overflow: hidden;
  318. font-family: DINPro-Regular;
  319. .price-text {
  320. float: left;
  321. min-width: 80rpx;
  322. text-align: center;
  323. vertical-align: middle;
  324. font-size: 20rpx;
  325. color: #ffdfa2;
  326. background: linear-gradient(270deg, #1e5657 0%, #0d2b2c 100%);
  327. padding: 0 8rpx;
  328. }
  329. .price-bs {
  330. text-align: center;
  331. float: left;
  332. vertical-align: middle;
  333. width: 32rpx;
  334. background-color: #ffdfa2;
  335. font-size: 20rpx;
  336. color: #2c7564;
  337. }
  338. }
  339. .goods-price {
  340. .price-view {
  341. width: 246rpx;
  342. .now-priceG {
  343. font-family: DIN-Medium;
  344. color: $uni-color-error;
  345. display: inline-block;
  346. font-size: 32upx;
  347. font-weight: bold;
  348. line-height: 40upx;
  349. }
  350. .y-price {
  351. font-family: DIN-Medium;
  352. color: #d8d8d8;
  353. padding-left: 12upx;
  354. text-decoration: line-through;
  355. line-height: 42upx;
  356. font-weight: 400;
  357. font-size: 22upx;
  358. }
  359. }
  360. }
  361. .goods-box {
  362. padding: 20upx;
  363. margin-bottom: 20upx;
  364. background-color: #ffffff;
  365. color: #333333;
  366. margin-right: 20upx;
  367. border-radius: 16upx;
  368. position: relative;
  369. margin-left: 20rpx;
  370. box-shadow: 0px 2rpx 32rpx 0px rgba(110, 176, 138, 0.08);
  371. .img-box {
  372. position: relative;
  373. .goods-img-one {
  374. width: 260upx;
  375. height: 260upx;
  376. background-color: #f5f5f5;
  377. border-radius: 8upx;
  378. }
  379. .sale-end {
  380. position: absolute;
  381. width: 260upx;
  382. height: 260upx;
  383. border-radius: 8upx;
  384. display: block;
  385. left: 0;
  386. top: 0;
  387. text-align: center;
  388. z-index: 8;
  389. line-height: 260upx;
  390. background-color: rgba($color: #000000, $alpha: 0.3);
  391. .ibonfont {
  392. font-size: 120rpx;
  393. color: #ffffff;
  394. }
  395. }
  396. }
  397. .brand-name {
  398. position: absolute;
  399. top: 12rpx;
  400. left: 12rpx;
  401. padding: 0 10rpx;
  402. line-height: 32rpx;
  403. height: 32rpx;
  404. color: #ffffff;
  405. border-radius: 8rpx;
  406. font-size: 20rpx;
  407. z-index: 9;
  408. }
  409. .goods-info {
  410. padding-left: 20upx;
  411. width: calc(100% - 284rpx);
  412. .goods-one-name {
  413. margin-bottom: 20upx;
  414. font-size: 28rpx;
  415. font-weight: bold;
  416. color: #000000;
  417. height: 80rpx;
  418. line-height: 40rpx;
  419. }
  420. .goods-one-desc {
  421. height: 32rpx;
  422. font-size: 24rpx;
  423. font-weight: 400;
  424. color: #fa6400;
  425. line-height: 32rpx;
  426. margin-bottom: 20upx;
  427. -webkit-line-clamp: 1;
  428. }
  429. .decs-price {
  430. line-height: 28rpx;
  431. font-size: 24upx;
  432. color: #d8d8d8;
  433. text-decoration: line-through;
  434. font-weight: 400;
  435. }
  436. .goods-one-sale {
  437. height: 32rpx;
  438. font-size: 24rpx;
  439. font-weight: 400;
  440. color: #9d9d9d;
  441. line-height: 32rpx;
  442. margin-bottom: 10rpx;
  443. }
  444. .goods-price {
  445. height: 48rpx;
  446. line-height: 48rpx;
  447. font-size: 20rpx;
  448. }
  449. }
  450. }
  451. .title-view {
  452. font-size: 36rpx;
  453. font-weight: 500;
  454. color: #2a2a2a;
  455. padding-top: 24rpx;
  456. padding-bottom: 24rpx;
  457. padding-left: 20rpx;
  458. .second-tit {
  459. margin-left: 26rpx;
  460. min-width: 98rpx;
  461. padding: 0 20rpx;
  462. height: 48rpx;
  463. line-height: 48rpx;
  464. text-align: center;
  465. background: linear-gradient(90deg, #ff9148 0%, #fa6400 100%);
  466. border-radius: 0px 24rpx 0px 24rpx;
  467. font-size: 20rpx;
  468. font-weight: 400;
  469. color: #ffffff;
  470. display: inline-block;
  471. }
  472. }
  473. .goods-li {
  474. background-color: #fff;
  475. margin-bottom: 24upx;
  476. // box-shadow: 0px 0px 10upx 4upx #f5f5f5;
  477. }
  478. .goods-info-box {
  479. padding: 20upx 16upx 16upx;
  480. }
  481. .more-col-view {
  482. display: -webkit-flex;
  483. display: flex;
  484. width: 100%;
  485. // justify-content: space-between;
  486. flex-wrap: wrap;
  487. .more-col-li {
  488. .goods-li {
  489. border-radius: 8upx;
  490. margin-right: 20upx;
  491. }
  492. }
  493. }
  494. .add-cart-view {
  495. background-color: #fff;
  496. padding: 40upx 30upx 30upx;
  497. position: relative;
  498. .close-icon-view {
  499. position: absolute;
  500. right: 30upx;
  501. top: 10upx;
  502. color: #999;
  503. }
  504. .goods-top {
  505. .goods-pop-img-view {
  506. width: 200upx;
  507. height: 200upx;
  508. background-color: #d0dee5;
  509. border-radius: 8upx;
  510. .goods-pop-img {
  511. width: 100%;
  512. height: 100%;
  513. }
  514. }
  515. .goods-top-cont {
  516. width: 440upx;
  517. .goods-top-name {
  518. font-size: 32upx;
  519. height: 86upx;
  520. -webkit-line-clamp: 2;
  521. }
  522. .goods-stock {
  523. color: #666;
  524. font-size: 24upx;
  525. }
  526. .goods-top-other {
  527. padding-top: 20upx;
  528. font-size: 28upx;
  529. .goods-price {
  530. color: $uni-color-error;
  531. font-size: 32upx;
  532. margin-right: 30upx;
  533. }
  534. .goods-markt-price {
  535. color: #999;
  536. line-height: 70upx;
  537. font-size: 24upx;
  538. text-decoration: line-through;
  539. }
  540. }
  541. }
  542. }
  543. .sku-view {
  544. padding-top: 30upx;
  545. .sku-label {
  546. font-size: 28upx;
  547. font-weight: 300;
  548. }
  549. .sku-ul {
  550. padding-top: 20upx;
  551. font-size: 28upx;
  552. .sku-li {
  553. float: left;
  554. min-width: 100upx;
  555. height: 60upx;
  556. line-height: 60upx;
  557. border: 1px solid #fd463e;
  558. color: #fd463e;
  559. text-align: center;
  560. border-radius: 6upx;
  561. margin-right: 20upx;
  562. margin-bottom: 20upx;
  563. }
  564. .sku-on {
  565. // background: linear-gradient(315deg, #fd463e 0%, #ff7f61 100%);
  566. border-color: #fff;
  567. color: #fff;
  568. }
  569. }
  570. }
  571. .add-pop-btn {
  572. width: 600upx;
  573. height: 70upx;
  574. line-height: 70upx;
  575. font-size: 28upx;
  576. // background: linear-gradient(315deg, #fd463e 0%, #ff7f61 100%);
  577. text-align: center;
  578. color: #fff;
  579. margin: 30upx auto 0;
  580. border-radius: 8upx;
  581. }
  582. }
  583. /* 标题栏风格2*/
  584. .tit-view-two {
  585. padding: 20upx;
  586. }
  587. .tit-two-text {
  588. font-size: 32upx;
  589. font-weight: bold;
  590. }
  591. .tit-view-two-line {
  592. display: inline-block;
  593. width: 6upx;
  594. height: 32upx;
  595. background: #fd463e;
  596. vertical-align: middle;
  597. transform: translateY(-4upx);
  598. margin-right: 10upx;
  599. }
  600. .tit-two-text-c {
  601. padding-left: 10upx;
  602. font-size: 24upx;
  603. }
  604. /* 标题栏风格3*/
  605. .tit-view-three {
  606. text-align: center;
  607. padding: 20upx;
  608. }
  609. .tit-three-text {
  610. font-size: 32upx;
  611. font-weight: bold;
  612. position: relative;
  613. display: inline-block;
  614. min-width: 128upx;
  615. height: 44upx;
  616. }
  617. .tit-view-style {
  618. position: absolute;
  619. line-height: 36upx;
  620. }
  621. .tit-view-style-left {
  622. left: -40upx;
  623. top: 4upx;
  624. transform: rotate(50deg);
  625. }
  626. .tit-view-style-left .three-style-small {
  627. // transform: translateX(-4upx);
  628. margin-left: 6upx;
  629. }
  630. .tit-view-style-right {
  631. right: -40upx;
  632. bottom: 4upx;
  633. transform: rotate(50deg);
  634. }
  635. .tit-view-style-right .three-style-small {
  636. // transform: translateX(4upx);
  637. margin-right: 6upx;
  638. }
  639. .tit-four-text-c,
  640. .tit-three-text-c {
  641. font-size: 20upx;
  642. font-weight: 300;
  643. padding-top: 4upx;
  644. }
  645. .three-style-big {
  646. display: inline-block;
  647. width: 8upx;
  648. height: 36upx;
  649. background: #fd463e;
  650. border-radius: 8upx;
  651. vertical-align: middle;
  652. }
  653. .three-style-small {
  654. display: inline-block;
  655. width: 6upx;
  656. height: 16upx;
  657. background: #fd463e;
  658. opacity: 0.6;
  659. border-radius: 8upx;
  660. vertical-align: middle;
  661. }
  662. /* 标题栏风格4*/
  663. .tit-view-four {
  664. text-align: center;
  665. padding: 20upx;
  666. }
  667. .tit-four-text {
  668. font-size: 32upx;
  669. font-weight: bold;
  670. }
  671. .tit-four-text:before {
  672. display: inline-block;
  673. content: '';
  674. width: 60upx;
  675. height: 1px;
  676. background: #333;
  677. vertical-align: middle;
  678. margin-right: 10upx;
  679. }
  680. .tit-four-text:after {
  681. display: inline-block;
  682. content: '';
  683. width: 60upx;
  684. height: 2upx;
  685. background: #333;
  686. vertical-align: middle;
  687. margin-left: 10upx;
  688. }
  689. // 加入购物车按钮
  690. .add-Car-div {
  691. // color: #fd463e;
  692. .ibonfont {
  693. font-size: 40rpx;
  694. background-image: -webkit-linear-gradient(45deg, #fe923e 0%, #ff3724 100%);
  695. -webkit-background-clip: text;
  696. color: transparent;
  697. display: inline-block;
  698. }
  699. }
  700. .more-col-view {
  701. padding-left: 10rpx;
  702. .goods-three-li {
  703. .goods-li {
  704. margin-right: 12rpx;
  705. width: 226rpx;
  706. border-radius: 10rpx;
  707. overflow: hidden;
  708. box-shadow: 0 2rpx 32rpx 0 rgba(110, 176, 138, 0.08);
  709. .goods-img-box {
  710. padding-top: 24rpx;
  711. position: relative;
  712. .sale-end {
  713. position: absolute;
  714. width: 190rpx;
  715. height: 190rpx;
  716. border-radius: 10upx;
  717. display: block;
  718. left: 50%;
  719. top: 50%;
  720. transform: translate(-50%, calc(-50% + 12rpx));
  721. text-align: center;
  722. z-index: 8;
  723. line-height: 190rpx;
  724. background-color: rgba($color: #000000, $alpha: 0.3);
  725. .ibonfont {
  726. font-size: 120rpx;
  727. color: #ffffff;
  728. }
  729. }
  730. .goods-brand {
  731. z-index: 9;
  732. position: absolute;
  733. padding: 0 10rpx;
  734. height: 32rpx;
  735. font-size: 20rpx;
  736. font-weight: 500;
  737. line-height: 32rpx;
  738. left: 8rpx;
  739. top: 8rpx;
  740. color: #ffffff;
  741. border-radius: 8rpx;
  742. background: linear-gradient(139deg, #fd0000 0%, #fa6400 100%);
  743. }
  744. .goods-three-img {
  745. width: 190rpx;
  746. background-color: #f5f5f5;
  747. height: 190rpx;
  748. display: block;
  749. margin: 0 auto;
  750. border-radius: 10rpx;
  751. }
  752. }
  753. .goods-info-box {
  754. .goods-name {
  755. height: 72rpx;
  756. line-height: 36rpx;
  757. font-weight: 600;
  758. }
  759. .goods-price {
  760. font-weight: 500;
  761. font-family: DIN-Medium;
  762. }
  763. }
  764. }
  765. }
  766. .goods-two-li {
  767. .goods-li {
  768. width: 334rpx;
  769. margin-right: 15rpx;
  770. box-shadow: 0px 2rpx 32rpx 0px rgba(110, 176, 138, 0.08);
  771. border-radius: 16rpx;
  772. }
  773. .goods-img-box {
  774. padding-top: 30rpx;
  775. position: relative;
  776. .sale-end {
  777. position: absolute;
  778. width: 260rpx;
  779. height: 260rpx;
  780. border-radius: 10upx;
  781. display: block;
  782. left: 50%;
  783. top: 50%;
  784. transform: translate(-50%, calc(-50% + 14rpx));
  785. text-align: center;
  786. z-index: 8;
  787. line-height: 260rpx;
  788. background-color: rgba($color: #000000, $alpha: 0.3);
  789. .ibonfont {
  790. font-size: 120rpx;
  791. color: #ffffff;
  792. }
  793. }
  794. .goods-brand {
  795. position: absolute;
  796. padding: 0 10rpx;
  797. height: 32rpx;
  798. font-size: 20rpx;
  799. font-weight: 500;
  800. line-height: 32rpx;
  801. left: 10px;
  802. top: 16rpx;
  803. color: #ffffff;
  804. border-radius: 8rpx;
  805. background: linear-gradient(139deg, #fd0000 0%, #fa6400 100%);
  806. }
  807. .goods-two-img {
  808. background-color: #f5f5f5;
  809. display: block;
  810. width: 260rpx;
  811. height: 260rpx;
  812. border-radius: 8rpx;
  813. margin: 0 auto;
  814. }
  815. }
  816. .goods-info-box {
  817. .goods-two-name {
  818. font-size: 28rpx;
  819. font-weight: 500;
  820. color: #000000;
  821. height: 80rpx;
  822. line-height: 40rpx;
  823. }
  824. .goods-price {
  825. padding-top: 4rpx;
  826. }
  827. }
  828. }
  829. }
  830. .goods-two-ul {
  831. padding-left: 20rpx;
  832. }
  833. </style>