Commit bbd2c7f1 by 严立

LL - 积分兑换完成

parent 0d40da45
Showing with 1682 additions and 224 deletions
......@@ -34,6 +34,7 @@ App({
iMui(this) // m-ui 相关函数引入
iLogin(this) // 全局登录,根据 token 的情况执行相关操作
this.setUnitProportion()
this.queryClubEstablish()
},
onShow: function () {
......@@ -56,7 +57,6 @@ App({
}).then((response) => {
let funcData = response.data
this.globalData.appStatus = Boolean(Number(funcData[0].value))
console.log('setAppStatus', this.globalData.appStatus)
}).catch(() => {})
},
......@@ -276,6 +276,37 @@ App({
},
/**
* 查询我管理的俱乐部审核数量
* @function
* @param
* @returns
*/
queryClubEstablish: function () {
this.request({
url: 'v3/club/getMyCreateClub',
params: {
'pageNo': 1,
'pageSize': -1,
}
}).then((response) => {
let funcData = response.data.list
let funcExamine = 0
for (let i = 0, l = funcData.length; i < l; i++) {
funcExamine = funcExamine + Number(funcData[i].count) + 1
}
if (funcExamine > 0) {
wx.setTabBarItem({
'index': 4,
'text': '我的',
'iconPath': 'image/tabbar/mine-red.png',
'selectedIconPath': 'image/tabbar/mine-s-red.png',
})
}
wx.setStorageSync('clubExamine', funcExamine)
}).catch((response) => {})
},
/**
* 全局函数 - 设置商店信息
* @function
* @param
......
{
"pages": [
"pages/home/home/home",
"pages/home/guide/guide",
"pages/home/history/history",
......@@ -57,6 +59,7 @@
"pages/mall/exchange-tip/exchange-tip",
"pages/mall/exchange-state/exchange-state",
"pages/mall/exchange-record/exchange-record",
"pages/mall/exchange-submit/exchange-submit",
"pages/login/login"
],
"usingComponents": {
......
......@@ -23,6 +23,11 @@
height: 32rpx;
}
.icon_32 {
width: 32rpx;
height: 32rpx;
}
.icon_40 {
width: 40rpx;
height: 40rpx;
......@@ -38,6 +43,11 @@
height: 80rpx;
}
.icon_136 {
width: 136rpx;
height: 136rpx;
}
.bg-gradient {
background: linear-gradient(180deg, #FFFFFF 0%, #F3F4F6 20%, #F3F4F6 100%);
}
......
......@@ -31,8 +31,8 @@ Component({
},
methods: {
onInputBlur: function (funcEvent) {
console.log(funcEvent)
onInput: function (funcEvent) {
console.log('onInputBlur', funcEvent.detail.value)
this.setData({
inputContent: funcEvent.detail.value
})
......@@ -45,6 +45,7 @@ Component({
onConfirm: function () {
this.data.success({ input: this.data.inputContent })
console.log('Dialog', this.data.inputContent)
App.ui.hideDialog()
},
}
......
......@@ -53,7 +53,8 @@
<text class="secondary">{{content}}</text>
</view>
<view class="dialog-input row cc">
<input auto-focus placeholder="{{placeholder}}" placeholder-class="dialog-input-placeholder" bindblur="onInputBlur"></input>
<input auto-focus placeholder="{{placeholder}}" placeholder-class="dialog-input-placeholder" bindinput="onInput">
</input>
</view>
<view class="dialog-operation row cb ac border-base">
<button class="dialog-operation-cancel row cc ac secondary" bindtap="onCancel">{{cancel}}</button>
......
......@@ -15,7 +15,6 @@ Component({
value: ''
},
placeholder: {
type: String,
value: ''
......@@ -39,10 +38,21 @@ Component({
data: {
inputFocus: false,
inputWidth: 0,
winText: true,
winInput: false,
},
ready: function () {
let funcQuery = this.createSelectorQuery()
funcQuery.selectAll('.m-input-boundary').boundingClientRect()
funcQuery.exec((funcResult) => {
this.setData({
inputWidth: funcResult[0][0].width
})
})
},
methods: {
onInput: function (event) {
console.log('[m-input] onInput')
......
<view class="m-input">
<view class="container-text row ac {{className}}" hidden="{{!winText}}" bindtap="setInputShow">
<view class="m-input-content row ac">
<text class="container-text-value" hidden="{{value === '' ? true : false}}">{{value}}</text>
<text class="container-text-placeholder" hidden="{{value === '' ? false : true}}">{{placeholder}}</text>
<view class="row ac" hidden="{{!winText}}" bindtap="setInputShow">
<view class="m-input-boundary row ac {{className}}">
<text class="m-input-text-content" hidden="{{value === '' ? true : false}}">{{value}}</text>
<text class="m-input-text-placeholder" hidden="{{value === '' ? false : true}}">{{placeholder}}</text>
</view>
</view>
<view class="container-input row ac {{className}}" hidden="{{!winInput}}">
<view class="m-input-content row ac">
<view class="row ac" hidden="{{!winInput}}">
<view class="m-input-boundary row ac {{className}}">
<input
class="row ac"
class="m-input-input-content row ac"
value="{{value}}"
type="{{type}}"
maxlength="{{maxlength}}"
placeholder="{{placeholder}}"
placeholder-class="container-text-placeholder"
placeholder-style="{{'width: ' + inputWidth + 'px;'}}"
placeholder-class="m-input-input-placeholder"
focus="{{inputFocus}}"
bindinput="onInput"
bindfocus="onInputFocus"
......
.m-input {
.m-input-boundary {
position: relative;
}
.m-input-content {
width: 100%;
height: 100%;
overflow-x: scroll;
}
.container-text-value {
/* 显示文本样式 */
.m-input-text-content {
white-space: nowrap;
color: #000000;
}
.container-text-placeholder {
.m-input-text-placeholder {
width: 100% !important;
white-space: nowrap;
color: #C2C7CF;
}
.container-input {
color: #15191F;
/* 输入控件样式 */
.m-input-input-content {
width: 100%;
height: 100%;
}
.container-input > input {
width: 100%;
.m-input-input-placeholder {
}
\ No newline at end of file
......@@ -18,6 +18,11 @@ let Development = {
// appId 程序内部交互确定门店
// id 数据库门店 id
shopId: [
// 特殊门店 - 页面没有入口,只作信息展示
{ appId: 0, id: '03d9806e6f534152b20d9733f854c43d', logo: '', commodityLogo: '', cover: 'shop/cover-0.png', printUse: '', print: '', name: '碧海银湖', title: ['碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖'] },
{ appId: 0, id: '2da1a0cd375447f6b7e51d06b11b5300', logo: '', commodityLogo: '', cover: 'shop/cover-0.png', printUse: '', print: '', name: '碧海银湖', title: ['碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖', '碧海银湖'] },
// 普通门店
{ appId: 1, id: '581be62a80bb4f0485abd87abcf64dc0', logo: 'shop/logo-1.png', commodityLogo: 'shop/commodity-logo-1.png', cover: 'shop/cover-1.png', printUse: 'shop/print/print-1-1.png', print: 'shop/print/print-1-2.png', name: '海错图', title: ['海错图', '海错图购票', '海错图', '海错图文创店', '海错图', '海错图', '海错图'] },
{ appId: 2, id: '3cfe2e3b8b4342e8b62f8b45daf60d91', logo: 'shop/logo-2.png', commodityLogo: 'shop/commodity-logo-2.png', cover: 'shop/cover-2.png', printUse: 'shop/print/print-2-1.png', print: 'shop/print/print-2-2.png', name: '星空影院', title: ['星空影院', '星空影院', '星空影院', '星空影院', '星空影院', '星空影院', '星空影院'] },
{ appId: 3, id: '8a3e59c57f564c569b3d7bb278ea50b3', logo: 'shop/logo-3.png', commodityLogo: 'shop/commodity-logo-3.png', cover: 'shop/cover-3.png', printUse: 'shop/print/print-3-1.png', print: 'shop/print/print-3-2.png', name: '儿童营地', title: ['儿童营地', '儿童营地入园购票', '儿童营地', '儿童营地', '儿童营地', '儿童营地接待区', '儿童营地'] },
......

503 Bytes | W: | H:

481 Bytes | W: | H:

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

5.47 KB | W: | H:

1019 Bytes | W: | H:

image/tabbar/service-s.png
image/tabbar/service-s.png
image/tabbar/service-s.png
image/tabbar/service-s.png
  • 2-up
  • Swipe
  • Onion skin

7.03 KB | W: | H:

990 Bytes | W: | H:

image/tabbar/service.png
image/tabbar/service.png
image/tabbar/service.png
image/tabbar/service.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -34,7 +34,7 @@ Page({
let funcData = response.data
// 获取自定义的字段
let funcCustom = JSON.parse(funcData.jsonData)
let funcCustom = funcData.jsonData ? JSON.parse(funcData.jsonData) : []
let funcCustomKey = []
let funcEnterInfo = this.enterInfoBuffer
......@@ -61,6 +61,8 @@ Page({
},
enterInfoCustom: funcCustomKey,
})
console.log(this.data.clubInfo)
}).catch((response) => {})
},
......@@ -82,10 +84,7 @@ Page({
case 'remark':
this.enterInfoBuffer.remark = funcValue
this.enterInfoBuffer.errorRemark = App.modular.rule.item('required', funcValue)
if (this.enterInfoBuffer.errorRemark !== '') {
this.enterInfoBuffer.errorRemark = '备注' + this.enterInfoBuffer.errorRemark
}
this.enterInfoBuffer.errorPhone = App.modular.rule.item('remarks', funcValue)
break
case 'other':
......@@ -99,7 +98,7 @@ Page({
this.setData({
enterInfo: this.enterInfoBuffer
})
if (this.enterInfoBuffer.name !== '' && this.enterInfoBuffer.phone !== '' && this.enterInfoBuffer.remark !== '') {
if (this.enterInfoBuffer.name !== '' && this.enterInfoBuffer.phone !== '') {
this.setData({
isButtonEnable: true
})
......@@ -119,6 +118,8 @@ Page({
funcPass = false
}
// 不需要校验的字段
if (['remark'].indexOf(funcEnterInfoKey[i]) < 0) {
// 常规字段验证,确保没有非空字段。
if (funcEnterInfoKey[i].indexOf('error') < 0 && this.data.enterInfo[funcEnterInfoKey[i]] === '') {
let funcEnterInfoCustom = this.data.enterInfoCustom
......@@ -140,11 +141,17 @@ Page({
funcPass = false
}
}
}
return funcPass
},
onEnter: function () {
if (!this.inspectForm()) return
App.ui.showToast({
iconType: 'loading',
title: '正在提交',
duration: 30000
})
let funcEnterInfo = this.data.enterInfo
let funcEnterInfoCustom = this.data.enterInfoCustom
......@@ -168,6 +175,7 @@ Page({
'smClub': { id: this.data.clubInfo.id }
}
}).then((response) => {
App.ui.hideToast()
wx.setStorageSync('tempBackInfo', 'winEnter')
wx.navigateBack()
}).catch((response) => {
......
......@@ -126,7 +126,8 @@ Page({
for (let i = 0, l = funcData.length; i < l; i++) {
let funcItem = {
'id': funcData[i].clubId,
'logo': funcData[i].logo,
'logo': funcData[i].logo ? funcData[i].logo : this.data.resourcesBase + 'other/default-1.png',
'cover': funcData[i].cover ? funcData[i].cover : this.data.resourcesBase + 'other/default-1.png',
'name': funcData[i].name,
'describe': funcData[i].summary,
'member': funcData[i].memberNum,
......
......@@ -44,7 +44,7 @@
<block wx:for="{{clubList}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="club-item row" data-item="{{item}}" bindtap="onClubDetail">
<view class="club-logo">
<image src="{{item.logo}}"></image>
<image src="{{item.cover}}"></image>
</view>
<view class="club-info column">
<view class="club-info-name row ac">
......
......@@ -19,6 +19,7 @@ Page({
clubInfo: {
'id': options.id,
'logo': '',
'cover': '',
'name': '',
'describe': '',
'member': '',
......@@ -65,6 +66,7 @@ Page({
clubInfo: {
'id': funcData.clubId,
'logo': funcData.logo,
'cover': funcData.cover,
'name': funcData.name,
'describe': funcData.summary,
'member': funcData.memberNum,
......
......@@ -16,7 +16,7 @@
<view class="container">
<view class="banner">
<image src=""></image>
<image src="{{clubInfo.cover}}"></image>
</view>
<view class="club-info row cc ac">
......
......@@ -212,6 +212,22 @@
margin-top: 48rpx;
}
/* 创建俱乐部成功提示 */
.submit-success {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .7);
}
.submit-success > image {
width: 606rpx;
height: 974rpx;
}
/* 权限提醒 */
.member-power {
z-index: 7;
......
......@@ -42,7 +42,7 @@
<!-- 原野mojito -->
<swiper-item>
<view class="shop-banner row con-c">
<image src="{{resourcesBase + 'commodity/home/shop-2.png'}}"></image>
<image src="{{resourcesBase + 'commodity/home/shop-3.png'}}"></image>
<button class="row con-c align-c" data-id="{{4}}" bindtap="onBuyFood"></button>
</view>
<view class="shop-menu">
......
<!--pages/mall/exchange-record/exchange-record.wxml-->
<text>pages/mall/exchange-record/exchange-record.wxml</text>
<m-toast></m-toast>
<m-dialog></m-dialog>
<m-nav titleText="兑换记录" scrollHeight="{{navScroll}}" styleIndex="{{1}}"></m-nav>
<view class="container bg-gradient">
<view class="record_list">
<view class="record_item column">
<view class="row cb ac">
<text class="font_main_26 color_tip">{{'订单编号:' + '1218712538775946059'}}</text>
<text class="font_main_26 color_warning">待发货</text>
</view>
<view class="record_item_info row ac">
<view class="record_item_info_cover">
<image src=""></image>
</view>
<view class="record_item_info_name row ac">
<text class="font_strong_30 color_main">新年限定故宫典藏款白鹤紫霄便签…</text>
</view>
<view class="record_item_info_price column ce ae">
<text class="font_strong_30 color_main">999 积分</text>
<text class="font_main_26 color_tip">x1</text>
</view>
</view>
<view class="record_item_operation row ce ac">
<button class="record_item_operation_logistics row cc ac">查看物流</button>
<button class="record_item_operation_confirm row cc ac">确认收货</button>
</view>
</view>
</view>
</view>
\ No newline at end of file
/* pages/mall/exchange-record/exchange-record.wxss */
\ No newline at end of file
.container {
width: 750rpx;
min-height: 100vh;
padding: 0 40rpx;
}
.record_list {
margin: 60rpx 0 0 0;
}
.record_item {
width: 670rpx;
height: 396rpx;
padding: 32rpx 32rpx 40rpx 32rpx;
border-radius: 4px;
background: #FFFFFF;
}
.record_item_info {
margin: 48rpx 0 0 0;
}
.record_item_info_cover {
width: 140rpx;
height: 136rpx;
margin: 0 32rpx 0 0;
background: #999999;
}
.record_item_info_name {
width: 256rpx;
max-height: 80px;
}
.record_item_info_price {
flex-grow: 1;
}
.record_item_operation {
margin: 48rpx 0 0 0;
}
.record_item_operation_logistics {
width: 120rpx;
height: 56rpx;
margin: 0 20rpx 0 0;
border-radius: 4px;
border: 1px solid #C2C7CF;
font-size: 22rpx;
font-weight: 500;
line-height: 32rpx;
color: #656E7B;
}
.record_item_operation_confirm {
width: 120rpx;
height: 56rpx;
border-radius: 4px;
border: 1px solid #86C5E1;
background: #86C5E1;
font-size: 22rpx;
font-weight: 500;
line-height: 32rpx;
color: #FFFFFF;
}
\ No newline at end of file
let App = getApp()
Page({
userInfoBuffer: {
'name': '',
'phone': '',
'errorName': '',
'errorPhone': '',
},
data: {
isExpress: true,
exchangeQuantity: 2,
errorQuantity: '',
shopInfo: {}, // 取货门店
goodsInfo: {}, // 兑换商品
userInfo: {}, // 取货信息
addressList: [], // 收货地址列表
addressSelection: {}, // 选择地址
exchangeForm: {},
},
onLoad: function (options) {
console.log(options)
this.setData({
goodsInfo: {
id: options.id
},
userInfo: this.userInfoBuffer
})
this.queryGoodsDetail()
this.queryUserAddress()
},
onShow: function () {
this.queryUserAddress()
},
/**
* 查询商品详情
* @function
* @returns
*/
queryGoodsDetail: function () {
App.request({
url: 'v3/integralGood/get',
params: {
'commodityId': this.data.goodsInfo.id
}
}).then((response) => {
let funcData = response.data
let funcGoodsInfo = {
'id': funcData.id,
'name': funcData.name,
'type': funcData.goodType, // 商品类型
'cover': funcData.coverImg,
'price': funcData.price,
'banner': funcData.imgs,
'notice': funcData.notification, // 使用须知
'content': funcData.particulars, // 详情
'describe': funcData.synopsis, // 描述
'shopIdUse': funcData.usedOfficeId, // 使用门店
'shopIdAscription': funcData.officeId, // 归属门店
'stockId': funcData.inventoryId, // 库存标识
'stockQuantity': funcData.number, // 库存剩余
'isExpress': Boolean(Number(funcData.expressType)), // 是否支持快递
}
this.setData({
goodsInfo: funcGoodsInfo
})
// 设置门店信息
let funcShopInfo = App.getShopInfo(this.data.goodsInfo.shopIdUse)
if (funcShopInfo.appId === 0) {
funcShopInfo.date = '门店整顿'
this.setData({
shopInfo: funcShopInfo
})
} else {
let funcPointInfo = App.globalData.pointInfo
for (let i = 0, l = funcPointInfo.length; i < l; i++) {
if (funcShopInfo.appId === funcPointInfo[i].appId) {
App.request({
url: 'v1/park/getDetail',
params: {
'id': funcPointInfo[i].id
}
}).then((response) => {
let funcData = response.data
funcShopInfo.date = funcData.businessTime
this.setData({
shopInfo: funcShopInfo
})
}).catch((response) => {})
}
}
}
}).catch((response) => {
})
},
/**
* 查询地址列表
* @function
* @returns
*/
queryUserAddress: function () {
App.request({
url: 'v3/shippingAddress/getAddressList',
params: {
'commodityId': this.data.goodsInfo.id
}
}).then((response) => {
let funcData = response.data
let funcList = []
for (let i = 0, l = funcData.length; i < l; i++) {
let funcItem = {
'id': funcData[i].id,
'name': funcData[i].name,
'area': funcData[i].area.replace(/,/g, ''),
'address': funcData[i].address,
'phone': funcData[i].mobile,
'default': Boolean(Number(funcData[i].defaultFlag)),
}
funcList.push(funcItem)
// 设置默认地址
if (funcItem.default) {
this.setData({
addressSelection: funcItem
})
}
}
this.setData({
addressList: funcList
})
}).catch((response) => {
})
},
/**
* 校验表单数据
* @function
* @returns
*/
inspectForm: function () {
let funcPass = true
let funcUserInfoKey = Object.keys(this.data.userInfo)
for (let i = 0, l = funcUserInfoKey.length; i < l; i++) {
// error 信息验证,如果存在非空字段,则表示有数据校验不通过。
if (funcUserInfoKey[i].indexOf('error') >= 0 && this.data.userInfo[funcUserInfoKey[i]]) {
funcPass = false
}
// 常规字段验证,确保没有非空字段。
if (funcUserInfoKey[i].indexOf('error') < 0 && this.data.userInfo[funcUserInfoKey[i]] === '') {
this.onInputBlur({ detail: { id: funcUserInfoKey[i], value: '' }})
funcPass = false
}
}
return funcPass
},
/**
* 地址选择
* @function
* @returns
*/
onAddressSelection: function () {
// 地址列表为空,默认添加。
if (this.data.addressList.length < 1) {
wx.navigateTo({ url: '/pages/mine/address-operate/address-operate' })
return
}
// 地址列表不为空,跳转选择地址。
wx.navigateTo({ url: '/pages/mine/address-list/address-list' })
},
/**
* 取货类型选择
* @function
* @returns
*/
onExpress: function () {
this.setData({
isExpress: !this.data.isExpress
})
console.log(this.data.isExpress)
},
/**
* 数量减少事件
* @function
* @returns
*/
onQuantityCut: function () {
if (0 < this.data.exchangeQuantity) {
this.setData({
exchangeQuantity: this.data.exchangeQuantity - 1,
errorQuantity: '',
})
}
},
/**
* 数量添加事件
* @function
* @returns
*/
onQuantityAdd: function () {
if (this.data.exchangeQuantity < this.data.goodsInfo.stockQuantity) {
this.setData({
exchangeQuantity: this.data.exchangeQuantity + 1,
errorQuantity: '',
})
}
},
/**
* 输入事件
* @function
* @returns
*/
onInputBlur: function(funcEvent) {
console.log(funcEvent)
let funcType = funcEvent.detail.id
let funcValue = funcEvent.detail.value
switch (funcType) {
case 'name':
this.userInfoBuffer.name = funcValue
this.userInfoBuffer.errorName = App.modular.rule.item('name', funcValue)
break
case 'phone':
this.userInfoBuffer.phone = funcValue
this.userInfoBuffer.errorPhone = App.modular.rule.item('phone', funcValue)
break
}
this.setData({
userInfo: this.userInfoBuffer
})
},
/**
* 立即兑换
* @function
* @returns
*/
onExchange: function () {
// 自取方式,校验表单数据
if (!this.data.isExpress) {
if (!this.inspectForm()) return
}
App.request({
url: 'v1/smUser/getIntegral',
}).then((response) => {
let funcData = response.data
// 积分不足提示
if (funcData.integral < this.data.goodsInfo.price * this.data.exchangeQuantity) {
App.ui.showDialog({
type: 'alert',
title: '积分余额不足,兑换失败',
content: '积分账户余额:' + funcData.integral + '积分',
confirm: '确定',
success: () => {},
fail: () => {},
})
return
}
// 积分充足下单确认
App.ui.showDialog({
type: 'confirm',
title: '确认消费' + (this.data.goodsInfo.price * this.data.exchangeQuantity) + '积分兑换该商品?',
content: '积分账户余额:' + funcData.integral + '积分',
cancel: '取消',
confirm: '确定',
success: () => {
let funcParams = {
'expressType': this.data.isExpress ? 1 : 0,
'integral': this.data.goodsInfo.price * this.data.exchangeQuantity,
'office': { 'id': this.data.goodsInfo.shopIdAscription },
'usedOffice': { 'id': this.data.goodsInfo.shopIdUse },
'smOrderDetails': [{
'smCommodity': { 'id': this.data.goodsInfo.id },
'smInventory': { 'id': this.data.goodsInfo.stockId },
'goodType': this.data.goodsInfo.type,
'name': this.data.goodsInfo.name,
'number': this.data.exchangeQuantity,
'unitPrice': this.data.goodsInfo.price,
'totalPrices': this.data.goodsInfo.price * this.data.exchangeQuantity
}],
'smPersonalDetails': [],
'name': this.data.userInfo.name,
'mobilePhone': this.data.userInfo.phone,
'goodType': this.data.goodsInfo.type,
}
if (this.data.isExpress) {
funcParams.shippingAddress = { 'id': this.data.addressSelection.id }
}
console.log(funcParams)
App.request({
url: 'v3/integral/doIntegral',
params: funcParams,
}).then((response) => {
let funcData = response.data
wx.reLaunch({ url: '/pages/mall/exchange-tip/exchange-tip?id=' + funcData.orderId })
}).catch((response) => {
})
},
fail: () => {
console.log('fail')
},
})
}).catch((response) => {
})
},
/**
* 页面滚动事件
* @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-toast></m-toast>
<m-dialog></m-dialog>
<m-nav titleText="确认订单" scrollHeight="{{navScroll}}" styleIndex="{{1}}"></m-nav>
<view class="container">
<!-- 领取方式 -->
<view class="option column">
<view class="option_list row cb ac">
<block wx:if="{{isExpress}}">
<view class="option_item option_item_selection row cc ac">
<image class="option_item_tick" src="{{imageBase + 'icon/tick-boundary-4.png'}}"></image>
<image class="option_item_icon" src="{{imageBase + 'icon/car-4.png'}}"></image>
<text>快递配送</text>
</view>
<view class="option_item row cc ac" bindtap="onExpress">
<image class="option_item_icon" src="{{imageBase + 'icon/shop-2.png'}}"></image>
<text>门店自提</text>
</view>
</block>
<block wx:if="{{!isExpress}}">
<view class="option_item row cc ac" bindtap="onExpress">
<image class="option_item_icon" src="{{imageBase + 'icon/car-2.png'}}"></image>
<text>快递配送</text>
</view>
<view class="option_item option_item_selection row cc ac">
<image class="option_item_tick" src="{{imageBase + 'icon/tick-boundary-4.png'}}"></image>
<image class="option_item_icon" src="{{imageBase + 'icon/shop-4.png'}}"></image>
<text>门店自提</text>
</view>
</block>
</view>
<view class="option_tip row ac" wx:if="{{isExpress}}">
<image class="icon_32" src="{{imageBase + 'icon/warning-4.png'}}"></image>
<text>快递运费自理,顺丰到付,12-23元不等</text>
</view>
</view>
<!-- 收货信息 -->
<block wx:if="{{isExpress}}">
<view class="address_info">
<view class="part_title">
<text>收货信息</text>
</view>
<view class="address_info_selection row ac" bindtap="onAddressSelection">
<view>
<image class="icon_40" src="{{imageBase + 'icon/location-1.png'}}"></image>
</view>
<!-- 等待添加地址 -->
<block wx:if="{{!addressSelection.id}}">
<view class="address_info_detail row ac">
<text class="address_info_detail_name">添加收货地址</text>
</view>
</block>
<!-- 已经选择地址 -->
<block wx:if="{{addressSelection.id}}">
<view class="address_info_detail cloumn">
<view class="row ac">
<text class="address_info_detail_name">{{addressSelection.name}}</text>
<text class="address_info_detail_phone">{{addressSelection.phone}}</text>
</view>
<view class="row">
<text class="address_info_detail_address">{{addressSelection.area + addressSelection.address}}</text>
</view>
</view>
</block>
<view>
<image class="icon_32" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
</view>
</view>
</view>
</block>
<!-- 取货门店 -->
<block wx:if="{{!isExpress}}">
<view class="shop">
<view class="part_title">
<text>取货门店</text>
</view>
<view class="shop_info row ac">
<image class="shop_info_cover" src="{{resourcesBase + shopInfo.cover}}"></image>
<view class="column">
<text class="shop_info_name">{{shopInfo.name}}</text>
<text class="shop_info_time">{{shopInfo.date}}</text>
</view>
</view>
</view>
</block>
<!-- 兑换商品 -->
<view class="goods">
<view class="part_title">
<text>兑换商品</text>
</view>
<view class="goods_list">
<view class="goods_item row ac">
<image class="goods_cover" src="{{goodsInfo.cover}}"></image>
<view class="column">
<text>{{goodsInfo.name}}</text>
<view class="goods_price row ac">
<text>{{goodsInfo.price}}</text>
<text> 积分</text>
</view>
</view>
</view>
</view>
<view class="goods_tip row ce ac">
<text>兑换须知</text>
<image class="icon_32" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
</view>
</view>
<!-- 兑换数量 -->
<view class="quantity">
<view class="part_title">
<text>选择兑换数量</text>
</view>
<view class="quantity_input row cb ac" style="padding: 0">
<button class="row cc ac" bindtap="onQuantityCut">
<image src="{{imageBase + 'icon/cut-1.png'}}"></image>
</button>
<text style="{{exchangeQuantity === 0 ? 'color: #C2C7CF' : 'color: #15191F'}}">{{exchangeQuantity}}</text>
<button class="row cc ac" bindtap="onQuantityAdd">
<image src="{{imageBase + 'icon/add-1.png'}}"></image>
</button>
</view>
<view class="quantity_stock row ce ac">
<text>剩余库存:</text>
<text>{{goodsInfo.stockQuantity}}</text>
</view>
</view>
<!-- 取货信息 -->
<block wx:if="{{!isExpress}}">
<view class="contact">
<view class="contact_title column">
<text>填写取货人信息</text>
<text>仅用于接收订单确认短信</text>
</view>
<view class="contact_input column">
<text class="contact_input_mark">姓名</text>
<m-input
inputId="name"
className="input row ac"
maxlength="50"
placeholder="请填写姓名"
bindblur="onInputBlur"
></m-input>
<text>{{userInfo.errorName}}</text>
</view>
<view class="contact_input column">
<text>手机号</text>
<m-input
inputId="phone"
className="input row ac"
maxlength="11"
type="number"
placeholder="请填写手机号"
bindblur="onInputBlur"
></m-input>
<text>{{userInfo.errorPhone}}</text>
</view>
</view>
</block>
<!-- 操作 -->
<view class="operation">
<view class="operation_tip row ac">
<image class="icon_32" src="{{imageBase + 'icon/warning-4.png'}}"></image>
<text>兑换后一经确认不得取消</text>
</view>
<view class="operation_next row cb ac">
<view class="operation_price row ac">
<text>1000</text>
<text>积分</text>
</view>
<view class="operation_button row cc ac">
<button class="row cc ac" bindtap="onExchange">立即兑换</button>
</view>
</view>
</view>
</view>
\ No newline at end of file
.container {
padding: 0 0 260rpx 0;
}
/* 领取方式 */
.option {
width: 750rpx;
margin: 70rpx 0 0 0;
padding: 0 40rpx;
}
.option_list {
width: 100%;
}
.option_item {
position: relative;
width: 320rpx;
height: 160rpx;
border-radius: 4px;
background: #F5F6F8;
font-size: 30rpx;
font-weight: 800;
color: #656E7B;
}
.option_item_icon {
width: 64rpx;
height: 64rpx;
margin: 0 12rpx 0 0;
}
.option_item_tick {
position: absolute;
right: 0;
bottom: 0;
width: 46rpx;
height: 46rpx;
}
.option_item_selection {
border: 3px solid #86C5E1;
box-shadow: 0px 4rpx 48rpx 0px rgba(25, 40, 47, 0.07);
background: #FFFFFF;
color: #5CB5DD;
}
.option_tip {
width: 670rpx;
height: 72rpx;
margin: 32rpx 0 0 0;
padding: 0 32rpx;
border-radius: 4px;
background: #F5EEDF;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #837048;
}
/* 收货信息 */
.part_title {
height: 48rpx;
margin: 64rpx 0 40rpx 0;
font-size: 34rpx;
font-weight: 800;
line-height: 48rpx;
color: #15191F;
}
.address_info_selection {
width: 670rpx;
height: 174rpx;
padding: 38rpx 32rpx 42rpx 32rpx;
border-radius: 4px;
background: #F5F6F8;
}
.address_info_detail {
flex-grow: 1;
margin: 0 32rpx;
}
.address_info_detail_name {
height: 42rpx;
margin: 0 20rpx 0 0;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
color: #15191F;
}
.address_info_detail_phone {
height: 36rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #959DA9;
}
.address_info_detail_address {
height: 36rpx;
margin: 16rpx 0 0 0;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #15191F;
}
/* 兑换门店 */
.shop {
width: 670rpx;
}
.shop_info {
width: 670rpx;
height: 216rpx;
padding: 40rpx 32rpx;
border-radius: 4px;
background: #F5F6F8;
}
.shop_info_cover {
width: 140rpx;
height: 136rpx;
margin: 0 32rpx 0 0;
background: #999999;
}
.shop_info_name {
height: 42rpx;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
color: #15191F;
}
.shop_info_time {
height: 36rpx;
margin: 16rpx 0 0 0;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #656E7B;
}
/* 兑换商品 */
.goods_item {
width: 670rpx;
height: 216rpx;
padding: 40rpx 32rpx;
border-radius: 4px;
background: #F5F6F8;
}
.goods_cover {
width: 140rpx;
height: 136rpx;
margin: 0 32rpx 0 0;
background: #999999;
}
.goods_price {
margin: 16rpx 0 0 0;
}
.goods_price > text:nth-child(1) {
height: 42rpx;
margin: 0 4rpx 0 0;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
color: #EF4F4F;
}
.goods_price > text:nth-child(2) {
height: 36rpx;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #15191F;
}
.goods_tip {
width: 670rpx;
margin: 24rpx 0 0 0;
}
.goods_tip > text {
height: 42rpx;
margin: 0 4rpx 0 0;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #656E7B;
}
/* 兑换数量 */
.quantity {
width: 670rpx;
}
.quantity_input {
width: 670rpx;
height: 80rpx;
margin-top: 32rpx;
padding: 20rpx 24rpx;
border: 1px #DBDFE5 solid;
border-radius: 2px;
}
.quantity_input button:nth-child(1) {
width: 76rpx;
height: 40rpx;
border-right: 1px #DBDFE5 solid;
background: #FFFFFF;
}
.quantity_input text {
font-size: 30rpx;
font-weight: 400;
color: #1E2025;
line-height: 80rpx;
}
.quantity_input button:nth-child(3) {
width: 76rpx;
height: 40rpx;
border-left: 1px #DBDFE5 solid;
background: #FFFFFF;
}
.quantity_input button > image {
width: 32rpx;
height: 32rpx;
}
.quantity_stock {
margin: 24rpx 0 0 0;
}
.quantity_stock > text:nth-child(1) {
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #656E7B;
}
.quantity_stock > text:nth-child(2) {
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #5DB5DD;
}
/* 取货信息 */
.contact {
width: 670rpx;
}
.contact_input > text:nth-child(1) {
height: 42rpx;
margin-top: 32rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #1E2025;
}
.contact_input .input {
width: 670rpx;
height: 80rpx;
margin: 16rpx 0 8rpx 0;
padding: 0 24rpx;
border-radius: 4rpx;
border: 1px solid #DBDFE5;
font-size: 30rpx;
font-weight: 400;
line-height: 32rpx;
color: #000000;
}
.contact_input > text:nth-child(3) {
height: 32rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #D92B3A;
}
.contact_title > text:nth-child(1) {
height: 48rpx;
font-size: 34rpx;
font-weight: 800;
line-height: 48rpx;
color: #15191F;
}
.contact_title > text:nth-child(2) {
height: 36rpx;
margin: 8rpx 0 20rpx 0;
font-size: 26rpx;
font-weight: 400;
line-height: 36rpx;
color: #959DA9;
}
/* 操作按钮 */
.operation {
position: fixed;
left: 0;
bottom: 0;
}
.operation_tip {
width: 750rpx;
height: 72rpx;
padding: 20rpx 40rpx;
background: #F5EEDF;
font-size: 22rpx;
font-weight: 400;
line-height: 32rpx;
color: #837048;
}
.operation_tip > image {
margin: 0 12rpx 0 0;
}
.operation_next {
width: 750rpx;
height: 128rpx;
padding: 32rpx 40rpx;
background: #FFFFFF;
}
.operation_price > text:nth-child(1) {
height: 42rpx;
margin: 0 8rpx 0 0;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
color: #EF4F4F;
}
.operation_price > text:nth-child(2) {
height: 36rpx;
font-size: 26rpx;
font-weight: 800;
line-height: 36rpx;
color: #15191F;
}
.operation_button > button {
width: 200rpx;
height: 80rpx;
border-radius: 4px;
background: #86C5E1;
font-size: 30rpx;
font-weight: 800;
line-height: 44rpx;
color: #FFFFFF;
}
\ No newline at end of file
// pages/mall/exchange-tip/exchange-tip.js
let App = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
exchangeInfo: {},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.setData({
exchangeInfo: { 'id': options.id }
})
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
onMall: function () {
wx.setStorageSync('tempOptions', 'exchange')
wx.switchTab({ url: '/pages/mine/home/home'})
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
onExchangeState: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
<!--pages/mall/exchange-tip/exchange-tip.wxml-->
<text>pages/mall/exchange-tip/exchange-tip.wxml</text>
<view class="container column cb ac">
<view class="tip column cc ac">
<image class="icon_136" src="{{imageBase + 'icon/tick-main.png'}}"></image>
<text class="tip_state">兑换成功</text>
</view>
<view class="cloumn">
<button class="operation_prev row cc ac" bindtap="onMall">返回积分商城</button>
<button class="operation_next row cc ac" bindtap="onExchangeState">查看订单</button>
</view>
</view>
\ No newline at end of file
/* pages/mall/exchange-tip/exchange-tip.wxss */
\ No newline at end of file
.container {
height: 100vh;
padding: 0 0 120rpx 0;
}
.tip {
flex-grow: 1;
}
.tip_state {
height: 64rpx;
margin: 24rpx 0 0 0;
font-size: 46rpx;
font-weight: 800;
line-height: 64rpx;
color: #15191F;
}
.operation_prev {
width: 670rpx;
height: 96rpx;
border-radius: 4px;
border: 1px solid #86C5E1;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
color: #86C5E1;
}
.operation_next {
width: 670rpx;
height: 96rpx;
margin: 40rpx 0 0 0;
border-radius: 4px;
background: #86C5E1;
font-size: 30rpx;
font-weight: 800;
line-height: 42px;
color: #FFFFFF;
}
\ No newline at end of file
let App = getApp()
Page({
data: {
banner: [],
bannerIndex: 0,
goodsInfo: {},
},
onLoad: function (options) {
this.setData({
goodsInfo: {
'id': options.id
}
})
this.queryGoodsDetail()
},
queryGoodsDetail: function () {
App.request({
url: 'v3/integralGood/get',
params: {
'commodityId': this.data.goodsInfo.id
}
}).then((response) => {
let funcData = response.data
let funcGoodsInfo = {
'id': funcData.id,
'name': funcData.name,
'cover': funcData.coverImg,
'price': funcData.price,
'banner': funcData.imgs,
'notice': funcData.notification, // 使用须知
'content': funcData.particulars, // 详情
'describe': funcData.synopsis, // 描述
'shopIdUse': funcData.usedOfficeId, // 使用门店
'shopIdAscription': funcData.officeId, // 归属门店
'stockId': funcData.inventoryId, // 库存标识
'stockQuantity': funcData.number, // 库存剩余
'isExpress': Boolean(Number(funcData.expressType)), // 是否支持快递
}
this.setData({
goodsInfo: funcGoodsInfo
})
}).catch((response) => {
})
},
onExchange: function () {
wx.navigateTo({ url: '/pages/mall/exchange-submit/exchange-submit?id=' + this.data.goodsInfo.id})
},
/**
* 页面滚动事件
* @function
* @param {object} - funcEvent
* @returns
*/
onPageScroll: function (funcEvent) {
App.pageScroll(funcEvent, this)
},
/**
......
<m-nav titleText="商品详情" scrollHeight="{{navScroll}}" isOccupy="{{false}}"></m-nav>
<view class="container">
<view id="banner" class="banner">
<swiper autoplay circular class="banner-swiper" indicator-dots="{{false}}" interval="2000" duration="500" bindchange="eventSwiperChange">
<block wx:for="{{banner}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<block wx:for="{{goodsInfo.banner}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<swiper-item class="banner-swiper-item">
<image class="banner-swiper-image" src="{{item}}"></image>
</swiper-item>
......@@ -14,4 +16,21 @@
<image src="/image/ornament-2.png" mode="widthFix"></image>
</view>
</view>
<view class="goods_info column ac">
<text class="goods_info_title">{{goodsInfo.name}}</text>
<text class="goods_info_describe">{{goodsInfo.describe}}</text>
<view class="goods_info_line"></view>
<text class="goods_info_content">{{goodsInfo.content}}</text>
</view>
<view class="goods_info_other row cb ac">
<view class="row ac">
<text class="goods_info_price">{{goodsInfo.price}}</text>
<text class="goods_info_unit">积分</text>
</view>
<view class="operation">
<button class="row cc ac" bindtap="onExchange">去兑换</button>
</view>
</view>
</view>
\ No newline at end of file
......@@ -34,3 +34,87 @@
width: 750rpx;
height: 60rpx;
}
/* 详情 */
.goods_info {
width: 750rpx;
padding: 0 40rpx;
}
.goods_info_title {
width: 670rpx;
min-height: 76rpx;
margin: 64rpx 0 0 0;
font-size: 54rpx;
font-weight: 800;
line-height: 76rpx;
color: #15191F;
}
.goods_info_describe {
width: 670rpx;
min-height: 50rpx;
margin: 32rpx 0 0 0;
font-size: 30rpx;
font-weight: 300;
line-height: 50rpx;
color: #959DA9;
}
.goods_info_line {
width: 670rpx;
height: 1px;
margin: 56rpx 0;
background: #E2E7EF;
}
.goods_info_content {
width: 670rpx;
min-height: 300rpx;
font-size: 30rpx;
font-weight: 300;
line-height: 50rpx;
color: #15191F;
}
/* 去兑换 */
.goods_info_other {
position: fixed;
bottom: 0;
left: 0;
width: 750rpx;
height: 128rpx;
padding: 0 40rpx;
border-top: 1px #E2E7EF solid;
}
.goods_info_price {
height: 44rpx;
margin: 0 8rpx 0 0;
font-size: 34rpx;
font-weight: 800;
line-height: 44rpx;
color: #EF4E4E;
}
.goods_info_unit {
height: 44rpx;
font-size: 34rpx;
font-weight: 800;
line-height: 44rpx;
color: #15191F;
}
.operation > button {
width: 200rpx;
height: 80rpx;
border-radius: 4px;
background: #86C5E1;
font-size: 30rpx;
font-weight: 800;
line-height: 44rpx;
color: #FFFFFF;
}
\ No newline at end of file
......@@ -25,12 +25,10 @@ Page({
},
onLoad: function (options) {
this.setData({
integral: options.integral
})
this.setTabCommodity()
this.queryRecommend()
this.queryAllGoods()
this.queryIntegral()
},
/**
......@@ -57,7 +55,7 @@ Page({
// 设置专场标题
let funcRecommendTitle = this.data.recommendTitle
switch (funcItem.text) {
switch (funcItem.value) {
case '304':
funcRecommendTitle['1'] = funcItem.text
this.setData({
......@@ -72,11 +70,7 @@ Page({
})
break
}
console.log(funcRecommendTitle)
}
console.log(funcList)
this.setData({
tabItemCommodity: this.data.tabItemCommodity.concat(funcList)
})
......@@ -90,6 +84,7 @@ Page({
* @returns
*/
queryRecommend: function () {
// 这里的参数以及添加 funcRecommendList 数据位置是固定的
App.request({
url: 'v3/integralGood/getGoodList',
params: {
......@@ -112,7 +107,7 @@ Page({
}
let funcRecommendList = this.data.recommendList
funcRecommendList['0'] = funcList
funcRecommendList['1'] = funcList
this.setData({
recommendList: funcRecommendList
})
......@@ -140,7 +135,7 @@ Page({
}
let funcRecommendList = this.data.recommendList
funcRecommendList['1'] = funcList
funcRecommendList['0'] = funcList
this.setData({
recommendList: funcRecommendList
})
......@@ -185,8 +180,43 @@ Page({
}).catch((response) => { })
},
/**
* 查询积分
* @function
* @param {object} - funcEvent
* @returns
*/
queryIntegral: function () {
App.request({
url: 'v1/smUser/getIntegral',
}).then((response) => {
let funcData = response.data
this.setData({
integral: funcData.integral
})
}).catch((response) => {
})
},
/**
* 商品详情
* @function
* @param {object} - funcEvent
* @returns
*/
onGoodsDetail: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
wx.navigateTo({ url: '/pages/mall/goods/goods?id=' + funcItem.id })
},
/**
* tab 类型选择
* @function
* @param {object} - funcEvent
* @returns
*/
onTabChangeCommodity: function (funcEvent) {
console.log(funcEvent)
this.setData({
goodsAllList: [],
tabGoodsIndex: funcEvent.detail.index
......@@ -194,8 +224,13 @@ Page({
this.queryAllGoods()
},
/**
* tab 积分选择
* @function
* @param {object} - funcEvent
* @returns
*/
onTabChangePrice: function (funcEvent) {
console.log(funcEvent)
this.setData({
goodsAllList: [],
tabPriceIndex: funcEvent.detail.index
......
......@@ -25,14 +25,14 @@
<view class="recommend">
<view class="recommend_card">
<view class="recommend_title">
<text>亲自专场</text>
<text>{{recommendTitle['0']}}</text>
</view>
<view class="recommend_list">
<block wx:for="{{recommendList['0']}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="recommend_item">
<view class="recommend_item" data-item="{{item}}" bindtap="onGoodsDetail">
<view class="recommend_item_info column">
<image src="{{item.cover}}"></image>
<text class="recommend_item_info_name">{{item.name}}</text>
<image src="{{item.cover}}" mode="aspectFill"></image>
<text class="recommend_item_info_name text_overflow_point">{{item.name}}</text>
<view class="recommend_item_info_price row ac">
<text>{{item.price}}</text>
<text>积分</text>
......@@ -48,14 +48,14 @@
<view class="recommend">
<view class="recommend_card">
<view class="recommend_title">
<text>亲自专场</text>
<text>{{recommendTitle['1']}}</text>
</view>
<view class="recommend_list">
<block wx:for="{{recommendList['1']}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="recommend_item">
<view class="recommend_item" data-item="{{item}}" bindtap="onGoodsDetail">
<view class="recommend_item_info column">
<image src="{{item.cover}}"></image>
<text class="recommend_item_info_name">{{item.name}}</text>
<image src="{{item.cover}}" mode="aspectFill"></image>
<text class="recommend_item_info_name text_overflow_point">{{item.name}}</text>
<view class="recommend_item_info_price row ac">
<text>{{item.price}}</text>
<text>积分</text>
......@@ -90,9 +90,9 @@
<view class="routine_list">
<block wx:for="{{goodsAllList}}" wx:for-item="item" wx:for-index="index" wx:key="index">
<view class="routine_item">
<view class="routine_item" data-item="{{item}}" bindtap="onGoodsDetail">
<view class="routine_item_info column">
<image src="{{item.cover}}"></image>
<image src="{{item.cover}}" mode="aspectFill"></image>
<view class="routine_item_info_name row as">
<text>{{item.name}}</text>
</view>
......
......@@ -101,6 +101,7 @@
}
.recommend_item_info_name {
max-width: 208rpx;
height: 44rpx;
margin: 20rpx 0 0 0;
font-size: 26rpx;
......
......@@ -17,7 +17,7 @@ Page({
nameError: false,
phoneError: false,
addressError:false,
addressError: false,
},
/**
......@@ -39,7 +39,7 @@ Page({
phone: param.detail.mobile,
region: param.detail.area.split(','),
address: param.detail.address,
isDefault: param.detail.defaultFlag*1 == 1
isDefault: param.detail.defaultFlag * 1 == 1
})
}
}
......@@ -166,7 +166,7 @@ Page({
mobile: this.data.phone,
area: regionStr,
address: this.data.address,
defaultFlag: this.data.isDefault?1:0,
defaultFlag: this.data.isDefault ? 1 : 0,
}
if (this.data.operate === 'edit') {
......@@ -190,7 +190,7 @@ Page({
title: '提交成功',
duration: 2000
})
setTimeout(()=>{
setTimeout(() => {
wx.navigateBack()
}, 2000)
} else {
......@@ -232,13 +232,13 @@ Page({
title: '删除成功',
duration: 2000
})
setTimeout(()=>{
setTimeout(() => {
wx.navigateBack()
}, 2000)
}
})
},
fail: () => { },
fail: () => {},
})
}
......
......@@ -4,16 +4,10 @@
<view class="container">
<view class="address_info">
<view class="address_item bottom_line">
<view class="row ac">
<text class="title">收货人</text>
<m-input
inputId="name"
className="address_item_input row ac"
value="{{name}}"
placeholder="请输入"
maxlength="20"
<m-input inputId="name" className="address_item_input row ac" value="{{name}}" placeholder="请输入" maxlength="20"
bindblur="onInputBlur">
</m-input>
</view>
......@@ -25,14 +19,8 @@
<view class="address_item bottom_line">
<view class="row ac">
<text class="title">手机号</text>
<m-input
inputId="phone"
className="address_item_input row ac"
value="{{phone}}"
placeholder="请输入"
maxlength="11"
type="number"
bindblur="onInputBlur">
<m-input inputId="phone" className="address_item_input row ac" value="{{phone}}" placeholder="请输入"
maxlength="11" type="number" bindblur="onInputBlur">
</m-input>
</view>
<text class="text_error" wx:if="{{phoneError}}">请填写手机号</text>
......@@ -40,11 +28,7 @@
<view class="address_item row ac bottom_line">
<text class="title">所在地区</text>
<picker
class="address_item_picker"
mode="region"
bindchange="onRegionChange"
value="{{region}}">
<picker class="address_item_picker" mode="region" bindchange="onRegionChange" value="{{region}}">
<view class="row ac cb">
<view>{{region[0]}}{{region[1]}}{{region[2]}}</view>
<image class="arrow-more" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
......@@ -55,23 +39,14 @@
<view class="address_item">
<view class="row ac">
<text class="title">详细地址</text>
<m-input
inputId="address"
className="address_item_input"
value="{{address}}"
placeholder="如街道、门牌号、小区、楼栋号等"
maxlength="30"
bindblur="onInputBlur">
</m-input>
<m-input inputId="address" className="address_item_input" value="{{address}}" placeholder="如街道、门牌号、小区、楼栋号等" maxlength="30" bindblur="onInputBlur"></m-input>
</view>
<text class="text_error" wx:if="{{addressError}}">请填写详细地址</text>
</view>
</view>
<view class="address_info top30rpx">
<view class="address_item row ac cb" >
<view class="address_item row ac cb">
<text class="title">设为默认地址</text>
<switch checked="{{isDefault}}" bindchange="onSwitchChange"></switch>
</view>
......@@ -79,5 +54,4 @@
<button class="button row con-c align-c top40rpx" bindtap="onSubmit">保存</button>
<button wx:if="{{operate === 'edit'}}" class="button-delete row con-c align-c" bindtap="onDelete">删除收货地址</button>
</view>
\ No newline at end of file
......@@ -2,9 +2,11 @@
min-height: 90vh;
background-color: #F8F8FA;
}
.bottom_line {
border-bottom: 1px #F8F8FA solid;
}
.top30rpx {
margin-top: 30rpx;
}
......@@ -18,17 +20,20 @@
padding: 0 40rpx;
background-color: #FFFFFF;
}
.address_item {
width: 670rpx;
min-height: 90rpx;
padding: 28rpx 0;
}
.title {
min-width: 150rpx;
font-size: 30rpx;
font-weight: 400;
color: #15191F;
}
.text_error {
font-size: 23rpx;
font-weight: 400;
......@@ -38,8 +43,8 @@
.address_item_input {
min-height: 42rpx;
width: 500rpx;
margin-left: 20rpx;
/* text-align: right; */
margin: 0 20rpx 0 0;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
......
......@@ -29,7 +29,6 @@ Page({
},
onLoad: function (options) {
console.log(options)
switch (options.tab) {
case 'active':
options.tab = 0
......@@ -241,7 +240,7 @@ Page({
App.wxRequest({
url: 'v1/activity/getMyActivityList',
data: {
'activeState': '', //""全部 0 未开始 1进行中 2已结束
'activeState': '',
'pageSize': this.data.pageSize,
'pageNo': this.data.pageNo,
'type': '1'
......
......@@ -71,7 +71,12 @@ Page({
this.setData({
examineList: funcList
})
}).catch((response) => {})
}).catch((response) => {
App.ui.showToast({
iconType: 'error',
title: response.message,
})
})
},
/**
......@@ -140,13 +145,21 @@ Page({
onExamineRefuse: function (funcEvent) {
App.ui.showDialog({
type: 'input',
title: '是否确认审核通过?',
content: '审核通过后无法恢复',
title: '是否确认审核通过?',
content: '审核通过后无法恢复',
cancel: '取消',
confirm: '确定',
placeholder: '不通过原因',
success: (response) => {
let funcItem = funcEvent.currentTarget.dataset.item
if (response.input === '') {
App.ui.showToast({
iconType: 'error',
title: '请填不通过原因',
})
return
}
App.request({
url: 'v3/club/doAuditJoin',
params: {
......@@ -155,6 +168,10 @@ Page({
'joinClubAuditId': funcItem.idExamine,
}
}).then((response) => {
App.ui.showToast({
iconType: 'success',
title: '操作成功',
})
this.setData({
examineList: []
})
......
......@@ -9,6 +9,9 @@ Page({
clubList: [],
pageIndex: 1,
pageSize: 5,
adminInfo: {},
winAdminInfo: false,
},
onLoad: function (options) {
......@@ -108,6 +111,7 @@ Page({
})
this.setData({
clubList: [],
pageIndex: 1,
})
this.queryClubEnter()
}).catch((response) => {})
......@@ -133,6 +137,7 @@ Page({
})
this.setData({
clubList: [],
pageIndex: 1,
})
this.queryClubEstablish()
}).catch((response) => {})
......@@ -234,6 +239,51 @@ Page({
}
},
/**
* 查看俱乐部管理员微信
* 仅在审核待通过的情况下
* @function
* @param {object} - funcEvent
* @returns
*/
onAdminInfo: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
App.request({
url: 'v3/club/getClubAdmin',
params: {
'clubId': funcItem.id,
}
}).then((response) => {
}).catch((response) => {})
this.setData({
adminInfo: {
wx: funcItem.wx
},
winAdminInfo: true
})
},
onAdminInfoClose: function () {
this.setData({
winAdminInfo: false
})
},
/**
* 跳转俱乐部详情
* 仅在审核为通过的情况下
* @function
* @param {object} - funcEvent
* @returns
*/
onClubInfo: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
wx.navigateTo({ url: '/pages/club/information/information?id=' + funcItem.id })
},
onExamine: function (funcEvent) {
let funcItem = funcEvent.currentTarget.dataset.item
wx.navigateTo({ url: '/pages/mine/club-manage/club-manage?id=' + funcItem.id })
......
......@@ -21,13 +21,13 @@
<text>{{item.name}}</text>
<text class="owner-mark" wx:if="{{item.isOwner}}">业主专享</text>
</view>
<view class="club-info-other row cb ae">
<view class="club-info-other row cb ae" data-item="{{item}}" bindtap="onAdminInfo">
<view class="club-info-examine column">
<text>{{item.date + ' 提交申请'}}</text>
<text>{{'审核待通过'}}</text>
</view>
<view class="club_operation row cb ae">
<button class="row cc ac" data-item="{{item}}" bindtap="onCancel">取消申请</button>
<button class="row cc ac" data-item="{{item}}" catchtap="onCancel">取消申请</button>
</view>
</view>
</view>
......@@ -41,18 +41,18 @@
<text>{{item.name}}</text>
<text class="owner-mark" wx:if="{{item.isOwner}}">业主专享</text>
</view>
<view class="club-info-other row cb ae">
<view class="club-info-other row cb ae" data-item="{{item}}" bindtap="onClubInfo">
<view class="club_info_member column">
<text>{{item.member + ' 成员'}}</text>
<text wx:if="{{tabIndex === 0}}">{{item.date + ' 加入'}}</text>
<text wx:if="{{tabIndex === 1}}">{{item.date + ' 创建'}}</text>
</view>
<view class="club_operation row cb ae">
<block wx:if="{{item.examine}}" >
<block wx:if="{{item.examine > 0}}" >
<view class="club_operation_examine row cc ac">
<text>{{item.examine}}</text>
</view>
<button class="row cc ac"data-item="{{item}}" bindtap="onExamine">入会审核</button>
<button class="row cc ac"data-item="{{item}}" catchtap="onExamine">入会审核</button>
</block>
</view>
</view>
......@@ -67,13 +67,13 @@
<text>{{item.name}}</text>
<text class="owner-mark" wx:if="{{item.isOwner}}">业主专享</text>
</view>
<view class="club-info-other row cb ae">
<view class="club-info-other row cb ae" data-item="{{item}}" bindtap="onClubInfo">
<view class="club-info-examine column">
<text>{{item.date + ' 提交申请'}}</text>
<text>{{'审核未通过'}}</text>
</view>
<view class="club_operation row cb ae">
<button class="row cc ac" data-item="{{item}}" bindtap="onDelete">删除</button>
<button class="row cc ac" data-item="{{item}}" catchtap="onDelete">删除</button>
</view>
</view>
</view>
......@@ -94,3 +94,13 @@
</block>
</view>
</view>
<!-- 管理员微信弹窗 -->
<view class="member-admin row cc ac" hidden="{{!winAdminInfo}}">
<view class="member_admin_info col cc ac">
<text>管理员微信</text>
<image src="{{adminInfo.wx}}"></image>
<text>【长按保存二维码】</text>
<button class="row cc ac" bindtap="onAdminInfoClose">我知道了</button>
</view>
</view>
\ No newline at end of file
......@@ -159,3 +159,60 @@
line-height: 42px;
color: #FFFFFF;
}
/* 管理员微信弹窗 */
.member-admin {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .7);
}
.member_admin_info {
width: 606rpx;
height: 726rpx;
padding: 56rpx 40rpx 48rpx 40rpx;
border-radius: 4px;
background: #FFFFFF;
}
.member_admin_info > text:nth-child(1) {
height: 72rpx;
font-size: 50rpx;
font-weight: 800;
line-height: 72rpx;
color: #15191F;
}
.member_admin_info > image {
width: 296rpx;
height: 296rpx;
margin-top: 48rpx;
background: #999999;
}
.member_admin_info > text:nth-child(3) {
height: 46rpx;
margin: 32rpx 0 0 0;
font-size: 26rpx;
font-weight: 400;
line-height: 46rpx;
color: #15191F;
}
.member_admin_info > button {
width: 526rpx;
height: 80rpx;
margin-top: 48rpx;
border-radius: 4px;
border: 1px solid #15191F;
font-size: 30rpx;
font-weight: 500;
line-height: 42rpx;
color: #15191F;
}
\ No newline at end of file
......@@ -78,42 +78,29 @@ Page({
appointmentOtherListBuffer: [], // 其他预约列表,页面不渲染此数组。
isMoreAppointment: false,
clubExamine: 0,
mobile: '',
nickName: '',
avatarUrl: '/pages/mine/home/image/avatar.png',
statusText: '去认证',
mask: false,
type: 0, //判断是否是认证的了
approveList: ['园区门票优惠', '餐厅价格优惠', 'SPA服务优惠', '免费观看电影', '无须预约入园', '尽享多重特权'],
activityList: [],
activityListBackup: [],
// 右上角消息
passBadge: 0,
foodBadge: 22,
movieBadge: 1,
spaBadge: 0,
artBadge: 101,
myOrder: {
passOrder: [],
artOrder: {
logo: '',
orderList: []
}
},
orderListBackup: [],
integral: 0, //积分
shopConfig: App.globalData.shopId,
isMonthCard: false,
authInfo: null,
},
onLoad: function (options) {
let funcOptions = wx.getStorageSync('tempOptions')
switch (funcOptions) {
case 'exchange':
wx.removeStorageSync('tempOptions')
this.onIntegralDetail()
break
}
},
onShow: function () {
this.setData({
clubExamine: wx.getStorageSync('clubExamine'),
isMoreOrder: false,
isMoreActivity: false,
})
......@@ -506,13 +493,11 @@ Page({
* @param
* @returns
*/
onIntegralDetail: function (funcEvent) {
let funcIntegral = funcEvent.currentTarget.dataset.integral
onIntegralDetail: function () {
// wx.navigateTo({
// url: '/pages/mine/accumulate/accumulate?integral=' + integral,
// })
wx.navigateTo({ url: '/pages/mall/home/home?integral=' + funcIntegral })
wx.navigateTo({ url: '/pages/mall/home/home' })
},
/**
......
......@@ -267,7 +267,12 @@
<!-- 我的俱乐部 -->
<view class="club row con-b align-c" bindtap="onToClub">
<view class="club_enter">
<text>我的俱乐部</text>
</view>
<view class="club_examine row cc ac">
<text>{{clubExamine}}</text>
</view>
<image class="icon" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
</view>
......
......@@ -521,7 +521,31 @@
border-radius: 4rpx;
}
.club text,
.club_enter {
flex-grow: 1;
}
.club_examine {
min-width: 32rpx;
height: 32rpx;
margin: 0 8rpx 0 0;
border-radius: 16rpx;
background: #E66060;
}
.club_enter > text {
font-size: 34rpx;
color: #15191f;
font-weight: 600;
}
.club_examine > text {
font-size: 22rpx;
line-height: 32rpx;
text-align: right;
color: #FFFFFF;
}
.service text {
font-size: 34rpx;
color: #15191f;
......
......@@ -46,8 +46,6 @@ Page({
},
onShow: function () {
console.log(this.data.isDoing)
this.setData({
orderPages: 1,
orderList: [],
......
<m-toast></m-toast>
<m-dialog></m-dialog>
<!-- 订单分类选择 -->
<view class="order-category row as" style="{{'height: ' + cssCategoryHeight + 'px;padding-top: ' + cssCategoryTop + 'px;'}}">
<view class="row cb ac">
......
......@@ -1080,7 +1080,7 @@ Page({
},
}).then((response) => {
let funcData = response.data
pagePayId = funcResponse.orderId
pagePayId = funcData.orderId
this.setData({
orderId: pagePayId
})
......
......@@ -149,6 +149,7 @@ Page({
let funcItem = {
'id': funcData[i].clubId,
'logo': funcData[i].logo,
'cover': funcData[i].cover,
'name': funcData[i].name,
'describe': funcData[i].summary,
'member': funcData[i].memberNum,
......
......@@ -98,7 +98,7 @@
<block wx:for="{{clubList}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="club-item row cc" data-item="{{item}}" bindtap="onClubDetail">
<view class="club-item-info column ac">
<image src="{{item.logo}}"></image>
<image src="{{item.cover}}"></image>
<text class="club-item-info-name">{{item.name}}</text>
<text class="club-item-info-owner owner-mark" wx:if="{{item.isOwner}}">业主专享</text>
</view>
......
......@@ -390,7 +390,7 @@
<text class="color-white">分</text>
</view>
<view class="evaluate-option-item row align-c">
<image src="{{imageBase + 'icon/shop-2.png'}}"></image>
<image src="{{imageBase + 'icon/shop-3.png'}}"></image>
<text>产品</text>
<text class="color-white">{{officeProductText}}</text>
<text class="color-white">分</text>
......
......@@ -94,7 +94,7 @@ let Output = {
'identity': function (value) {
let funMessage = ''
if (value !== '') {
let funRegExp = new RegExp('^[1-9][0-9]{5}(18|19|20)[0-9]{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]$', 'g')
let funRegExp = new RegExp('^1(3([0-35-9]\d|4[1-8])|4[14-9]\d|5([0125689]\d|7[1-79])|66\d|7[2-35-8]\d|8\d{2}|9[13589]\d)\d{7}$', 'g')
let funcRegExp = funRegExp.test(value)
if (!funcRegExp) {
funMessage = '请输入正确的身份证号码'
......@@ -118,6 +118,17 @@ let Output = {
}
return funMessage
},
/**
* 备注
* @function
* @param {string} value
* @returns {string}
*/
'remarks': function (value) {
let funMessage = ''
return funMessage
},
}
export default Output
\ No newline at end of file
......@@ -15,21 +15,11 @@ textarea {
box-sizing: border-box !important;
}
button {
display: inline-block;
margin: 0;
padding: 0;
border-radius: 0rpx;
line-height: 2.4;
}
button::after {
border: none;
}
.toast-image {
width: 80rpx;
height: 80rpx;
}
/* 去除滚动条 */
::-webkit-scrollbar{display: none;}
::-webkit-scrollbar {
display: none;
}
/* 常规颜色 */
.color_main {
color: #15191F;
}
/* 提示颜色 */
.color_tip {
color: #959DA9;
}
/* 警告颜色 */
.color_warning {
color: #E66060;
}
/* 取消颜色 */
.color_cancel {
color: #656E7B;
}
/* 确定颜色 */
.color_submit {
color: #FFFFFF;
}
.font_main_26 {
font-size: 26rpx;
font-weight: 500;
line-height: 36rpx;
}
.font_main_30 {
font-size: 30rpx;
font-weight: 500;
line-height: 40rpx;
}
/* 加粗文本 */
.font_strong_26 {
font-size: 26rpx;
font-weight: 800;
line-height: 36rpx;
}
.font_strong_30 {
font-size: 30rpx;
font-weight: 800;
line-height: 40rpx;
}
\ No newline at end of file
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