Commit 22a1b21a by 严立

LL - 1023正式审核同步版本

parent 4f18479b
...@@ -61,7 +61,7 @@ App({ ...@@ -61,7 +61,7 @@ App({
success: (response) => { success: (response) => {
let funcResponse = response.data let funcResponse = response.data
this.globalData.appStatus = Boolean(Number(funcResponse[0].value)) this.globalData.appStatus = Boolean(Number(funcResponse[0].value))
this.globalData.appStatus = true // this.globalData.appStatus = true
} }
}) })
}, },
...@@ -188,7 +188,7 @@ App({ ...@@ -188,7 +188,7 @@ App({
'avatar': funcResponse.avatarUrl, 'avatar': funcResponse.avatarUrl,
'address': funcResponse.address, 'address': funcResponse.address,
'birthday': funcResponse.birthday, 'birthday': funcResponse.birthday,
'sex': funcResponse.sex, 'gender': funcResponse.sex ? Number(funcResponse.sex) : 0,
'userType': Number(funcResponse.userType), 'userType': Number(funcResponse.userType),
'status': '', // 只有游客身份该值为 '' 'status': '', // 只有游客身份该值为 ''
'isSignIn': false, 'isSignIn': false,
......
{ {
"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",
...@@ -56,11 +54,12 @@ ...@@ -56,11 +54,12 @@
"pages/club/member/member", "pages/club/member/member",
"pages/club/create/create", "pages/club/create/create",
"pages/club/enter/enter", "pages/club/enter/enter",
"pages/login/login" "pages/login/login"
], ],
"usingComponents": { "usingComponents": {
"m-button-bottom": "./component/m-button-bottom/m-button-bottom", "m-button-bottom": "./component/m-button-bottom/m-button-bottom",
"m-checkbox": "./component/m-checkbox/m-checkbox",
"m-dialog": "./component/m-dialog/m-dialog", "m-dialog": "./component/m-dialog/m-dialog",
"m-input": "./component/m-input/m-input", "m-input": "./component/m-input/m-input",
"m-nav": "./component/m-nav/m-nav", "m-nav": "./component/m-nav/m-nav",
...@@ -69,13 +68,8 @@ ...@@ -69,13 +68,8 @@
"m-toast": "./component/m-toast/m-toast", "m-toast": "./component/m-toast/m-toast",
"parser": "./component/parser.min/parser", "parser": "./component/parser.min/parser",
"swiper-point": "./component/swiper-point/swiper-point", "swiper-point": "./component/swiper-point/swiper-point",
"l-avatar": "./miniprogram_npm/lin-ui/avatar/index",
"l-checkbox": "./miniprogram_npm/lin-ui/checkbox/index",
"l-checkbox-group": "./miniprogram_npm/lin-ui/checkbox-group/index",
"l-icon": "./miniprogram_npm/lin-ui/icon/index", "l-icon": "./miniprogram_npm/lin-ui/icon/index",
"l-list": "./miniprogram_npm/lin-ui/list/index",
"l-mask": "./miniprogram_npm/lin-ui/mask/index",
"l-arc-popup": "./miniprogram_npm/lin-ui/arc-popup/index",
"l-collapse": "./miniprogram_npm/lin-ui/collapse/index", "l-collapse": "./miniprogram_npm/lin-ui/collapse/index",
"l-collapse-item": "./miniprogram_npm/lin-ui/collapse-item/index", "l-collapse-item": "./miniprogram_npm/lin-ui/collapse-item/index",
"l-textarea": "./miniprogram_npm/lin-ui/textarea/index", "l-textarea": "./miniprogram_npm/lin-ui/textarea/index",
......
let App = getApp()
Component({
options: {
styleIsolation: 'apply-shared'
},
properties: {
// valid - 有效状态,neutral - 中立状态,仅在 type 为 group 时生效,invalid - 无效状态
icon: {
type: Object,
value: {
valid: './image/valid.png',
neutral: './image/neutral.png',
invalid: './image/invalid.png',
},
},
//
index: {
type: Number,
value: 0,
},
// 选择状态
selection: {
type: Boolean,
value: false,
},
},
data: {
currentIcon: '',
},
lifetimes: {
attached: function () {
this.setState()
},
},
observers: {
'selection': function (funvValue) {
this.setState()
},
},
methods: {
setState: function () {
this.setData({
currentIcon: this.data.selection ? this.data.icon.valid : this.data.icon.invalid
})
},
onSelection: function () {
let funcSelection = !this.data.selection
this.setData({
selection: funcSelection,
currentIcon: funcSelection ? this.data.icon.valid : this.data.icon.invalid
})
this.triggerEvent('change', { 'index': this.data.index, 'selection': this.data.selection })
},
}
})
{ {
"component": true, "component": true,
"usingComponents": {} "usingComponents": {}
} }
\ No newline at end of file
<view class="m_checkbox">
<image src="{{currentIcon}}" bindtap="onSelection"></image>
</view>
\ No newline at end of file
.m_checkbox {
width: 40rpx;
height: 40rpx;
}
.m_checkbox > image {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
}
...@@ -3,9 +3,23 @@ Component({ ...@@ -3,9 +3,23 @@ Component({
styleIsolation: 'apply-shared' styleIsolation: 'apply-shared'
}, },
properties: { properties: {
inputId: { type: String, value: '' }, // 组件独立标识,此参数会在 event 中返回
className: { type: String, value: '' }, inputId: {
placeholder: { type: String, value: '' }, type: String,
value: ''
},
// input 样式类名
className: {
type: String,
value: ''
},
placeholder: {
type: String,
value: ''
},
value: { value: {
type: String, type: String,
......
...@@ -15,5 +15,5 @@ ...@@ -15,5 +15,5 @@
} }
.container-input { .container-input {
color: red; color: #15191F;
} }
\ No newline at end of file
// picker/picker.js
import { isPlainObject } from './tool'
Component({
/**
* 组件的属性列表
*/
properties: {
scrollType: {
type: String,
value: 'normal'// "link": scroll间联动 "normal": scroll相互独立
},
listData: {
type: Array,
value: [],
observer: function(newVal) {
if (newVal.length === 0 || this._compareDate()) return
this._setTempData()
const tempArr = [...new Array(newVal.length).keys()].map(() => 0)
this.data.lastValue = this.data.tempValue = tempArr
this._setDefault()
// let {defaultPickData} = this.properties;
// if(newVal.length === 0) return;
//
// this._setDefault(newVal, defaultPickData)
}
},
defaultPickData: {
type: Array,
value: [],
observer: function(newVal) {
if (newVal.length === 0 || this._compareDate()) return
this._setTempData()
this._setDefault()
}
},
keyWordsOfShow: {
type: String,
value: 'name'
},
isShowPicker: {
type: Boolean,
value: false,
observer: function(newVal) {
if (newVal) {
this._openPicker()
} else {
this._closePicker()
}
}
},
titleText: {// 标题文案
type: String,
value: '标题'
},
cancelText: {// 取消按钮文案
type: String,
value: '取消'
},
sureText: {// 确定按钮文案
type: String,
value: '确定'
},
pickerHeaderStyle: String, // 标题栏样式 view
sureStyle: String, // 标题栏确定样式 text
cancelStyle: String, // 标题栏取消样式 text
titleStyle: String, // 标题栏标题样式 view
maskStyle: String, // 设置蒙层的样式(详见picker-view) view
indicatorStyle: String, // 设置选择器中间选中框的样式(详见picker-view) view
chooseItemTextStyle: String// 设置picker列表文案样式 text
},
/**
* 组件的初始数据
*/
data: {
columnsData: [],
value: [],
backData: [],
height: 0,
isOpen: false,
isUseKeywordOfShow: false,
scrollEnd: true, // 滚动是否结束
lastValue: [], // 上次各个colum的选择索引
tempValue: [],
isFirstOpen: true,
onlyKey: '',
defaultPickDataTemp: '',
listDataTemp: ''
},
/**
* 组件的方法列表
*/
methods: {
tapModal() {
this.properties.isShowPicker = false
this._closePicker()
},
cancle() {
this.triggerEvent('cancle')
this._closePicker()
},
sure() {
const { scrollEnd, tempValue } = this.data
if (!scrollEnd) return
const backData = this._getBackDataFromValue(tempValue)
this.setData({
backData
})
this.triggerEvent('sure', {
choosedData: backData,
choosedIndexArr: tempValue
})
this._closePicker()
},
_bindChange(e) {
const { scrollType } = this.properties
const { lastValue } = this.data
let val = e.detail.value
switch (scrollType) {
case 'normal':
this.data.tempValue = val.concat()
this.data.tempValue = val.concat()
break
case 'link':
// let column_02 = this._getColumnData(this.properties.listData[val[0]].children);
// let column_03 = this._getColumnData(this.properties.listData[val[0]].children[val[1]].children);
var tempArray = []
if (val.length > 1) {
val.slice(0, val.length - 1).reduce((t, c, i) => {
const v = t[c].children
tempArray.push(this._getColumnData(v))
return v
}, this.properties.listData)
}
// let columnsData = [this.data.columnsData[0],column_02,column_03];
var columnsData = [this.data.columnsData[0], ...tempArray]
// 设置value关联
var compareIndex = this._getScrollCompareIndex(lastValue, val)
if (compareIndex > -1) {
let tempI = 1
while (val[compareIndex + tempI] !== undefined) {
val[compareIndex + tempI] = 0
tempI++
}
}
val = this._validate(val)
this.data.lastValue = val.concat()
this.data.tempValue = val.concat()
this.setData({
columnsData
// value: val
})
}
},
_validate(val) {
const { columnsData } = this.data
columnsData.forEach((v, i) => {
if (columnsData[i].length - 1 < val[i]) {
val[i] = columnsData[i].length - 1
}
})
this.setData({
value: val
})
return val
},
_bindpickend() {
this.data.scrollEnd = true
},
_bindpickstart() {
this.data.scrollEnd = false
},
_openPicker() {
if (!this.data.isFirstOpen) {
if (this.properties.listData.length !== 0) {
this._setDefault(this._computedBackData(this.data.backData))
}
}
this.data.isFirstOpen = false
this.setData({
isOpen: true
})
},
_closePicker() {
this.setData({
isOpen: false
})
},
_getColumnData(arr) {
return arr.map((v) => this._fomateObj(v))
},
_fomateObj(o) {
const tempO = {}
for (const k in o) {
k !== 'children' && (tempO[k] = o[k])
}
return tempO
},
_getScrollCompareIndex(arr1, arr2) {
let tempIndex = -1
for (let i = 0, len = arr1.length; i < len; i++) {
if (arr1[i] !== arr2[i]) {
tempIndex = i
break
}
}
return tempIndex
},
// 根据id获取索引
_getIndexByIdOfObject(listData, idArr, key, arr) {
if (!Array.isArray(listData)) return
for (let i = 0, len = listData.length; i < len; i++) {
if (listData[i][key] === idArr[arr.length][key]) {
arr.push(i)
return this._getIndexByIdOfObject(listData[i].children, idArr, key, arr)
}
}
},
_setDefault(inBackData) {
const { scrollType } = this.properties
let { listData, defaultPickData } = this.properties
const { lastValue } = this.data
if (inBackData) {
defaultPickData = inBackData
}
let backData = []
switch (scrollType) {
case 'normal':
if (isPlainObject(listData[0][0])) {
this.setData({
isUseKeywordOfShow: true
})
}
if (Array.isArray(defaultPickData) && defaultPickData.length > 0) {
backData = listData.map((v, i) => v[defaultPickData[i]])
this.data.tempValue = defaultPickData
this.data.lastValue = defaultPickData
} else {
backData = listData.map((v) => v[0])
}
this.setData({
columnsData: listData,
backData: backData,
value: defaultPickData
})
break
case 'link':
// let column_01 = this._getColumnData(newVal);
// let column_02 = this._getColumnData(newVal[0].children);
// let column_03 = this._getColumnData(newVal[0].children[0].children);
// let columnsData = [column_01,column_02,column_03];
var columnsData = []
// 如果默认值
if (Array.isArray(defaultPickData) && defaultPickData.length > 0 && defaultPickData.every((v, i) => isPlainObject(v))) {
const key = this.data.onlyKey = Object.keys(defaultPickData[0])[0]
const arr = []
this._getIndexByIdOfObject(listData, defaultPickData, key, arr)
defaultPickData = arr
let tempI = 0
do {
lastValue.push(defaultPickData[tempI])
columnsData.push(this._getColumnData(listData))
listData = listData[defaultPickData[tempI]].children
tempI++
} while (listData)
backData = columnsData.map((v, i) => v[defaultPickData[i]])
// 如果没有默认值
} else {
this.data.onlyKey = this.properties.keyWordsOfShow || 'name'
do {
lastValue.push(0)
columnsData.push(this._getColumnData(listData))
listData = listData[0].children
} while (listData)
backData = columnsData.map((v) => v[0])
}
this.data.tempValue = defaultPickData
this.data.lastValue = defaultPickData
this.setData({
isUseKeywordOfShow: true,
columnsData,
backData
})
setTimeout(() => {
this.setData({
value: defaultPickData
})
}, 0)
break
}
},
_computedBackData(backData) {
const { scrollType, listData } = this.properties
const { onlyKey } = this.data
if (scrollType === 'normal') {
return backData.map((v, i) => listData[i].findIndex((vv, ii) => this._compareObj(v, vv)))
} else {
const t = backData.map((v, i) => {
const o = {}
o[onlyKey] = v[onlyKey]
return o
})
return t
}
},
_compareObj(o1, o2) {
const { keyWordsOfShow } = this.properties
if (typeof o1 !== 'object') {
return o1 === o2
} else {
return o1[keyWordsOfShow] === o2[keyWordsOfShow]
}
},
_getBackDataFromValue(val) {
let tempArr = []
if (val.length > 0) {
tempArr = this.data.columnsData.reduce((t, v, i) => {
return t.concat(v[val[i]])
}, [])
} else {
tempArr = this.data.columnsData.map((v, i) => v[0])
}
return tempArr
},
_compareDate() { // 完全相等返回true
const { defaultPickDataTemp, listDataTemp } = this.data
const { defaultPickData, listData } = this.properties
return defaultPickDataTemp === defaultPickData && listDataTemp === listData
},
_setTempData() {
const { defaultPickData, listData } = this.properties
this.data.defaultPickDataTemp = defaultPickData
this.data.listDataTemp = listData
}
}
})
<!--picker/picker.wxml-->
<view class="full-box {{isOpen?'cur':''}}">
<!--<view class="modal" bindtap="tapModal"></view>-->
<view class="picker">
<view class="picker-header" style="{{pickerHeaderStyle}}">
<view bindtap="cancle" >
<text style="{{cancelStyle}}">{{cancelText}}</text>
</view>
<text style="{{titleStyle}}">{{titleText}}</text>
<view bindtap="sure">
<text style="{{sureStyle}}">{{sureText}}</text>
</view>
</view>
<picker-view
value="{{value}}"
class="picker-content"
bindpickstart="_bindpickstart"
bindchange="_bindChange"
bindpickend="_bindpickend"
indicator-style="{{indicatorStyle}}"
mask-style="{{maskStyle}}"
>
<picker-view-column wx:for="{{columnsData}}" wx:key="{{index}}">
<view wx:for="{{item}}" wx:for-item="itemIn" class="picker-line" wx:key="{{index}}">
<text class="line1" style="{{chooseItemTextStyle}}">{{isUseKeywordOfShow?itemIn[keyWordsOfShow]:itemIn}}</text>
</view>
</picker-view-column>
</picker-view>
</view>
</view>
/* picker/picker.wxss */
.full-box{
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
z-index: 9999;
opacity: 0;
background:rgba(0,0,0,.4);
transition:all .4s ease-in-out 0;
pointer-events:none;
}
.full-box.cur{
opacity:1;
pointer-events:auto
}
.modal{
position: absolute;
width: 100%;
height: 50%;
bottom:-50%;
left: 0;
background: transparent;
transition:all .4s ease-in-out 0;
}
.picker{
position: absolute;
width: 100%;
height: 235px;
bottom: -235px;
left: 0;
background: #fff;
display: flex;
flex-direction: column;
transition:all .4s ease-in-out 0;
}
.cur .picker{
bottom:0;
}
.cur .modal{
bottom:50%;
}
.picker-line{
display: flex;
justify-content: center;
align-items: center;
}
.picker-header {
height: 20%;
box-sizing: border-box;
padding: 0 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #eeeeee;
}
.picker-header view {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.picker-header view text{
font-size: 36rpx;
}
.picker-content {
flex-grow: 1;
}
.line1{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
lines:1
}
\ No newline at end of file
function _typeof(obj) {
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
function isString(obj) { //是否字符串
return _typeof(obj) === 'string'
}
function isPlainObject(obj) {
return _typeof(obj) === 'object';
}
module.exports = {
isString,
isPlainObject
}
...@@ -476,18 +476,6 @@ Page({ ...@@ -476,18 +476,6 @@ Page({
phoneNumber: this.data.phone, phoneNumber: this.data.phone,
}) })
}, },
/**
* 拨打客服取消
* @function
* @param {object} - event
* @returns
*/
customerServiceCancel: function () {
this.setData({
hotline: false,
})
},
/** /**
* 页面滚动事件 * 页面滚动事件
......
...@@ -170,24 +170,4 @@ ...@@ -170,24 +170,4 @@
<image src="{{resourcesBase + 'commodity/home/after-sales.png'}}"></image> <image src="{{resourcesBase + 'commodity/home/after-sales.png'}}"></image>
</view> </view>
</view> </view>
</view>
<!-- <view class="service-item"> \ No newline at end of file
<view class="shop-title col">
<text>滨海温泉院墅</text>
<text>足不出户即可享受滨海温泉</text>
</view>
<view style="position: relative;">
<image class="home-footer" src="{{resourcesBase + 'commodity/home/other.png'}}"></image>
<view class="room-appointment" bindtap="onRoomAppointment">预约看房</view>
<view class="call" bindtap="customerService">拨打客服</view>
</view>
</view> -->
</view>
<!-- 客服热线 -->
<l-arc-popup show="{{hotline}}" arc-radius="30">
<view class="phone">{{phone}}</view>
<view class="call" bindtap="customerService">呼叫</view>
<view style="height:10rpx;background-color:rgb(246,247,249);"></view>
<view class="call" bindtap="customerServiceCancel">取消</view>
</l-arc-popup>
\ No newline at end of file
...@@ -104,12 +104,12 @@ Page({ ...@@ -104,12 +104,12 @@ Page({
/** /**
* 勾选状态 * 勾选状态
* @function * @function
* @param {object} - event * @param {object} - funcEvent
* @returns * @returns
*/ */
onChangeActive: function (event) { onChangeActive: function (funcEvent) {
let funcIndex = event.currentTarget.dataset.index let funcIndex = funcEvent.detail.index
let funcActive = event.detail.checked let funcActive = funcEvent.detail.selection
let funcShoppingCart = this.data.shoppingCart let funcShoppingCart = this.data.shoppingCart
funcShoppingCart[funcIndex].isActive = funcActive funcShoppingCart[funcIndex].isActive = funcActive
...@@ -168,8 +168,8 @@ Page({ ...@@ -168,8 +168,8 @@ Page({
* @param {object} - event * @param {object} - event
* @returns * @returns
*/ */
onSelectionAll: function (event) { onSelectionAll: function (funcEvent) {
let funcActive = event.detail.checked let funcActive = funcEvent.detail.selection
let funcShoppingCart = this.data.shoppingCart let funcShoppingCart = this.data.shoppingCart
for (let i = 0, l = funcShoppingCart.length; i < l; i++) { for (let i = 0, l = funcShoppingCart.length; i < l; i++) {
funcShoppingCart[i].isActive = funcActive funcShoppingCart[i].isActive = funcActive
......
...@@ -13,12 +13,7 @@ ...@@ -13,12 +13,7 @@
<block wx:for="{{shoppingCart}}" wx:for-index="index" wx:for-item="item" wx:key="index"> <block wx:for="{{shoppingCart}}" wx:for-index="index" wx:for-item="item" wx:key="index">
<view class="list-item row"> <view class="list-item row">
<view class="list-item-cover row align-c"> <view class="list-item-cover row align-c">
<l-checkbox-group l-class="list-item-selection" data-index="{{index}}" bind:linchange="onChangeActive"> <m-checkbox index="{{index}}" selection="{{item.isActive}}" bindchange="onChangeActive"></m-checkbox>
<l-checkbox custom="{{true}}" checked="{{item.isActive}}" size="40rpx">
<image hidden="{{!item.isActive}}" class="list-item-selection-icon" src="/image/icon/selection-active.png" slot="icon"></image>
<image hidden="{{item.isActive}}" class="list-item-selection-icon" src="/image/icon/selection-inactive.png" slot="icon"></image>
</l-checkbox>
</l-checkbox-group>
<image src="{{item.cover}}" mode="aspectFill"></image> <image src="{{item.cover}}" mode="aspectFill"></image>
</view> </view>
<view class="list-item-info col"> <view class="list-item-info col">
...@@ -91,12 +86,7 @@ ...@@ -91,12 +86,7 @@
<view class="pay row con-c align-c"> <view class="pay row con-c align-c">
<!-- 选择计数 --> <!-- 选择计数 -->
<view class="pay-selection row con-c align-c"> <view class="pay-selection row con-c align-c">
<l-checkbox-group l-class="list-item-selection" bind:linchange="onSelectionAll"> <m-checkbox selection="{{allSelectionIsActive}}" bindchange="onSelectionAll"></m-checkbox>
<l-checkbox custom="{{true}}" checked="{{allSelectionIsActive}}" size="40rpx">
<image hidden="{{!allSelectionIsActive}}" class="list-item-selection-icon" src="/image/icon/selection-active.png" slot="icon"></image>
<image hidden="{{allSelectionIsActive}}" class="list-item-selection-icon" src="/image/icon/selection-inactive.png" slot="icon"></image>
</l-checkbox>
</l-checkbox-group>
<text>全选</text> <text>全选</text>
</view> </view>
......
const App = getApp() let App = getApp()
Page({ Page({
data: { data: {
option: {}, option: {},
......
...@@ -2,7 +2,6 @@ let App = getApp() ...@@ -2,7 +2,6 @@ let App = getApp()
Page({ Page({
data: { data: {
phone: '13856782234', phone: '13856782234',
hotline: false, //客服热线
type: 0, //夜间入园 type: 0, //夜间入园
name: '', name: '',
mobile: '', mobile: '',
...@@ -10,7 +9,6 @@ Page({ ...@@ -10,7 +9,6 @@ Page({
time: '', time: '',
tickerInfo: {}, tickerInfo: {},
isDoing: false, isDoing: false,
isShowCancel: false,
}, },
onLoad: function (options) { onLoad: function (options) {
...@@ -21,7 +19,6 @@ Page({ ...@@ -21,7 +19,6 @@ Page({
let nowStr = new Date().toLocaleString().substr(0, 10).replace(/-/g, '/') + " 00:00:00" let nowStr = new Date().toLocaleString().substr(0, 10).replace(/-/g, '/') + " 00:00:00"
let now = Date.parse(nowStr) let now = Date.parse(nowStr)
let isShowCancel = now <= yyDate
this.setData({ this.setData({
tickerInfo: detail, tickerInfo: detail,
type: detail.type, type: detail.type,
...@@ -29,15 +26,21 @@ Page({ ...@@ -29,15 +26,21 @@ Page({
mobile: detail.mobile, mobile: detail.mobile,
num: detail.num, num: detail.num,
time: detail.time, time: detail.time,
isShowCancel
}) })
}, },
showHotline() { /**
this.setData({ * 拨打客服
hotline: true * @function
* @param {object} - event
* @returns
*/
customerService: function () {
wx.makePhoneCall({
phoneNumber: this.data.phone,
}) })
}, },
//取消预约 //取消预约
onCancel: function (event) { onCancel: function (event) {
if (this.data.isDoing) return if (this.data.isDoing) return
...@@ -108,13 +111,6 @@ Page({ ...@@ -108,13 +111,6 @@ Page({
}) })
}, },
//取消拨打
cancel() {
this.setData({
hotline: false,
})
},
/** /**
* 页面滚动事件 * 页面滚动事件
* @function * @function
......
...@@ -37,18 +37,9 @@ ...@@ -37,18 +37,9 @@
</view> </view>
<image src="http://sm-web.meiqicloud.com/userfiles/appResources/appointment/night/ornament-1.png" class="thanks"></image> <image src="http://sm-web.meiqicloud.com/userfiles/appResources/appointment/night/ornament-1.png" class="thanks"></image>
</view> </view>
<view class="bottom-btns" wx:if="{{isShowCancel}}"> <view class="bottom-btns">
<view class="custom margin-right-20" bindtap="onCancel">取消预约</view> <view class="custom margin-right-20" bindtap="onCancel">取消预约</view>
<view class="custom" bindtap="showHotline">客服咨询</view> <view class="custom" bindtap="customerService">客服咨询</view>
</view> </view>
<view wx:else class="custom" bindtap="showHotline">客服咨询</view>
</view> </view>
</view> </view>
\ No newline at end of file
<!-- 客服热线 -->
<l-arc-popup show="{{hotline}}" arc-radius="30">
<view class="phone">{{phone}}</view>
<view class="call" bindtap="call">呼叫</view>
<view style="height:10rpx;background-color:rgb(246,247,249);"></view>
<view class="call" bindtap="cancel">取消</view>
</l-arc-popup>
\ No newline at end of file
...@@ -12,7 +12,7 @@ Page({ ...@@ -12,7 +12,7 @@ Page({
'avatar': '', 'avatar': '',
'address': '', 'address': '',
'birthday': '', 'birthday': '',
'sex': '', 'gender': '',
'userType': 0 'userType': 0
}, },
...@@ -719,7 +719,7 @@ Page({ ...@@ -719,7 +719,7 @@ Page({
App.pageScroll(funcEvent, this) App.pageScroll(funcEvent, this)
}, },
close() { onOwnerPrivilegeClose() {
this.setData({ this.setData({
mask: false mask: false
}); });
......
...@@ -39,15 +39,17 @@ ...@@ -39,15 +39,17 @@
</view> </view>
</view> </view>
<view class="status-authentication row cb ac"> <view class="list row cc ac">
<view class="status-symbol col"> <view class="status-authentication row cb ac">
<text>业主认证</text> <view class="status-symbol col">
<text>享受业主尊贵特权,预定消费专属优惠</text> <text>业主认证</text>
</view> <text>享受业主尊贵特权,预定消费专属优惠</text>
<view class="status-operation row cc ac" bindtap="onAuthentication"> </view>
<image wx:if="{{statusText == '审核失败'}}" src="{{imageBase + 'icon/warning-1.png'}}"></image> <view class="status-operation row cc ac" bindtap="onAuthentication">
<image wx:if="{{statusText == '审核中'}}" src="{{imageBase + 'icon/clock-1.png'}}"></image> <image wx:if="{{statusText == '审核失败'}}" src="{{imageBase + 'icon/warning-1.png'}}"></image>
<text>{{statusText}}</text> <image wx:if="{{statusText == '审核中'}}" src="{{imageBase + 'icon/clock-1.png'}}"></image>
<text>{{statusText}}</text>
</view>
</view> </view>
</view> </view>
</block> </block>
...@@ -264,12 +266,10 @@ ...@@ -264,12 +266,10 @@
</view> </view>
<!-- 我的俱乐部 --> <!-- 我的俱乐部 -->
<!--
<view class="club row con-b align-c" bindtap="onToClub"> <view class="club row con-b align-c" bindtap="onToClub">
<text>我的俱乐部</text> <text>我的俱乐部</text>
<image class="icon" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image> <image class="icon" src="{{imageBase + 'icon/arrow-r-2.png'}}"></image>
</view> </view>
-->
<!-- 客服中心 --> <!-- 客服中心 -->
<view class="service row con-b align-c" bindtap="onService"> <view class="service row con-b align-c" bindtap="onService">
...@@ -279,23 +279,12 @@ ...@@ -279,23 +279,12 @@
</view> </view>
</view> </view>
<!-- 业主弹出层 --> <!-- 业主特权弹窗 -->
<l-mask show="{{mask}}" center="{{true}}"> <view class="owner_privilege row cc ac" hidden="{{!mask}}">
<view class='mask-content'> <view class="column cc ac">
<view class="row con-c"> <image class="owner_privilege_content" src="./image/owner-privilege.png"></image>
<image src="http://upload.miaomiao-bao.com/ea238202008201146199955.png" class="mask-img"></image> <view class="owner_privilege_close row cc ac" bindtap="onOwnerPrivilegeClose">
<image src="{{imageBase + '/icon/close-1.png'}}"></image>
</view> </view>
<image src="http://upload.miaomiao-bao.com/62e04202008201417045326.png" style="width:750rpx;height:458rpx;margin-left:-73.5rpx;"></image>
<view class="row align-c con-c" style="margin-top:20rpx;">
<image src="/image/xingxing.png" class="mask-icon"></image>
<text class="mask-font">业主特权</text>
<image src="/image/xingxing.png" class="mask-icon"></image>
</view>
<view class="mask-items">
<view class="maskItem" wx:for="{{approveList}}" wx:key="index">{{item}}</view>
</view>
</view>
<view class="close" bindtap="close">
<l-icon name="close" color="black" size="28" />
</view> </view>
</l-mask> </view>
\ No newline at end of file \ No newline at end of file
.container { .container {
min-height: 100vh; min-height: 100vh;
background: linear-gradient(rgba(0 ,0 ,0 ,0) 50%, #F3F4F6 50%, #F3F4F6 100%);
} }
/* 用户信息面板 */ /* 用户信息面板 */
...@@ -187,6 +188,8 @@ ...@@ -187,6 +188,8 @@
} }
.list { .list {
width: 750rpx;
height: 100%;
background: #F3F4F6; background: #F3F4F6;
} }
...@@ -508,418 +511,11 @@ ...@@ -508,418 +511,11 @@
color: #15191F; color: #15191F;
} }
.menu {
width: 750rpx;
/* margin-top: 16rpx; */
margin-bottom: 30rpx;
padding: 0 40rpx;
overflow-x: hidden;
}
.menu-item {
height: 92rpx;
border-style: none !important;
}
.menu-title {
font-weight: bolder;
font-size: 30rpx;
border-bottom: none;
}
.listClass {
border-bottom: none !important;
}
.my-activities {
width: 798rpx;
overflow-x: scroll;
height: 300rpx;
white-space: nowrap;
}
.my-activities::-webkit-scrollbar {
display: none;
}
.my-activities-item {
margin-top: 15rpx;
height: 80%;
width: 600rpx;
margin-right: 40rpx;
display: inline-block;
position: relative;
}
.subscribe {
width: 150rpx;
height: 70rpx;
position: absolute;
border: 1px solid #15191f;
border-radius: 3px;
right: 50rpx;
line-height: 70rpx;
text-align: center;
font-size: 26rpx;
top: 92rpx;
font-weight: 500;
color: #15191f;
}
.mask-content {
width: 606rpx;
height: 974rpx;
background: linear-gradient(180deg, rgba(63, 67, 87, 1) 0%, rgba(37, 37, 50, 1) 100%);
}
.close {
width: 80rpx;
height: 80rpx;
background-color: rgb(172, 169, 170);
text-align: center;
margin: auto;
margin-top: 45rpx;
border-radius: 50%;
line-height: 80rpx;
}
.mask-img {
width: 274rpx;
height: 52rpx;
margin-top: 76rpx;
}
.mask-icon {
width: 33rpx;
height: 33rpx;
}
.mask-font {
font-size: 50rpx;
color: white;
margin: 0 26rpx 0 26rpx;
}
.mask-items {
width: 426rpx;
margin: auto;
margin-top: 50rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.maskItem {
font-weight: 400;
font-size: 26rpx;
color: rgba(246, 219, 191, 1);
margin-bottom: 30rpx;
}
/* 二期样式 */
.order-activity {
width: 670rpx;
margin-top: 48rpx;
padding: 40rpx 32rpx;
background-color: #fff;
border-radius: 4rpx;
}
.order-activity-title-wrapper {
height: 48rpx;
}
.order-activity-title {
font-size: 34rpx;
color: #15191f;
font-weight: 600;
}
.order-activity-all text {
font-size: 26rpx;
color: #15191f;
}
.order-activity-icon-list {
margin-top: 56rpx;
padding-bottom: 12rpx;
}
.order-activity-icon-wrapper {
flex: 1;
}
.order-activity-icon {
position: relative;
width: 80rpx;
height: 80rpx;
background-color: #f5f6f8;
border-radius: 50%;
}
.order-activity-icon image {
width: 48rpx;
height: 48rpx;
}
.order-activity-badge {
position: absolute;
top: -10rpx;
left: 48rpx;
width: 32rpx;
height: 32rpx;
font-size: 22rpx;
color: #fff;
text-align: center;
line-height: 32rpx;
background-color: #e66060;
border-radius: 16rpx;
}
.badge-widen {
width: 48rpx;
}
.order-activity-icon-wrapper text {
margin-top: 16rpx;
font-size: 22rpx;
color: #15191f;
}
.more-wrapper {
padding-top: 44rpx;
}
.pass-wrapper {
position: relative;
width: 606rpx;
height: 338rpx;
margin-top: 41rpx;
padding: 26rpx 32rpx;
color: #fff;
background: linear-gradient(141deg, #f4d5c1 0%, #fa99ce 100%);
border-radius: 4rpx;
opacity: 0.81;
}
.card-bg {
position: absolute;
left: 0;
top: 0;
z-index: -1;
}
.pass-bg-one {
position: absolute;
left: 0;
right: 0;
top: -16rpx;
width: 574rpx;
height: 16rpx;
margin: 0 auto;
background: rgba(247, 179, 197, 0.5);
border-radius: 4rpx 4rpx 0 0;
}
.bg-one-month {
background: rgba(142, 185, 231, 0.5);
}
.pass-bg-two {
position: absolute;
left: 0;
right: 0;
top: -30rpx;
width: 542rpx;
height: 16rpx;
margin: 0 auto;
background: rgba(247, 179, 197, 0.3);
border-radius: 4rpx 4rpx 0 0;
}
.bg-two-month {
background: rgba(142, 185, 231, 0.3);
}
.pass-logo-wrapper {
height: 50rpx;
}
.pass-logo-wrapper text {
height: 50rpx;
font-size: 26rpx;
line-height: 50rpx;
}
.pass-title {
margin-top: 24rpx;
font-size: 42rpx;
font-weight: 600;
}
.pass-time {
margin-top: 8rpx;
font-size: 26rpx;
}
.pass-name {
margin-top: 32rpx;
font-size: 22rpx;
}
.pass-idNum {
margin-top: 8rpx;
font-size: 22rpx;
}
.goods-wrapper {
width: 606rpx;
height: 328rpx;
padding: 0 32rpx 8rpx;
background-color: #f5f6f8;
border-radius: 4rpx;
}
.goods-logo-wrapper {
height: 100rpx;
margin-top: 40rpx;
margin-bottom: 10rpx;
}
.goods-logo-wrapper text {
height: 100rpx;
font-size: 26rpx;
color: #15191f;
line-height: 100rpx;
}
.goods-content {
height: 136rpx;
}
.goods-content image {
width: 140rpx;
height: 136rpx;
margin-right: 32rpx;
background-color: #ccc;
border-radius: 5px;
}
.goods-content text {
font-size: 30rpx;
color: #15191f;
font-weight: 600;
line-height: 42rpx;
}
.goods-footer {
height: 84rpx;
}
.goods-footer text {
font-size: 26rpx;
color: #959da9;
}
.art-logo {
width: 32rpx;
height: 60rpx;
background-color: #ccc;
}
.appointment-wrapper {
position: relative;
width: 606rpx;
height: 248rpx;
margin-top: 68rpx;
padding: 72rpx 32rpx 0;
background-color: #f5f6f8;
border-radius: 4rpx;
}
.appointment-time {
position: absolute;
left: 0;
top: -28rpx;
height: 56rpx;
padding: 0 24rpx;
font-size: 26rpx;
color: #fff;
line-height: 56rpx;
font-weight: 600;
background-color: #000;
border-radius: 4rpx;
}
.appointment-activity-img {
width: 140rpx;
height: 136rpx;
background-color: #ccc;
border-radius: 5px;
}
.appointment-activity-info {
flex: 1;
margin-left: 32rpx;
}
.appointment-activity-title {
color: #15191f;
font-size: 30rpx;
font-weight: 600;
line-height: 42rpx;
}
.appointment-activity-num {
margin-top: 16rpx;
color: #959da9;
font-size: 26rpx;
}
.appointment-content {
width: 305rpx;
height: 110rpx;
}
.border-right {
width: 1rpx;
height: 75rpx;
background-color: #e2e7ef;
}
.appointment-subscribe {
width: 150rpx;
height: 70rpx;
border: 1px solid #15191f;
border-radius: 4rpx;
line-height: 70rpx;
text-align: center;
font-size: 26rpx;
font-weight: 500;
color: #15191f;
}
.more {
margin-top: 32rpx;
}
.more text {
font-size: 26rpx;
color: #15191f;
}
.more image {
width: 32rpx;
height: 32rpx;
margin-left: 8rpx;
}
.club, .club,
.service { .service {
width: 670rpx; width: 670rpx;
height: 128rpx; height: 128rpx;
margin: 48rpx 40rpx 64rpx 40rpx; margin: 48rpx 40rpx;
padding: 0 32rpx; padding: 0 32rpx;
background-color: #fff; background-color: #fff;
border-radius: 4rpx; border-radius: 4rpx;
...@@ -932,19 +528,31 @@ ...@@ -932,19 +528,31 @@
font-weight: 600; font-weight: 600;
} }
.all-order-icon { /* 业主特权弹窗 */
width: 32rpx; .owner_privilege {
height: 32rpx; z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .65);
} }
.logo-box { .owner_privilege_content {
width: 64rpx; width: 606rpx;
height: 50rpx; height: 974rpx;
text-align: center;
margin-right: 20rpx;
} }
.logo-box image { .owner_privilege_close {
max-width: 100% !important; width: 80rpx;
max-height: 100% !important; height: 80rpx;
margin: 48rpx auto 0 auto;
border-radius: 50%;
background: #ABAAA9;
} }
.owner_privilege_close > image {
width: 48rpx;
height: 48rpx;
}
\ No newline at end of file
const App = getApp() let App = getApp()
Page({ Page({
data: { data: {
birthdayLimit: App.modular.miment().format('YYYY-MM-DD'), birthdayLimit: App.modular.miment().format('YYYY-MM-DD'),
genderList: [
sexList: [
{ id: 1, name: '男' }, { id: 1, name: '男' },
{ id: 2, name: '女' }, { id: 2, name: '女' },
], ],
sexActive: 0, genderIndex: 0,
userInfo: { userInfo: {}
name: '',
phone: '',
avatar: '',
address: '',
birthday: '',
sex: '',
userType: '',
status: '',
isSignIn: false,
}
}, },
onLoad: function (options) { onLoad: function (options) {
let funcUserInfo = wx.getStorageSync('userInfo') let funcUserInfo = wx.getStorageSync('userInfo')
funcUserInfo.phone = this.phoneEncryption(funcUserInfo.phone) if (funcUserInfo.gender) {
if (funcUserInfo.sex !== '') this.data.sexActive = funcUserInfo.sex - 1 let funcGenderList = this.data.genderList
for (let i = 0, l = funcGenderList.length; i < l; i++) {
if (funcUserInfo.gender === funcGenderList[i].id) {
this.setData({
genderIndex: i
})
break
}
}
}
this.setData({ this.setData({
userInfo: funcUserInfo userInfo: funcUserInfo
}) })
},
/** console.log(this.data.userInfo)
* 加密号码
* @function
* @param {object} - funcEvent
* @returns
*/
phoneEncryption: function (funcPhone) {
return funcPhone = funcPhone.substring(0, 3) + '****' + funcPhone.substring(7)
}, },
/** /**
* 加密号码 * 加密号码
* @function * @function
...@@ -49,7 +39,8 @@ Page({ ...@@ -49,7 +39,8 @@ Page({
* @returns * @returns
*/ */
onInputBlur: function (event) { onInputBlur: function (event) {
let funcType = event.target.dataset.type console.log(event)
let funcType = event.detail.id
let funcValue = event.detail.value let funcValue = event.detail.value
let funcUserInfo = this.data.userInfo let funcUserInfo = this.data.userInfo
...@@ -66,6 +57,7 @@ Page({ ...@@ -66,6 +57,7 @@ Page({
this.setData({ this.setData({
userInfo: funcUserInfo userInfo: funcUserInfo
}) })
this.doUpdateInfo() this.doUpdateInfo()
}, },
...@@ -75,15 +67,16 @@ Page({ ...@@ -75,15 +67,16 @@ Page({
* @param {object} - funcEvent * @param {object} - funcEvent
* @returns * @returns
*/ */
onSelectionGender(event) { onSelectionGender: function (funcEvent) {
// console.log(event) let funcUserInfo = this.data.userInfo
this.setData({ let funcGenderIndex = Number(funcEvent.detail.value)
sexActive: Number(event.detail.value) funcUserInfo.gender = this.data.genderList[funcGenderIndex].id
})
let funcUserInfo = wx.getStorageSync('userInfo') console.log(funcGenderIndex)
funcUserInfo.sex = this.data.sexList[this.data.sexActive].id console.log(funcUserInfo.gender)
this.setData({ this.setData({
userInfo: funcUserInfo userInfo: funcUserInfo,
genderIndex: funcGenderIndex
}) })
this.doUpdateInfo() this.doUpdateInfo()
}, },
...@@ -120,18 +113,16 @@ Page({ ...@@ -120,18 +113,16 @@ Page({
} }
let param = { let param = {
sex: this.data.userInfo.sex, 'sex': this.data.userInfo.gender,
name: this.data.userInfo.name, 'name': this.data.userInfo.name,
address: this.data.userInfo.address, 'address': this.data.userInfo.address,
birthday: this.data.userInfo.birthday, 'birthday': this.data.userInfo.birthday,
} }
App.wxRequest({ App.wxRequest({
url: 'v1/smUser/doUpdateInfo', url: 'v1/smUser/doUpdateInfo',
data: param, data: param,
success: (res) => { success: (res) => {
let funcUserInfo = wx.getStorageSync('userInfo') wx.setStorageSync('userInfo', this.data.userInfo)
Object.assign(funcUserInfo, param)
wx.setStorageSync('userInfo', funcUserInfo)
} }
}) })
} }
......
...@@ -2,39 +2,51 @@ ...@@ -2,39 +2,51 @@
<m-nav titleText="个人资料"></m-nav> <m-nav titleText="个人资料"></m-nav>
<view class="container"> <view class="container">
<view class="myInfo"> <view class="user_info column">
<l-list is-hover="{{false}}" l-content-class="menu-title" title="头像" is-link="{{false}}"> <view class="info_item row cb ac">
<view style="margin-bottom:30rpx;" slot="right-section"> <text>头像</text>
<l-avatar size="100" src="{{userInfo.avatar}}" /> <image class="info_item_avatar" src="{{userInfo.avatar}}"></image>
</view> </view>
</l-list> <view class="info_item row cb ac">
<l-list is-hover="{{false}}" l-content-class="menu-title" title="姓名" is-link="{{false}}"> <text>姓名</text>
<view slot="right-section"> <m-input
<input maxlength="10" style="text-align:right;" placeholder="请填写姓名" placeholder-class="phone" value="{{userInfo.name}}" data-type="name" bindblur="onInputBlur" /> inputId="name"
</view> className="info_item_input row ac"
</l-list> value="{{userInfo.name}}"
<l-list is-hover="{{false}}" l-content-class="menu-title" title="性别" is-link="{{false}}"> placeholder="请填写姓名"
<picker slot="right-section" class="input-picker" mode="selector" value="{{sexActive}}" range-key="{{'name'}}" range="{{sexList}}" bindchange="onSelectionGender"> maxlength="10"
<view wx:if="{{sexActive === 0}}" class="picker" style="color: #959DA9;">请选择性别</view> bindblur="onInputBlur">
<view wx:if="{{sexActive !== 0}}" class="picker">{{sexList[sexActive].name}}</view> </m-input>
</view>
<view class="info_item row cb ac">
<text>性别</text>
<picker class="info_item_picker row ce" range="{{genderList}}" range-key="name" value="{{genderIndex}}" bindchange="onSelectionGender">
<view wx:if="{{userInfo.gender === 0}}" class="info_item_tip">请选择性别</view>
<view wx:if="{{userInfo.gender !== 0}}" class="info_item_data">{{genderList[genderIndex].name}}</view>
</picker> </picker>
</l-list> </view>
<l-list is-hover="{{false}}" l-content-class="menu-title" title="生日" is-link="{{false}}"> <view class="info_item row cb ac">
<picker slot="right-section" class="input-picker" mode="date" value="{{userInfo.birthday}}" end="{{birthdayLimit}}" bindchange="onSelectionDate"> <text>生日</text>
<view wx:if="{{userInfo.birthday === ''}}" class="picker" style="color: #959DA9;">请选择生日</view> <picker class="info_item_picker row ce" mode="date" value="{{userInfo.birthday}}" end="{{birthdayLimit}}" bindchange="onSelectionDate">
<view wx:if="{{userInfo.birthday !== ''}}" class="picker">{{userInfo.birthday}}</view> <view wx:if="{{userInfo.birthday === ''}}" class="info_item_tip">请选择生日</view>
<view wx:if="{{userInfo.birthday !== ''}}" class="info_item_data">{{userInfo.birthday}}</view>
</picker> </picker>
</l-list> </view>
<l-list is-hover="{{false}}" l-content-class="menu-title" title="地址" is-link="{{false}}"> <view class="info_item row cb ac">
<view slot="right-section"> <text>地址</text>
<input maxlength="30" style="text-align:right;" placeholder-style="color: #959DA9;" placeholder="请填写地址" value="{{userInfo.address}}" data-type="address" bindblur="onInputBlur" /> <m-input
</view> inputId="address"
</l-list> className="info_item_input row ac"
<l-list is-hover="{{false}}" l-content-class="menu-title" title="手机号" is-link="{{false}}"> value="{{userInfo.address}}"
<view slot="right-section"> placeholder="请填写地址"
<view class="phone" style="color: #959DA9;">{{userInfo.phone}}</view> maxlength="30"
</view> bindblur="onInputBlur">
</l-list> </m-input>
</view>
<view class="info_item row cb ac">
<text>手机号</text>
<view class="info_item_tip">{{userInfo.phoneHide}}</view>
</view>
</view> </view>
</view> </view>
......
.myInfo { .user_info {
width: 750rpx; width: 750rpx;
padding: 0 48rpx; padding: 0 40rpx;
} }
.phone { .phone {
...@@ -15,4 +15,59 @@ ...@@ -15,4 +15,59 @@
.picker { .picker {
text-align: right; text-align: right;
line-height: 44rpx; line-height: 44rpx;
}
.info_item {
width: 670rpx;
min-height: 94rpx;
padding: 28rpx 0;
border-bottom: 1px #E2E7EF solid;
}
.info_item:last-child {
border: none;
}
.info_item_avatar {
width: 96rpx;
height: 96rpx;
border-radius: 50%;
}
.info_item_picker {
flex-grow: 1;
}
.info_item_tip {
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #959DA9;
}
.info_item_data {
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #15191F;
}
.info_item_input {
height: 42rpx;
text-align: right;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #15191F;
}
.info_item > text:nth-child(1) {
height: 42rpx;
font-size: 30rpx;
font-weight: 400;
line-height: 42rpx;
color: #15191F;
} }
\ No newline at end of file
...@@ -23,7 +23,6 @@ Page({ ...@@ -23,7 +23,6 @@ Page({
height: 0, height: 0,
mask: false, //控制客服微信的遮罩层显示 mask: false, //控制客服微信的遮罩层显示
phone: '13316748039', phone: '13316748039',
hotline: false, //客服热线
bottom: 0, bottom: 0,
focus: false, focus: false,
remark: '', remark: '',
...@@ -119,7 +118,7 @@ Page({ ...@@ -119,7 +118,7 @@ Page({
}, },
// 关闭遮罩层 // 关闭遮罩层
close() { onServicephoneClose() {
this.setData({ this.setData({
mask: false mask: false
}) })
...@@ -137,17 +136,6 @@ Page({ ...@@ -137,17 +136,6 @@ Page({
}) })
}, },
//取消拨打
cancel() {
this.setData({
hotline: false,
})
},
showHotline() {
this.setData({
hotline: true
})
},
moreProblems() { moreProblems() {
wx.navigateTo({ wx.navigateTo({
url: '/pages/mine/question-more/question-more', url: '/pages/mine/question-more/question-more',
......
...@@ -30,13 +30,6 @@ ...@@ -30,13 +30,6 @@
</view> </view>
</view> </view>
</block> </block>
<!-- <view>
<l-list wx:for="{{data}}" wx:key="index" is-hover="{{false}}" is-link="{{false}}">
<view class="row align-c" slot="left-section">
<view class="circle"></view><text>{{item.title}}</text>
</view>
</l-list>
</view> -->
</view> </view>
</view> </view>
<view class="footer-nav" style="padding-bottom:{{isIphoneX >=0?68:0}}rpx;"> <view class="footer-nav" style="padding-bottom:{{isIphoneX >=0?68:0}}rpx;">
...@@ -53,34 +46,16 @@ ...@@ -53,34 +46,16 @@
<view class="nav-item-title">填写反馈</view> <view class="nav-item-title">填写反馈</view>
</view> </view>
</view> </view>
<!-- 客服微信弹出层 -->
<l-mask show="{{mask}}" center="{{true}}">
<view class='mask-content'>
<image class="mask-img" src="http://upload.miaomiao-bao.com/c92f7202008161705291762.png"></image>
<view class="mask-contanier">
<view class="logo-container">
<image class="logo" src="http://upload.miaomiao-bao.com/c83b1202008141006519147.svg"></image>
</view>
<view class="er-code-div">
<image class="er-code" bindlongpress="saveImage" data-url="http://sm-web.meiqicloud.com/userfiles/appResources/mine/server/code.png" src="http://sm-web.meiqicloud.com/userfiles/appResources/mine/server/code.png"></image>
</view>
<view class="title">添加客服微信</view>
<view class="operation">保存图片 > 点击微信“扫一扫” >选择相册</view>
</view>
<!-- 客服微信弹窗 -->
<view class="service_phone row cc ac" hidden="{{!mask}}">
<view class="column cc ac">
<image class="service_phone_content" src="./image/service-phone.png"></image>
<view class="service_phone_close row cc ac" bindtap="onServicephoneClose">
<image src="{{imageBase + '/icon/close-1.png'}}"></image>
</view>
</view> </view>
<view class="close" bindtap="close"> </view>
<l-icon name="close" color="black" size="28" />
</view>
</l-mask>
<!-- 客服热线 -->
<l-arc-popup show="{{hotline}}" arc-radius="30">
<view class="phone">{{phone}}</view>
<view class="call" bindtap="call">呼叫</view>
<view style="height:10rpx;background-color:rgb(246,247,249);"></view>
<view class="call" bindtap="cancel">取消</view>
</l-arc-popup>
<!-- 填写意见反馈 --> <!-- 填写意见反馈 -->
<view class="textBox" style="bottom:{{bottom}}px" hidden="{{inputHidden}}"> <view class="textBox" style="bottom:{{bottom}}px" hidden="{{inputHidden}}">
...@@ -89,5 +64,4 @@ ...@@ -89,5 +64,4 @@
/> />
<view class="feedbackButton" bindtap="feedbackSubmit">提交反馈</view> <view class="feedbackButton" bindtap="feedbackSubmit">提交反馈</view>
</view> </view>
</view> </view>
\ No newline at end of file
...@@ -228,3 +228,32 @@ ...@@ -228,3 +228,32 @@
padding-left: 40rpx; padding-left: 40rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
/* 客服微信弹窗 */
.service_phone {
z-index: 7;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, .65);
}
.service_phone_content {
width: 606rpx;
height: 856rpx;
}
.service_phone_close {
width: 80rpx;
height: 80rpx;
margin: 48rpx auto 0 auto;
border-radius: 50%;
background: #ABAAA9;
}
.service_phone_close > image {
width: 48rpx;
height: 48rpx;
}
\ No newline at end of file
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
<view class="header-bg"> <view class="header-bg">
<image src="{{resourcesBase + 'mine/admin-bgi.png'}}"></image> <image src="{{resourcesBase + 'mine/admin-bgi.png'}}"></image>
</view> </view>
<view class="header-avatar"> <view class="header_avatar">
<l-avatar size="160" src="{{avatarUrl}}"></l-avatar> <image src="{{avatarUrl}}"></image>
</view> </view>
<view class="header-info"> <view class="header-info">
<view class="info-name">{{name}}</view> <view class="info-name">{{name}}</view>
......
...@@ -2,18 +2,27 @@ ...@@ -2,18 +2,27 @@
width: 750rpx; width: 750rpx;
height: 774rpx; height: 774rpx;
} }
.header-avatar {
.header_avatar {
position: absolute; position: absolute;
top: 264rpx; top: 264rpx;
width: 160rpx; width: 160rpx;
height: 160rpx; height: 160rpx;
} }
.header_avatar > image {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
}
.header-info { .header-info {
position: absolute; position: absolute;
top: 472rpx; top: 472rpx;
/* width: 232rpx; */ /* width: 232rpx; */
height: 205rpx; height: 205rpx;
} }
.info-name { .info-name {
width: 100%; width: 100%;
height: 116rpx; height: 116rpx;
...@@ -22,18 +31,22 @@ ...@@ -22,18 +31,22 @@
font-size: 34rpx; font-size: 34rpx;
font-weight: 600; font-weight: 600;
} }
.info-text { .info-text {
height: 88rpx; height: 88rpx;
} }
.info-left { .info-left {
color: #959DA9; color: #959DA9;
font-size: 26rpx; font-size: 26rpx;
} }
.info-right { .info-right {
color: #15191F; color: #15191F;
font-size: 26rpx; font-size: 26rpx;
margin-left: 24rpx; margin-left: 24rpx;
} }
.coupon-input-wrapper { .coupon-input-wrapper {
width: 668rpx; width: 668rpx;
height: 80rpx; height: 80rpx;
...@@ -49,6 +62,7 @@ ...@@ -49,6 +62,7 @@
border: 1px solid #DBDFE5; border: 1px solid #DBDFE5;
border-radius: 4rpx; border-radius: 4rpx;
} }
.coupon-input-btn { .coupon-input-btn {
width: 156rpx; width: 156rpx;
height: 80rpx; height: 80rpx;
...@@ -85,7 +99,8 @@ ...@@ -85,7 +99,8 @@
font-weight: 600; font-weight: 600;
} }
.scan-icon, .scan-right { .scan-icon,
.scan-right {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
} }
...@@ -93,4 +108,4 @@ ...@@ -93,4 +108,4 @@
image { image {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
\ No newline at end of file
...@@ -90,7 +90,6 @@ ...@@ -90,7 +90,6 @@
</block> </block>
<!-- 俱乐部 --> <!-- 俱乐部 -->
<!--
<view class="title row con-b align-c"> <view class="title row con-b align-c">
<image src="./image/title-club.png"></image> <image src="./image/title-club.png"></image>
<text bindtap="onAllRecent" bindtap="onToClubList">查看全部</text> <text bindtap="onAllRecent" bindtap="onToClubList">查看全部</text>
...@@ -112,7 +111,6 @@ ...@@ -112,7 +111,6 @@
<text>暂无俱乐部信息</text> <text>暂无俱乐部信息</text>
</view> </view>
</block> </block>
-->
<!-- 游客攻略 --> <!-- 游客攻略 -->
<view class="route"> <view class="route">
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
"scopeDataCheck": false, "scopeDataCheck": false,
"uglifyFileName": false, "uglifyFileName": false,
"checkInvalidKey": true, "checkInvalidKey": true,
"checkSiteMap": false, "checkSiteMap": true,
"uploadWithSourceMap": true, "uploadWithSourceMap": true,
"compileHotReLoad": false, "compileHotReLoad": false,
"useMultiFrameRuntime": false, "useMultiFrameRuntime": false,
...@@ -32,20 +32,18 @@ ...@@ -32,20 +32,18 @@
"useCompilerModule": true, "useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false, "userConfirmedUseCompilerModuleSwitch": false,
"packNpmManually": false, "packNpmManually": false,
"packNpmRelationList": [] "packNpmRelationList": [],
"enableEngineNative": false,
"minifyWXSS": true
}, },
"compileType": "miniprogram", "compileType": "miniprogram",
"libVersion": "2.11.0", "libVersion": "2.11.0",
"appid": "wx37a9b7a3d92029f2", "appid": "wx37a9b7a3d92029f2",
"projectname": "%E4%B8%96%E8%8C%82%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%8C%E6%9C%9F", "projectname": "%E4%B8%96%E8%8C%82%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BA%8C%E6%9C%9F",
"cloudfunctionTemplateRoot": "",
"watchOptions": {
"ignore": []
},
"debugOptions": { "debugOptions": {
"hidedInDevtools": [] "hidedInDevtools": []
}, },
"scripts": {}, "isGameTourist": false,
"simulatorType": "wechat", "simulatorType": "wechat",
"simulatorPluginLibVersion": {}, "simulatorPluginLibVersion": {},
"condition": { "condition": {
...@@ -59,42 +57,14 @@ ...@@ -59,42 +57,14 @@
"list": [] "list": []
}, },
"game": { "game": {
"currentL": -1,
"list": [] "list": []
}, },
"gamePlugin": { "gamePlugin": {
"list": [] "list": []
}, },
"miniprogram": { "miniprogram": {
"list": [ "list": []
{
"id": -1,
"name": "pages/commodity/menu-food/menu-food",
"pathName": "pages/commodity/menu-food/menu-food",
"query": "",
"scene": null
},
{
"id": -1,
"name": "pages/play/home/home",
"pathName": "pages/play/home/home",
"query": "",
"scene": null
},
{
"id": -1,
"name": "pages/play/service-detail/service-detail",
"pathName": "pages/play/service-detail/service-detail",
"query": "id=1&type=4",
"scene": null
},
{
"id": -1,
"name": "pages/mine/home/home",
"pathName": "pages/mine/home/home",
"query": "",
"scene": null
}
]
} }
} }
} }
\ 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