You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

519 lines
133 KiB

3 months ago
  1. <template>
  2. <view :data-theme="theme">
  3. <view class="pageInfo">
  4. <skeleton :show="showSkeleton" :isNodes="isNodes" ref="skeleton" loading="chiaroscuro" selector="skeleton">
  5. </skeleton>
  6. <view class="skeleton" :style="{visibility: showSkeleton ? 'hidden' : 'visible'}">
  7. <view class="combinationBj"></view>
  8. <view class="combinationList">
  9. <view class='group-list'>
  10. <!-- #ifdef H5 -->
  11. <view class='iconfont icon-xiangzuo' @tap='goBack' :style="'top:'+ (navH/2) +'rpx'"
  12. v-if="returnShow"></view>
  13. <!-- #endif -->
  14. <!-- banner -->
  15. <view class="swiper skeleton-rect" v-if="bannerList.length">
  16. <swiper indicator-dots="true" :autoplay="true" :circular="circular" :interval="interval"
  17. :duration="duration" indicator-color="rgba(255,255,255,0.6)"
  18. indicator-active-color="#fff">
  19. <block v-for="(item,index) in bannerList" :key="index">
  20. <swiper-item>
  21. <navigator :url='item.value'
  22. class='slide-navigator acea-row row-between-wrapper' hover-class='none'>
  23. <image :src="item.value" class="slide-image" lazy-load mode="aspectFill">
  24. </image>
  25. </navigator>
  26. </swiper-item>
  27. </block>
  28. </swiper>
  29. </view>
  30. <view class="nav acea-row row-between-wrapper" v-if="avatarList.length > 0">
  31. <image :src="urlDomain+'crmebimage/perset/activityImg/zuo.png'"></image>
  32. <view class="title acea-row row-center">
  33. <view class="spike-bd">
  34. <view class="activity_pic">
  35. <view v-for="(item,index) in avatarList" :key="index" class="picture"
  36. :style='index===6?"position: relative":"position: static"'>
  37. <span class="avatar" :style='"background-image: url("+item+")"'></span>
  38. <span v-if="index===6 && Number(avatarList.length) > 3" class="mengceng">
  39. <i>···</i>
  40. </span>
  41. </view>
  42. </view>
  43. </view>
  44. <text class="pic_count">{{totalPeople}}人参与</text>
  45. </view>
  46. <image :src="urlDomain+'crmebimage/perset/activityImg/you.png'"></image>
  47. </view>
  48. <view class='list'>
  49. <block v-for="(item,index) in combinationList" :key='index'>
  50. <view class='item acea-row row-between-wrapper' @tap="openSubcribe(item)" data-url=''>
  51. <view class='pictrue skeleton-rect'>
  52. <image :src='item.image'></image>
  53. </view>
  54. <view class='text'>
  55. <view class='line2 skeleton-rect'>{{item.title}}</view>
  56. <text class='y-money skeleton-rect'>{{item.otPrice}}</text>
  57. <view class='bottom acea-row row-between-wrapper'>
  58. <view class='money skeleton-rect'><text class='num'>{{item.price}}</text>
  59. </view>
  60. <view class="bnt acea-row row-center-wrapper" v-if="item.stock>0">
  61. <view class="light">
  62. <image
  63. :src="urlDomain+'crmebimage/perset/activityImg/shandian1.png'">
  64. </image>
  65. </view>
  66. <view class="num">{{item.people}}人团</view>
  67. <view class="go">去拼团</view>
  68. </view>
  69. <view class="bnt gray acea-row row-center-wrapper" v-else>已售罄</view>
  70. </view>
  71. </view>
  72. </view>
  73. </block>
  74. <view class='loadingicon acea-row row-center-wrapper' v-if='combinationList.length > 0'
  75. style="color:#fff;">
  76. <text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
  77. </view>
  78. </view>
  79. <view v-if="combinationList.length == 0" class="no_shop flex-center">
  80. <image :src="urlDomain+'crmebimage/perset/staticImg/noShopper.png'" mode="aspectFit"
  81. style="width: 400rpx;"></image>
  82. </view>
  83. </view>
  84. </view>
  85. </view>
  86. </view>
  87. </view>
  88. </template>
  89. <script>
  90. import {
  91. getCombinationList,
  92. combinationHeaderApi
  93. } from '@/api/activity.js';
  94. import {
  95. openPinkSubscribe
  96. } from '../../../utils/SubscribeMessage.js';
  97. import {
  98. setThemeColor
  99. } from '@/utils/setTheme.js'
  100. import animationType from '@/utils/animationType.js'
  101. let app = getApp();
  102. export default {
  103. data() {
  104. return {
  105. urlDomain: this.$Cache.get("imgHost"),
  106. showSkeleton: true, //骨架屏显示隐藏
  107. isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
  108. indicatorDots: false,
  109. circular: true,
  110. autoplay: true,
  111. interval: 3000,
  112. duration: 500,
  113. navH: '',
  114. combinationList: [],
  115. limit: 10,
  116. page: 1,
  117. loading: false,
  118. loadend: false,
  119. returnShow: true,
  120. loadTitle: '',
  121. avatarList: [],
  122. bannerList: [],
  123. totalPeople: 0,
  124. theme: app.globalData.theme,
  125. bgColor: '#e93323'
  126. }
  127. },
  128. onLoad() {
  129. let that = this;
  130. that.bgColor = setThemeColor();
  131. uni.setNavigationBarColor({
  132. frontColor: '#ffffff',
  133. backgroundColor: that.bgColor,
  134. });
  135. setTimeout(() => {
  136. this.isNodes++;
  137. }, 500);
  138. var pages = getCurrentPages();
  139. this.returnShow = pages.length === 1 ? false : true;
  140. uni.setNavigationBarTitle({
  141. title: "拼团列表"
  142. })
  143. // #ifdef MP
  144. this.navH = app.globalData.navH;
  145. // #endif
  146. // #ifdef H5
  147. this.navH = app.globalData.navHeight;
  148. // #endif
  149. this.getCombinationList();
  150. this.getCombinationHeader();
  151. },
  152. methods: {
  153. goBack: function() {
  154. uni.navigateBack();
  155. },
  156. openSubcribe: function(item) {
  157. let page = item;
  158. // #ifndef MP
  159. uni.navigateTo({
  160. animationType: animationType.type,
  161. animationDuration: animationType.duration,
  162. url: `/pages/activity/goods_combination_details/index?id=${item.id}`
  163. });
  164. // #endif
  165. // #ifdef MP
  166. uni.showLoading({
  167. title: '正在加载',
  168. })
  169. openPinkSubscribe().then(res => {
  170. uni.hideLoading();
  171. uni.navigateTo({
  172. animationType: animationType.type,
  173. animationDuration: animationType.duration,
  174. url: `/pages/activity/goods_combination_details/index?id=${item.id}`
  175. });
  176. }).catch(() => {
  177. uni.hideLoading();
  178. });
  179. // #endif
  180. },
  181. getCombinationHeader: function() {
  182. this.bannerList = [{
  183. value: ''
  184. }];
  185. combinationHeaderApi().then(res => {
  186. this.avatarList = res.data.avatarList || [];
  187. this.bannerList = res.data.bannerList || [];
  188. this.totalPeople = res.data.totalPeople;
  189. }).catch(() => {
  190. this.loading = false;
  191. this.loadTitle = '加载更多';
  192. })
  193. },
  194. getCombinationList: function() {
  195. var that = this;
  196. if (that.loadend) return;
  197. if (that.loading) return;
  198. that.loadTitle = '';
  199. var data = {
  200. page: that.page,
  201. limit: that.limit
  202. };
  203. this.loading = true
  204. getCombinationList(data).then(function(res) {
  205. let list = res.data.list;
  206. let combinationList = that.$util.SplitArray(list, that.combinationList);
  207. let loadend = list.length < that.limit;
  208. that.loadend = loadend;
  209. that.loading = false;
  210. // #ifdef H5
  211. that.setShare();
  212. // #endif
  213. that.loadTitle = loadend ? '已全部加载' : '加载更多';
  214. that.$set(that, 'combinationList', combinationList);
  215. that.$set(that, 'page', that.page + 1);
  216. setTimeout(() => {
  217. that.showSkeleton = false
  218. }, 1000)
  219. }).catch(() => {
  220. that.loading = false;
  221. that.loadTitle = '加载更多';
  222. })
  223. },
  224. setShare: function() {
  225. this.$wechat.isWeixin() &&
  226. this.$wechat.wechatEvevt([
  227. "updateAppMessageShareData",
  228. "updateTimelineShareData",
  229. "onMenuShareAppMessage",
  230. "onMenuShareTimeline"
  231. ], {
  232. desc: this.combinationList[0].title,
  233. title: this.combinationList[0].title,
  234. link: location.href,
  235. imgUrl: this.combinationList[0].image
  236. }).then(res => {}).catch(err => {
  237. console.log(err);
  238. });
  239. },
  240. },
  241. onReachBottom: function() {
  242. this.getCombinationList();
  243. },
  244. }
  245. </script>
  246. <style lang="scss">
  247. page {
  248. @include main_bg_color(theme);
  249. min-height: 100%;
  250. }
  251. </style>
  252. <style lang="scss" scoped>
  253. .pageInfo {
  254. /* #ifdef MP || APP-PLUS */
  255. @include main_bg_color(theme);
  256. /* #endif */
  257. }
  258. .mengceng {
  259. width: 40rpx;
  260. height: 40rpx;
  261. line-height: 36rpx;
  262. background: rgba(51, 51, 51, 0.6);
  263. text-align: center;
  264. border-radius: 50%;
  265. opacity: 1;
  266. position: absolute;
  267. left: -2rpx;
  268. color: #FFF;
  269. top: 2rpx;
  270. i {
  271. font-style: normal;
  272. font-size: 20rpx;
  273. }
  274. }
  275. .activity_pic {
  276. .picture {
  277. display: inline-table;
  278. }
  279. .avatar {
  280. width: 38rpx;
  281. height: 38rpx;
  282. display: inline-table;
  283. vertical-align: middle;
  284. -webkit-user-select: none;
  285. -moz-user-select: none;
  286. -ms-user-select: none;
  287. user-select: none;
  288. border-radius: 50%;
  289. background-repeat: no-repeat;
  290. background-size: cover;
  291. background-position: 0 0;
  292. margin-right: -10rpx;
  293. box-shadow: 0 0 0 1px #fff;
  294. }
  295. }
  296. .combinationList {
  297. width: 100%;
  298. min-height: 100vh;
  299. padding: 25rpx 30rpx;
  300. background: url(data:image/png;base64,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
  301. background-size: 100% 990rpx;
  302. .swiper {
  303. width: 100%;
  304. height: 300rpx;
  305. border-radius: 14rpx;
  306. margin-bottom: 34rpx;
  307. swiper,
  308. .swiper-item,
  309. image {
  310. width: 100%;
  311. height: 300rpx;
  312. border-radius: 10rpx;
  313. }
  314. }
  315. .nav {
  316. width: 100%;
  317. margin-bottom: 34rpx;
  318. image {
  319. width: 102rpx;
  320. height: 4rpx;
  321. }
  322. }
  323. .title {
  324. width: 68%;
  325. .pic_count {
  326. margin-left: 30rpx;
  327. color: $theme-color;
  328. font-size: 22rpx;
  329. font-weight: 500;
  330. width: auto;
  331. height: auto;
  332. background-color: rgba(0, 0, 0, 0.1);
  333. color: #FFFFFF;
  334. border-radius: 19rpx;
  335. padding: 4rpx 14rpx;
  336. }
  337. }
  338. }
  339. .icon-xiangzuo {
  340. font-size: 40rpx;
  341. color: #fff;
  342. position: fixed;
  343. left: 30rpx;
  344. z-index: 99;
  345. transform: translateY(-20%);
  346. }
  347. .group-list .list .item {
  348. background-color: #fff;
  349. border-radius: 14rpx;
  350. padding: 22rpx;
  351. box-sizing: border-box;
  352. margin: 0 auto 20rpx auto;
  353. }
  354. .group-list .list .item .pictrue {
  355. width: 186rpx;
  356. height: 186rpx;
  357. }
  358. .group-list .list .item .pictrue image {
  359. width: 100%;
  360. height: 100%;
  361. border-radius: 6rpx;
  362. }
  363. .group-list .list .item .text {
  364. width: 440rpx;
  365. font-size: 30rpx;
  366. color: #333333;
  367. margin-left: 20rpx;
  368. .line2 {
  369. height: 86rpx;
  370. }
  371. .bnt {
  372. height: 58rpx;
  373. font-size: 24rpx;
  374. text-align: center;
  375. position: relative;
  376. @include main_bg_color(theme);
  377. border-radius: 28rpx;
  378. .light {
  379. position: absolute;
  380. width: 28rpx;
  381. height: 58rpx;
  382. top: 0;
  383. left: 50%;
  384. margin-left: -8rpx;
  385. image {
  386. width: 100%;
  387. height: 100%;
  388. }
  389. }
  390. .num {
  391. width: 120rpx;
  392. background-color: rgba(255, 255, 255, 0.85);
  393. @include main_color(theme);
  394. height: 100%;
  395. line-height: 58rpx;
  396. border-radius: 28rpx 0 14rpx 28rpx;
  397. }
  398. .go {
  399. width: 112rpx;
  400. height: 100%;
  401. line-height: 58rpx;
  402. border-radius: 0 28rpx 28rpx 0;
  403. color: #fff;
  404. }
  405. &.gray {
  406. width: 148rpx;
  407. background-color: #cccccc;
  408. color: #fff;
  409. }
  410. }
  411. .nothing {
  412. width: 148rpx;
  413. height: 58rpx;
  414. text-align: center;
  415. line-height: 58rpx;
  416. background: #CCCCCC;
  417. opacity: 1;
  418. color: #FFFFFF;
  419. border-radius: 30rpx;
  420. font-size: 24rpx;
  421. }
  422. }
  423. .group-list .list .item .text .team {
  424. height: 38rpx;
  425. border-radius: 4rpx;
  426. font-size: 22rpx;
  427. margin-top: 20rpx;
  428. }
  429. .group-list .list .item .text .team .iconfont {
  430. width: 54rpx;
  431. background-color: #ffdcd9;
  432. text-align: center;
  433. color: #dd3823;
  434. height: 100%;
  435. }
  436. .group-list .list .item .text .team .num {
  437. text-align: center;
  438. padding: 0 6rpx;
  439. height: 100%;
  440. }
  441. .group-list .list .item .text .bottom .money {
  442. font-size: 24rpx;
  443. font-weight: bold;
  444. @include price_color(theme);
  445. }
  446. .group-list .list .item .text .bottom .money .num {
  447. font-size: 32rpx;
  448. }
  449. .group-list .list .item .text .y-money {
  450. font-size: 24rpx;
  451. color: #999;
  452. font-weight: normal;
  453. text-decoration: line-through;
  454. }
  455. .group-list .list .item .text .bottom .groupBnt {
  456. font-size: 26rpx;
  457. color: #fff;
  458. width: 146rpx;
  459. height: 54rpx;
  460. text-align: center;
  461. line-height: 54rpx;
  462. border-radius: 4rpx;
  463. }
  464. .group-list .list .item .text .bottom .groupBnt .iconfont {
  465. font-size: 25rpx;
  466. vertical-align: 2rpx;
  467. margin-left: 10rpx;
  468. }
  469. .flex-center {
  470. display: flex;
  471. justify-content: center;
  472. align-items: center;
  473. }
  474. .no_shop {
  475. width: 100%;
  476. height: 700rpx;
  477. border-radius: 10rpx;
  478. background-color: #fff;
  479. }
  480. </style>