Commit 773fab64 by 严立

LL - 儿童营地评价

parent b44f534b
Showing with 930 additions and 527 deletions
......@@ -56,6 +56,7 @@ App({
}).then((response) => {
let funcData = response.data
this.globalData.appStatus = Boolean(Number(funcData[0].value))
console.log(this.globalData.appStatus)
}).catch(() => {})
},
......
{
"pages": [
"pages/home/home/home",
"pages/home/guide/guide",
"pages/home/history/history",
......@@ -60,9 +58,11 @@
"pages/mall/exchange-state/exchange-state",
"pages/mall/exchange-record/exchange-record",
"pages/mall/exchange-submit/exchange-submit",
"pages/login/login"
"pages/login/login",
"pages/campsite/evaluate/evaluate"
],
"usingComponents": {
"coupon-code": "/component/coupon-code/coupon-code",
"m-button-bottom": "./component/m-button-bottom/m-button-bottom",
"m-checkbox": "./component/m-checkbox/m-checkbox",
"m-dialog": "./component/m-dialog/m-dialog",
......@@ -79,7 +79,6 @@
"l-collapse": "./miniprogram_npm/lin-ui/collapse/index",
"l-collapse-item": "./miniprogram_npm/lin-ui/collapse-item/index",
"l-textarea": "./miniprogram_npm/lin-ui/textarea/index",
"l-popup": "./miniprogram_npm/lin-ui/popup/index",
"l-image-picker": "./miniprogram_npm/lin-ui/image-picker/index"
},
"window": {
......
Component({
options: {
styleIsolation: 'apply-shared'
},
properties: {
couponCodeSelectionIndex: {
type: Number,
value: 0,
},
couponCodeList: {
type: Array,
value: []
},
unit: {
type: String,
value: '件'
},
viewCouponCode: {
type: Boolean,
value: false,
}
},
data: {
usableCouponCodeTotal: 0,
couponCodeActiveIndex: 1,
},
observers: {
'couponCodeList': function (funcValue) {
if (!this.inspectCouponCodeItemFormat()) return
this.setTitle()
},
'couponCodeSelectionIndex': function (funcValue) {
this.setData({ couponCodeActiveIndex: funcValue + 1 })
},
},
methods: {
inspectCouponCodeItemFormat: function () {
let funcCouponCodeFormat = {
'couponId': '',
'couponName': '',
'couponNumber': '',
'couponQrCode': '',
'couponState': '',
}
let funcCouponCodeKeys = Object.keys(funcCouponCodeFormat)
let funcCouponCodeList = this.data.couponCodeList
for (let i = 0, l = funcCouponCodeList.length; i < l; i++) {
let funcItemKeys = Object.keys(funcCouponCodeList[i])
for (let ii = 0, ll = funcCouponCodeKeys.length; ii < ll; ii++) {
if (!funcItemKeys.includes(funcCouponCodeKeys[ii])) {
console.error('[coupon-code] properties "couponCodeList" item format should be ' + JSON.stringify(funcCouponCodeFormat))
this.setData({
couponCodeList: []
})
return false
}
}
}
return true
},
setTitle: function () {
let funcCouponCodeList = this.data.couponCodeList
let funcUsableCouponCodeTotal = 0
for (let i = 0, l = funcCouponCodeList.length; i < l; i++) {
if (funcCouponCodeList[i].state !== 2) funcUsableCouponCodeTotal++
}
funcUsableCouponCodeTotal === 0 ? funcUsableCouponCodeTotal = '无' : funcUsableCouponCodeTotal = funcUsableCouponCodeTotal + this.data.unit
this.setData({ usableCouponCodeTotal: funcUsableCouponCodeTotal })
},
onCouponCodeClose: function () {
this.setData({ viewCouponCode: false, })
},
/**
* 复制兑换券码
* @function
* @param
* @returns
*/
onCouponCodeCopy: function () {
wx.setClipboardData({
data: this.data.couponCodeList[this.data.couponCodeSelectionIndex].couponNumber,
})
},
eventIndexChange: function (funcEvent) {
let funcIndex = funcEvent.detail.current
this.setData({
couponCodeActiveIndex: funcIndex + 1
})
},
}
})
{
"component": true,
"usingComponents": {}
}
\ No newline at end of file
<view class="coupon_code_container column cc ac" hidden="{{!viewCouponCode}}">
<text class="font_normal_30 color_submit">{{usableCouponCodeTotal + '商品可用'}}</text>
<text class="coupon_code_tip font_normal_26 color_submit">{{'请将券码出示给门店核销人员'}}</text>
<swiper class="coupon_code_swiper" current="{{couponCodeSelectionIndex}}" bindchange="eventIndexChange">
<swiper-item class="coupon_code_item row cc" wx:for="{{couponCodeList}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="coupon_code_info col cc ac">
<!-- 无效券码蒙尘样式 -->
<view class="coupon_code_mask" wx:if="{{item.couponState === 2}}"></view>
<image mode="aspectFill" class="coupon_code_seal" wx:if="{{item.couponState === 2}}" src="./image/seal-used.png"></image>
<text class="font_normal_30 color_regular">{{item.couponName}}</text>
<image class="coupon_code_content" src="{{'data:image/png;base64,' + item.couponQrCode}}"></image>
<view class="coupon_code_operation row con-b ac">
<block wx:if="{{item.couponState === 1}}">
<text class="font_bold_26 color_secondary">券码</text>
<text class="font_bold_30 color_regular">{{item.couponNumber}}</text>
<text class="font_bold_26 color_primary" bindtap="onCouponCodeCopy">复制</text>
</block>
<block wx:if="{{item.couponState === 2}}">
<text class="font_bold_26 color_secondary">券码</text>
<text class="font_bold_30 color_secondary text_decoration_delete" wx:if="{{item.couponState === 2}}">{{item.couponNumber}}</text>
<text class="font_bold_26 color_primary" space="nbsp">  </text>
</block>
</view>
</view>
</swiper-item>
</swiper>
<view class="coupon_code_indicator row ac">
<text class="font_normal_34 color_submit">{{couponCodeActiveIndex}}</text>
<text class="font_normal_26 color_secondary" space="nbsp"> / </text>
<text class="font_normal_26 color_secondary">{{couponCodeList.length}}</text>
</view>
<image class="coupon_code_close" src="./image/close.png" bindtap="onCouponCodeClose"></image>
</view>
\ No newline at end of file
/* 券码弹窗 */
.coupon_code_container {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .65);
}
.coupon_code_tip {
margin: 28rpx 0 0 0;
}
.coupon_code_swiper {
width: 750rpx;
height: 730rpx;
margin: 0 0 16rpx 0;
}
.coupon_code_item {
left: 88rpx;
width: 574rpx !important;
height: 666rpx;
}
.coupon_code_info {
position: relative;
width: 526rpx;
height: 666rpx;
margin: 56rpx 0 48rpx 0;
border-radius: 2px;
background: #FFFFFF;
}
.coupon_code_mask {
position: absolute;
top: 154rpx;
left: 116rpx;
width: 296rpx;
height: 296rpx;
background: rgba(255, 255, 255, .8);
}
.coupon_code_seal {
position: absolute;
top: 252rpx;
right: -68rpx;
width: 254rpx;
height: 254rpx;
}
.coupon_code_content {
width: 296rpx;
height: 296rpx;
margin: 56rpx 0 0 0;
}
.coupon_code_operation {
width: 446rpx;
height: 96rpx;
margin: 56rpx 0 0 0;
padding: 0 24rpx;
border-radius: 2px;
background: #F2F3F5;
}
.coupon_code_indicator {
margin: 24rpx 0 0 0;
}
.coupon_code_indicator > text:nth-child(3) {
margin: 2rpx 0 0 0;
}
.coupon_code_close {
width: 80rpx;
height: 80rpx;
margin: 32rpx 0 0 0;
}
\ No newline at end of file
......@@ -30,7 +30,7 @@ let Development = {
{ appId: 5, id: '26c40446fc454a02abe61758176597f6', logo: 'shop/logo-5.png', commodityLogo: 'shop/commodity-logo-5.png', cover: 'shop/cover-5.png', printUse: 'shop/print/print-5-1.png', print: 'shop/print/print-5-2.png', name: '拾光花坊', title: ['拾光花坊', '拾光花坊', '拾光花坊', '拾光花坊', '拾光花坊', '拾光花坊', '拾光花坊'] },
{ appId: 6, id: 'd9436d7018de43809824b6ec221ea01f', logo: 'shop/logo-6.png', commodityLogo: 'shop/commodity-logo-6.png', cover: 'shop/cover-6.png', printUse: 'shop/print/print-6-1.png', print: 'shop/print/print-6-2.png', name: '原味舒食', title: ['原味舒食', '原味舒食', '原味舒食', '原味舒食', '原味舒食', '原味舒食', '原味舒食'] },
{ appId: 7, id: '2614f117406548718bc091f24368c16e', logo: 'shop/logo-7.png', commodityLogo: 'shop/commodity-logo-7.png', cover: 'shop/cover-7.png', printUse: 'shop/print/print-7-1.png', print: 'shop/print/print-7-2.png', name: '元养水韵SPA', title: ['元养水韵SPA', '元养水韵SPA', '元养水韵SPA', '元养水韵SPA', '元养水韵SPA', '元养水韵SPA', '元养水韵SPA'] },
{ appId: 8, id: '2614f117406548718bc091f24368c16e', logo: 'shop/logo-7.png', commodityLogo: 'shop/commodity-logo-7.png', cover: 'shop/cover-7.png', printUse: 'shop/print/print-8-1.png', print: 'shop/print/print-8-2.png', name: '星光广场', title: ['星光广场', '星光广场', '星光广场', '星光广场', '星光广场', '星光广场', '星光广场'] },
{ appId: 8, id: '2614f117406548718bc091f24368c16e', logo: 'shop/logo-7.png', commodityLogo: 'shop/commodity-logo-7.png', cover: 'shop/cover-7.png', printUse: 'shop/print/print-8-1.png', print: 'shop/print/print-8-2.png', name: '星光广场', title: ['星光广场', '星光广场', '星光广场', '星光广场', '星光广场', '星光广场', '星光广场'] },
]
}
......

157 Bytes | W: | H:

113 Bytes | W: | H:

image/icon/add-1.png
image/icon/add-1.png
image/icon/add-1.png
image/icon/add-1.png
  • 2-up
  • Swipe
  • Onion skin

1.46 KB | W: | H:

113 Bytes | W: | H:

image/icon/add-2.png
image/icon/add-2.png
image/icon/add-2.png
image/icon/add-2.png
  • 2-up
  • Swipe
  • Onion skin

603 Bytes | W: | H:

520 Bytes | W: | H:

image/icon/album-1.png
image/icon/album-1.png
image/icon/album-1.png
image/icon/album-1.png
  • 2-up
  • Swipe
  • Onion skin

1.09 KB | W: | H:

573 Bytes | W: | H:

image/icon/album-2.png
image/icon/album-2.png
image/icon/album-2.png
image/icon/album-2.png
  • 2-up
  • Swipe
  • Onion skin

1.9 KB | W: | H:

273 Bytes | W: | H:

image/icon/arrow-b-1.png
image/icon/arrow-b-1.png
image/icon/arrow-b-1.png
image/icon/arrow-b-1.png
  • 2-up
  • Swipe
  • Onion skin

2.27 KB | W: | H:

282 Bytes | W: | H:

image/icon/arrow-b-2.png
image/icon/arrow-b-2.png
image/icon/arrow-b-2.png
image/icon/arrow-b-2.png
  • 2-up
  • Swipe
  • Onion skin

2.11 KB | W: | H:

287 Bytes | W: | H:

image/icon/arrow-b-3.png
image/icon/arrow-b-3.png
image/icon/arrow-b-3.png
image/icon/arrow-b-3.png
  • 2-up
  • Swipe
  • Onion skin

257 Bytes | W: | H:

216 Bytes | W: | H:

image/icon/arrow-l-1.png
image/icon/arrow-l-1.png
image/icon/arrow-l-1.png
image/icon/arrow-l-1.png
  • 2-up
  • Swipe
  • Onion skin

1.83 KB | W: | H:

218 Bytes | W: | H:

image/icon/arrow-l-2.png
image/icon/arrow-l-2.png
image/icon/arrow-l-2.png
image/icon/arrow-l-2.png
  • 2-up
  • Swipe
  • Onion skin

2.1 KB | W: | H:

222 Bytes | W: | H:

image/icon/arrow-r-1.png
image/icon/arrow-r-1.png
image/icon/arrow-r-1.png
image/icon/arrow-r-1.png
  • 2-up
  • Swipe
  • Onion skin

6.03 KB | W: | H:

1.47 KB | W: | H:

image/icon/cart-4.png
image/icon/cart-4.png
image/icon/cart-4.png
image/icon/cart-4.png
  • 2-up
  • Swipe
  • Onion skin

382 Bytes | W: | H:

359 Bytes | W: | H:

image/icon/clock-1.png
image/icon/clock-1.png
image/icon/clock-1.png
image/icon/clock-1.png
  • 2-up
  • Swipe
  • Onion skin

377 Bytes | W: | H:

352 Bytes | W: | H:

image/icon/clock-2.png
image/icon/clock-2.png
image/icon/clock-2.png
image/icon/clock-2.png
  • 2-up
  • Swipe
  • Onion skin

382 Bytes | W: | H:

359 Bytes | W: | H:

image/icon/clock-3.png
image/icon/clock-3.png
image/icon/clock-3.png
image/icon/clock-3.png
  • 2-up
  • Swipe
  • Onion skin

500 Bytes | W: | H:

221 Bytes | W: | H:

image/icon/close-1.png
image/icon/close-1.png
image/icon/close-1.png
image/icon/close-1.png
  • 2-up
  • Swipe
  • Onion skin

136 Bytes | W: | H:

107 Bytes | W: | H:

image/icon/cut-1.png
image/icon/cut-1.png
image/icon/cut-1.png
image/icon/cut-1.png
  • 2-up
  • Swipe
  • Onion skin

1.43 KB | W: | H:

107 Bytes | W: | H:

image/icon/cut-2.png
image/icon/cut-2.png
image/icon/cut-2.png
image/icon/cut-2.png
  • 2-up
  • Swipe
  • Onion skin

1.83 KB | W: | H:

317 Bytes | W: | H:

image/icon/edit-1.png
image/icon/edit-1.png
image/icon/edit-1.png
image/icon/edit-1.png
  • 2-up
  • Swipe
  • Onion skin

669 Bytes | W: | H:

309 Bytes | W: | H:

image/icon/edit-4.png
image/icon/edit-4.png
image/icon/edit-4.png
image/icon/edit-4.png
  • 2-up
  • Swipe
  • Onion skin

398 Bytes | W: | H:

363 Bytes | W: | H:

image/icon/evaluate-1.png
image/icon/evaluate-1.png
image/icon/evaluate-1.png
image/icon/evaluate-1.png
  • 2-up
  • Swipe
  • Onion skin
let App = getApp()
Page({
data: {
officeService: 0,
officeServiceText: '5.0', // 门店服务评分
officeProduct: 0,
officeProductText: '5.0', // 门店产品评分
officeEnvironmental: 0,
officeEnvironmentalText: '5.0', // 门店环境评分
detailEvaluate: [],
},
onLoad: function (options) {
this.getOfficeAppraise()
this.getAppraise()
},
// 查询门店评分
getOfficeAppraise: function() {
let that = this
let officeId = wx.getStorageSync('shopInfoBuffer').id
App.wxRequest({
url: 'v1/appraise/getOfficeAppraise',
data: {
'officeId': '8a3e59c57f564c569b3d7bb278ea50b3'
},
success: function(response) {
let funcData = response.data
that.setData({
officeServiceText: funcData.serviceEvaluation.toFixed(1),
officeProductText: funcData.productEvaluatio.toFixed(1),
officeEnvironmentalText: funcData.environmentalEvaluation.toFixed(1),
})
}
})
},
/**
* 查询评论列表
* @function
* @param
* @returns
*/
getAppraise: function () {
App.wxRequest({
url: 'v1/appraise/getList',
data: {
'pageNo': '1',
'pageSize': '-1',
'officeId': '8a3e59c57f564c569b3d7bb278ea50b3'
},
success: (response) => {
let funcResponse = response.data
let funcList = []
for (let i = 0, l = funcResponse.list.length; i < l; i++) {
let funcItem = {
'star': 4,
'scoreService': funcResponse.list[i].serviceEvaluation, // 服务评价
'scoreCommodity': funcResponse.list[i].productEvaluation, // 商品评价
'scoreEnvironmental': funcResponse.list[i].environmentalEvaluation, // 环境评价
'userName': funcResponse.list[i].nickname,
'userAvatar': funcResponse.list[i].headImg,
'userType': funcResponse.list[i].userType,
'userAlbum': funcResponse.list[i].imgUrls, // 评论图册
'date': funcResponse.list[i].createDate,
'content': funcResponse.list[i].content,
'isMore': false,
'isDetail': false,
}
// 没有评论也没有图片,使用默认文本。
if (funcItem.content === '' && funcItem.userAlbum.length === 0) {
funcItem.content = '此用户没有填写评价。'
}
funcItem.star = Math.floor((funcItem.scoreService + funcItem.scoreCommodity + funcItem.scoreEnvironmental) / 3)
funcList.push(funcItem)
}
this.setData({
detailEvaluate: funcList
})
const funcQuery = wx.createSelectorQuery()
funcQuery.selectAll('.evaluate-item-content-mark').boundingClientRect()
funcQuery.exec((response) => {
let funcContentHeight = 88 * wx.getStorageSync('unitProportion')
let funcEvaluate = this.data.detailEvaluate
let funcTextHeight = response[0]
for (let i = 0, l = funcTextHeight.length; i < l; i++) {
if (funcContentHeight < funcTextHeight[i].height) {
funcEvaluate[i].isMore = true
}
}
this.setData({
detailEvaluate: funcEvaluate
})
})
}
})
},
/**
* 页面滚动事件
* @function
* @param {object} - funcEvent
* @returns
*/
onPageScroll: function (funcEvent) {
App.pageScroll(funcEvent, this)
},
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<m-nav titleText="全部评价" scrollHeight="{{navScroll}}"></m-nav>
<view class="evaluate">
<view class="evaluate-option row con-b align-c">
<view class="evaluate-option-item row align-c">
<image src="{{imageBase + 'icon/evaluate-1.png'}}"></image>
<text>服务</text>
<text>{{officeServiceText}}</text>
<text>分</text>
</view>
<view class="evaluate-option-item row align-c">
<image src="{{imageBase + 'icon/shop-1.png'}}"></image>
<text>产品</text>
<text>{{officeProductText}}</text>
<text>分</text>
</view>
<view class="evaluate-option-item row align-c">
<image src="{{imageBase + 'icon/album-1.png'}}"></image>
<text>环境</text>
<text>{{officeEnvironmentalText}}</text>
<text>分</text>
</view>
</view>
<view class="evaluate-list col">
<block wx:for="{{detailEvaluate}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="evaluate-item col">
<view class="row">
<image class="evaluate-item-avatar" src="{{item.userAvatar}}" mode="widthFix"></image>
<view class="evaluate-item-info">
<view class="evaluate-item-info-text row align-c">
<text>{{item.userName}}</text>
<text>业主</text>
<text>{{item.date}}</text>
</view>
<view class="evaluate-item-info-star row align-c">
<block wx:for="{{item.star}}" wx:for-index="indexStar" wx:for-item="itemStar" wx:key="indexStar">
<image src="{{imageBase + 'icon/star-1.png'}}" data-item="{{item}}"></image>
</block>
</view>
</view>
</view>
<!-- 评论 -->
<view class="{{!item.isDetail ? 'evaluate-item-content' : 'evaluate-item-content-whole'}}" hidden="{{!item.content}}">
<text class="evaluate-item-content-mark">{{item.content}}</text>
</view>
<view wx:if="{{!item.isDetail && item.isMore && item.content}}" class="evaluate-item-content-more row ac" data-item="{{item}}" data-index="{{index}}" bindtap="onEvaluateMore">
<text>全文</text>
</view>
<view class="evaluate-item-album" wx:if="{{item.userAlbum.length}}">
<block wx:for="{{item.userAlbum}}" wx:for-index="indexAlbum" wx:for-item="itemAlbum" wx:key="indexAlbum">
<image wx:if="{{indexAlbum < 4}}" src="{{itemAlbum}}" data-index="{{indexAlbum}}" data-item="{{item}}" bindtap="onEvaluateAlbum"></image>
</block>
<view wx:if="{{item.userAlbum.length > 4}}" class="evaluate-item-album-more row con-c align-c" data-index="{{3}}" data-item="{{item}}" bindtap="onEvaluateAlbum">
<text>{{'+' + (item.userAlbum.length - 4)}}</text>
</view>
</view>
</view>
</block>
</view>
</view>
\ No newline at end of file
.evaluate {
padding-bottom: 160rpx;
}
.evaluate-option {
width: 750rpx;
margin: 62rpx 0 16rpx 0;
padding: 0 40rpx;
}
.evaluate-option-item image {
width: 40rpx;
height: 40rpx;
margin-right: 16rpx;
}
.evaluate-option-item text:nth-child(2) {
width: 44rpx;
height: 32rpx;
margin-right: 8rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #959da9;
}
.evaluate-option-item text:nth-child(3) {
height: 40rpx;
font-size: 26rpx;
font-weight: 500;
line-height: 40rpx;
color: #15191f;
}
.evaluate-option-item text:nth-child(4) {
height: 40rpx;
font-size: 20rpx;
font-weight: 500;
line-height: 40rpx;
color: #15191f;
}
/* 评论详情 */
.evaluate-item {
position: relative;
width: 670rpx;
min-height: 204rpx;
margin: 48rpx 40rpx 0 40rpx;
border-bottom: 1px solid #e2e7ef;
}
.evaluate-item:last-child {
border-bottom: none;
}
.evaluate-item-avatar {
width: 80rpx;
height: 80rpx;
margin-right: 16rpx;
border-radius: 50%;
background: #999;
}
.evaluate-item-info-text {
width: 574rpx;
}
.evaluate-item-info-text text:nth-child(1) {
max-width: 340rpx;
height: 44rpx;
margin-right: 12rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 44rpx;
color: #15191f;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.evaluate-item-info-text text:nth-child(2) {
width: 60rpx;
height: 32rpx;
border-radius: 4rpx;
background: linear-gradient(180deg, #3f4357 0%, #252532 100%);
text-align: center;
font-size: 18rpx;
font-weight: 500;
line-height: 32rpx;
color: #e8d0af;
}
.evaluate-item-info-text text:nth-child(3) {
flex-grow: 1;
height: 32rpx;
text-align: right;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #959da9;
}
.evaluate-item-info-star {
margin-top: 8rpx;
}
.evaluate-item-info-star image {
width: 28rpx;
height: 28rpx;
margin-right: 4rpx;
}
.evaluate-item-content {
display: -webkit-box;
position: relative;
width: 670rpx;
max-height: 132rpx;
margin-top: 32rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 44rpx;
color: #15191f;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
.evaluate-item-content-whole {
position: relative;
width: 670rpx;
min-height: 132rpx;
margin-top: 32rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 44rpx;
color: #15191f;
}
.evaluate-item-content-more {
height: 44rpx;
margin-top: 8rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 32rpx;
}
.evaluate-item-content-more-movie {
position: absolute;
bottom: 0;
right: 18rpx;
width: 106rpx;
height: 26rpx;
background: #1c1c25;
text-align: right;
font-size: 26rpx;
font-weight: 400;
line-height: 26rpx;
}
.evaluate-item-content-more text {
color: #86c5e1;
}
.evaluate-item-album {
position: relative;
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
margin: 32rpx 0 48rpx 0;
border-bottom: 1px #e2e7ef solid;
}
.evaluate-item-album:last-child {
border: none;
}
.evaluate-item-album image {
width: 160rpx;
height: 160rpx;
margin: 0 10rpx 10rpx 0;
border-radius: 4rpx;
background: #999;
}
.evaluate-item-album image:nth-child(4n) {
margin-right: 0;
}
.evaluate-item-album-more {
position: absolute;
right: 0;
width: 160rpx;
height: 160rpx;
margin: 0 5rpx 10rpx 0;
border-radius: 4rpx;
background: rgba(0, 0, 0, 0.4);
}
.evaluate-item-album-more text {
height: 53rpx;
font-size: 38rpx;
font-weight: 400;
line-height: 52rpx;
color: #fff;
}
\ No newline at end of file
......@@ -2,36 +2,25 @@ let App = getApp()
Page({
data: {
appStatus: App.globalData.appStatus,
imageBase: App.globalData.appImageBase,
appResourcesBase: App.globalData.appResourcesBase,
appStatus: false,
showPopup: false,
winSide: true,
sideHeight: 1250,
shareImage: App.globalData.appResourcesBase + 'share/share-1.png',
childActivity: [],
bannerImage: App.globalData.appResourcesBase + 'campsite/campsite-header.png',
bottomImage: App.globalData.appResourcesBase + 'campsite/bottom.png',
detailImage: [],
detailImageUrl: [
App.globalData.appResourcesBase + 'campsite/campsite-1.png',
App.globalData.appResourcesBase + 'campsite/campsite-2.png',
App.globalData.appResourcesBase + 'campsite/campsite-3.png',
App.globalData.appResourcesBase + 'campsite/campsite-4.png',
App.globalData.appResourcesBase + 'campsite/campsite-5.png',
App.globalData.appResourcesBase + 'campsite/campsite-6.png',
],
detailIndex: 0,
campsiteDescribe: [],
},
onLoad: function (options) {
this.setSideHeight()
this.setData({ appStatus: App.globalData.appStatus })
console.log(App.globalData.appStatus)
},
onShow: function () {
this.setData({ appStatus: App.globalData.appStatus })
this.setShopInfo(3, 1)
this.queryDetail()
this.queryCampsiteDescribe()
this.queryActivity()
},
......@@ -60,19 +49,22 @@ Page({
}
}
},
// 获取后台信息
queryDetail: function () {
let that = this
App.wxRequest({
queryCampsiteDescribe: function () {
App.request({
url: 'v1/park/getList',
success: function(res) {
let funcData = res.list.filter(v => v.name === '儿童营地')
that.setData({
detailImageUrl: funcData[0].content
})
}).then((response) => {
let funcData = response.data
for (let i = 0, l = funcData.length; i < l; i++) {
if (funcData[i].name === '儿童营地') {
this.setData({ campsiteDescribe: funcData[i].content })
break
}
}
})
},
// 获取活动信息
queryActivity: function () {
let that = this
......@@ -93,6 +85,11 @@ Page({
}
})
},
onEvaluateMore: function () {
wx.navigateTo({ url: '/pages/campsite/evaluate/evaluate' })
},
onBackTop: function () {
wx.pageScrollTo({
scrollTop: 0
......
<m-toast></m-toast>
<m-nav titleText="营地" scrollHeight="{{navScroll}}" styleIndex="{{9}}" isOccupy="{{false}}"></m-nav>
<view class="container">
<view class="appointment-side col con-b align-c" hidden="{{winSide}}">
<button class="appointment-side-top" bindtap="onBackTop">
<image src="{{imageBase + 'top.png'}}"></image>
</button>
</view>
<!-- 头部背景图 -->
<image class="banner" src="{{bannerImage}}"></image>
<image class="title" src="{{resourcesBase + 'campsite/bgi.png'}}"></image>
<!-- 分享按钮 -->
<view class="share col con-c align-c" bindtap="onShare">
<image class="icon-share" src="/image/icon/share-3.png"></image>
</view>
<!-- 分享弹出图片 -->
<view class="container-share row con-c align-c" hidden="{{!showPopup}}">
<view class="col con-c">
<view class="share-content">
<image src="{{shareImage}}"></image>
<!-- 开放时间,总合评价,分享,位置 -->
<view class="other">
<view class="other_business_hours row ac">
<image class="other_business_hours_title" src="./image/business-hours-title.png"></image>
<image class="other_business_hours_time" src="./image/business-hours.png"></image>
</view>
<view class="row cb ac">
<view class="other_evaluate row ac">
<image class="other_evaluate_title" src="./image/evaluate-title.png"></image>
<block wx:for="{{5}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<image class="other_evaluate_start" src="{{imageBase + 'icon/star-1.png'}}"></image>
</block>
<image class="other_evaluate_more" src="./image/evaluate.png" bindtap="onEvaluateMore"></image>
</view>
<view class="share-operation row con-b align-c">
<button bindtap="onCancel">取消</button>
<button bindtap="onDownload">下载图片</button>
<view class="row ac">
<view class="share column cc ac" bindtap="onShare">
<image class="icon-share" src="/image/icon/share-3.png"></image>
</view>
<view class="location column cc ac" bindtap="onLocation">
<image class="icon-location" src="/image/icon/location-3.png"></image>
</view>
</view>
</view>
</view>
<!-- 位置按钮 -->
<view class="location col con-c align-c" bindtap="onLocation">
<image class="icon-location" src="/image/icon/location-3.png"></image>
</view>
<!-- 入园购票 -->
<view class="buy-coupon" bindtap="onBuyMembership" data-id="{{3}}">
<view class="buy-coupon-title row align-c">
<view class="buy-coupon-title row ac">
<image src="./image/ruyuangoupiao.png"></image>
<image src="{{imageBase + 'icon/arrow-r-1.png'}}"></image>
</view>
<view class="buy-coupon-type row con-b">
<view class="buy-coupon-type row cb">
<image src="./image/single.png"></image>
<image src="./image/month.png"></image>
<image src="./image/year.png"></image>
</view>
</view>
<block wx:if="{{appStatus}}">
<!-- 饮品预订 文创周边-->
<view class="buy-other row con-b">
<!-- 饮品预订 -->
<view class="buy-snacks row" bindtap="onBuySnacks" data-id="{{3}}">
<view class="buy-left col con-c">
<image src="./image/yinpinyuding.png"></image>
</view>
<view class="buy-right col con-c">
<image src="./image/icon-bg.png"></image>
<image class="snacks-img" src="./image/yinpin.png"></image>
</view>
</view>
<!-- 文创周边 -->
<view class="buy-art row" bindtap="onBuyArt" data-id="{{3}}">
<view class="buy-left col con-c">
<image src="./image/wenchuangzhoubian.png"></image>
</view>
<view class="buy-right col con-c">
<image src="./image/icon-bg.png"></image>
<image class="art-img" src="./image/shanzi.png"></image>
</view>
</view>
<!-- 餐品预定,文创周边 -->
<view class="buy-other row cb" wx:if="{{appStatus}}">
<image src="./image/shop-food.png" data-id="{{3}}" bindtap="onBuySnacks"></image>
<image src="./image/shop-art.png" data-id="{{3}}" bindtap="onBuyArt"></image>
</view>
<!-- 活动展示 -->
<view class="all_activity" bindtap="onActivityAll">
<image class="all_activity_title" src="{{resourcesBase + 'campsite/all-activities.png'}}"></image>
<!-- 单活动 -->
<view class="swiper" wx:if="{{childActivity.length === 1}}">
<image mode="scaleToFill" src="{{childActivity[0].childImg}}" bindtap="onActivityDetail" data-id="{{childActivity[0].id}}"></image>
</view>
</block>
<!-- 多活动 -->
<swiper class="swiper" indicator-dots indicator-color="#F6DADA" indicator-active-color="#E57C99" autoplay circular wx:if="{{childActivity.length > 1}}">
<block wx:for="{{childActivity}}" wx:key="id">
<swiper-item>
<image mode="scaleToFill" src="{{item.cover}}" bindtap="onActivityDetail" data-id="{{item.id}}"></image>
</swiper-item>
</block>
</swiper>
<!-- 全部活动 -->
<view class="activity" bindtap="onActivityAll">
<image src="{{appResourcesBase + 'campsite/title.png'}}"></image>
<view class="all_activity_nothing">
<image src="{{resourcesBase + 'campsite/all-activities-nothing.png'}}"></image>
</view>
</view>
<!-- 滚动图片 -->
<!-- 无活动 -->
<view class="activity-empty" wx:if="{{childActivity.length === 0}}">
<block>
<image src="{{appResourcesBase + 'campsite/empty.png'}}"></image>
<!-- 详情展示 -->
<view class="describe">
<block wx:for="{{campsiteDescribe}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<image mode="widthFix" src="{{item}}"></image>
</block>
</view>
<!-- 单活动 -->
<view class="swiper" wx:if="{{childActivity.length === 1}}">
<image mode="scaleToFill" src="{{childActivity[0].childImg}}" bindtap="onActivityDetail" data-id="{{childActivity[0].id}}"></image>
</view>
<!-- 多活动 -->
<swiper class="swiper" indicator-dots indicator-color="#F6DADA" indicator-active-color="#E57C99" autoplay circular wx:if="{{childActivity.length > 1}}">
<block wx:for="{{childActivity}}" wx:key="id">
<swiper-item>
<image mode="scaleToFill" src="{{item.cover}}" bindtap="onActivityDetail" data-id="{{item.id}}"></image>
</swiper-item>
</block>
</swiper>
</view>
<!-- 分享弹出图片 -->
<view class="container-share row cc ac" hidden="{{!showPopup}}">
<view class="column cc">
<view class="share-content">
<image src="{{shareImage}}"></image>
</view>
<view class="share-operation row cb ac">
<button bindtap="onCancel">取消</button>
<button bindtap="onDownload">下载图片</button>
</view>
</view>
</view>
<block wx:for="{{detailImageUrl}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<image mode="widthFix" src="{{item}}"></image>
</block>
<image mode="widthFix" src="{{bottomImage}}"></image>
<!-- 侧边返回顶部 -->
<view class="appointment-side column cb ac" hidden="{{winSide}}">
<button class="appointment-side-top" bindtap="onBackTop">
<image src="{{imageBase + 'top.png'}}"></image>
</button>
</view>
\ No newline at end of file
.title {
position: absolute;
top: 0;
left: 0;
width: 750rpx;
height: 1460rpx;
}
/* 开放时间,总合评价,分享,位置 */
.other {
z-index: 4;
width: 750rpx;
margin: 728rpx 0 0 0;
padding: 0 40rpx;
}
.other_business_hours {
margin: 0 0 16rpx 0;
}
.other_business_hours_title {
width: 120rpx;
height: 34rpx;
margin: 0 24rpx 0 0;
}
.other_business_hours_time {
width: 188rpx;
height: 30rpx;
}
.other_evaluate_title {
width: 122rpx;
height: 34rpx;
margin: 0 24rpx 0 0;
}
.other_evaluate_start {
display: inline-block;
width: 32rpx;
height: 32rpx;
}
.other_evaluate_more {
width: 76rpx;
height: 34rpx;
margin: 0 0 0 8rpx;
}
.appointment {
position: absolute;
top: 1250rpx;
......@@ -52,26 +101,16 @@
width: 750rpx;
}
.banner {
width: 750rpx;
height: 1676rpx;
}
.share {
position: absolute;
top: 710rpx;
right: 136rpx;
width: 64rpx;
height: 64rpx;
margin: 0 32rpx 0 0;
background: #F28FA2;
box-shadow: 8rpx 8rpx 20rpx 0rpx rgba(242,143,162,0.3);
border-radius: 50%;
}
.location {
position: absolute;
top: 710rpx;
right: 40rpx;
width: 64rpx;
height: 64rpx;
background: #F28FA2;
......@@ -85,10 +124,10 @@
}
.buy-coupon {
position: absolute;
top: 804rpx;
z-index: 2;
width: 670rpx;
height: 312rpx;
margin: 32rpx 0 0 0;
padding: 40rpx 32rpx;
background: rgba(255, 255, 255, 0.85);
box-shadow: 8rpx 10rpx 52rpx 0rpx rgba(238,211,153,0.3);
......@@ -115,12 +154,12 @@
}
.buy-other {
position: absolute;
top: 1140rpx;
z-index: 4;
width: 670rpx;
margin: 24rpx 0 96rpx 0;
}
.buy-snacks, .buy-art {
.buy-other > image {
width: 322rpx;
height: 154rpx;
background: rgba(255, 255, 255, 0.65);
......@@ -128,50 +167,14 @@
border-radius: 4px;
}
.buy-left, .buy-right {
position: relative;
margin-left: 32rpx;
}
.buy-left image{
width: 120rpx;
height: 34rpx;
}
.buy-right image:first-child {
width: 132rpx;
height: 136rpx;
}
.snacks-img {
position: absolute;
top: 38rpx;
left: 42rpx;
width: 50rpx;
height: 76rpx;
}
.art-img {
position: absolute;
top: 42rpx;
left: 12rpx;
width: 86rpx;
height: 70rpx;
}
.activity {
position: absolute;
top: 1602rpx;
}
.activity image{
width: 160rpx;
height: 34rpx;
}
.activity-empty {
.all_activity_title {
display: block;
width: 750rpx;
height: 544rpx;
height: 250rpx;
}
.activity-empty image {
.all_activity_nothing > image {
display: block;
width: 750rpx;
height: 544rpx;
}
......@@ -192,6 +195,7 @@
left: 0;
right: 0;
}
.wx-swiper-dots.wx-swiper-dots-horizontal{
margin-bottom: 64rpx;
}
......@@ -242,15 +246,7 @@
color: #FFFFFF;
}
.toast {
width: 262rpx;
height: 262rpx;
border-radius: 4px;
box-shadow: 0px 0px 68px 0px rgba(0,0,0,0.16);
background: #1F252E;
}
.toast-icon {
width: 88rpx !important;
height: 88rpx !important;
.describe > image {
display: block;
width: 750rpx;
}
\ No newline at end of file
......@@ -42,7 +42,7 @@
<!-- 原野mojito -->
<swiper-item>
<view class="shop-banner row con-c">
<image src="{{resourcesBase + 'commodity/home/shop-3.png'}}"></image>
<image src="{{resourcesBase + 'commodity/home/shop-2.png'}}"></image>
<button class="row con-c align-c" data-id="{{4}}" bindtap="onBuyFood"></button>
</view>
<view class="shop-menu">
......
......@@ -449,10 +449,8 @@ Page({
* @param
* @returns
*/
onCommodityClose: function () {
this.setData({
winCommodityDetail: false
})
onGoodsDetailClose: function () {
this.setData({ winCommodityDetail: false })
},
/**
......
......@@ -40,7 +40,7 @@
<text>{{itemCommodity.priceDiscountText}}</text>
<text class="item-price-discount">活动价</text>
</view>
<view class="item-info-old-price row align-c">
<view class="item-info-old-price row ac">
<text>¥</text>
<text>{{itemCommodity.priceText}}</text>
</view>
......@@ -48,12 +48,12 @@
<!-- 业主价样式 -->
<view wx:if="{{itemCommodity.priceType === 2}}">
<view class="item-price row align-c">
<view class="item-price row ac">
<text>¥</text>
<text>{{itemCommodity.priceSpecialText}}</text>
<text class="item-price-special">业主价</text>
</view>
<view class="item-info-old-price row align-c">
<view class="item-info-old-price row ac">
<text>¥</text>
<text>{{itemCommodity.priceText}}</text>
</view>
......@@ -61,14 +61,14 @@
<!-- 普通价样式 -->
<view wx:if="{{itemCommodity.priceType === 3}}">
<view class="item-price row align-c">
<view class="item-price row ac">
<text>¥</text>
<text>{{itemCommodity.priceText}}</text>
<text></text>
</view>
</view>
<view class="item-operation-add row con-c align-c">
<view class="item-operation-add row cc ac">
<image mode="aspectFill" src="{{imageBase + 'icon/cart-3.png'}}" data-item="{{itemCommodity}}" catchtap="onCommodityAdd"></image>
</view>
</view>
......@@ -78,17 +78,17 @@
</block>
<block wx:if="{{commodityList.length === 0}}">
<view class="nothing-tip row con-c align-c">
<view class="nothing-tip row cc ac">
<image src="./image/tip.png"></image>
</view>
</block>
<!-- 购物车按钮 -->
<view id="cart" class="cart row con-c align-c" bindtap="onShoppingCart">
<view id="cart" class="cart row cc ac" bindtap="onShoppingCart">
<!-- 添加动画圆点 -->
<!-- <view class="cart-animation" wx:if="{{winAnimationPoint}}" animation="{{animationData}}"></view> -->
<view class="cart-num row con-c align-c">{{shoppingCartTotal}}</view>
<view class="cart-num row cc ac">{{shoppingCartTotal}}</view>
<view class="cart-img-wrap">
<image src="../../../image/cart.png" mode="widthFix"></image>
</view>
......@@ -97,9 +97,9 @@
</view>
<!-- 商品详情弹窗 -->
<l-popup l-class="popup-mask" show="{{winCommodityDetail}}" content-align="center" locked="{{true}}">
<view class="popup-wrap">
<view id="banner" class="banner">
<view class="goods_detail_container column cc ac" hidden="{{!winCommodityDetail}}">
<view class="goods_detail">
<view class="banner">
<swiper autoplay circular indicator-dots="{{commodityDetail.banner.length > 1 ? true : false}}" indicator-active-color="#fff" indicator-color="rgba(255, 255, 255, .4)" class="banner-swiper" interval="5000" duration="500">
<block wx:for="{{commodityDetail.banner}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<swiper-item class="banner-swiper-item">
......@@ -126,8 +126,8 @@
<view class="popup-footer-wrapper">
<!-- 活动价样式 -->
<view class="popup-price-row row align-c" wx:if="{{commodityDetail.priceType === 1}}">
<view class="detail-price-discount row con-c align-c">
<view class="popup-price-row row ac" wx:if="{{commodityDetail.priceType === 1}}">
<view class="detail-price-discount row cc ac">
<text>活动价</text>
</view>
<view class="detail-price">
......@@ -141,8 +141,8 @@
</view>
<!-- 业主价样式 -->
<view class="popup-price-row row align-c" wx:if="{{commodityDetail.priceType === 2}}">
<view class="detail-price-special row con-c align-c">
<view class="popup-price-row row ac" wx:if="{{commodityDetail.priceType === 2}}">
<view class="detail-price-special row cc ac">
<text>业主价</text>
</view>
<view class="detail-price">
......@@ -156,8 +156,8 @@
</view>
<!-- 普通价样式 -->
<view class="popup-price-row row align-c" wx:if="{{commodityDetail.priceType === 3}}">
<view class="popup-price-special row con-c align-c">
<view class="popup-price-row row ac" wx:if="{{commodityDetail.priceType === 3}}">
<view class="popup-price-special row cc ac">
<text></text>
</view>
<view class="detail-price">
......@@ -166,12 +166,10 @@
</view>
</view>
<view class="popup-footer-btn row con-c align-c" bindtap="onCommodityAdd">加入购物车</view>
<view class="popup-footer-btn row cc ac" bindtap="onCommodityAdd">加入购物车</view>
</view>
</view>
<view class="popup-close-btn row con-c align-c" bindtap="onCommodityClose">
<view class="popup-close">
<image mode="widthFix" src="../../../image/icon_close.png"></image>
</view>
<view class="goods_detail_close row cc ac" bindtap="onGoodsDetailClose">
<image mode="widthFix" src="{{imageBase + 'icon/close-1.png'}}"></image>
</view>
</l-popup>
\ No newline at end of file
</view>
\ No newline at end of file
......@@ -214,12 +214,17 @@ page {
margin-bottom: 32rpx;
}
.popup-mask {
z-index: 11111 !important;
.goods_detail_container {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.65);
}
.popup-wrap {
.goods_detail {
width: 606rpx;
margin-top: 100rpx;
background-color: #fff;
......@@ -326,16 +331,15 @@ page {
border-radius: 4rpx;
}
.popup-close-btn {
.goods_detail_close {
width: 80rpx;
height: 80rpx;
margin: 48rpx auto 0;
background: rgba(254, 252, 249, 0.5);
margin: 48rpx 0 0 0;
border-radius: 50%;
background: rgba(254, 252, 249, 0.5);
}
.popup-close,
.popup-close > image {
.goods_detail_close > image {
width: 40rpx;
height: 40rpx;
}
......
......@@ -18,57 +18,8 @@ Page({
allChecked: false,
isFoodCart: true,
isEnough: false,
cart: [{
goods_id: 0,
goods_name: '雪碧迷你瓶装300ml',
goods_now_price: 49.00,
goods_old_price: 42.00,
goods_now_text: '业主价',
goods_num: 1,
store_num: 1,
checked: true,
img: './image/item01.png'
},
{
goods_id: 1,
goods_name: '可口可乐300ml',
goods_now_price: 52.00,
goods_old_price: 49.00,
goods_now_text: '活动价',
goods_num: 1,
store_num: 2,
checked: true,
img: './image/item01.png'
},
{
goods_id: 2,
goods_name: '葡萄汁饮料238ml',
goods_now_price: 30.00,
goods_num: 2,
checked: true,
img: './image/item01.png'
},
{
goods_id: 3,
goods_name: '牛奶苏打碳酸250ml',
goods_now_price: 78,
goods_num: 12,
checked: false,
img: './image/item01.png'
}
],
notEnough: [{
id: 0,
img: './image/item01.png',
title: '葱爆牛肉佐秘制麻椒汁'
},
{
id: 1,
img: './image/item01.png',
title: '抹茶酸奶芝士'
}
]
cart: [],
notEnough: []
},
onLoad: function () {
......@@ -315,11 +266,6 @@ Page({
return
}
// let isEnough = true
// this.setData({
// isEnough
// })
// 在此之前需要校验用户是否登录,以及商品库存是否充足
wx.navigateTo({
url: '/pages/pay/order-input/order-input?type=' + this.data.shopInfo.shopType
......@@ -331,12 +277,7 @@ Page({
let cart = this.data.cart
cart.forEach(v => v.checked = allChecked)
},
handleBackCart() {
let isEnough = false
this.setData({
isEnough
})
},
onToBuy: function () {
wx.navigateBack({
delta: 1,
......
......@@ -90,7 +90,6 @@
<text>全选</text>
</view>
<view class="pay-amount">
<view class="pay-amount-total">
<text>¥</text>
......@@ -101,26 +100,6 @@
</view>
</view>
<view class="order-pay-wrap row con-c align-c" bindtap="onPaySubmit">结算</view>
<!-- 库存提示弹窗 -->
<l-popup show="{{isEnough}}" content-align="center" locked="{{true}}">
<view class="popup-wrap">
<view class="popup-title">抱歉,您本单商品有2件库存不足</view>
<view class="popup-list">
<view class="popup-item row align-c" wx:for="{{notEnough}}" wx:key="id">
<view class="popup-item-img">
<image mode="widthFix" src="{{item.img}}"></image>
</view>
<view class="popup-item-title">{{item.title}}</view>
</view>
</view>
<view class="popup-back-cart row con-c align-c" bindtap="handleBackCart">返回购物车</view>
</view>
<view class="popup-close-btn row con-c align-c" bindtap="handleClosePopup">
<view class="popup-close">
<image mode="widthFix" src="../../../image/icon_close.png"></image>
</view>
</view>
</l-popup>
</view>
</view>
......
......@@ -250,51 +250,6 @@
color: #fff;
}
.popup-wrap {
width: 606rpx;
height: 690rpx;
padding: 0 40rpx;
background-color: #fff;
border-radius: 4rpx;
}
.popup-title {
padding: 56rpx 0;
font-size: 34rpx;
font-weight: 600;
color: #15191f;
text-align: center;
border-bottom: 1px solid #e2e7ef;
}
.popup-list {
padding: 26rpx 0;
}
.popup-item {
padding: 32rpx 0;
}
.popup-item-img {
width: 96rpx;
height: 96rpx;
}
.popup-item-title {
margin-left: 32rpx;
font-size: 30rpx;
color: #15191f;
}
.popup-back-cart {
width: 526rpx;
height: 80rpx;
margin-top: 32rpx;
font-size: 30rpx;
color: #fff;
background-color: #86c5e1;
}
.empty {
height: 100vh;
}
......
......@@ -186,7 +186,7 @@
<view class="dialog_coupon_code_info col cc ac">
<!-- 无效券码蒙尘样式 -->
<view class="dialog_coupon_code_mask" wx:if="{{item.state === 2}}"></view>
<image mode="aspectFill" class="dialog_coupon_code_seal" wx:if="{{item.state === 2}}" src="{{resourcesBase + 'mine/server/codeUsed.png'}}"></image>
<image mode="aspectFill" class="dialog_coupon_code_seal" wx:if="{{item.state === 2}}" src="./image/seal-used.png"></image>
<text class="font_normal_30 color_regular">{{item.name}}</text>
<image class="dialog_coupon_code_content" src="{{'data:image/png;base64,' + item.codeBase64}}"></image>
......
......@@ -621,10 +621,6 @@
width: 60%;
}
.l-popup-bg {
background: rgba(0, 0, 0, 0.4);
}
.tips-wrapper {
margin: 40rpx 40rpx 0;
}
......
......@@ -49,7 +49,7 @@ Page({
option: options,
active: type
})
type === 0 ? this.getActivity() : this.getList(type)
type === 0 ? this.queryActivityList() : this.getList(type)
},
onShow: function () {
......@@ -64,13 +64,61 @@ Page({
let type = this.data.option.tab ? 1 * this.data.option.tab : 0
if (type === 0) {
this.getActivity()
this.queryActivityList()
} else {
this.getList(type)
}
}
},
queryActivityList: function () {
wx.setStorageSync('option-appointment', '')
App.ui.showToast({
'iconType': 'loading',
'title': '加载中',
'duration': 30000,
})
App.request({
url: 'v1/activity/getMyActivityList',
params: {
'type': '',
'activeState': '',
'pageSize': this.data.pageSize,
'pageNo': this.data.pageNo,
}
}).then((response) => {
App.ui.hideToast()
let funcData = response.data.list
let funcList = []
for (let i = 0, l = funcData.length; i < l; i++) {
let funcItem = {
'orderId': funcData[i].orderId,
'enrollId': funcData[i].enrollId,
'name': funcData[i].name,
'status': Number(funcData[i].status), // 订单状态(-1已取消, 0未付款, 2待使用, 3已使用, 4已过期 6已关闭)
'activeState': Number(funcData[i].activeState), // 活动状态(0 未开始 1进行中 2 已结束)
'cover': funcData[i].cover,
'date': funcData[i].activeTime,
'address': funcData[i].address,
'num': funcData[i].number,
'amount': funcData[i].totalMoney ? funcData[i].totalMoney.toFixed(2) : 0,
'wxRequest': funcData[i].wxRequest,
'belongType': Number(funcData[i].type)
}
if (funcItem.status === 3 && funcItem.belongType === 2) funcItem.status = 6
funcList.push(funcItem)
}
if (this.data.pageNo !== 1) funcList = this.data.activityList.concat(funcList)
this.setData({
activityList: funcList,
isLoading: false
})
}).catch(() => {})
},
// 去使用
onOrderUse: function (event) {
this.onOrderDetail(event)
......@@ -86,14 +134,13 @@ Page({
let funcItem = funcEvent.currentTarget.dataset.item
console.log(funcItem)
wx.navigateTo({
url: '/pages/pay/order-comment/order-comment?id=' + funcItem.orderId,
url: '/pages/pay/order-comment/order-comment?id=' + funcItem.orderId + '&pageFrom=activityList',
})
},
// 跳转详情页面
onOrderDetail: function (event) {
let funcItem = event.currentTarget.dataset.item
console.log('onOrderDetail', funcItem)
wx.navigateTo({
url: '/pages/mine/appointment-detail/appointment-detail?id=' + funcItem.orderId + '&activityId=' + funcItem.enrollId + '&date=' + funcItem.date + '&belongType=' + funcItem.belongType,
})
......@@ -105,7 +152,7 @@ Page({
this.setData({
pageNo: 1,
})
this.getActivity()
this.queryActivityList()
} else {
this.getList(index)
}
......@@ -151,23 +198,19 @@ Page({
url: '/pages/mine/appointment-ticket/appointment-ticket?detail=' + JSON.stringify(e.currentTarget.dataset.item),
})
},
//预约
goAppoint(e) {
let type = e.currentTarget.dataset.index;
let url = ''
if (type == 0) {
//活动列表
url = '/pages/play/activity/activity'
} else if (type == 1) {
// 夜间入园预约
url = '/pages/home/night-appointment/night-appointment?frompage=appointment&tab=1'
} else if (type == 2) {
// 房产预约
url = "/pages/commodity/room-appointment/room-appointment?frompage=appointment&tab=2"
}
wx.navigateTo({
url: url
})
onToActivityDetail: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
console.log(funcItem)
wx.navigateTo({ url: '/pages/play/activity/activity' })
},
onToVisitParkAppointment: function () {
wx.navigateTo({ url: '/pages/home/night-appointment/night-appointment?frompage=appointment&tab=1' })
},
onToVisitRoomAppointment: function () {
wx.navigateTo({ url: '/pages/commodity/room-appointment/room-appointment?frompage=appointment&tab=2' })
},
// 删除,取消预约
......@@ -213,67 +256,15 @@ Page({
'isDoing': false,
'pageNo': 1,
})
this.getActivity()
this.queryActivityList()
}, 2000);
}
}
})
},
fail: () => {},
})
},
// 我的活动
getActivity: function () {
wx.setStorageSync('option-appointment', '')
App.ui.showToast({
'iconType': 'loading',
'title': '加载中',
'duration': 30000,
})
App.request({
url: 'v1/activity/getMyActivityList',
params: {
'type': '',
'activeState': '',
'pageSize': this.data.pageSize,
'pageNo': this.data.pageNo,
}
}).then((response) => {
App.ui.hideToast()
let funcData = response.data.list
let funcList = []
for (let i = 0, l = funcData.length; i < l; i++) {
let funcItem = {
'orderId': funcData[i].orderId,
'enrollId': funcData[i].enrollId,
'name': funcData[i].name,
'status': Number(funcData[i].status), // 订单状态(-1已取消, 0未付款, 2待使用, 3已使用, 4已过期 6已关闭)
'activeState': Number(funcData[i].activeState), // 活动状态(0 未开始 1进行中 2 已结束)
'cover': funcData[i].cover,
'date': funcData[i].activeTime,
'address': funcData[i].address,
'num': funcData[i].number,
'amount': funcData[i].totalMoney ? funcData[i].totalMoney.toFixed(2) : 0,
'wxRequest': funcData[i].wxRequest,
'belongType': Number(funcData[i].type)
}
if (funcItem.status === 3 && funcItem.belongType === 2) funcItem.status = 6
funcList.push(funcItem)
}
if (this.data.pageNo !== 1) funcList = this.data.activityList.concat(funcList)
this.setData({
activityList: funcList,
isLoading: false
})
console.log(this.data.activityList)
}).catch(() => {
})
},
// 预约列表/我的预约
getList: function (index) {
wx.setStorageSync('option-appointment', '')
......@@ -348,7 +339,7 @@ Page({
pageNo: this.data.pageNo + 1
})
if (this.data.active == 0) {
this.getActivity()
this.queryActivityList()
}
},
......
......@@ -206,7 +206,7 @@
</view>
<view class="appointment-activity-btn row">
<view class="cancel-btn cancel" data-item="{{item}}" catchtap="doCancel" data-type="1">删除报名</view>
<view data-index="0" catchtap="goAppoint" class="confirm-btn confirm-once">再次报名</view>
<view class="confirm-btn confirm-once" data-item="{{item}}" catchtap="onToActivityDetail">再次报名</view>
</view>
</view>
</view>
......@@ -228,16 +228,16 @@
<view class="noActive" wx:if="{{data.length === 0 && active === 1&&!isLoading}}">
<view class="noActive-title">暂无夜间入园预约</view>
<view class="noActive-rule">20:00后入园需要提前预约,每日限流200人</view>
<view class="noActive-botton" data-index="1" bindtap="goAppoint">去预约</view>
<view class="noActive-botton" bindtap="onToVisitParkAppointment">去预约</view>
</view>
<view class="noActive" wx:if="{{data.length === 0 && active === 2&&!isLoading}}">
<view class="noActive-title">暂无看房预约</view>
<view class="noActive-botton" data-index="2" bindtap="goAppoint">去预约</view>
<view class="noActive-botton" bindtap="onToVisitRoomAppointment">去预约</view>
</view>
<!-- 主题活动数据为空 -->
<view class="noActive" wx:if="{{activityList.length === 0 && active === 0&&!isLoading}}">
<view class="noActive-title">暂无活动预约</view>
<view class="noActive-botton" data-index="0" bindtap="goAppoint">去预约</view>
<view class="noActive-botton" bindtap="onToActivityDetail">去预约</view>
</view>
</view>
......
......@@ -96,7 +96,7 @@
</view>
<view class="row ac">
<button wx:if="{{item.status === 0}}" class="delete row con-c ac" data-index="{{index}}" data-item="{{item}}" catchtap="onOrderCancel" disabled="{{isDoing}}">取消订单</button>
<button disabled="{{isDoing}}" wx:if="{{item.status === -1 || item.status === 4}}" class="delete row con-c ac" data-item="{{item}}" catchtap="onOrderRemove">删除订单</button>
<button disabled="{{isDoing}}" wx:if="{{item.status === -1 || item.status === 4 || item.status === 6}}" class="delete row con-c ac" data-item="{{item}}" catchtap="onOrderRemove">删除订单</button>
<button disabled="{{isDoing}}" wx:if="{{item.status === 0}}" class="again row con-c ac" data-item="{{item}}" catchtap="onOrderPay">去支付</button>
<button disabled="{{isDoing}}" wx:if="{{item.status === 2}}" class="again row con-c ac" data-item="{{item}}" catchtap="onOrderUse">去使用</button>
<button disabled="{{isDoing}}" wx:if="{{item.status === 3}}" class="again row con-c ac" data-item="{{item}}" catchtap="onOrderEvaluate">去评价</button>
......
......@@ -216,10 +216,11 @@
border-bottom: 1px #e2e7ef solid;
}
.commodity-item>image {
.commodity-item > image {
width: 140rpx;
height: 136rpx;
margin-right: 24rpx;
background: #999999;
}
.commodity-item-info {
......@@ -411,21 +412,20 @@
}
/* 印章图 */
.seal-shot {
width: 166rpx;
height: 166rpx;
position: absolute;
right: -30rpx;
bottom: -30rpx;
width: 166rpx;
height: 164rpx;
}
.seal-long {
width: 166rpx;
height: 200rpx;
position: absolute;
right: 0;
bottom: -30rpx;
width: 166rpx;
height: 164rpx;
}
.p-relative {
......@@ -661,10 +661,6 @@
width: 60%;
}
.l-popup-bg {
background: rgba(0, 0, 0, 0.4);
}
.tips-wrapper {
margin: 40rpx 40rpx 0;
}
......@@ -851,11 +847,6 @@
background: #86c5e1;
}
image {
width: 100%;
height: 100%;
}
.logo-box {
width: 100rpx;
height: 80rpx;
......@@ -888,75 +879,4 @@ image {
width: 28rpx;
height: 28rpx;
margin-right: 14rpx;
}
/* 券码弹窗 */
.dialog_coupon_code {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .65);
}
.dialog_coupon_code_swiper {
width: 750rpx;
height: 730rpx;
}
.dialog_coupon_code_item {
left: 88rpx;
width: 574rpx !important;
height: 666rpx;
}
.dialog_coupon_code_info {
position: relative;
width: 526rpx;
height: 666rpx;
margin: 56rpx 0 48rpx 0;
border-radius: 2px;
background: #FFFFFF;
}
.dialog_coupon_code_mask {
position: absolute;
top: 154rpx;
left: 116rpx;
width: 296rpx;
height: 296rpx;
background: rgba(255, 255, 255, .8);
}
.dialog_coupon_code_seal {
position: absolute;
top: 252rpx;
right: -68rpx;
width: 254rpx;
height: 254rpx;
}
.dialog_coupon_code_content {
width: 296rpx;
height: 296rpx;
margin: 56rpx 0 0 0;
}
.dialog_coupon_code_operation {
width: 446rpx;
height: 96rpx;
margin: 56rpx 0 0 0;
padding: 0 24rpx;
border-radius: 2px;
background: #F2F3F5;
}
.dialog_coupon_code_close {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
margin: 32rpx 0 0 0;
background: rgba(254, 252, 249, 0.5);
}
\ No newline at end of file
......@@ -17,6 +17,7 @@ Page({
},
onLoad: function (options) {
console.log(options)
this.setData({
id: options.id
})
......
......@@ -601,7 +601,6 @@
}
/* 评论 */
.evaluate {
padding-bottom: 160rpx;
}
......
......@@ -4,7 +4,7 @@
"ignore": []
},
"setting": {
"urlCheck": false,
"urlCheck": true,
"es6": true,
"enhance": true,
"postcss": true,
......@@ -28,12 +28,12 @@
"disablePlugins": [],
"outputPath": ""
},
"enableEngineNative": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"enableEngineNative": false,
"minifyWXSS": true
},
"compileType": "miniprogram",
......
......@@ -2,9 +2,8 @@ let funcPageExtend = function (App) {
let funcPage = Page
Page = function (funcOption) {
// 增加全局资源引用路径
// 页面全局变量初始化。
funcOption.data = Object.assign(funcOption.data, {
'appStatus': App.globalData.appStatus,
'imageBase': App.globalData.appImageBase,
'resourcesBase': App.globalData.appResourcesBase,
'isViewDataReady': false, // 视图显示控制,当页面数据请求到位时设置为 true ,以显示视图。避免请求过程中页面显示不完整问题。
......
......@@ -58,14 +58,26 @@ let Output = {
break
case 200:
return {
success: true,
response: {
code: funcResponse.data.code,
data: funcResponse.data.data,
message: funcResponse.data.msg
if (funcResponse.data.data) {
return {
success: true,
response: {
code: funcResponse.data.code,
data: funcResponse.data.data,
message: funcResponse.data.msg
}
}
}
if (funcResponse.data.list) {
return {
success: true,
response: {
code: funcResponse.data.code,
data: funcResponse.data.list,
message: funcResponse.data.msg
}
}
}
break
case 402:
......
const output = {
// 二期测试环境
baseUrl: 'https://sm-web2.meiqicloud.com/api/',
// baseUrl: 'https://sm-web2.meiqicloud.com/api/',
// 三期测试环境
// baseUrl: 'https://sm-web.meiqicloud.com/api/',
baseUrl: 'https://sm-web.meiqicloud.com/api/',
// 正式环境
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment