Commit 17e45fbe by 严立

LL - 三期俱乐部静态

parent 6b873133
Showing with 1395 additions and 285 deletions
...@@ -178,6 +178,7 @@ App({ ...@@ -178,6 +178,7 @@ App({
'openId': funcResponse.openid, 'openId': funcResponse.openid,
'name': funcResponse.nickName, 'name': funcResponse.nickName,
'phone': funcResponse.mobile, 'phone': funcResponse.mobile,
'phoneHide': funcResponse.mobile.substring(0, 3) + '****' + funcResponse.mobile.substring(7),
'avatar': funcResponse.avatarUrl, 'avatar': funcResponse.avatarUrl,
'address': funcResponse.address, 'address': funcResponse.address,
'birthday': funcResponse.birthday, 'birthday': funcResponse.birthday,
...@@ -190,6 +191,8 @@ App({ ...@@ -190,6 +191,8 @@ App({
// 以返回信息中是否包含手机号码判断用户是否注册过 // 以返回信息中是否包含手机号码判断用户是否注册过
if (funcUserInfo.phone) { if (funcUserInfo.phone) {
funcUserInfo.isSignIn = true funcUserInfo.isSignIn = true
// 测试数据
// funcUserInfo.isSignIn = false
this.queryUserStatus() this.queryUserStatus()
} }
...@@ -275,7 +278,14 @@ App({ ...@@ -275,7 +278,14 @@ App({
funcUserInfo.userType = 0 funcUserInfo.userType = 0
break break
} }
wx.setStorageSync('userInfo', funcUserInfo) // // 测试数据 - 游客
// funcUserInfo.status = ''
// funcUserInfo.userType = 0
// // 测试数据 - 业主
// funcUserInfo.status = 1
// funcUserInfo.userType = 1
// wx.setStorageSync('userInfo', funcUserInfo)
// 如果用户身份有更新,则自动跳转到首页 // 如果用户身份有更新,则自动跳转到首页
if (funcStatus !== funcStatusRaw) { if (funcStatus !== funcStatusRaw) {
...@@ -434,4 +444,24 @@ App({ ...@@ -434,4 +444,24 @@ App({
clearTimeout(this.scrollTimestamp) clearTimeout(this.scrollTimestamp)
}, funcFrequency) }, funcFrequency)
}, },
setPriceType: function (funcCommodityData) {
let funcUserType = wx.getStorageSync('userInfo').userType
for (let i = 0, l = funcCommodityData.length; i < l; i++) {
// 根据后台判断价格显示类型
// 活动价优先级最高,如果存在活动价,则只显示活动价和普通价
if (funcCommodityData[i].priceDiscount || funcCommodityData[i].priceDiscount === 0) {
funcCommodityData[i].priceType = 1
} else {
// 活动价不存在,进一步判断普通价与业主价是否一致,如果不一致,则显示两者
if (funcCommodityData[i].price !== funcCommodityData[i].priceSpecial && funcUserType) {
funcCommodityData[i].priceType = 2
} else {
funcCommodityData[i].priceType = 3
}
}
}
return funcCommodityData
},
}) })
\ No newline at end of file
{ {
"pages": [ "pages": [
"pages/home/home/home", "pages/home/home/home",
"pages/home/dynamic/dynamic", "pages/home/dynamic/dynamic",
"pages/home/dynamic-detail/dynamic-detail", "pages/home/dynamic-detail/dynamic-detail",
...@@ -28,7 +29,7 @@ ...@@ -28,7 +29,7 @@
"pages/campsite/home/home", "pages/campsite/home/home",
"pages/campsite/home-mirror/home-mirror", "pages/campsite/home-mirror/home-mirror",
"pages/mine/home/home", "pages/mine/home/home",
"pages/mine/info/info", "pages/mine/info/info",
"pages/mine/order/order", "pages/mine/order/order",
...@@ -49,13 +50,22 @@ ...@@ -49,13 +50,22 @@
"pages/pay/coupon/coupon", "pages/pay/coupon/coupon",
"pages/pay/coupon-input/coupon-input", "pages/pay/coupon-input/coupon-input",
"pages/pay/coupon-detail/coupon-detail", "pages/pay/coupon-detail/coupon-detail",
"pages/club/home/home",
"pages/club/information/information",
"pages/club/member/member",
"pages/club/create/create",
"pages/club/enter/enter",
"pages/login/login" "pages/login/login"
], ],
"usingComponents": { "usingComponents": {
"m-button-bottom": "./component/m-button-bottom/m-button-bottom",
"m-dialog": "./component/m-dialog/m-dialog",
"m-nav": "./component/m-nav/m-nav", "m-nav": "./component/m-nav/m-nav",
"m-tab": "./component/m-tab/m-tab",
"m-toast": "./component/m-toast/m-toast", "m-toast": "./component/m-toast/m-toast",
"m-dialog": "./component/m-dialog/m-dialog",
"swiper-point": "./component/swiper-point/swiper-point", "swiper-point": "./component/swiper-point/swiper-point",
"l-avatar": "./miniprogram_npm/lin-ui/avatar/index", "l-avatar": "./miniprogram_npm/lin-ui/avatar/index",
"l-checkbox": "./miniprogram_npm/lin-ui/checkbox/index", "l-checkbox": "./miniprogram_npm/lin-ui/checkbox/index",
......
...@@ -10,4 +10,29 @@ ...@@ -10,4 +10,29 @@
.arrow-more { .arrow-more {
width: 32rpx; width: 32rpx;
height: 32rpx; height: 32rpx;
}
.owner-mark {
height: 32rpx;
padding: 0 12rpx;
background: linear-gradient(180deg, #3F4357 0%, #252532 100%);
border-radius: 4px;
font-size: 18rpx;
font-weight: 500;
line-height: 30rpx;
color: #E8D0AF;
}
.tag-blue {
height: 32rpx;
padding: 0 8rpx;
border-radius: 4px;
border: 1px solid #86C5E1;
background: rgba(134, 197, 225, 0.1);
font-size: 18rpx;
font-weight: 500;
line-height: 24rpx;
color: #86C5E1;
} }
\ No newline at end of file
Component({
options: {
styleIsolation: 'apply-shared'
},
properties: {
text: {
type: String,
value: '申请加入',
},
},
data: {
},
methods: {
onButton: function () {
this.triggerEvent('click')
},
}
})
{
"component": true,
"usingComponents": {}
}
\ No newline at end of file
<view class="m-button-bottom">
<view class="m-button-bottom-content">
<button class="row cc ac" bindtap="onButton">{{text}}</button>
</view>
<view class="m-button-bottom-occupy"></view>
</view>
\ No newline at end of file
.m-button-bottom-content {
position: fixed;
bottom: 0;
left: 0;
width: 750rpx;
height: 156rpx;
padding: 32rpx 40rpx;
border-top: 1px #E2E7EF solid;
}
.m-button-bottom-content {
background: #FFFFFF;
}
.m-button-bottom-content > button {
width: 670rpx;
height: 96rpx;
border-radius: 4px;
background: #86C5E1;
font-size: 30rpx;
font-weight: 500;
line-height: 42rpx;
color: #FFFFFF;
}
.m-button-bottom-occupy {
width: 750rpx;
height: 156rpx;
}
\ No newline at end of file
...@@ -301,11 +301,16 @@ Component({ ...@@ -301,11 +301,16 @@ Component({
// 导航栏拥有 logo 的场景,需要判断 logo 是否超出原有导航栏高度。 // 导航栏拥有 logo 的场景,需要判断 logo 是否超出原有导航栏高度。
let funcLogoFillTop = 0 let funcLogoFillTop = 0
let funcLogoFillHeight = 0 let funcLogoFillHeight = 0
let funcRegExp = this.data.logoFillCss.match(/(?<=top: )[0-9.]+/g)
if (funcRegExp) funcLogoFillTop = Number(funcRegExp[0])
funcRegExp = this.data.logoFillCss.match(/(?<=height: )[0-9.]+/g) // ios 正则兼容写法。
if (funcRegExp) funcLogoFillHeight = Number(funcRegExp[0]) // ios 不支持 ? 匹配规则,所以只能获取之后再将不需要的数据替换为空值。
let funcRegExp = new RegExp('top: [0-9.]+', 'g')
let funcResult = this.data.logoFillCss.match(funcRegExp)
if (funcResult) funcLogoFillTop = Number(funcResult[0].replace('top: ', ''))
funcRegExp = new RegExp('height: [0-9.]+', 'g')
funcResult = this.data.logoFillCss.match(funcRegExp)
if (funcResult) funcLogoFillHeight = Number(funcResult[0].replace('height: ', ''))
if (funcLogoFillTop === 0) { if (funcLogoFillTop === 0) {
wx.setStorageSync('navHeight', this.data.currentStyle.statusHeight + this.data.currentStyle.titleHeight) wx.setStorageSync('navHeight', this.data.currentStyle.statusHeight + this.data.currentStyle.titleHeight)
......
Component({
scrollStart: 0,
scrollTimer: 0,
scrollLock: false,
options: {
styleIsolation: 'apply-shared'
},
properties: {
// 导航栏是否固定在视图顶部
isFixed: {
type: Boolean,
value: true,
},
fixedTop: {
type: Number,
value: 0,
},
// 导航栏是否占用空间,仅在 isFixed 为 true 时有效。
isOccupy: {
type: Boolean,
value: true,
},
item: {
type: Array,
value: []
},
activeIndex: {
type: Number,
value: 0,
},
},
data: {
itemElementLeft: [],
scrollLeft: 0,
},
// 属性监听
observers: {
'item': function (funcValue) {
this.setItemElement()
},
},
methods: {
setItemElement: function () {
// 获取购物车高度
let funcQuery = this.createSelectorQuery()
funcQuery.selectAll('.m-item').boundingClientRect()
funcQuery.exec((funcResult) => {
let funcSelectionElement = funcResult[0]
this.scrollStart = funcSelectionElement[0].left
let funcList = [ 0 ]
for (let i = 1, l = funcSelectionElement.length; i < l; i++) {
funcList.push(funcSelectionElement[i].left - this.scrollStart)
}
this.setData({
itemElementLeft: funcList
})
})
},
onItem: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
let funcIndex = funcEvent.currentTarget.dataset.index
this.setData({
activeIndex: funcIndex
})
this.triggerEvent('tabChange', funcItem)
},
eventTabScroll: function (funcEvent) {
if (this.scrollLock) return
let funcScrollLeft = funcEvent.detail.scrollLeft
clearTimeout(this.scrollTimer)
this.scrollTimer = setTimeout(() => {
let funcItemElementLeft = this.data.itemElementLeft
for (let i = 0, l = funcItemElementLeft.length; i < l; i++) {
// funcScrollLeft - 20 是为了弥补滚动到首个 item 时无法准确定位在 0 数值上的问题。
if (funcScrollLeft - 20 < funcItemElementLeft[i]) {
this.scrollLock = true
this.setData({
scrollLeft: funcItemElementLeft[i]
})
clearTimeout(this.scrollTimer)
this.scrollTimer = setTimeout(() => {
this.scrollLock = false
clearTimeout(this.scrollTimer)
}, 500)
break
}
}
}, 200)
},
}
})
{
"component": true,
"usingComponents": {}
}
\ No newline at end of file
<view class="m-tab {{isFixed ? 'm-tab-fixed' : ''}}" style="{{'top: ' + fixedTop + 'px;'}}">
<scroll-view class="m-item-list row ac" scroll-x="true" scroll-left="{{scrollLeft}}" bindscroll="eventTabScroll">
<block wx:for="{{item}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view
class="m-item {{activeIndex === index ? 'm-item-active' : 'm-item-inactive'}}"
data-item="{{item}}"
data-index="{{index}}"
bindtap="onItem"
>
<text>{{item.text}}</text>
</view>
</block>
</scroll-view>
</view>
<!-- 导航栏占位元素 -->
<view wx:if="{{isOccupy && isFixed}}" class="m-tab-occupy"></view>
\ No newline at end of file
.m-tab {
z-index: 4;
width: 750rpx;
height: 72rpx;
padding: 0 0 0 40rpx;
border-bottom: 1px #E2E7EF solid;
background: #FFFFFF;
}
.m-tab-fixed {
position: fixed;
top: 0;
left: 0;
}
.m-item-list {
width: 710rpx;
white-space: nowrap;
}
.m-item-list::-webkit-scrollbar {
display: none;
}
.m-item {
display: inline-block;
margin-right: 80rpx;
padding-bottom: 26rpx;
font-size: 26rpx;
font-weight: 500;
color: #15191F;
}
.m-item-active {
border-bottom: 4rpx #15191F solid;
}
.m-item-inactive {
border-bottom: 4rpx rgba(0, 0, 0, 0) solid;
}
.m-tab-occupy {
height: 72rpx;
}
\ No newline at end of file
/* 层级说明 /* 层级说明
- - 背景 - : 整体背景
0 - 视图 0 : 视图
1 - 视图 1 : 视图
2 - 视图 2 : 视图
3 - 视图 3 : 视图
4 - 视图 4 : 视图
5 - 导航栏,占位元素 5 : 导航栏,占位元素
6 - 导航栏 6 : 导航栏
7 - 遮罩,弹窗,提示, 7 : 遮罩,弹窗,提示,
8 - 遮罩 8 : 遮罩
9 - 遮罩 9 : 遮罩
*/ */
.row { .row {
......

233 Bytes | W: | H:

2.08 KB | W: | H:

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

669 Bytes | W: | H:

669 Bytes | W: | H:

image/inform-w.png
image/icon/edit-4.png
image/inform-w.png
image/icon/edit-4.png
  • 2-up
  • Swipe
  • Onion skin
// pages/club/create/create.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/club/create/create.wxml-->
<text>pages/club/create/create.wxml</text>
/* pages/club/create/create.wxss */
\ No newline at end of file
// pages/club/enter/enter.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/club/enter/enter.wxml-->
<text>pages/club/enter/enter.wxml</text>
/* pages/club/enter/enter.wxss */
\ No newline at end of file
let App = getApp()
Page({
data: {
tabItem: [
{ 'text': '全部', 'value': '' },
{ 'text': '亲子教育', 'value': '' },
{ 'text': '健康', 'value': '' },
{ 'text': '理财经商', 'value': '' },
{ 'text': '家居美学', 'value': '' },
],
clubList: [],
},
onLoad: function (options) {
this.queryClub()
},
queryClub: function () {
let funcResponse = [
{
'id': '',
'logo': '',
'name': '马术俱乐部',
'describe': '俱乐部拥有进口纯血马20匹,国产马6匹,马匹每天清理一次,运动完洗澡烤电放松背部肌肉,是热爱马术人士的聚集地。',
'member': 1900,
}, {
'id': '',
'logo': '',
'name': '音乐剧话剧俱乐部',
'describe': '为广大音乐剧话剧爱好者提供了一个学习和讨论的平台,让大家感受到音乐剧话剧之美,参与其中学习表演,体会到音乐剧话剧的魅力所在。',
'member': 1700,
},
]
this.setData({
clubList: funcResponse
})
},
/**
* 页面滚动事件
* @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
<nav titleText="俱乐部" styleIndex="2" scrollHeight="{{navScroll}}" isOccupy="{{false}}"></nav>
<view class="container">
<!-- banner -->
<view class="banner">
<image></image>
</view>
<!-- tab -->
<view class="tab">
<m-tab item="{{tabItem}}"></m-tab>
</view>
<view class="club-list">
<block wx:for="{{clubList}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="club-item row">
<view class="club-logo">
<image src="{{item.logo}}"></image>
</view>
<view class="club-info column">
<view class="club-info-name row ac">
<text>{{item.name}}</text>
<text class="owner-mark">业主专享</text>
</view>
<view class="club-info-describe row">
<text>{{item.describe}}</text>
</view>
<view class="club-info-other row cb ac">
<text>{{item.member + '成员'}}</text>
<button>申请加入</button>
</view>
</view>
</view>
</block>
</view>
</view>
\ No newline at end of file
.banner image {
width: 750rpx;
height: 998rpx;
background: #999999;
}
.tab {
margin-top: 64rpx;
}
.club-list {
padding-top: 80rpx;
}
.club-item {
margin-bottom: 64rpx;
}
.club-logo > image {
width: 168rpx;
height: 168rpx;
margin-right: 28rpx;
background: #999999;
}
.club-info-name > text:nth-child(1) {
height: 44rpx;
margin-right: 16rpx;
font-size: 34rpx;
font-weight: 800;
line-height: 44rpx;
color: #15191F;
}
.club-info-describe {
width: 474rpx;
margin-top: 16rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 36rpx;
color: #959DA9;
}
.club-info-other {
margin-top: 18rpx;
}
.club-info-other > text {
font-size: 22rpx;
font-weight: 400;
line-height: 40rpx;
color: #959DA9;
}
.club-info-other > button {
width: 120rpx;
height: 56rpx;
border-radius: 4px;
background: #86C5E1;
font-size: 22rpx;
font-weight: 500;
line-height: 56rpx;
color: #FFFFFF;
}
\ No newline at end of file
let App = getApp()
Page({
data: {
imageBase: App.globalData.appImageBase,
resourcesBase: App.globalData.appResourcesBase,
detailActivity: [],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.queryActi()
},
queryActi: function () {
let funcList = [{
'cover': '',
'id': '',
'title': '活动名称',
'officeId': '',
'price': 123,
'priceText': App.modular.utils.formatAmount(123),
'priceSpecial': 123, // 业主价
'priceSpecialText': App.modular.utils.formatAmount(123),
'tagIds': '',
'tagNames': 'tag',
'date': '2020-10-19 2020-10-20',
'priceType': 1,
}]
this.setData({
detailActivity: funcList
})
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<view class="container">
<view class="banner">
<image src=""></image>
</view>
<view class="club-info row cc ac">
<image class="club-info-logo" src=""></image>
<view class="club-info-name column cc ac">
<text class="title">马术俱乐部</text>
<text class="owner-mark">业主专享</text>
<view class="club-info-member row cc ac">
<text>1877 成员</text>
<image class="arrow-more" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
</view>
</view>
</view>
<view class="club-describe column">
<text class="title">俱乐部简介</text>
<text>俱乐部拥有进口纯血马20匹,国产马6匹,马匹每天清理一次,运动完洗澡烤电放松背部肌肉。有中外会员数百人,是热爱马术人士的聚集地。</text>
</view>
<!-- 近期活动 -->
<view class="card">
<view class="card-title row cb ac">
<text class="title">近期活动</text>
<text>查看全部</text>
</view>
<view class="card-list row">
<block wx:for="{{3}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="card-item column ac">
<image class="card-item-cover"></image>
<view class="card-item-info">
<view class="card-item-info-title row cb ac">
<text>八月银湖湾儿童马术节</text>
<text class="tag-blue">亲子教育</text>
</view>
<view class="card-item-info-time row ac">
<image class="arrow-more" src="{{imageBase + 'icon/clock-2.png'}}"></image>
<text>9.20-9.25 10:00-11:30</text>
</view>
<view class="card-item-other row cb ac">
<view class="card-item-price row">
<text class="owner-mark">业主价</text>
<text>免费</text>
<text>¥ 149</text>
</view>
<button class="row cc ac">报名</button>
</view>
</view>
</view>
</block>
<view class="card-item column ac" wx:if="{{true}}"></view>
</view>
</view>
<!-- 详情 -->
<view class="club-detail">
<view class="row cb ac">
<text class="club-detail-title title">俱乐部详情</text>
</view>
<view class="club-detail-content">
<image mode="widthFix" src="{{resourcesBase + 'club/information/club-detail.png'}}"></image>
</view>
</view>
<!-- 加入规则 -->
<view class="club-enter">
<view class="club-enter-title">
<text class="title">加入规则</text>
</view>
<image mode="widthFix" src="./image/enter-rule.png"></image>
</view>
</view>
<m-button-bottom></m-button-bottom>
\ No newline at end of file
.title {
height: 52rpx;
font-size: 38rpx;
font-weight: 800;
line-height: 52rpx;
color: #15191F;
}
.banner > image {
width: 750rpx;
height: 600rpx;
background: #999999;
}
/* 俱乐部名称 */
.club-info {
position: relative;
width: 750rpx;
}
.club-info > view {
margin-top: 116rpx;
}
.club-info-logo {
position: absolute;
top: -84rpx;
left: 291rpx;
width: 168rpx;
height: 168rpx;
background: #999999;
}
.club-info-name > text:nth-child(2) {
width: 96rpx;
margin-top: 16rpx;
}
.club-info-member {
height: 36rpx;
margin-top: 24rpx;
}
.club-info-member > text:nth-child(1) {
margin-right: 8rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #959DA9;
}
/* 俱乐部简介 */
.club-describe {
margin-top: 96rpx;
padding-bottom: 50rpx;
border-bottom: 1px #E2E7EF solid;
}
.club-describe > text:nth-child(2) {
width: 670rpx;
margin-top: 48rpx;
font-size: 30rpx;
font-weight: 300;
line-height: 50rpx;
color: #15191F;
}
/* 近期活动 */
.card {
margin-top: 80rpx;
}
.card-title {
width: 750rpx;
padding: 0 40rpx;
}
.card-title > text:nth-child(1) {
height: 52rpx;
font-size: 38rpx;
font-weight: 800;
line-height: 52rpx;
color: #15191F;
}
.card-title > text:nth-child(2) {
height: 36rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #959DA9;
}
.card-list {
width: 750rpx;
margin-top: 48rpx;
padding: 0 0 0 40rpx;
overflow-x: scroll;
}
.card-item {
display: inline-block;
width: 562rpx;
margin: 0 24rpx 0 0;
border-radius: 4px;
background: #F5F6F8;
}
.card-item:last-child {
width: 1rpx !important;
min-width: 1rpx !important;
}
.card-item-cover {
width: 562rpx;
height: 316rpx;
background: #999999;
}
.card-item-info {
padding: 32rpx;
}
.card-item-info-title > text:nth-child(1) {
height: 44rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 44rpx;
color: #15191F;
}
.card-item-info-time {
margin-top: 8rpx;
height: 40rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 40rpx;
color: #656E7B;
}
.card-item-other {
margin-top: 16rpx;
}
.card-item-other > button {
width: 132rpx;
height: 56rpx;
border-radius: 4px;
background: #86C5E1;
font-size: 26rpx;
font-weight: 500;
line-height: 36rpx;
color: #FFFFFF;
}
.card-item-price > text:nth-child(2) {
height: 36rpx;
margin: 0 12rpx;
font-size: 30rpx;
font-weight: 800;
line-height: 32rpx;
color: #15191F;
}
.card-item-price > text:nth-child(3) {
height: 36rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 36rpx;
color: #C2C7CF;
}
/* 俱乐部详情 */
.club-detail {
margin-top: 80rpx;
}
.club-detail-title {
padding: 0 40rpx;
}
.club-detail-content > image {
margin-top: 80rpx;
width: 750rpx;
}
/* 加入规则 */
.club-enter {
margin: 90rpx 0 64rpx 0;
}
.club-enter-title {
padding: 0 40rpx;
}
.club-enter > image {
width: 750rpx;
margin-top: 48rpx;
}
\ No newline at end of file
// pages/club/member/member.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/club/member/member.wxml-->
<text>pages/club/member/member.wxml</text>
/* pages/club/member/member.wxss */
\ No newline at end of file
...@@ -115,7 +115,7 @@ Page({ ...@@ -115,7 +115,7 @@ Page({
let funcGreetingName = this.data.userInfo.name let funcGreetingName = this.data.userInfo.name
if (funcGreetingName.length > 5) funcGreetingName = funcGreetingName.substring(0, 5) + '...' if (funcGreetingName.length > 5) funcGreetingName = funcGreetingName.substring(0, 5) + '...'
if (funcGreetingName === '') funcGreetingName = 'Hello' if (funcGreetingName === '') funcGreetingName = 'Hello'
this.setData({ this.setData({
greetingName: funcGreetingName, greetingName: funcGreetingName,
......
page {
background: #F3F4F6;
}
.container { .container {
min-height: 100vh; min-height: 100vh;
background: #f3f4f6;
} }
.background-image { /* 用户信息面板 */
z-index: 0; .info {
position: absolute; width: 750rpx;
top: 0; height: 416rpx;
left: 0; padding: 220rpx 40rpx 0 40rpx;
width: 100%;
height: 100%;
} }
.mine { .info-owner {
width: 750rpx; color: #F0DABB !important;
height: 380rpx;
padding: 220rpx 0 0 48rpx;
} }
.mine-bgi { .info-bgi {
z-index: -1;
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 750rpx; width: 750rpx;
height: 500rpx; height: 416rpx;
}
.user-type {
width: 126rpx;
height: 40rpx;
font-weight: 500;
font-size: 22rpx;
color: #fff;
background-color: #6783ae;
text-align: center;
line-height: 40rpx;
border-radius: 4rpx;
letter-spacing: 10rpx;
margin-top: 8rpx;
} }
.owner-tag { .info-avatar {
height: 80rpx;
width: 142rpx;
/* margin-top: 8rpx!important; */
}
.mine-avatar {
z-index: 1; z-index: 1;
margin-right: 32rpx; margin-right: 30rpx;
width: 136rpx; width: 136rpx;
height: 136rpx; height: 136rpx;
} }
.mine-avatar-special { .info-avatar > image {
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
background-color: #f0dabb;
}
.mine-avatar > image {
width: 128rpx; width: 128rpx;
height: 128rpx; height: 128rpx;
border-radius: 50%; border-radius: 50%;
} }
.mine-info { .info-sign-in {
z-index: 1;
padding-top: 12rpx;
}
.mine-info view:nth-child(1) text {
max-width: 260rpx;
margin-right: 20rpx;
font-size: 42rpx; font-size: 42rpx;
font-weight: 500; font-weight: 500;
line-height: 58rpx;
overflow: hidden; color: #15191F;
white-space: nowrap;
text-overflow: ellipsis;
}
.padding-l-18 {
padding-left: 18rpx;
} }
/* 积分 */ .info-edit {
height: 120rpx;
.integral {
color: #0d0d0e;
text-align: right;
} }
.glod { .info-name {
color: #f0dabb; height: 58rpx;
} font-size: 42rpx;
font-weight: 500;
.integral-num { line-height: 58rpx;
font-size: 54rpx; color: #15191F;
line-height: 66rpx;
padding-right: 80rpx;
font-weight: 600;
}
.integral-title {
display: flex;
height: 52rpx;
align-items: center;
font-size: 26rpx;
line-height: 36rpx;
flex-direction: row;
justify-content: flex-end;
padding-right: 40rpx;
}
.arrow-r {
width: 32rpx;
height: 32rpx;
margin-left: 8rpx;
} }
.mine-info view:nth-child(1) image { .info-name > image {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
margin-top: 10rpx;
} }
.mine-info view:nth-child(2) { .info-integral {
margin-top: 0rpx; flex-grow: 1;
height: 120rpx;
text-align: right;
color: #0d0d0e;
} }
.mine-info view:nth-child(2) text { .info-integral-quantity {
font-size: 26rpx; height: 76rpx;
color: #959da9; margin-right: 40rpx;
font-size: 52rpx;
font-weight: 500;
line-height: 76rpx;
color: #0D0D0E;
} }
.coupon { .info-integral-title > text{
z-index: 7; height: 36rpx;
width: 670rpx; margin-right: 8rpx;
height: 176rpx; font-size: 26rpx;
padding: 41rpx 32rpx; font-weight: 400;
background-color: #fff; line-height: 36rpx;
border-radius: 4rpx; color: #15191F;
margin-top: 48rpx;
} }
.cpopon-info { .info-status-tourist {
flex: 1; width: 126rpx;
} height: 40rpx;
margin: 10rpx 0 2rpx 0;
border-radius: 4px;
background: #6783AE;
.cpopon-info text:nth-child(1) { font-size: 22rpx;
font-size: 34rpx; font-weight: 500;
font-weight: 600; line-height: 32rpx;
color: #15191f; color: #FFFFFF;
} }
.cpopon-info text:nth-child(2) { .info-status-owner > image {
margin-top: 12rpx; width: 106rpx;
font-size: 26rpx; height: 40rpx;
color: #161a1f; margin: 10rpx 0 2rpx 0;
border-radius: 4px;
} }
.coupon image { .info-avatar-special {
width: 32rpx; display: flex;
height: 32rpx; justify-content: center;
align-items: center;
border-radius: 50%;
background-color: #f0dabb;
} }
.status { /* 业主认证 */
z-index: 7; .status-authentication {
z-index: 2;
width: 670rpx; width: 670rpx;
height: 130rpx; height: 130rpx;
margin-top: 48rpx;
padding: 24rpx 32rpx 24rpx 40rpx; padding: 24rpx 32rpx 24rpx 40rpx;
border-radius: 4rpx; border-radius: 4rpx;
background: linear-gradient(180deg, rgba(63, 67, 87, 1) 0%, rgba(37, 37, 50, 1) 100%); background: linear-gradient(180deg, #3F4357 0%, #252532 100%);
} }
.status-symbol text:nth-child(1) { .status-symbol text:nth-child(1) {
font-size: 30rpx; font-size: 30rpx;
font-weight: bolder; font-weight: 800;
color: rgba(255, 227, 195, 1); color: #F1DBBD;
} }
.status-symbol text:nth-child(2) { .status-symbol text:nth-child(2) {
...@@ -195,9 +145,10 @@ ...@@ -195,9 +145,10 @@
height: 52rpx; height: 52rpx;
padding: 0 16rpx; padding: 0 16rpx;
border-radius: 4rpx; border-radius: 4rpx;
background: linear-gradient(180deg, rgba(255, 243, 227, 1) 0%, rgba(255, 227, 195, 1) 100%); background: linear-gradient(180deg, #FFF3E3 0%, #FFE3C3 100%);
color: #282836;
font-size: 26rpx; font-size: 26rpx;
color: #282836;
} }
.status-operation text { .status-operation text {
...@@ -212,6 +163,109 @@ ...@@ -212,6 +163,109 @@
margin-right: 8rpx; margin-right: 8rpx;
} }
/* 券码核销 */
.coupon-permissions {
z-index: 2;
width: 670rpx;
height: 176rpx;
margin-top: 48rpx;
padding: 40rpx 32rpx;
border-radius: 4px;
background: #FFFFFF;
}
.coupon-permissions-info {
flex-grow: 1;
}
.coupon-permissions-info > text:nth-child(1) {
font-size: 34rpx;
font-weight: 600;
color: #15191f;
}
.coupon-permissions-info > text:nth-child(2) {
margin-top: 12rpx;
font-size: 26rpx;
color: #161a1f;
}
/* 我的订单,我的预约 */
.card {
width: 670rpx;
min-height: 312rpx;
margin: 48rpx 40rpx 0 40rpx;
padding: 40rpx 32rpx;
border-radius: 4px;
background: #FFFFFF;
}
.card-title > text:nth-child(1) {
flex-grow: 1;
height: 34rpx;
font-size: 34rpx;
font-weight: 800;
line-height: 34rpx;
color: #15191F;
}
.card-title > text:nth-child(2) {
height: 26rpx;
margin-right: 8rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 26rpx;
color: #15191F;
}
.card-category {
margin-top: 56rpx;
padding: 0 6rpx;
}
.card-item {
position: relative;
}
.card-item-quantity {
position: absolute;
top: -10rpx;
right: 0;
width: 32rpx;
height: 32rpx;
border-radius: 50%;
background: #E66060;
font-size: 22rpx;
line-height: 32rpx;
color: #FFFFFF;
}
.card-item > text {
height: 32rpx;
margin-top: 16rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #161A1F;
}
.card-item-icon {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
background: #F5F6F8;
}
.card-item-icon > image {
width: 48rpx;
height: 48rpx;
}
.menu { .menu {
width: 750rpx; width: 750rpx;
/* margin-top: 16rpx; */ /* margin-top: 16rpx; */
......
<m-toast></m-toast> <m-toast></m-toast>
<m-dialog></m-dialog> <m-dialog></m-dialog>
<m-nav titleText="订单详情"></m-nav> <m-nav titleText="订单详情" bind:navBack="navBack"></m-nav>
<view class="container"> <view class="container">
<!-- 订单状态 --> <!-- 订单状态 -->
<view class="state row con-c"> <view class="state row con-c">
......
...@@ -350,8 +350,6 @@ Page({ ...@@ -350,8 +350,6 @@ Page({
if (funcShoppingCart[i].isActive) funcPayAmount = funcPayAmount + funcShoppingCart[i].priceUnit * funcShoppingCart[i].quantity if (funcShoppingCart[i].isActive) funcPayAmount = funcPayAmount + funcShoppingCart[i].priceUnit * funcShoppingCart[i].quantity
} }
this.setData({ this.setData({
shoppingCartList: funcShoppingCart, shoppingCartList: funcShoppingCart,
payAmount: App.modular.utils.formatAmount(funcPayAmount), payAmount: App.modular.utils.formatAmount(funcPayAmount),
...@@ -819,10 +817,6 @@ Page({ ...@@ -819,10 +817,6 @@ Page({
// 校验数组用户信息 // 校验数组用户信息
let funcRegisterInfo = this.data.registerInfo let funcRegisterInfo = this.data.registerInfo
console.log(funcRegisterInfo)
for (let i = 0, l = funcRegisterInfo.length; i < l; i++) { for (let i = 0, l = funcRegisterInfo.length; i < l; i++) {
if (funcRegisterInfo[i].name === '' || funcRegisterInfo[i].errorName !== '') { if (funcRegisterInfo[i].name === '' || funcRegisterInfo[i].errorName !== '') {
this.setUserInfo('name', funcRegisterInfo[i].name, i, App.modular.rule.item('name', funcRegisterInfo[i].name)) this.setUserInfo('name', funcRegisterInfo[i].name, i, App.modular.rule.item('name', funcRegisterInfo[i].name))
...@@ -1215,7 +1209,7 @@ Page({ ...@@ -1215,7 +1209,7 @@ Page({
default: default:
// 支付成功进入成功页面 // 支付成功进入成功页面
wx.reLaunch({ wx.reLaunch({
url: '/pages/pay/order-state/order-state?state=' + funcPayResult + '&amount=' + this.data.buyContentAmount + '&orderId=' + this.data.orderId url: '/pages/pay/order-state/order-state?state=' + funcPayResult + '&amount=' + this.data.payAmount + '&orderId=' + this.data.orderId
}) })
break break
} }
......
{ {
"usingComponents": {} "usingComponents": {},
"enablePullDownRefresh": true
} }
\ No newline at end of file
<m-nav titleText="主题活动" scrollHeight="{{navScroll}}" styleIndex="{{1}}"></m-nav> <m-nav titleText="主题活动" scrollHeight="{{navScroll}}" styleIndex="{{1}}"></m-nav>
<m-tab item="{{tabItem}}" isFixed="{{true}}" fixedTop="{{tabTop}}"></m-tab>
<view class="status row align-c" style="{{'top: ' + navHeight + 'px'}}" wx:if="{{!options.fromPage}}"> <view class="container">
<block wx:for="{{statusList}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <!-- 近期活动 -->
<view class="status-item row con-c align-c" data-index="{{index}}" bindtap="onSelectionStatus">
<view class="row con-c align-c {{index === statusActive ? 'status-item-active' : ''}}">
<text>{{item.name}}</text>
</view>
</view>
</block>
</view>
<view class="container con-s" style="{{'margin-top: ' + classHeight + 'px;'}}">
<block wx:if="{{activity.length > 0}}"> <block wx:if="{{activity.length > 0}}">
<view class="list"> <view class="list">
<block wx:for="{{selectedActivity}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <block wx:for="{{activity}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="item" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityDetail"> <view class="item" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityLately">
<view class="item-cover" wx:if="{{item.cover !== ''}}"> <view class="item-cover" wx:if="{{item.cover !== ''}}">
<image src="{{item.cover}}" mode="aspectFill"></image> <image src="{{item.cover}}" mode="aspectFill"></image>
</view> </view>
...@@ -58,6 +50,7 @@ ...@@ -58,6 +50,7 @@
</view> </view>
</block> </block>
<!-- 往期活动 -->
<block wx:if="{{selectedOther.length > 0}}"> <block wx:if="{{selectedOther.length > 0}}">
<view class="title row"> <view class="title row">
<image src="./image/title-2.png"></image> <image src="./image/title-2.png"></image>
...@@ -68,7 +61,7 @@ ...@@ -68,7 +61,7 @@
<!-- 左侧列表 --> <!-- 左侧列表 -->
<view class="route-list-left"> <view class="route-list-left">
<block wx:for="{{selectedOther}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <block wx:for="{{selectedOther}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="route-item" wx:if="{{index % 2 === 0}}" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityDetail"> <view class="route-item" wx:if="{{index % 2 === 0}}" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityExpire">
<view class="row con-c align-c"> <view class="row con-c align-c">
<image src="{{item.cover}}" mode="aspectFill"></image> <image src="{{item.cover}}" mode="aspectFill"></image>
</view> </view>
...@@ -81,7 +74,7 @@ ...@@ -81,7 +74,7 @@
<!-- 右侧列表 --> <!-- 右侧列表 -->
<view class="route-list-right"> <view class="route-list-right">
<block wx:for="{{selectedOther}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <block wx:for="{{selectedOther}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="route-item" wx:if="{{index % 2 === 1}}" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityDetail"> <view class="route-item" wx:if="{{index % 2 === 1}}" data-id="{{item.id}}" data-index="{{index}}" bindtap="onActivityExpire">
<view class="row con-c align-c"> <view class="row con-c align-c">
<image src="{{item.cover}}" mode="aspectFill"></image> <image src="{{item.cover}}" mode="aspectFill"></image>
</view> </view>
......
.tab {
position: fixed;
top: 0;
left: 0;
background: #FFFFFF;
}
.container { .container {
min-height: 100vh; min-height: 100vh;
padding-bottom: 100rpx; padding-bottom: 100rpx;
......
...@@ -406,6 +406,8 @@ Page({ ...@@ -406,6 +406,8 @@ Page({
winActivity: true, winActivity: true,
detailActivity: funcList detailActivity: funcList
}) })
console.log(JSON.stringify(this.data.detailActivity))
} }
}) })
}, },
......
...@@ -835,7 +835,7 @@ ...@@ -835,7 +835,7 @@
right: 0; right: 0;
width: 160rpx; width: 160rpx;
height: 160rpx; height: 160rpx;
margin: 0 0 10rpx 0; margin: 0 5rpx 10rpx 0;
border-radius: 4rpx; border-radius: 4rpx;
background: rgba(0, 0, 0, 0.4); background: rgba(0, 0, 0, 0.4);
} }
......
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
* onLoad: function () {}, * onLoad: function () {},
* 生命周期函数 * 生命周期函数
* *
* setXX: function () {},
* 初始,设置数据函数
*
* queryXX: function () {}, * queryXX: function () {},
* 数据查询函数 * 数据查询函数
* *
......
const output = { const output = {
// 测试环境 // 测试环境
baseUrl: 'https://sm-web.meiqicloud.com/api/', baseUrl: 'https://sm-web2.meiqicloud.com/api/',
// 正式环境 // 正式环境
// baseUrl: 'https://xsslc.cndrealty.com/', // baseUrl: 'https://xsslc.cndrealty.com/',
......
...@@ -10,6 +10,11 @@ let Output = { ...@@ -10,6 +10,11 @@ let Output = {
request: function (option) { request: function (option) {
let App = getApp() let App = getApp()
let funcToken = App.globalData.token
if (funcToken) {
option.header.token = funcToken
}
// 网络断开场景 // 网络断开场景
// if (!App.globalData.networkStatus) { // if (!App.globalData.networkStatus) {
// console.log('offline') // console.log('offline')
......
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