@@ -0,0 +1,92 @@ | |||
Component({ | |||
properties: { | |||
mallList: { | |||
value: [], | |||
type: Array | |||
} | |||
}, | |||
data: { | |||
list: [], // 广场、商户列表 | |||
mallNum: 0, // 适用商户数量 | |||
}, | |||
methods: { | |||
// 跳转详情页 | |||
gotoDetail(e) { | |||
console.log(e); | |||
wx.navigateTo({ | |||
url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}&mallTenantId=${e.currentTarget.dataset.tenantid}` | |||
}) | |||
}, | |||
// 跳转资质页面 | |||
// goCertification(e) { | |||
// wx.navigateTo({ | |||
// url: `/pages/shopCertification/index?id=${e.currentTarget.dataset.id}` | |||
// }) | |||
// }, | |||
//跳转地图页面 | |||
goMap(e) { | |||
let { | |||
latitude, | |||
longitude | |||
} = e.currentTarget.dataset.item | |||
console.log(latitude, longitude); | |||
wx.openLocation({ | |||
latitude: Number(latitude), | |||
longitude: Number(longitude), | |||
scale: 18, | |||
success() { | |||
console.log("打开地图成功"); | |||
}, | |||
fail(err) { | |||
console.log("打开地图失败:", err.errMsg); | |||
}, | |||
}); | |||
}, | |||
goFitShop() { | |||
const arr = [] | |||
this.data.list.forEach(item => { | |||
item.merchantVoList.forEach(el => { | |||
arr.push(el) | |||
}) | |||
}) | |||
wx.navigateTo({ | |||
url: `/pages/fitShop/fitShop?list=${JSON.stringify(arr)}`, | |||
success: (res) => { }, | |||
fail: (res) => { }, | |||
}); | |||
}, | |||
expandList(e) { | |||
const index = e.currentTarget.dataset.index | |||
const arr = this.data.list | |||
arr[index].expand = !arr[index].expand | |||
this.setData({ | |||
list: arr | |||
}) | |||
} | |||
}, | |||
ready() { | |||
this.setData({ | |||
list: JSON.parse(JSON.stringify(this.properties.mallList)) | |||
}) | |||
console.log(this.data.mallList, 'mallList'); | |||
let mallNum = 0 | |||
this.data.list.forEach(item => { | |||
mallNum += item.merchantVoList.length | |||
}) | |||
this.setData({ | |||
mallNum: mallNum | |||
}) | |||
}, | |||
created() { | |||
} | |||
}) |
@@ -0,0 +1,3 @@ | |||
{ | |||
"component": true | |||
} |
@@ -0,0 +1,58 @@ | |||
<view class="components"> | |||
<view class="header"> | |||
<view class='applyshop'>适用门店</view> | |||
<!-- <image src="../../assets/itemImg/chevron.png" mode="widthFix" class="rightArrow"> | |||
</image> --> | |||
<view class="goShop">{{'共'+mallNum+'家门店适用'}}</view> | |||
</view> | |||
<view wx:for="{{list}}" wx:for-index="index" wx:key="index" class="body"> | |||
<view class="mall"> | |||
<image class="img" src="../../assets/images/merchantImgCover.png"></image> | |||
<view class="mallItem"> | |||
<view class="title">{{item.mallName}}</view> | |||
</view> | |||
</view> | |||
<!-- 当商户数量不大于三个时 --> | |||
<view class="goExpand" catchtap="expandList" data-index="{{index}}"> | |||
<view> | |||
<view>{{item.merchantVoList.length+'家门店适用'}}</view> | |||
<image wx:if="{{!item.expand}}" src="../../assets/images/chevron.png" mode="widthFix" class="rightArrowDown"> | |||
</image> | |||
<image wx:else src="../../assets/images/chevron.png" mode="widthFix" class="rightArrowUp"></image> | |||
</view> | |||
</view> | |||
<!-- 当item.expand为true且商户数量不大于三个时 --> | |||
<view class="shop" wx:if="{{item.expand}}"> | |||
<view class='posi' wx:for="{{item.merchantVoList}}" wx:key="index"> | |||
<view class='posi_logo'> | |||
<view bindtap='gotoDetail' data-id='{{item.id}}' data-tenantId='{{item.tenantId}}'> | |||
<image class="img" src='{{item.merchantImgUrl}}'></image> | |||
</view> | |||
<view bindtap='gotoDetail' data-id='{{item.id}}' data-tenantId='{{item.tenantId}}'> | |||
<view class='name'>{{item.merchantName}}</view> | |||
<view class='shopVoList'> | |||
<view wx:for="{{item.shopVoList}}" wx:key="index" wx:for-item="itemName"> | |||
<text class="name">{{itemName.buildingName}}{{itemName.floorName}}--{{itemName.shopNumber}}</text> | |||
<text class='douhao' wx:if="{{item.shopVoList.length>1}}">,</text> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="telBox" wx:if="{{item.linkLinePhone}}"> | |||
<image bindtap='phone' data-merchantLinkPhone='{{item.linkLinePhone}}' class="telImg" src="{{teljpgUrl}}" mode="widthFix" /> | |||
<view class="telText">电话</view> | |||
</view> | |||
<!-- <view class="certificationBox" wx:if="{{item.latitude&&item.longitude}}" bindtap="goCertification" data-id="{{item.id}}"> | |||
<image class="certificationImg" src="../../assets/images/certification.png" mode="widthFix" /> | |||
<view class="telText">资质</view> | |||
</view> --> | |||
</view> | |||
<view class="siteBox" wx:if="{{item.latitude&&item.longitude}}" bindtap="goMap" data-item="{{item}}"> | |||
<view class="siteText">{{item.addr}}</view> | |||
<image class="siteImg" src="../../assets/images/siteImg.png" mode="widthFix" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> |
@@ -0,0 +1,205 @@ | |||
.components { | |||
display: block; | |||
height: auto; | |||
margin-top: 15rpx; | |||
background-color: #fff; | |||
} | |||
.components .header { | |||
height: 70rpx; | |||
} | |||
.components .header .applyshop { | |||
float: left; | |||
font-size: 30rpx; | |||
line-height: 70rpx; | |||
text-indent: 1em; | |||
color: #333; | |||
background: #fff; | |||
font-weight: bold; | |||
} | |||
.components .header .goShop { | |||
float: right; | |||
font-size: 22rpx; | |||
height: 70rpx; | |||
line-height: 70rpx; | |||
text-indent: 1em; | |||
color: #a6a6a6; | |||
background: #fff; | |||
font-weight: bold; | |||
margin-right: 25rpx; | |||
} | |||
.components .header .rightArrow { | |||
float: right; | |||
display: block; | |||
width: 14rpx; | |||
margin: 24rpx 30rpx 0 10rpx; | |||
} | |||
.components .body { | |||
border-bottom: 10rpx solid #f4f5f9; | |||
} | |||
.components .body .mall { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
margin-top: 15rpx; | |||
margin-bottom: 15rpx; | |||
padding-left: 25rpx; | |||
padding-right: 65rpx; | |||
} | |||
.components .body .mall .img { | |||
width: 120rpx; | |||
height: 120rpx; | |||
} | |||
.components .body .mall .mallItem { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.components .body .mall .mallItem .title { | |||
font-size: 35rpx; | |||
} | |||
.components .body .goExpand { | |||
text-align: center; | |||
font-size: 25rpx; | |||
color: #a6a6a6; | |||
} | |||
.components .body .goExpand .rightArrowDown { | |||
position: relative; | |||
left: 50%; | |||
transform: translate(-50%); | |||
display: block; | |||
width: 14rpx; | |||
transform: rotate(90deg); | |||
} | |||
.components .body .goExpand .rightArrowUp { | |||
position: relative; | |||
left: 50%; | |||
transform: translate(-50%); | |||
display: block; | |||
width: 14rpx; | |||
transform: rotate(-90deg); | |||
} | |||
.components .body .shop .posi { | |||
/* position: relative; */ | |||
width: 100%; | |||
background: #FFF; | |||
margin-bottom: 20rpx; | |||
} | |||
.components .body .shop .posi .posi_logo { | |||
position: relative; | |||
width: 92%; | |||
display: flex; | |||
padding: 20rpx 0; | |||
background: #fff; | |||
margin: 0 auto; | |||
} | |||
.components .body .shop .posi .posi_logo .img { | |||
display: block; | |||
width: 100rpx; | |||
height: 100rpx; | |||
border-radius: 16rpx; | |||
margin-right: 16rpx; | |||
border: 1px solid #e5e5e5; | |||
} | |||
.components .body .shop .posi .posi_logo .name { | |||
font-size: 32rpx; | |||
color: #333; | |||
letter-spacing: 0; | |||
width: 500rpx; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
overflow: hidden; | |||
} | |||
.components .body .shop .posi .posi_logo .shopVoList { | |||
white-space: nowrap !important; | |||
overflow-y: scroll; | |||
height: 90rpx !important; | |||
width: 360rpx; | |||
font-size: 16px; | |||
color: #333; | |||
letter-spacing: 0; | |||
} | |||
.components .body .shop .posi .posi_logo .shopVoList .name { | |||
font-size: 23rpx !important; | |||
color: #b8b8b8 !important; | |||
} | |||
.components .body .shop .posi .posi_logo .telBox { | |||
position: absolute; | |||
right: 0; | |||
top: 0; | |||
bottom: 0; | |||
margin: auto; | |||
} | |||
.components .body .shop .posi .posi_logo .telBox .telImg { | |||
width: 50rpx; | |||
height: 50rpx; | |||
margin-top: 20rpx; | |||
} | |||
.components .body .shop .posi .posi_logo .telBox .telText { | |||
text-align: center; | |||
color: #b8b8b8 !important; | |||
font-size: 20rpx; | |||
} | |||
.components .body .shop .posi .posi_logo .certificationBox { | |||
position: absolute; | |||
right: 35rpx; | |||
top: 0; | |||
bottom: 0; | |||
margin: auto; | |||
} | |||
.components .body .shop .posi .posi_logo .certificationBox .certificationImg { | |||
width: 50rpx; | |||
height: 50rpx; | |||
margin-top: 20rpx; | |||
} | |||
.components .body .shop .posi .posi_logo .certificationBox .telText { | |||
text-align: center; | |||
color: #b8b8b8 !important; | |||
font-size: 20rpx; | |||
} | |||
.components .body .shop .posi .siteBox { | |||
overflow: hidden; | |||
width: 92%; | |||
margin: 0 auto 1rpx auto; | |||
padding-bottom: 10rpx; | |||
} | |||
.components .body .shop .posi .siteBox .siteText { | |||
width: 90%; | |||
float: left; | |||
font-size: 24rpx; | |||
color: #333; | |||
overflow: hidden; | |||
white-space: nowrap; | |||
text-overflow: ellipsis; | |||
} | |||
.components .body .shop .posi .siteBox .siteImg { | |||
float: right; | |||
width: 40rpx; | |||
height: 40rpx; | |||
} |
@@ -1,7 +1,14 @@ | |||
{ | |||
"ext": { | |||
"attr": { | |||
"mchId": "1602801645", | |||
"car": { | |||
"etcp": { | |||
"etcpAppId": "wx192b7d2e8dcbefd0", | |||
"etcpVersion": "release", | |||
"etcpCallbackUrl": "https://admintest.malls.iformall.com/api/carCallback/etcpPaidCallback" | |||
} | |||
}, | |||
"mchId": "1604439800", | |||
"imgProxy": [ | |||
{ | |||
"newUrl": "https://ctest.malls.iformall.com/img", | |||
@@ -17,16 +24,12 @@ | |||
} | |||
], | |||
"configUrl": "https://ctest.malls.iformall.com/C/api", | |||
"etcpAppId": "wx219a81b9c87aa4f7", | |||
"etcpVersion": "release", | |||
"businessSwitch": "1", | |||
"businessVersion": "1", | |||
"etcpCallbackUrl": "https://admintest.malls.iformall.com/api/carCallback/etcpPaidCallback", | |||
"ifHaveWebSocket": "0", | |||
"ifHaveCarModular": "1" | |||
}, | |||
"name": "富茂光谷测试版", | |||
"weappId": "wx219a81b9c87aa4f7", | |||
"name": "金泸商务", | |||
"weappId": "wx649b3be73c1afe47", | |||
"appVersion": "C.test.5.2.0" | |||
}, | |||
"debug": false, | |||
@@ -74,15 +77,15 @@ | |||
}, | |||
"plugins": { | |||
"auto-points-plugin": { | |||
"version": "2.4.0", | |||
"version": "1.3.0", | |||
"provider": "wxfab2bf944bfc4da6" | |||
}, | |||
"live-player-plugin": { | |||
"version": "1.2.5", | |||
"version": "1.3.4", | |||
"provider": "wx2b03c6e691cd7370" | |||
} | |||
}, | |||
"extAppid": "wx219a81b9c87aa4f7", | |||
"extAppid": "wx649b3be73c1afe47", | |||
"extEnable": true, | |||
"permission": { | |||
"scope.userLocation": { | |||
@@ -95,6 +95,7 @@ Page({ | |||
contentType: 0, | |||
page: 1,//查询商户优惠券page | |||
idList: [], | |||
mallList: "" | |||
}, | |||
/** | |||
* 显示分享弹框 | |||
@@ -600,26 +601,25 @@ Page({ | |||
couponChannelId: couponChannelId | |||
} | |||
}).then(res => { | |||
if (res.data && res.data.length) { | |||
let merchantVoList = res.data | |||
let idList = [] | |||
merchantVoList.map(item => { | |||
idList.push(item.id) | |||
}) | |||
this.setData({ | |||
idList: idList | |||
}) | |||
this.getCouponList(idList) //获取推荐列表 | |||
} | |||
const keys = Object.keys(res.data) | |||
const mallList = [] | |||
keys.forEach(item => { | |||
const arr = item.split('|') | |||
const obj = { | |||
tenantId: arr[0], | |||
mallName: arr[1], | |||
merchantVoList: res.data[item], | |||
expand: true | |||
} | |||
mallList.push(obj) | |||
}) | |||
this.setData({ | |||
merchantVoList: res.data | |||
mallList: mallList | |||
}) | |||
console.log(this.data.mallList, 'mallList'); | |||
}) | |||
}, | |||
getDetail: function (couponChannelId, flag) { | |||
let that = this; | |||
let data = {}; | |||
@@ -3,6 +3,7 @@ | |||
"c-shareposter": "../../../../components/shareposter/index", | |||
"navbar": "../../../../components/navbar/navbar", | |||
"store": "../../../../components/store/index", | |||
"shop": "../../../../components/shop/shop", | |||
"c-coupons": "../../../components/coupons/index" | |||
}, | |||
"navigationBarTitleText": "", | |||
@@ -117,7 +117,8 @@ | |||
</view> | |||
</view> | |||
<!-- 适用门店 --> | |||
<store merchantVoList="{{merchantVoList}}" wx:if="{{data.type!=12}}"></store> | |||
<!-- <store merchantVoList="{{merchantVoList}}" wx:if="{{data.type!=12}}"></store> --> | |||
<shop wx:if="{{mallList.length>0}}" mallList="{{mallList}}"></shop> | |||
<!-- 券包子券样式 --> | |||
<!-- <view class="childText">购买须知</view> --> | |||
<view class="childBox"> | |||
@@ -21,7 +21,6 @@ | |||
font-size: 32rpx; | |||
font-weight: 700; | |||
margin-left: 10rpx; | |||
height: 60rpx; | |||
line-height: 60rpx; | |||
} | |||
@@ -55,4 +54,4 @@ | |||
height: 60rpx; | |||
line-height: 60rpx; | |||
color: rgba(0, 0, 0, 0.3); | |||
} | |||
} |
@@ -50,15 +50,16 @@ Page({ | |||
display: "none", | |||
orderGroupId: '', | |||
merchantVoList: [], | |||
goHomeUrl:"", | |||
goHomeUrl: "", | |||
mallList: '' | |||
}, | |||
/** | |||
* 生命周期函数--监听页面加载 | |||
*/ | |||
*/ | |||
onLoad: function (options) { | |||
this.setData({ | |||
mouldType:app.globalData.mouldType, | |||
mouldType: app.globalData.mouldType, | |||
mouldConfig: app.globalData.mouldConfig, | |||
goHomeUrl: app.globalData.goHomeUrl, | |||
}) | |||
@@ -163,7 +164,7 @@ Page({ | |||
}, | |||
/** | |||
* 直接购买 | |||
*/ | |||
*/ | |||
gotoBuy(e) { | |||
let that = this; | |||
this.setData({ | |||
@@ -335,7 +336,7 @@ Page({ | |||
data: { | |||
couponId: couponId | |||
} | |||
}).then(res => { | |||
}).then(res => { | |||
that.setData({ | |||
disOrderNumber: res.data.orderNumber, | |||
couponChannelId: res.data.couponChannelId, | |||
@@ -473,10 +474,33 @@ Page({ | |||
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, | |||
merchantVoList: data.merchantVoList | |||
}); | |||
// that.setData({ | |||
// data, | |||
// merchantVoList: data.merchantVoList | |||
// }); | |||
Http.get({ | |||
url: config.api.couponMerchant, | |||
data: { | |||
couponChannelId: couponChannelId | |||
} | |||
}).then(res => { | |||
const keys = Object.keys(res.data) | |||
const mallList = [] | |||
keys.forEach(item => { | |||
const arr = item.split('|') | |||
const obj = { | |||
tenantId: arr[0], | |||
mallName: arr[1], | |||
merchantVoList: res.data[item], | |||
expand: true | |||
} | |||
mallList.push(obj) | |||
}) | |||
this.setData({ | |||
mallList: mallList | |||
}) | |||
console.log(this.data.mallList, 'mallList'); | |||
}) | |||
}); | |||
}, | |||
/** | |||
@@ -671,7 +695,7 @@ Page({ | |||
}); | |||
} | |||
}).then(res => { | |||
console.log(res,"123") | |||
console.log(res, "123") | |||
if (typeof (res) != "undefined") { | |||
let orderId = "" + res.data.mainOrderId; | |||
that.setData({ | |||
@@ -734,7 +758,7 @@ Page({ | |||
}) | |||
.catch(err => { | |||
that.setData({ | |||
canSpell: true, | |||
canSpell: true, | |||
canBuyIf: true | |||
}) | |||
wx.showToast({ | |||
@@ -762,7 +786,7 @@ Page({ | |||
}) | |||
} | |||
}) | |||
}, | |||
/** | |||
* 生命周期函数--监听页面显示 | |||
@@ -3,6 +3,7 @@ | |||
"enablePullDownRefresh": true, | |||
"usingComponents": { | |||
"navbar": "../../../../components/navbar/navbar", | |||
"store": "../../../../components/store/index" | |||
"store": "../../../../components/store/index", | |||
"shop": "../../../../components/shop/shop" | |||
} | |||
} |
@@ -1,12 +1,12 @@ | |||
<navbar back home text="拼团券" background='#fff'></navbar> | |||
<view style="height:{{navigationBarHeight}} "></view> | |||
<view class="content-box" > | |||
<view class="content-box"> | |||
<view class='content'> | |||
<view wx:if="{{coverPicture.length>0}}" class="banner" style="{{mouldConfig.groupSwiperH}}"> | |||
<swiper class="index-slide swiper-box" style="{{mouldConfig.groupSwiperH}}" bindchange="swiperChange" indicator-dots="true" autoplay="true" circular="false" current="{{swiperCurrent}}"> | |||
<block wx:for="{{coverPicture}}" wx:key="unique"> | |||
<swiper-item > | |||
<image data-data="{{item}}" style="{{mouldConfig.groupSwiperH}}" src="{{item}}" class="index-slide-image" /> | |||
<swiper-item> | |||
<image data-data="{{item}}" style="{{mouldConfig.groupSwiperH}}" src="{{item}}" class="index-slide-image" /> | |||
</swiper-item> | |||
</block> | |||
</swiper> | |||
@@ -15,7 +15,7 @@ | |||
<view class='text'> | |||
<view class='remark'>{{data.subTitle}}</view> | |||
<view class='fenxiang' wx:if="{{data.type!=50&&data.type!=51}}" bindtap='showshare'> | |||
<image src='{{fenxiang}}' mode="widthFix"></image> | |||
<image src='{{fenxiang}}' mode="widthFix"></image> | |||
<text class='gift'>分享</text> | |||
</view> | |||
<view class='des'> | |||
@@ -41,10 +41,11 @@ | |||
<view class='right-text'>剩余{{data.remainInventory}}张</view> | |||
</view> | |||
<view class='status' wx:if="{{spellData!=null}}"> | |||
<view class='status01 st'> | |||
<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='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> | |||
@@ -56,7 +57,8 @@ | |||
</view> | |||
</view> | |||
<!-- 适用门店 --> | |||
<store wx:if="{{merchantVoList.length>0}}" merchantVoList="{{merchantVoList}}"></store> | |||
<!-- <store wx:if="{{merchantVoList.length>0}}" merchantVoList="{{merchantVoList}}"></store> --> | |||
<shop wx:if="{{mallList.length>0}}" mallList="{{mallList}}"></shop> | |||
<view class='notes'> | |||
<view> | |||
<text>购买须知</text> | |||
@@ -74,7 +76,7 @@ | |||
<text class='btnTxt'>首页</text> | |||
</button> | |||
<form bindsubmit='{{canBuyIf?"gotoBuy":""}}' report-submit='true' wx:if='{{data.id}}'> | |||
<button class='edit-left' form-type="submit" > | |||
<button class='edit-left' form-type="submit"> | |||
<view class='edit-left-top'> | |||
<view class='price'>{{data.price}}</view> | |||
<view class='price-unit'>元</view> | |||
@@ -84,7 +86,7 @@ | |||
</form> | |||
<!-- <button class='edit-right' id="shareBtn" open-type="share"></button> --> | |||
<form bindsubmit='{{canSpell?"gotoSpell":""}}' report-submit='true' wx:if='{{data.id}}'> | |||
<button class='edit-right' form-type="submit" > | |||
<button class='edit-right' form-type="submit"> | |||
<view class='edit-left-top'> | |||
<view class='price'>{{data.salePrice}}</view> | |||
<view class='price-unit'>元</view> | |||