179 lines
4.9 KiB
JavaScript
179 lines
4.9 KiB
JavaScript
// index.js
|
||
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
|
||
|
||
Component({
|
||
data: {
|
||
userInfo: {
|
||
avatarUrl: defaultAvatarUrl,
|
||
nickName: '',
|
||
},
|
||
hasUserInfo: false,
|
||
canIUseGetUserProfile: wx.canIUse('getUserProfile'),
|
||
canIUseNicknameComp: wx.canIUse('input.type.nickname'),
|
||
|
||
// 轮播图数据
|
||
swiperList: [
|
||
{ id: 1, image: 'https://img.yzcdn.cn/vant/cat.jpeg', title: '夏季护肤特惠' },
|
||
{ id: 2, image: 'https://img.yzcdn.cn/vant/cat.jpeg', title: '面部SPA体验' },
|
||
{ id: 3, image: 'https://img.yzcdn.cn/vant/cat.jpeg', title: '新客专享优惠' }
|
||
],
|
||
|
||
// 热门服务
|
||
hotServices: [
|
||
{ id: 1, name: '面部护理', icon: 'help', color: '#FF5F15' },
|
||
{ id: 2, name: '身体按摩', icon: 'time', color: '#07C160' },
|
||
{ id: 3, name: '美甲服务', icon: 'image', color: '#FF9500' },
|
||
{ id: 4, name: '美发造型', icon: 'shop', color: '#2878FF' }
|
||
],
|
||
|
||
// 推荐项目
|
||
recommendServices: [
|
||
{
|
||
id: 1,
|
||
name: '深层清洁面部护理',
|
||
desc: '去除老化角质,深层清洁毛孔',
|
||
price: 298,
|
||
originalPrice: 398,
|
||
image: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||
sales: 256
|
||
},
|
||
{
|
||
id: 2,
|
||
name: '精油SPA按摩',
|
||
desc: '舒缓压力,放松身心',
|
||
price: 398,
|
||
originalPrice: 498,
|
||
image: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||
sales: 198
|
||
},
|
||
{
|
||
id: 3,
|
||
name: '日式美甲套餐',
|
||
desc: '多款式选择,持久显色',
|
||
price: 158,
|
||
originalPrice: 258,
|
||
image: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||
sales: 312
|
||
}
|
||
],
|
||
|
||
// 美容师推荐
|
||
beauticians: [
|
||
{
|
||
id: 1,
|
||
name: '王美丽',
|
||
title: '高级美容师',
|
||
avatar: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||
experience: '8年经验',
|
||
specialty: '面部护理、身体SPA'
|
||
},
|
||
{
|
||
id: 2,
|
||
name: '李专家',
|
||
title: '资深美容顾问',
|
||
avatar: 'https://img.yzcdn.cn/vant/cat.jpeg',
|
||
experience: '10年经验',
|
||
specialty: '皮肤管理、抗衰老'
|
||
}
|
||
]
|
||
},
|
||
methods: {
|
||
// 事件处理函数
|
||
bindViewTap() {
|
||
wx.navigateTo({
|
||
url: '../logs/logs'
|
||
})
|
||
},
|
||
|
||
onChooseAvatar(e) {
|
||
const { avatarUrl } = e.detail
|
||
const { nickName } = this.data.userInfo
|
||
this.setData({
|
||
"userInfo.avatarUrl": avatarUrl,
|
||
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
|
||
})
|
||
},
|
||
|
||
onInputChange(e) {
|
||
const nickName = e.detail.value
|
||
const { avatarUrl } = this.data.userInfo
|
||
this.setData({
|
||
"userInfo.nickName": nickName,
|
||
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
|
||
})
|
||
},
|
||
|
||
getUserProfile(e) {
|
||
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
|
||
wx.getUserProfile({
|
||
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
||
success: (res) => {
|
||
console.log(res)
|
||
this.setData({
|
||
userInfo: res.userInfo,
|
||
hasUserInfo: true
|
||
})
|
||
}
|
||
})
|
||
},
|
||
|
||
// 跳转到服务详情
|
||
goToServiceDetail(e) {
|
||
const id = e.currentTarget.dataset.id;
|
||
wx.navigateTo({
|
||
url: `/pages/appointment/index?serviceId=${id}`
|
||
});
|
||
},
|
||
|
||
// 跳转到分类页面
|
||
goToCategory(e) {
|
||
const categoryId = e.currentTarget.dataset.id;
|
||
wx.switchTab({
|
||
url: '/pages/category/index',
|
||
success: () => {
|
||
// 可以通过页面栈获取分类页面实例,并设置选中的分类
|
||
const pages = getCurrentPages();
|
||
const categoryPage = pages[pages.length - 1];
|
||
if (categoryPage && categoryPage.route === 'pages/category/index') {
|
||
categoryPage.setData({
|
||
activeCategory: categoryId
|
||
});
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
// 跳转到美容师详情
|
||
goToBeauticianDetail(e) {
|
||
const id = e.currentTarget.dataset.id;
|
||
wx.navigateTo({
|
||
url: `/pages/appointment/index?beauticianId=${id}`
|
||
});
|
||
},
|
||
|
||
// 页面显示时,初始化底部标签栏
|
||
pageShow() {
|
||
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
|
||
this.getTabBar().init();
|
||
}
|
||
}
|
||
},
|
||
|
||
lifetimes: {
|
||
attached() {
|
||
// 页面创建时执行
|
||
},
|
||
|
||
detached() {
|
||
// 页面销毁时执行
|
||
}
|
||
},
|
||
|
||
pageLifetimes: {
|
||
show() {
|
||
// 页面显示时执行
|
||
this.pageShow();
|
||
}
|
||
}
|
||
})
|