| @@ -1,6 +1,7 @@ | |||||
| { | { | ||||
| "pages": [ | "pages": [ | ||||
| "pages/index/index", | "pages/index/index", | ||||
| "pages/integralmall/payIntegcoupondetail/index", | |||||
| "pages/joinFrDpell/index", | "pages/joinFrDpell/index", | ||||
| "pages/spellDetail/index", | "pages/spellDetail/index", | ||||
| "pages/spellTimeout/index", | "pages/spellTimeout/index", | ||||
| @@ -54,7 +55,9 @@ | |||||
| "pages/ConsumeDetail/ConsumeDetail", | "pages/ConsumeDetail/ConsumeDetail", | ||||
| "pages/externallinks/index", | "pages/externallinks/index", | ||||
| "pages/czdetail/czdetail", | "pages/czdetail/czdetail", | ||||
| "pages/spellGroup/paySpellGroup/index" | |||||
| "pages/spellGroup/paySpellGroup/index", | |||||
| "pages/integralmall/index", | |||||
| "pages/integralmall/integcoupondetail/index" | |||||
| ], | ], | ||||
| "navigateToMiniProgramAppIdList": [ | "navigateToMiniProgramAppIdList": [ | ||||
| "wx192b7d2e8dcbefd0", | "wx192b7d2e8dcbefd0", | ||||
| @@ -0,0 +1,180 @@ | |||||
| var config = require("../../config/config.js"); | |||||
| const Http = require("../../utils/HttpBasics"); | |||||
| const imgurl = require("../../utils/imgurl"); | |||||
| const { spellStatus, spellStatus02 } = require("../../utils/spell"); | |||||
| Page({ | |||||
| /** | |||||
| * 页面的初始数据 | |||||
| */ | |||||
| data: { | |||||
| bannerUrl: imgurl.banner.url, | |||||
| loadingUrl: imgurl.loading.url, | |||||
| nodata: imgurl.nodata.url, | |||||
| list: [], | |||||
| lists: [], | |||||
| myLists: [], | |||||
| page: 1, // 设置加载的第几次,默认是第一次 | |||||
| pageSize: 10, //返回数据的个数 | |||||
| searchLoadingComplete: false, //“没有数据”的变量,默认false,隐藏 | |||||
| allow_load: true, // 是否允许继续加载标识 默认 true 允许,false 加载完成 | |||||
| myorder: false, | |||||
| actUrl: imgurl.act.url, | |||||
| loading: true, | |||||
| content: '数据正在加载中', | |||||
| reloadIf: false | |||||
| }, | |||||
| onLoad: function (options) { | |||||
| let that = this; | |||||
| that.getBannerlist(); | |||||
| var todayDate = new Date().getTime(); | |||||
| that.setData({ | |||||
| optionsData: options, | |||||
| todayDate: todayDate | |||||
| }) | |||||
| if (options && options.from == 'myhtml') { | |||||
| that.getmyList(); | |||||
| } | |||||
| else { | |||||
| that.getList(1); | |||||
| that.setData({ | |||||
| lists: null | |||||
| }) | |||||
| } | |||||
| }, | |||||
| onShow() { | |||||
| let that = this; | |||||
| if (this.data.reloadIf) { | |||||
| wx.setNavigationBarTitle({ | |||||
| title: '积分商城' | |||||
| }) | |||||
| that.getList(1); | |||||
| that.setData({ | |||||
| lists: null | |||||
| }) | |||||
| } | |||||
| }, | |||||
| /** | |||||
| * banner | |||||
| */ | |||||
| getBannerlist: function () { | |||||
| let that = this; | |||||
| Http.get({ | |||||
| url: config.api.bannerlist, | |||||
| data: { | |||||
| pageNum: 1, | |||||
| pageSize: 7 | |||||
| } | |||||
| }).then(res => { | |||||
| that.setData({ | |||||
| list: res.data.list | |||||
| }); | |||||
| }); | |||||
| }, | |||||
| getList(pageNum) { | |||||
| var that = this; | |||||
| console.log(pageNum) | |||||
| if (that.data.allow_load) { | |||||
| that.setData({ | |||||
| loading: true, | |||||
| content: '小主,我在玩命加载中...' | |||||
| }) | |||||
| var param = {}; | |||||
| var param = { | |||||
| pageNum: pageNum, | |||||
| pageSize: 10, | |||||
| targetAd: 5 | |||||
| }; | |||||
| var url = config.api.couponChannelList; | |||||
| // 请求接口 | |||||
| Http.get({ | |||||
| url: url, | |||||
| data: param | |||||
| }).then(res => { | |||||
| console.log(res) | |||||
| /** | |||||
| * 加载完成 | |||||
| */ | |||||
| if (pageNum >= res.data.pages) { | |||||
| if (res.data.pages == 0 || res.data.pages == 1) { | |||||
| that.setData({ | |||||
| allow_load: true, | |||||
| loading: false, | |||||
| content: "" | |||||
| }); | |||||
| } else { | |||||
| that.setData({ | |||||
| allow_load: false, | |||||
| loading: true, | |||||
| content: "——— 再拉裤子就掉了啦 ———", | |||||
| }); | |||||
| } | |||||
| } | |||||
| if (pageNum == 1) { | |||||
| that.setData({ | |||||
| lists: [], | |||||
| }) | |||||
| } | |||||
| var tmpArr = that.data.lists; | |||||
| tmpArr.push.apply(tmpArr, res.data.list); | |||||
| that.setData({ | |||||
| lists: tmpArr | |||||
| }) | |||||
| wx.stopPullDownRefresh(); | |||||
| }) | |||||
| .catch(err => { | |||||
| wx.stopPullDownRefresh(); | |||||
| wx.showToast({ | |||||
| title: err.message, | |||||
| icon: 'none', | |||||
| duration: 2000, | |||||
| mask: false | |||||
| }); | |||||
| }) | |||||
| setTimeout(function () { | |||||
| that.setData({ | |||||
| loading: false, | |||||
| }) | |||||
| }, 1400); | |||||
| } else { | |||||
| that.setData({ | |||||
| loading: true, | |||||
| content: "——— 再拉裤子就掉了啦 ———" | |||||
| }) | |||||
| setTimeout(function () { | |||||
| that.setData({ | |||||
| loading: false, | |||||
| }) | |||||
| }, 1400) | |||||
| } | |||||
| }, | |||||
| /** | |||||
| * | |||||
| * @param goto拼团券详情 | |||||
| */ | |||||
| invite: function (e) { | |||||
| let couponChannelId = e.currentTarget.dataset.id; | |||||
| let couponId = e.currentTarget.dataset.couponid; | |||||
| if (couponChannelId && couponId) { | |||||
| wx.navigateTo({ | |||||
| url: `/pages/integralmall/integcoupondetail/index?couponChannelId=${couponChannelId}&couponId=${couponId}` | |||||
| }) | |||||
| } | |||||
| }, | |||||
| //加载更多 | |||||
| onReachBottom: function () { | |||||
| let that = this; | |||||
| that.data.page++; | |||||
| that.setData({ | |||||
| page: that.data.page | |||||
| }); | |||||
| that.getList(that.data.page, that.data.flag); | |||||
| }, | |||||
| /** | |||||
| * 刷新 | |||||
| */ | |||||
| onPullDownRefresh: function (e) { | |||||
| let that = this; | |||||
| that.getBannerlist(); | |||||
| that.getList(1); | |||||
| } | |||||
| }) | |||||
| @@ -0,0 +1,10 @@ | |||||
| { | |||||
| "navigationBarTitleText": "积分商城", | |||||
| "enablePullDownRefresh": true, | |||||
| "navigationBarBackgroundColor": "#F13C42", | |||||
| "usingComponents": { | |||||
| "c-banner": "../../components/spellbanner/index", | |||||
| "i-tab": "../../../dist/tab/index", | |||||
| "i-tabs": "../../../dist/tabs/index" | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,36 @@ | |||||
| <view class='content-box' style='{{"padding-bottom:"+(lists.length>0?"200rpx":"0")}}'> | |||||
| <view class='top' wx:if='{{list.length>0}}'> | |||||
| <view class="banner" wx:if="{{list.length>0}}" hover-class="none" hover-stop-propagation="false"> | |||||
| <c-banner wx:key="unique" list="{{list}}" /> | |||||
| </view> | |||||
| </view> | |||||
| <view class='no-data01' style='{{"margin-top:"+(list.length>0?"320rpx":"20rpx")+";"+"height:"+(list.length>0?"calc(100vh - 460rpx)":"calc(100vh - 160rpx)")}}' wx:if='{{lists.length==0}}'> | |||||
| <image src='{{nodata}}'></image> | |||||
| <view class='no-data-text'>暂无数据</view> | |||||
| </view> | |||||
| <view class='content' style='{{"margin-top:"+(list.length>0?"320rpx":"20rpx")}}'> | |||||
| <view class='sepll-list' wx:for="{{lists}}" wx:key="{{index}}" data-couponId='{{item.couponId}}' data-id='{{item.id}}' bindtap='invite'> | |||||
| <view class='spell-left'> | |||||
| <image src='{{item.coverImg}}' mode="aspectFill"></image> | |||||
| </view> | |||||
| <view class='spell-center'> | |||||
| <view class='tilte'>{{item.title}}</view> | |||||
| <view class='remark'>{{item.subTitle}}</view> | |||||
| <view class='price'> | |||||
| <view class='price01'> | |||||
| <view class='price-num'>{{item.salePriceStr}}</view> | |||||
| <view class='price-unit'>积分</view> | |||||
| </view> | |||||
| </view> | |||||
| <view class='price02'>{{'原价:'+item.priceStr+'元'}}</view> | |||||
| </view> | |||||
| <view class='spell-right'> | |||||
| <view class='right-button'>立即换购</view> | |||||
| <view class='right-text'>剩余{{item.remainInventory}}</view> | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| <view class="loading" wx:if="{{loading}}"> | |||||
| {{content}} | |||||
| </view> | |||||
| </view> | |||||
| @@ -0,0 +1,291 @@ | |||||
| /* pages/spellGroup/spellGroup.wxss */ | |||||
| page { | |||||
| height: auto; | |||||
| overflow: auto; | |||||
| background: #f89132; | |||||
| background-image: url('https://s3.cn-northwest-1.amazonaws.com.cn/iformall-net/cimg/spell-bg.png'); | |||||
| background-size: cover; | |||||
| background-repeat: no-repeat; | |||||
| } | |||||
| .content-box{ | |||||
| height: auto; | |||||
| padding-bottom: 200rpx; | |||||
| } | |||||
| .loading { | |||||
| text-align: center; | |||||
| height: 80rpx; | |||||
| line-height: 80rpx; | |||||
| font-size: 26rpx; | |||||
| color: #fff; | |||||
| } | |||||
| .loading image { | |||||
| width: 60rpx; | |||||
| height: 60rpx; | |||||
| vertical-align: middle; | |||||
| margin-right: 10rpx; | |||||
| } | |||||
| .banner{ | |||||
| margin-bottom: 20rpx; | |||||
| background: none; | |||||
| border-radius: 16rpx; | |||||
| } | |||||
| .banner .bg { | |||||
| display: block; | |||||
| width: 100%; | |||||
| } | |||||
| image{ | |||||
| padding: 0; | |||||
| margin: 0; | |||||
| } | |||||
| .banner .bannerbg image{ | |||||
| display: none!important; | |||||
| height: 0; | |||||
| overflow: hidden; | |||||
| } | |||||
| .bannerimg { | |||||
| display: block; | |||||
| width: 710rpx; | |||||
| height: 260rpx; | |||||
| border-radius: 15rpx; | |||||
| margin: -132rpx auto 0; | |||||
| } | |||||
| .banner .index-slide-view { | |||||
| margin: -132rpx auto 0; | |||||
| } | |||||
| .top{ | |||||
| position: absolute; | |||||
| top: 30rpx; | |||||
| width: 710rpx; | |||||
| height: 260rpx; | |||||
| background: #fff; | |||||
| left: 20rpx; | |||||
| border-radius: 16rpx; | |||||
| overflow: hidden; | |||||
| } | |||||
| .content .sepll-list{ | |||||
| width: 690rpx; | |||||
| height: 230rpx; | |||||
| background: #fff; | |||||
| border-radius: 30rpx; | |||||
| margin: 30rpx auto 0; | |||||
| } | |||||
| .content .spell-left{ | |||||
| width: 230rpx; | |||||
| height: 230rpx; | |||||
| float: left; | |||||
| } | |||||
| .content .spell-left image{ | |||||
| width: 180rpx; | |||||
| height: 180rpx; | |||||
| margin: 25rpx; | |||||
| } | |||||
| .content .spell-center{ | |||||
| float: left; | |||||
| width: 304rpx; | |||||
| height: 100%; | |||||
| } | |||||
| .content .tilte{ | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Bold; | |||||
| font-weight:bold; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height:44rpx; | |||||
| padding-top: 16rpx; | |||||
| overflow: hidden; | |||||
| text-overflow:ellipsis; | |||||
| white-space: nowrap; | |||||
| } | |||||
| .content .remark{ | |||||
| width:304rpx; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(140,140,140,1); | |||||
| line-height:44rpx; | |||||
| overflow: hidden; | |||||
| text-overflow:ellipsis; | |||||
| white-space: nowrap; | |||||
| } | |||||
| .content .spell-num{ | |||||
| width: 95rpx; | |||||
| border:1px solid rgba(255,50,50,1); | |||||
| border-radius:10rpx; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,50,50,1); | |||||
| line-height:30rpx; | |||||
| margin: 10rpx 0; | |||||
| text-align: center; | |||||
| } | |||||
| .content .price{ | |||||
| overflow: hidden; | |||||
| margin-top: 10rpx; | |||||
| } | |||||
| .content .price01{ | |||||
| font-size:50rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,50,50,1); | |||||
| line-height:44rpx; | |||||
| } | |||||
| .content .price02{ | |||||
| font-size: 24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| text-decoration:line-through; | |||||
| color:rgba(140,140,140,1); | |||||
| } | |||||
| .content .price-num{ | |||||
| display: inline; | |||||
| } | |||||
| .content .price-unit{ | |||||
| display: inline; | |||||
| font-size:24rpx; | |||||
| margin-right: 10rpx; | |||||
| } | |||||
| .content .spell-right{ | |||||
| float: left; | |||||
| width: 156rpx; | |||||
| } | |||||
| .right-button{ | |||||
| width:120rpx; | |||||
| height:48rpx; | |||||
| font-size:26rpx; | |||||
| background:linear-gradient(90deg,rgba(236,59,45,1) 0%,rgba(248,98,52,1) 100%); | |||||
| border-radius:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| text-align: center; | |||||
| color:rgba(255,255,255,1); | |||||
| line-height:44rpx; | |||||
| margin: 110rpx auto 0; | |||||
| margin-top: 110rpx; | |||||
| } | |||||
| .right-text{ | |||||
| font-size:22rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(140,140,140,1); | |||||
| line-height:60rpx; | |||||
| text-align: center; | |||||
| } | |||||
| .bottom{ | |||||
| width: 690rpx; | |||||
| height: 85rpx; | |||||
| position: fixed; | |||||
| bottom: 26rpx; | |||||
| left: 30rpx; | |||||
| /* background:rgba(243,69,58,1); */ | |||||
| border:1px solid rgba(255, 222, 67, 1); | |||||
| border-radius:40px; | |||||
| color: #fff; | |||||
| overflow: hidden; | |||||
| } | |||||
| .bottom-left{ | |||||
| width: 50%; | |||||
| float: left; | |||||
| margin-left: -1rpx; | |||||
| text-align: center; | |||||
| line-height: 85rpx; | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,253,245,1); | |||||
| border-right:1px solid rgba(255, 222, 67, 1); | |||||
| opacity: 1; | |||||
| } | |||||
| .bottom-right{ | |||||
| width: 50%; | |||||
| float: left; | |||||
| text-align: center; | |||||
| line-height: 85rpx; | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,253,245,1); | |||||
| opacity: 1; | |||||
| } | |||||
| .spell-bottom{ | |||||
| overflow: hidden; | |||||
| } | |||||
| .spell-top{ | |||||
| height: auto; | |||||
| margin: 0 30rpx; | |||||
| overflow: hidden; | |||||
| box-sizing: border-box; | |||||
| border-bottom: 1rpx solid #EEEEEE; | |||||
| } | |||||
| .spell-top-left{ | |||||
| float: left; | |||||
| width: 60%; | |||||
| } | |||||
| .spell-top-right{ | |||||
| float: left; | |||||
| width: 40%; | |||||
| } | |||||
| .top-title{ | |||||
| display: inline; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height:64rpx; | |||||
| } | |||||
| .top-num{ | |||||
| display: inline; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:#FF3232; | |||||
| line-height:64rpx; | |||||
| padding-left: 8rpx; | |||||
| } | |||||
| .spell-top-right{ | |||||
| text-align: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,50,50,1); | |||||
| line-height:64rpx; | |||||
| } | |||||
| .no-data01{ | |||||
| width: 690rpx; | |||||
| padding-top: 174rpx; | |||||
| height: calc(100vh - 460rpx); | |||||
| background: #fff; | |||||
| margin: 0 auto; | |||||
| border-radius:15rpx; | |||||
| box-sizing: border-box; | |||||
| margin-top: 320rpx; | |||||
| } | |||||
| .no-data{ | |||||
| width: 690rpx; | |||||
| padding-top: 174rpx; | |||||
| height: calc(100vh - 160rpx); | |||||
| background: #fff; | |||||
| margin: 0 auto; | |||||
| border-radius:15rpx; | |||||
| box-sizing: border-box; | |||||
| margin-top:20rpx; | |||||
| } | |||||
| .no-data01 image{ | |||||
| width: 261rpx; | |||||
| height: 272rpx; | |||||
| display: block; | |||||
| margin: 0 auto; | |||||
| } | |||||
| .no-data image{ | |||||
| width: 261rpx; | |||||
| height: 272rpx; | |||||
| display: block; | |||||
| margin: 0 auto; | |||||
| } | |||||
| .no-data-text{ | |||||
| text-align: center; | |||||
| font-size:34rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(0,0,0,1); | |||||
| } | |||||
| @@ -0,0 +1,163 @@ | |||||
| // pages/spellGroup/mySpellGroup/index.js | |||||
| var config = require("../../../config/config.js"); | |||||
| const Http = require("../../../utils/HttpBasics"); | |||||
| const imgurl = require("../../../utils/imgurl"); | |||||
| const utils = require("../../../utils/util.js") | |||||
| Page({ | |||||
| /** | |||||
| * 页面的初始数据 | |||||
| */ | |||||
| data: { | |||||
| teljpgUrl: imgurl.teljpg.url, | |||||
| wmhome: imgurl.wmhome.url, | |||||
| couponChannelId: '', | |||||
| couponId: '', | |||||
| data: null, | |||||
| spellData: null, | |||||
| canSpell: true, | |||||
| canBuyIf: true, | |||||
| clock: "00", | |||||
| day: "00", | |||||
| hour: "00", | |||||
| min: "00", | |||||
| sec: "00", | |||||
| showTime: true | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面加载 | |||||
| */ | |||||
| onLoad: function (options) { | |||||
| this.setData({ | |||||
| couponChannelId: options.couponChannelId, | |||||
| couponId: options.couponId | |||||
| }) | |||||
| if (options && options.couponChannelId) { | |||||
| this.getDetail(options.couponChannelId); | |||||
| } | |||||
| }, | |||||
| gotoIndex: function () { | |||||
| wx.switchTab({ | |||||
| url: '/pages/main/index', | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 拨打电话 | |||||
| */ | |||||
| phone: function (e) { | |||||
| let that = this; | |||||
| wx.makePhoneCall({ | |||||
| phoneNumber: e.target.dataset.merchantlinkphone | |||||
| }); | |||||
| }, | |||||
| /** | |||||
| * 直接购买 | |||||
| */ | |||||
| gotoBuy(e) { | |||||
| console.log(22222) | |||||
| this.setData({ | |||||
| canBuyIf: false, | |||||
| formId: e.detail.formId | |||||
| }) | |||||
| wx.navigateTo({ | |||||
| url: '/pages/integralmall/payIntegcoupondetail/index?couponChannelId=' + this.data.couponChannelId, | |||||
| }) | |||||
| }, | |||||
| // 时间格式化输出,如11:03 25:19 每1s都会调用一次 | |||||
| dateformat(micro_second) { | |||||
| // 总秒数 | |||||
| var second = Math.floor(micro_second / 1000); | |||||
| // 天数 | |||||
| var day = Math.floor(second / 3600 / 24) < 10 ? "0" + Math.floor(second / 3600 / 24) : Math.floor(second / 3600 / 24); | |||||
| // 小时 | |||||
| var hr = Math.floor(second / 3600 % 24) < 10 ? "0" + Math.floor(second / 3600 % 24) : Math.floor(second / 3600 % 24); | |||||
| // 分钟 | |||||
| var min = Math.floor(second / 60 % 60) < 10 ? "0" + Math.floor(second / 60 % 60) : Math.floor(second / 60 % 60); | |||||
| // 秒 | |||||
| var sec = Math.floor(second % 60) < 10 ? "0" + Math.floor(second % 60) : Math.floor(second % 60); | |||||
| // return day + "天" + hr + "小时" + min + "分钟" + sec + "秒"; | |||||
| return { | |||||
| a1: day, | |||||
| b1: hr, | |||||
| c1: min, | |||||
| d1: sec | |||||
| } | |||||
| }, | |||||
| /** | |||||
| * 获取券详情信息 | |||||
| */ | |||||
| getDetail(couponChannelId) { | |||||
| let that = this; | |||||
| Http.get({ | |||||
| url: config.api.couponDetail, | |||||
| data: { | |||||
| couponChannelId: couponChannelId | |||||
| } | |||||
| }).then(res => { | |||||
| wx.stopPullDownRefresh(); | |||||
| let data = res.data; | |||||
| data.price = (data.price / 100).toFixed(2) | |||||
| data.salePrice = (data.salePrice / 100).toFixed(2); | |||||
| data.validStartDate = utils.formatTime(data.validStartDate, 'yyyy-MM-dd') | |||||
| data.validEndDate = utils.formatTime(data.validEndDate, 'yyyy-MM-dd') | |||||
| that.setData({ | |||||
| data | |||||
| }); | |||||
| }); | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面初次渲染完成 | |||||
| */ | |||||
| onReady: function () { | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面显示 | |||||
| */ | |||||
| onShow: function () { | |||||
| this.setData({ | |||||
| canSpell: true, | |||||
| canBuyIf: true, | |||||
| showTime: true | |||||
| }) | |||||
| if (this.data.spellData != null) { | |||||
| this.countdown() | |||||
| } | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面隐藏 | |||||
| */ | |||||
| onHide: function () { | |||||
| this.setData({ | |||||
| showTime: false | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面卸载 | |||||
| */ | |||||
| onUnload: function () { | |||||
| this.setData({ | |||||
| showTime: false | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 页面相关事件处理函数--监听用户下拉动作 | |||||
| */ | |||||
| onPullDownRefresh: function (e) { | |||||
| let that = this; | |||||
| that.getDetail(that.data.couponChannelId); | |||||
| }, | |||||
| /** | |||||
| * 页面上拉触底事件的处理函数 | |||||
| */ | |||||
| onReachBottom: function () { | |||||
| } | |||||
| }) | |||||
| @@ -0,0 +1,5 @@ | |||||
| { | |||||
| "navigationBarTitleText": "积分券详情", | |||||
| "enablePullDownRefresh": true, | |||||
| "usingComponents": {} | |||||
| } | |||||
| @@ -0,0 +1,62 @@ | |||||
| <view class="content-box"> | |||||
| <view class='content'> | |||||
| <view class='top-img'> | |||||
| <image src='{{data.coverImg}}'></image> | |||||
| </view> | |||||
| <view class='title'>{{data.title}}</view> | |||||
| <view class='text'> | |||||
| <view class='remark'>{{data.subTitle}}</view> | |||||
| <view class='des'> | |||||
| <view class='des-peoplenum'>售价</view> | |||||
| <view class='des-saleprice'>{{data.salePriceStr}}积分</view> | |||||
| </view> | |||||
| <view class='rest' wx:if="{{data.validType==1}}">有效期: | |||||
| <text class='time'>{{data.validStartDate}}至{{data.validEndDate}}<text class="use">(请在有效期内使用)</text></text> | |||||
| </view> | |||||
| <view class='rest'> | |||||
| <text class='txt01'>价值:</text> | |||||
| <text class='time'>{{data.priceStr}}元</text> | |||||
| </view> | |||||
| <view class='status' wx:if="{{spellData!=null}}"> | |||||
| <view class='status01 st'> | |||||
| <image src='{{spellData.avatarUrl}}'></image> | |||||
| </view> | |||||
| <view class='status02 st'>{{spellData.nickName}}的团还差<view class='r-p-num'>1人</view></view> | |||||
| <view class='status03 st'> | |||||
| <view class='mm'>{{day}}</view><text class='day-box' style='font-size:32rpx;'> 天 </text> | |||||
| <view class='hh'>{{hour}}</view><text class='mao'>:</text> | |||||
| <view class='mm'>{{min}}</view><text class='mao'>:</text> | |||||
| <view class='ss'>{{sec}}</view> | |||||
| </view> | |||||
| <view class='status04 st'> | |||||
| <view class='s-button' bindtap='gotoPartner'>去拼团</view> | |||||
| </view> | |||||
| </view> | |||||
| <view class='p-des'> | |||||
| <view class='p-title'>购买须知</view> | |||||
| <view class='p-list'>{{data.remark}}</view> | |||||
| </view> | |||||
| <view class='posi'> | |||||
| <view class='applyshop'>适用门店</view> | |||||
| <view class='posi_logo' wx:for="{{data.merchantVoList}}" wx:key="index"> | |||||
| <view> | |||||
| <image src='{{item.merchantImgUrl}}'></image> | |||||
| </view> | |||||
| <view> | |||||
| <text>{{item.merchantName}}</text> | |||||
| <text>{{item.addr}}{{item.buildingName}}{{item.floorName}}</text> | |||||
| </view> | |||||
| <image bindtap='phone' data-merchantLinkPhone='{{item.merchantLinkPhone}}' class="tel" src="{{teljpgUrl}}" mode="widthFix" /> | |||||
| </view> | |||||
| </view> | |||||
| <form bindsubmit="submit" report-submit='true' > | |||||
| <view class='edit'> | |||||
| <button class='goback' bindtap='gotoIndex'><image src='{{wmhome}}' mode="widthFix"></image></button> | |||||
| <button class='edit-left' form-type="submit" wx:if='{{data.id}}' bindtap='gotoBuy'> | |||||
| <view class='edit-left-bottom'>马上兑换</view> | |||||
| </button> | |||||
| </view> | |||||
| </form> | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| @@ -0,0 +1,396 @@ | |||||
| /* pages/spellGroup/mySpellGroup/index.wxss */ | |||||
| .top-img{ | |||||
| width: 100%; | |||||
| height: 533rpx; | |||||
| z-index: 1; | |||||
| } | |||||
| .top-img image{ | |||||
| width: 100%; | |||||
| height: 533rpx; | |||||
| } | |||||
| .goback { | |||||
| float:left; | |||||
| width:122rpx!important; | |||||
| height:95rpx; | |||||
| background:rgba(255,255,255,1); | |||||
| line-height:95rpx; | |||||
| border:1rpx solid rgba(227,227,227,1); | |||||
| /* box-shadow:0px 8px 8px 1px rgba(189,189,189,0.32); */ | |||||
| border-radius:48rpx; | |||||
| margin-right:25rpx; | |||||
| } | |||||
| .goback image{ | |||||
| position:absolute; | |||||
| width:60rpx; | |||||
| left:0; | |||||
| right:0; | |||||
| top:0; | |||||
| bottom:0; | |||||
| margin:auto; | |||||
| height: 80rpx; | |||||
| } | |||||
| .content-box{ | |||||
| box-sizing: content-box; | |||||
| height: auto; | |||||
| overflow: hidden; | |||||
| } | |||||
| .content{ | |||||
| position: relative; | |||||
| width: 100%; | |||||
| height: auto; | |||||
| background: #fff; | |||||
| overflow: hidden; | |||||
| padding-bottom: 130rpx; | |||||
| } | |||||
| .text{ | |||||
| padding: 0 30rpx; | |||||
| } | |||||
| .title{ | |||||
| position: relative; | |||||
| background-color: #fff; | |||||
| z-index: 100; | |||||
| width: 750rpx; | |||||
| padding-top: 30rpx; | |||||
| padding-left: 30rpx; | |||||
| line-height: 50rpx; | |||||
| border-radius:20rpx 20rpx 0px 0px; | |||||
| margin-top: -25rpx; | |||||
| opacity: 1; | |||||
| font-size:32rpx; | |||||
| font-weight:bold; | |||||
| color:rgba(51,51,51,1); | |||||
| box-sizing: border-box; | |||||
| } | |||||
| .remark{ | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(134,134,134,1); | |||||
| line-height: 48rpx; | |||||
| } | |||||
| .des{ | |||||
| width: 100%; | |||||
| height: auto; | |||||
| padding-top: 6rpx; | |||||
| border-top: 2rpx solid rgb(240, 238, 238); | |||||
| } | |||||
| .des-peoplenum{ | |||||
| display: inline; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(0,0,0,1); | |||||
| line-height:44rpx; | |||||
| margin-right: 5rpx; | |||||
| } | |||||
| .des-saleprice{ | |||||
| display: inline; | |||||
| font-size:40rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,53,53,1); | |||||
| } | |||||
| .status{ | |||||
| width: 100%; | |||||
| border-radius: 15rpx; | |||||
| background:rgba(255,235,229,1); | |||||
| margin: 30rpx 0; | |||||
| overflow: hidden; | |||||
| } | |||||
| .status01{ | |||||
| float: left; | |||||
| width: 130rpx; | |||||
| height: 130rpx; | |||||
| } | |||||
| .status01 image{ | |||||
| width: 90rpx; | |||||
| height: 90rpx; | |||||
| border-radius: 45rpx; | |||||
| margin: 20rpx 0 0 20rpx; | |||||
| } | |||||
| .status02{ | |||||
| margin-top: 20rpx; | |||||
| float: left; | |||||
| width: 140rpx; | |||||
| font-size:28rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| } | |||||
| .r-p-num{ | |||||
| display: inline; | |||||
| color: #FF3535; | |||||
| } | |||||
| .status03{ | |||||
| width: 264rpx; | |||||
| float: left; | |||||
| padding-left: 10rpx; | |||||
| color: #F74812; | |||||
| box-sizing: border-box; | |||||
| } | |||||
| .hh,.mm,.ss{ | |||||
| display: inline-block; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,255,255,1); | |||||
| height: 38rpx; | |||||
| width: 38rpx; | |||||
| background: #F74812; | |||||
| border-radius:10rpx; | |||||
| margin: 46rpx 0 0 0; | |||||
| text-align: center; | |||||
| line-height: 38rpx; | |||||
| } | |||||
| .day-box{ | |||||
| width: 40rpx; | |||||
| text-align: center; | |||||
| } | |||||
| .mao{ | |||||
| display: inline-block; | |||||
| width: 20rpx; | |||||
| text-align: center; | |||||
| } | |||||
| .status04{ | |||||
| float: left; | |||||
| width: 146rpx; | |||||
| } | |||||
| .s-button{ | |||||
| background:#ED3D2E; | |||||
| width: 120rpx; | |||||
| height: 48rpx; | |||||
| font-size:28rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,255,255,1); | |||||
| text-align: center; | |||||
| line-height: 48rpx; | |||||
| border-radius: 24rpx; | |||||
| margin: 40rpx auto 0; | |||||
| } | |||||
| .p-title{ | |||||
| font-size:30rpx; | |||||
| color:rgba(51,51,51,1); | |||||
| margin: 10rpx 0 20rpx 0; | |||||
| } | |||||
| .p-list{ | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height:50rpx; | |||||
| } | |||||
| .edit{ | |||||
| position:fixed; | |||||
| bottom:0; | |||||
| left:0; | |||||
| right:0; | |||||
| padding:20rpx 22rpx; | |||||
| background:#fff; | |||||
| } | |||||
| .edit-left{ | |||||
| float: left; | |||||
| width: 562rpx; | |||||
| height: 95rpx; | |||||
| background:rgba(255,169,2,1); | |||||
| box-shadow:0px 8rpx 8rpx 1rpx rgba(255,169,2,0.32); | |||||
| border-radius:48rpx; | |||||
| } | |||||
| .edit-right{ | |||||
| float: right; | |||||
| width: 269rpx; | |||||
| height: 95rpx; | |||||
| line-height: 46rpx; | |||||
| background:linear-gradient(90deg,rgba(236,59,45,1) 0%,rgba(248,98,52,1) 100%); | |||||
| box-shadow:0px 8rpx 8rpx 1rpx rgba(246,93,51,0.32); | |||||
| border-radius:48rpx; | |||||
| } | |||||
| .edit-left-top{ | |||||
| height: 46rpx; | |||||
| text-align: center; | |||||
| line-height:65rpx; | |||||
| } | |||||
| .price{ | |||||
| display: inline; | |||||
| font-size:32rpx; | |||||
| line-height: 32rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| margin-top: 6rpx; | |||||
| } | |||||
| .price-unit{ | |||||
| display: inline; | |||||
| font-size:27rpx; | |||||
| line-height: 27rpx; | |||||
| margin-top: 11rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| } | |||||
| .edit-left-bottom{ | |||||
| text-align: center; | |||||
| font-size:30rpx; | |||||
| line-height: 95rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| } | |||||
| .edit-right-top{ | |||||
| line-height: 32rpx; | |||||
| text-align: center; | |||||
| margin-top: 13rpx; | |||||
| } | |||||
| .real-price{ | |||||
| display: inline; | |||||
| font-size:32rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| } | |||||
| .real-price-unit{ | |||||
| display: inline; | |||||
| font-size:27rpx; | |||||
| line-height: 27rpx; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| } | |||||
| .edit-right-bottom{ | |||||
| text-align: center; | |||||
| font-size:30rpx; | |||||
| line-height: 40rpx; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| } | |||||
| .posi { | |||||
| position: relative; | |||||
| } | |||||
| .applyshop{ | |||||
| font-size:32rpx; | |||||
| color:rgba(51,51,51,1); | |||||
| margin: 10rpx 0 20rpx 0; | |||||
| } | |||||
| .posi>view:nth-child(2) { | |||||
| width: 100%; | |||||
| height: 87rpx; | |||||
| display: flex; | |||||
| justify-content: space-between; | |||||
| line-height: 87rpx; | |||||
| } | |||||
| .posi>view:nth-child(2) text:nth-child(1) { | |||||
| font-size: 30rpx; | |||||
| color: #a9a9a9; | |||||
| } | |||||
| .posi>view:nth-child(2) text:nth-child(2) { | |||||
| font-size: 30rpx; | |||||
| color: #a9a9a9; | |||||
| } | |||||
| .posi_logo { | |||||
| width: 100%; | |||||
| display: flex; | |||||
| padding: 20rpx 0; | |||||
| background: #fff; | |||||
| height: 100rpx; | |||||
| margin-bottom: 20rpx; | |||||
| } | |||||
| .posi_logo view:nth-child(1) { | |||||
| width: 100rpx; | |||||
| height: 100rpx; | |||||
| border-radius: 16rpx; | |||||
| } | |||||
| .posi_logo view:nth-child(1) image { | |||||
| display: block; | |||||
| width: 100rpx; | |||||
| height: 100rpx; | |||||
| border-radius: 16rpx; | |||||
| border: 1px solid #e5e5e5; | |||||
| } | |||||
| .posi_logo view:nth-child(2) { | |||||
| display: flex; | |||||
| flex-direction: column; | |||||
| flex: 8; | |||||
| padding-left: 30rpx; | |||||
| } | |||||
| .posi_logo view:nth-child(2) text:nth-child(1) { | |||||
| font-size: 32rpx; | |||||
| color: #333; | |||||
| letter-spacing: 0; | |||||
| } | |||||
| .posi_logo view:nth-child(2) text:nth-child(2) { | |||||
| font-size: 24rpx; | |||||
| color: #b8b8b8; | |||||
| padding-top: 3rpx; | |||||
| width: 450rpx; | |||||
| height: 36rpx; | |||||
| overflow: hidden; | |||||
| } | |||||
| .tel { | |||||
| right: 0; | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| margin: auto; | |||||
| width: 50rpx; | |||||
| height: 50rpx; | |||||
| } | |||||
| .rest { | |||||
| font-size: 24rpx; | |||||
| color: #919191; | |||||
| letter-spacing: 0; | |||||
| height: 70rpx; | |||||
| line-height: 70rpx; | |||||
| /* border-bottom: 1px solid #eee; */ | |||||
| border-bottom: 1px solid #f9f9f9; | |||||
| } | |||||
| .restNum { | |||||
| font-size: 24rpx; | |||||
| color: #999; | |||||
| letter-spacing: 1.16rpx; | |||||
| text-align: right; | |||||
| } | |||||
| .time { | |||||
| font-size: 24rpx; | |||||
| color: #333; | |||||
| letter-spacing: 0; | |||||
| line-height: 33rpx; | |||||
| display: inline-block; | |||||
| } | |||||
| .txt01 { | |||||
| font-size: 24rpx; | |||||
| color: #919191; | |||||
| letter-spacing: 0; | |||||
| } | |||||
| .times { | |||||
| display: inline-block; | |||||
| color: #ff4949; | |||||
| font-weight: bold; | |||||
| font-size: 26rpx; | |||||
| text-align: center; | |||||
| } | |||||
| .times text { | |||||
| display: inline-block; | |||||
| margin: 6rpx; | |||||
| width: 46rpx; | |||||
| height: 56rpx; | |||||
| text-align: center; | |||||
| font-size: 28rpx; | |||||
| line-height: 60rpx; | |||||
| border-radius: 12rpx; | |||||
| color: #fff; | |||||
| font-weight: bold; | |||||
| background: #ff4949; | |||||
| } | |||||
| @@ -0,0 +1,232 @@ | |||||
| // pages/spellDetail/index.js | |||||
| var config = require("../../../config/config.js"); | |||||
| const Http = require("../../../utils/HttpBasics"); | |||||
| const imgurl = require("../../../utils/imgurl"); | |||||
| const { spellStatus } = require("../../../utils/spell"); | |||||
| Page({ | |||||
| /** | |||||
| * 页面的初始数据 | |||||
| */ | |||||
| data: { | |||||
| tuanzhang: imgurl.tuanzhang.url, | |||||
| spellBg: imgurl.spellBg.url, | |||||
| position: imgurl.position.url, | |||||
| close03: imgurl.close03.url, | |||||
| home: imgurl.wmhome.url, | |||||
| paramData: null, | |||||
| data: null, | |||||
| showErr: false, | |||||
| showAlert: false, | |||||
| remainingPoints:0 | |||||
| }, | |||||
| getUserInfo: function () { | |||||
| let that = this; | |||||
| // 获取用户信息 | |||||
| Http.get({ | |||||
| url: config.api.getScore, | |||||
| data: {} | |||||
| }) | |||||
| .then(res => { | |||||
| console.log(res) | |||||
| that.setData({ | |||||
| remainingPoints: Number(res.data.credit) - Number(that.data.data.salePriceStr), | |||||
| userInfo:res.data, | |||||
| nickName: res.data.nickName, | |||||
| avatarUrl: res.data.avatarUrl | |||||
| }) | |||||
| }) | |||||
| }, | |||||
| gotoIndex() { | |||||
| wx.reLaunch({ | |||||
| url: '/pages/index/index', | |||||
| }) | |||||
| }, | |||||
| gotoSearch() { | |||||
| wx.navigateTo({ | |||||
| url: `/pages/spellGroup/spellGroup`, | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面加载 | |||||
| */ | |||||
| onLoad: function (options) { | |||||
| this.setData({ | |||||
| paramData: options | |||||
| }) | |||||
| this.getDetail(options.couponChannelId); | |||||
| // 关闭来自于左上角的分享 | |||||
| wx.hideShareMenu() | |||||
| }, | |||||
| /** | |||||
| * 支付订单更新 | |||||
| */ | |||||
| payOrderUpdate: (orderId, payOrderId, status, reason, _this, orderGroupId) => { | |||||
| console.log(orderGroupId, 7777) | |||||
| let that = this; | |||||
| // 支付成功 | |||||
| Http.post({ | |||||
| url: config.api.payOrderUpdate, | |||||
| data: { | |||||
| payOrderId: payOrderId, | |||||
| orderId: orderId, | |||||
| status: status, | |||||
| reason: reason | |||||
| } | |||||
| }) | |||||
| .then(res => { | |||||
| wx.hideLoading() | |||||
| if (res.data.orderStatus == 14) { | |||||
| _this.setData({ | |||||
| showErr: true | |||||
| }) | |||||
| return; | |||||
| } | |||||
| if (orderGroupId == undefined) { | |||||
| wx.navigateTo({ | |||||
| url: '/pages/order/detail/index?orderId=' + res.data.id, | |||||
| }) | |||||
| } else { | |||||
| _this.goToOrderGroup(orderId, res.data.orderGroupId, _this) | |||||
| } | |||||
| }) | |||||
| .catch(err => { | |||||
| console.log(err); | |||||
| if (err.code != 12002) { | |||||
| setTimeout(function () { | |||||
| _this.payOrderUpdate(orderId, payOrderId, status, reason, _this, orderGroupId); | |||||
| }, 2000) | |||||
| } | |||||
| }) | |||||
| }, | |||||
| gotoPay() { | |||||
| let that = this; | |||||
| wx.showLoading({ | |||||
| title: '支付创建中...', | |||||
| }) | |||||
| Http.post({ | |||||
| url: config.api.payOrderCreate, | |||||
| data: { | |||||
| orderId: that.data.paramData.orderId | |||||
| } | |||||
| }) | |||||
| .then(res => { | |||||
| var payOrderId = "" + res.data.payOrderId; | |||||
| wx.hideLoading(); | |||||
| wx.requestPayment({ | |||||
| timeStamp: res.data.timeStamp, | |||||
| nonceStr: res.data.nonceStr, | |||||
| package: res.data.package, | |||||
| signType: (res.data.signType) ? res.data.signType : "MD5", | |||||
| paySign: res.data.paySign, | |||||
| success: res => { | |||||
| wx.showLoading({ | |||||
| title: '订单正在处理中...', | |||||
| }) | |||||
| setTimeout(function () { | |||||
| wx.hideLoading() | |||||
| }, 5000) | |||||
| that.payOrderUpdate(that.data.paramData.orderId, payOrderId, 1, '', that, 0); | |||||
| if (res.errMsg == "requestPayment:ok") { | |||||
| setTimeout(function () { | |||||
| wx.hideLoading(); | |||||
| }, 2000); | |||||
| } | |||||
| }, | |||||
| fail: res => { | |||||
| /** | |||||
| * 支付失败,需要更新订单的状态 | |||||
| */ | |||||
| that.payOrderUpdate(that.data.paramData.orderId, payOrderId, 2, '', that, 0); | |||||
| that.setData({ | |||||
| showbutton: false, | |||||
| canSpell: true, | |||||
| canBuyIf: true | |||||
| }) | |||||
| return; | |||||
| }, | |||||
| complete: res => { } | |||||
| }); | |||||
| /// End payment -------- | |||||
| }) | |||||
| .catch(err => { | |||||
| that.setData({ | |||||
| canSpell: true, | |||||
| canBuyIf: true | |||||
| }) | |||||
| wx.showToast({ | |||||
| title: err.message, | |||||
| icon: 'none', | |||||
| duration: 2000, | |||||
| mask: false | |||||
| }); | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 获取券详情信息 | |||||
| */ | |||||
| getDetail(couponChannelId) { | |||||
| let that = this; | |||||
| Http.get({ | |||||
| url: config.api.couponDetail, | |||||
| data: { | |||||
| couponChannelId: couponChannelId | |||||
| } | |||||
| }).then(res => { | |||||
| wx.stopPullDownRefresh(); | |||||
| that.getUserInfo() | |||||
| let data = res.data; | |||||
| that.setData({ | |||||
| data | |||||
| }); | |||||
| }); | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面初次渲染完成 | |||||
| */ | |||||
| onReady: function () { | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面显示 | |||||
| */ | |||||
| onShow: function () { | |||||
| this.setData({ | |||||
| showTime: true | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面隐藏 | |||||
| */ | |||||
| onHide: function () { | |||||
| this.setData({ | |||||
| showTime: false | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 生命周期函数--监听页面卸载 | |||||
| */ | |||||
| onUnload: function () { | |||||
| this.setData({ | |||||
| showTime: false | |||||
| }) | |||||
| }, | |||||
| /** | |||||
| * 页面相关事件处理函数--监听用户下拉动作 | |||||
| */ | |||||
| onPullDownRefresh: function () { | |||||
| this.getDetail(this.data.paramData); | |||||
| }, | |||||
| /** | |||||
| * 页面上拉触底事件的处理函数 | |||||
| */ | |||||
| onReachBottom: function () { | |||||
| } | |||||
| }) | |||||
| @@ -0,0 +1,6 @@ | |||||
| { | |||||
| "navigationBarTitleText": "积分换礼", | |||||
| "usingComponents": {}, | |||||
| "navigationBarBackgroundColor": "#F13C42", | |||||
| "enablePullDownRefresh": true | |||||
| } | |||||
| @@ -0,0 +1,50 @@ | |||||
| <!--pages/spellDetail/index.wxml--> | |||||
| <view class='container'> | |||||
| <!-- 拼团产品详情 --> | |||||
| <view class='detail'> | |||||
| <view class='return-index' bindtap='gotoIndex'> | |||||
| <image src='{{home}}' mode="widthFix"></image> | |||||
| </view> | |||||
| <view class='detail-top'> | |||||
| <view class='detail-top01'> | |||||
| <image src='{{data.coverImg}}' mode="aspectFill"></image> | |||||
| </view> | |||||
| <view class='detail-top02'> | |||||
| <view class='title'>{{data.title}}</view> | |||||
| <view class='des'>{{data.subTitle}}</view> | |||||
| <view class='des'>{{'价值:'+data.priceStr+'元'}}</view> | |||||
| </view> | |||||
| <view class='detail-top03'> | |||||
| <view class='detail-p-price'>{{data.salePriceStr}}积分</view> | |||||
| <view class='detail-p-name'>积分售价</view> | |||||
| </view> | |||||
| </view> | |||||
| </view> | |||||
| <!-- 拼团订单信息 --> | |||||
| <view class='order'> | |||||
| <view class='order-list'> | |||||
| <view class='order-title'>当前积分总额</view> | |||||
| <view class='order-text'>{{userInfo.credit}}</view> | |||||
| </view> | |||||
| <view class='order-list'> | |||||
| <view class='order-title'>兑换使用积分</view> | |||||
| <view class='order-text'>{{data.salePriceStr}}</view> | |||||
| </view> | |||||
| <view class='order-list'> | |||||
| <view class='order-title'>剩余积分</view> | |||||
| <view class='order-text'>{{remainingPoints}}</view> | |||||
| </view> | |||||
| </view> | |||||
| <view class='edit'> | |||||
| <button class='user-motto' bindtap='gotoPay'>{{'确认'+data.salePriceStr+'积分支付'}}</button> | |||||
| </view> | |||||
| <view class='al-bg' wx:if='{{showErr}}'></view> | |||||
| <view class='al-content' wx:if='{{showErr}}'> | |||||
| <view class='al-top'> | |||||
| <image src='{{orderGroupFail}}' mode="widthFix"></image> | |||||
| </view> | |||||
| <view class='al-center'>您的拼团未成功,退款将在24小时内返回到您的支付账号</view> | |||||
| <view class='al-bottom' bindtap='gotoIndex'>返回首页</view> | |||||
| </view> | |||||
| </view> | |||||
| @@ -0,0 +1,446 @@ | |||||
| /* pages/spellDetail/index.wxss */ | |||||
| page { | |||||
| height: auto; | |||||
| overflow: auto; | |||||
| background: #f89132; | |||||
| background-image: url('https://s3.cn-northwest-1.amazonaws.com.cn/iformall-net/cimg/spelldetail-bg.png'); | |||||
| background-size: cover; | |||||
| background-repeat: no-repeat; | |||||
| } | |||||
| .container{ | |||||
| margin-bottom:40rpx; | |||||
| } | |||||
| .status{ | |||||
| width: 690rpx; | |||||
| padding:0 28rpx; | |||||
| margin: 0 auto; | |||||
| box-sizing: border-box; | |||||
| background:rgba(255,255,255,1); | |||||
| border-radius:15rpx; | |||||
| } | |||||
| .edit{ | |||||
| position: fixed; | |||||
| width: 750rpx; | |||||
| height: 185rpx; | |||||
| bottom: 60rpx; | |||||
| left: 0; | |||||
| } | |||||
| .status-top{ | |||||
| width: 100%; | |||||
| height: 75rpx; | |||||
| box-sizing: border-box; | |||||
| border-bottom: 1rpx solid #F9F9F9; | |||||
| /* overflow: hidden; */ | |||||
| } | |||||
| .p-status{ | |||||
| float: left; | |||||
| width: 260rpx; | |||||
| font-size:32rpx; | |||||
| font-family:PingFang-SC-Bold; | |||||
| font-weight:bold; | |||||
| color:rgba(243,69,58,1); | |||||
| line-height: 75rpx; | |||||
| } | |||||
| .p-time{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(243,69,58,1); | |||||
| width: 38rpx; | |||||
| height: 30rpx; | |||||
| margin-top: 22rpx; | |||||
| background:rgba(252,220,221,1); | |||||
| border-radius:10rpx; | |||||
| line-height: 30rpx; | |||||
| text-align: center; | |||||
| margin: 22rpx 6rpx; | |||||
| } | |||||
| .p-mao{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(243,69,58,1); | |||||
| line-height: 75rpx; | |||||
| } | |||||
| .p-text{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Regular; | |||||
| font-weight:400; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height:75rpx; | |||||
| } | |||||
| .status-center{ | |||||
| width: 100%; | |||||
| overflow: hidden; | |||||
| padding: 20rpx 0; | |||||
| text-align: center; | |||||
| border-bottom: 1rpx solid #F9F9F9; | |||||
| } | |||||
| .tuanzhang{ | |||||
| float: left; | |||||
| width: 120rpx; | |||||
| height: 120rpx; | |||||
| position: relative; | |||||
| box-sizing:border-box; | |||||
| } | |||||
| .touxiangitems{ | |||||
| padding: 20rpx; | |||||
| margin: 0; | |||||
| overflow: hidden; | |||||
| } | |||||
| .touxiang{ | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| border-radius: 40rpx; | |||||
| overflow: hidden; | |||||
| } | |||||
| .no-touxiang{ | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| overflow: hidden; | |||||
| background:rgba(252,220,221,1); | |||||
| border:1rpx solid rgba(243,69,58,1); | |||||
| border-radius:50%; | |||||
| box-sizing: border-box; | |||||
| line-height: 78rpx; | |||||
| text-align: center; | |||||
| font-size:32rpx; | |||||
| font-family:PingFang-SC-Regular; | |||||
| font-weight:400; | |||||
| color:rgba(243,69,58,1); | |||||
| margin: 0; | |||||
| padding: 0; | |||||
| } | |||||
| .touxiang image{ | |||||
| width: 80rpx; | |||||
| height: 80rpx; | |||||
| } | |||||
| .tuan-icon{ | |||||
| position: absolute; | |||||
| bottom:20rpx; | |||||
| left:28rpx; | |||||
| width: 64rpx; | |||||
| height: 27rpx; | |||||
| } | |||||
| .tuan-icon image{ | |||||
| display: block; | |||||
| width: 64rpx; | |||||
| height: 27rpx; | |||||
| } | |||||
| .status-bottom{ | |||||
| width: 100%; | |||||
| height: auto; | |||||
| overflow: hidden; | |||||
| } | |||||
| .position-icon{ | |||||
| width: 38rpx; | |||||
| float: left; | |||||
| } | |||||
| .position-icon image{ | |||||
| width: 27rpx; | |||||
| height: 37rpx; | |||||
| margin-top: 17rpx; | |||||
| } | |||||
| .position{ | |||||
| font-size:28rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height: 72rpx; | |||||
| } | |||||
| .detail{ | |||||
| position: relative; | |||||
| width: 690rpx; | |||||
| padding:0 28rpx; | |||||
| margin: 30rpx auto 0; | |||||
| box-sizing: border-box; | |||||
| background:rgba(255,255,255,1); | |||||
| border-radius:15rpx; | |||||
| } | |||||
| /* .return-index{ | |||||
| position: absolute; | |||||
| right: 30rpx; | |||||
| top: 30rpx; | |||||
| width: 50rpx; | |||||
| height: 50rpx; | |||||
| } | |||||
| .return-index image{ | |||||
| display: block; | |||||
| width: 50rpx; | |||||
| height: 50rpx; | |||||
| } */ | |||||
| .return-index{ | |||||
| position: fixed; | |||||
| right: 50rpx; | |||||
| top: 60rpx; | |||||
| width:100rpx!important; | |||||
| height:100rpx; | |||||
| z-index: 100; | |||||
| background:rgba(255,255,255,1); | |||||
| line-height: 95rpx; | |||||
| border:1rpx solid rgba(227,227,227,1); | |||||
| border-radius:50%; | |||||
| } | |||||
| .return-index image{ | |||||
| position: absolute; | |||||
| width: 60rpx; | |||||
| left: 0; | |||||
| right: 0; | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| margin: auto; | |||||
| } | |||||
| .detail-top{ | |||||
| width: 100%; | |||||
| height: auto; | |||||
| overflow: hidden; | |||||
| padding-bottom: 12rpx; | |||||
| } | |||||
| .detail-top01{ | |||||
| float: left; | |||||
| width: 180rpx; | |||||
| } | |||||
| .detail-top01 image{ | |||||
| width: 180rpx; | |||||
| height: 180rpx; | |||||
| margin-top: 33rpx; | |||||
| } | |||||
| .detail-top02{ | |||||
| width: 208rpx; | |||||
| float: left; | |||||
| margin-left: 16rpx; | |||||
| } | |||||
| .title{ | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Bold; | |||||
| font-weight:bold; | |||||
| color:rgba(51,51,51,1); | |||||
| line-height:44rpx; | |||||
| margin-top: 30rpx; | |||||
| overflow:hidden; | |||||
| text-overflow:ellipsis; | |||||
| white-space:nowrap; | |||||
| } | |||||
| .des{ | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(134,134,134,1); | |||||
| line-height:40rpx; | |||||
| overflow:hidden; | |||||
| text-overflow:ellipsis; | |||||
| white-space:nowrap; | |||||
| } | |||||
| .detail-top03{ | |||||
| float: left; | |||||
| padding-top: 180rpx; | |||||
| width: 230rpx; | |||||
| } | |||||
| .detail-p-name{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(134,134,134,1); | |||||
| line-height:44rpx; | |||||
| } | |||||
| .detail-p-price{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| } | |||||
| .detail-bottom{ | |||||
| border-top: 1rpx solid #F9F9F9; | |||||
| width: 100%; | |||||
| overflow: hidden; | |||||
| height: 86rpx; | |||||
| } | |||||
| .b-unit{ | |||||
| float: right; | |||||
| font-size:24rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(237,63,46,1); | |||||
| margin-top: 36rpx; | |||||
| } | |||||
| .b-price{ | |||||
| float: right; | |||||
| font-size:40rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(237,63,46,1); | |||||
| margin-top: 18rpx; | |||||
| } | |||||
| .b-name{ | |||||
| float: right; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| margin-right: 6rpx; | |||||
| margin-top: 34rpx; | |||||
| } | |||||
| .order{ | |||||
| width: 690rpx; | |||||
| padding:10rpx 28rpx; | |||||
| margin: 30rpx auto 0; | |||||
| box-sizing: border-box; | |||||
| background:rgba(255,255,255,1); | |||||
| border-radius:15rpx; | |||||
| } | |||||
| .order-list{ | |||||
| height: 55rpx; | |||||
| } | |||||
| .order-title{ | |||||
| line-height: 55rpx; | |||||
| float: left; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| } | |||||
| .order-text{ | |||||
| float: right; | |||||
| text-align: right; | |||||
| line-height: 55rpx; | |||||
| font-size:26rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(134,134,134,1); | |||||
| } | |||||
| .user-motto { | |||||
| border: 0; | |||||
| width:650rpx; | |||||
| height:85rpx; | |||||
| background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); | |||||
| box-shadow:0px 8rpx 8rpx 1rpx rgba(242,61,65,0.32); | |||||
| border-radius:43rpx; | |||||
| font-size:36rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(254,254,254,1); | |||||
| line-height: 85rpx; | |||||
| margin-top: 100rpx; | |||||
| } | |||||
| .user-motto::after { | |||||
| border: none; | |||||
| } | |||||
| .button button:nth-of-type(1){ | |||||
| width:520rpx; | |||||
| height:95rpx; | |||||
| margin: 30rpx auto 38rpx; | |||||
| background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); | |||||
| border-radius:47rpx; | |||||
| color: #fff; | |||||
| } | |||||
| .button button:nth-of-type(2){ | |||||
| width:520rpx; | |||||
| height:95rpx; | |||||
| background:rgba(255,255,255,1); | |||||
| border:1rpx solid rgba(190,190,190,1); | |||||
| border-radius:47rpx; | |||||
| color:#333333; | |||||
| margin-bottom: 50rpx; | |||||
| } | |||||
| .alert-bg{ | |||||
| width: 100%; | |||||
| height: 100vh; | |||||
| position: fixed; | |||||
| opacity: 0.7; | |||||
| background: #000; | |||||
| top: 0; | |||||
| left: 0; | |||||
| z-index: 200; | |||||
| } | |||||
| .alert-box{ | |||||
| width: 600rpx; | |||||
| height: 332rpx; | |||||
| position: fixed; | |||||
| z-index: 300; | |||||
| background: #fff; | |||||
| top: 50vh; | |||||
| margin-top: -162rpx; | |||||
| left: 85rpx; | |||||
| border-radius:15rpx; | |||||
| } | |||||
| .alert-close{ | |||||
| position: absolute; | |||||
| width: 47rpx; | |||||
| height: 98rpx; | |||||
| top: -98rpx; | |||||
| right: 0; | |||||
| } | |||||
| .alert-close image{ | |||||
| width: 47rpx; | |||||
| height: 98rpx; | |||||
| } | |||||
| .alert-title{ | |||||
| text-align: center; | |||||
| font-size:30rpx; | |||||
| line-height: 30rpx; | |||||
| margin-top: 79rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(51,51,51,1); | |||||
| } | |||||
| .alert-button .share{ | |||||
| width:500rpx; | |||||
| height:95rpx; | |||||
| background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); | |||||
| border-radius:47rpx; | |||||
| margin-top: 79rpx; | |||||
| } | |||||
| .al-bg{ | |||||
| position: fixed; | |||||
| width: 100%; | |||||
| height: 100vh; | |||||
| top: 0; | |||||
| left: 0; | |||||
| background:rgba(0,0,0,1); | |||||
| opacity:0.65; | |||||
| z-index: 200; | |||||
| } | |||||
| .al-content{ | |||||
| background: #fff; | |||||
| position: fixed; | |||||
| width: 545rpx; | |||||
| z-index: 300; | |||||
| top: 200rpx; | |||||
| left: 102rpx; | |||||
| border-radius: 15rpx; | |||||
| } | |||||
| .al-top{ | |||||
| width: 100%; | |||||
| } | |||||
| .al-top image{ | |||||
| position: relative; | |||||
| height: 298rpx; | |||||
| margin-top: -96rpx; | |||||
| width: 545rpx; | |||||
| } | |||||
| .al-center{ | |||||
| padding: 80rpx 30rpx; | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Regular; | |||||
| font-weight:400; | |||||
| color:rgba(51,51,51,1); | |||||
| } | |||||
| .al-bottom{ | |||||
| width:462rpx; | |||||
| height:95rpx; | |||||
| background:linear-gradient(90deg,rgba(248,85,45,1) 0%,rgba(241,60,66,1) 0%,rgba(248,86,46,1) 100%); | |||||
| border-radius:47rpx; | |||||
| font-size:30rpx; | |||||
| font-family:PingFang-SC-Medium; | |||||
| font-weight:500; | |||||
| color:rgba(255,255,255,1); | |||||
| text-align: center; | |||||
| line-height: 95rpx; | |||||
| margin: 0 auto 43rpx; | |||||
| } | |||||
| @@ -73,6 +73,16 @@ | |||||
| </view> | </view> | ||||
| </view> | </view> | ||||
| </navigator> | </navigator> | ||||
| <navigator url="/pages/integralmall/index"> | |||||
| <view class="user-btn app-border-bottom"> | |||||
| <view> | |||||
| <image class='icons' src="{{cardiconUrl}}" mode='widthFix'></image>积分商城</view> | |||||
| <view> | |||||
| <text class="couponnum" wx:if="{{couponNum2=='couponNum2'}}"></text> | |||||
| <text class="iconfont icon-right"></text> | |||||
| </view> | |||||
| </view> | |||||
| </navigator> | |||||
| <!-- <navigator url="/pages/passCar/passCar" open-type="switchTab"> | <!-- <navigator url="/pages/passCar/passCar" open-type="switchTab"> | ||||
| <view class="user-btn app-border-bottom"> | <view class="user-btn app-border-bottom"> | ||||
| <view> | <view> | ||||